Το πρώτο πράγμα που με συνάρπασε στο Linux ήταν και είναι ο πυρήνας τους. Πρόκειται για ένα λειτουργικό που πραγματικά είναι μοναδικό από όλες τις απόψεις. Αν και είμαι τις φιλοσοφίας ότι πάντα πρέπει να χρησιμοποιούμε το λογισμικό που μας κάνει τη ζωή πιο εύκολη πάνω στο συγκεκριμένο θέμα, networking, firewall, routing και bandwidth management, δεν δέχομαι καμία άλλη άποψη και αυτό γιατί ξέρω πραγματικά πόσο ευέλικτες μπορεί να είναι οι λύσεις που προσφέρει το Linux. Για να μη μακρηγορώ η αγαπημένη μου διανομή (distro) είναι το Centos.
Παρακάτω παραθέτω κάποια script που τρέχουν στο pc που χρησιμοποιώ ως router και σκοπό έχουν να διαφυλάξουν το εσωτερικό δίκτυο και φυσικά να προσφέρουν την απόλυτη απόλαυση στο surfάρσισμα.
1ο Script (IPTABLES)
#!/bin/bash
#
# Binaries
#
PATH="/bin:/sbin:/usr/bin"
#
# Standard Configuration Parameters
#
# Accept and Flush ALL
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
# Drop ALL
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#
# Create Custom Chains
#
iptables -N INVALID
iptables -N INVPACKETS
iptables -N GOOD_TCP_PACKETS
iptables -N BAD_TCP_PACKETS
iptables -N BADPACKETS
iptables -N TCP_FLAGS
iptables -N BADFLAGS
iptables -N IEXT
iptables -N WEXT
iptables -N LAN
iptables -N OK
iptables -N LAN_NET
iptables -N NET_LAN
iptables -N VPN
iptables -t mangle -N SHAPEIN
iptables -t mangle -N SHAPEOUT
# Localhost
iptables -A INPUT -p all -i lo -j ACCEPT
iptables -A OUTPUT -p all -o lo -j ACCEPT
#
# Logs
#
iptables -A BADFLAGS -j LOG --log-prefix "IPT BADFLAGS: "
iptables -A BADFLAGS -j DROP
iptables -A BADPACKETS -j LOG --log-prefix "IPT BADPACKETS: "
iptables -A BADPACKETS -j DROP
iptables -A INVPACKETS -j LOG --log-prefix "IPT INVALID: "
iptables -A INVPACKETS -j DROP
#
# Stateful Checks $ Tricks
#
iptables -A GOOD_TCP_PACKETS -p tcp --syn -j ACCEPT
iptables -A GOOD_TCP_PACKETS -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INVALID -p all -m state --state INVALID -j INVPACKETS
iptables -A BAD_TCP_PACKETS -p tcp ! --syn -m state --state NEW -j BADPACKETS
iptables -A TCP_FLAGS -p tcp --tcp-flags ACK,FIN FIN -j BADFLAGS
iptables -A TCP_FLAGS -p tcp --tcp-flags ACK,PSH PSH -j BADFLAGS
iptables -A TCP_FLAGS -p tcp --tcp-flags ACK,URG URG -j BADFLAGS
iptables -A TCP_FLAGS -p tcp --tcp-flags FIN,RST FIN,RST -j BADFLAGS
iptables -A TCP_FLAGS -p tcp --tcp-flags SYN,FIN SYN,FIN -j BADFLAGS
iptables -A TCP_FLAGS -p tcp --tcp-flags SYN,RST SYN,RST -j BADFLAGS
iptables -A TCP_FLAGS -p tcp --tcp-flags ALL ALL -j BADFLAGS
iptables -A TCP_FLAGS -p tcp --tcp-flags ALL NONE -j BADFLAGS
iptables -A TCP_FLAGS -p tcp --tcp-flags ALL FIN,PSH,URG -j BADFLAGS
iptables -A TCP_FLAGS -p tcp --tcp-flags ALL SYN,FIN,PSH,URG -j BADFLAGS
iptables -A TCP_FLAGS -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j BADFLAGS
#
# Chain Jumps
#
iptables -A INPUT -i $INET -j IEXT
iptables -A OUTPUT -o $INET -j OK
iptables -A INPUT -i $WNET -j WEXT
iptables -A OUTPUT -o $WNET -j OK
iptables -A INPUT -i $LAN -j LAN
iptables -A OUTPUT -o $LAN -j LAN
iptables -A INPUT -i $VPN -j VPN
iptables -A OUTPUT -o $VPN -j VPN
iptables -A FORWARD -i $LAN -o $INET -j LAN_NET
iptables -A FORWARD -i $LAN -o $WNET -j LAN_NET
iptables -A FORWARD -i $INET -o $LAN -j NET_LAN
iptables -A FORWARD -i $WNET -o $LAN -j NET_LAN
iptables -A FORWARD -i $VPN -j LAN_NET
iptables -t mangle -A FORWARD -o $LAN -j SHAPEIN
iptables -t mangle -A FORWARD -o $INET -j SHAPEOUT
#
# Banned Hosts
#
iptables -A IEXT -s $BANNED -j DROP
iptables -A IEXT -d $BANNED -j DROP
iptables -A WEXT -s $BANNED -j DROP
iptables -A WEXT -d $BANNED -j DROP
iptables -A LAN_NET -d $BANNED -j DROP
iptables -A NET_LAN -s $BANNED -j DROP
#
# Open Ports External Interfaces
#
# Internet Interface
iptables -A IEXT -j INVALID
iptables -A IEXT -j BAD_TCP_PACKETS
iptables -A IEXT -j TCP_FLAGS
iptables -A IEXT -p icmp -m icmp --icmp-type 8 -m limit --limit 1/sec -j ACCEPT
iptables -A IEXT -p tcp --dport 20 -j GOOD_TCP_PACKETS
iptables -A IEXT -p tcp --dport 21 -j GOOD_TCP_PACKETS
iptables -A IEXT -p tcp --dport 25 -j GOOD_TCP_PACKETS
iptables -A IEXT -p tcp --dport 80 -j GOOD_TCP_PACKETS
iptables -A IEXT -p tcp --dport 143 -j GOOD_TCP_PACKETS
iptables -A IEXT -p tcp --dport 443 -j GOOD_TCP_PACKETS
iptables -A IEXT -p tcp --dport 3306 -j GOOD_TCP_PACKETS
iptables -A IEXT -p tcp --dport 10000 -j GOOD_TCP_PACKETS
iptables -A IEXT -p tcp -m tcp --dport 49160:49300 -j GOOD_TCP_PACKETS
iptables -A IEXT -p tcp -m tcp --sport 49160:49300 -j GOOD_TCP_PACKETS
iptables -A IEXT -p tcp --dport 1723 -j ACCEPT
iptables -A IEXT -p udp --dport 1723 -j ACCEPT
iptables -A IEXT -p udp --dport 67:68 --sport 67:68 -j ACCEPT
iptables -A IEXT -p udp --dport 53 -j ACCEPT
iptables -A IEXT -p udp --dport 53 -j ACCEPT
iptables -A IEXT -p udp --dport 123 -j ACCEPT
iptables -A IEXT -p udp --dport 123 -j ACCEPT
iptables -A IEXT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Wireless Interface
iptables -A WEXT -j INVALID
iptables -A WEXT -j BAD_TCP_PACKETS
iptables -A WEXT -j TCP_FLAGS
iptables -A WEXT -p icmp -m icmp --icmp-type 8 -m limit --limit 1/sec -j ACCEPT
iptables -A WEXT -p tcp --dport 20 -j GOOD_TCP_PACKETS
iptables -A WEXT -p tcp --dport 21 -j GOOD_TCP_PACKETS
iptables -A WEXT -p tcp --dport 22 -j GOOD_TCP_PACKETS
iptables -A WEXT -p tcp --dport 25 -j GOOD_TCP_PACKETS
iptables -A WEXT -p tcp --dport 80 -j GOOD_TCP_PACKETS
iptables -A WEXT -p udp --dport 53 -j ACCEPT
iptables -A WEXT -p udp --dport 53 -j ACCEPT
iptables -A WEXT -p udp --dport 123 -j ACCEPT
iptables -A WEXT -p udp --dport 123 -j ACCEPT
iptables -A WEXT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Output Wireless & Internet
iptables -A OK -p all -d 0/0 -j ACCEPT
iptables -A OK -m state --state ESTABLISHED,RELATED -j ACCEPT
# Lan Trusted Interface
iptables -A LAN -p all -s $LAN_MASK -j ACCEPT
iptables -A LAN -m state --state ESTABLISHED,RELATED -j ACCEPT
# VPN
iptables -A VPN -p all -s $VPN_MASK -j ACCEPT
iptables -A VPN -m state --state ESTABLISHED,RELATED -j ACCEPT
#
# Forward Rules
#
# From Lan to Internet and Wireless
iptables -A LAN_NET -j ACCEPT
iptables -A LAN_NET -m state --state ESTABLISHED,RELATED -j ACCEPT
# From Internet and Wireless to Lan
iptables -A NET_LAN -p tcp -d $DB --dport 3389 -j ACCEPT
iptables -A NET_LAN -p tcp -d $DB --dport 19064 -j ACCEPT
iptables -A NET_LAN -p udp -d $DB --dport 19064 -j ACCEPT
iptables -A NET_LAN -p tcp -d $DB --dport 3830 -j ACCEPT
iptables -A NET_LAN -p udp -d $DB --dport 3830 -j ACCEPT
iptables -A NET_LAN -p tcp -d $DB --dport 19065 -j ACCEPT
iptables -A NET_LAN -p udp -d $DB --dport 19065 -j ACCEPT
iptables -A NET_LAN -p tcp -d $NICK --dport 35980 -j ACCEPT
iptables -A NET_LAN -p udp -d $NICK --dport 35980 -j ACCEPT
iptables -A NET_LAN -m state --state ESTABLISHED,RELATED -j ACCEPT
#
# NAT
#
iptables -t nat -A POSTROUTING -o $INET -j SNAT --to-source $INET_IP
iptables -t nat -A POSTROUTING -o $WNET -j SNAT --to-source $WNET_IP
iptables -t nat -A POSTROUTING -o $VPN -j SNAT --to-source $VPN_IP
iptables -t nat -A POSTROUTING -o $FAKE -s $DB -j SNAT --to-source $FAKE_IP
iptables -t nat -A PREROUTING -p tcp --dport 3389 -j DNAT --to-destination $DB
iptables -t nat -A PREROUTING -p tcp --dport 3830 -j DNAT --to-destination $DB
iptables -t nat -A PREROUTING -p tcp --dport 19064 -j DNAT --to-destination $DB
iptables -t nat -A PREROUTING -p udp --dport 19064 -j DNAT --to-destination $DB
iptables -t nat -A PREROUTING -p tcp --dport 19065 -j DNAT --to-destination $DB
iptables -t nat -A PREROUTING -p udp --dport 19065 -j DNAT --to-destination $DB
iptables -t nat -A PREROUTING -p tcp --dport 35980 -j DNAT --to-destination $NICK
iptables -t nat -A PREROUTING -p udp --dport 35980 -j DNAT --to-destination $NICK
# EOF
No comments:
Post a Comment