# INET_IFACE="eth0" # # Information pertaining to DHCP over the Internet, if needed. # # Set DHCP variable to no if you don't get IP from DHCP. If you get DHCP # over the Internet set this variable to yes, and set up the proper IP # address for the DHCP server in the DHCP_SERVER variable.
# DHCP="yes" DHCP_SERVER="192.168.1.1" # # your LAN's IP range and localhost IP. /24 means to only use the first 24 # bits of the 32 bit IP address. the same as netmask 255.255.255.0 # LAN_IP="192.168.1.1" LAN_IP_RANGE="192.168.0.0/16" LAN_IFACE="eth0" # # 1.4 Localhost Configuration. # LO_IFACE="lo" LO_IP="127.0.0.1" # # 1.5 IPTables Configuration. # IPTABLES="/sbin/iptables" # # Needed to initially load modules # /sbin/depmod -a # # no modules needed as everything compiled into kernel # ########################################################################### # # 3.1 Required proc configuration # echo "1" > /proc/sys/net/ipv4/ip_forward # ########################################################################### # # 4.1.1 Set policies # $IPTABLES -P INPUT DROP $IPTABLES -P OUTPUT DROP # # Create chain for bad tcp packets # $IPTABLES -N bad_tcp_packets # # Create separate chains for ICMP, TCP and UDP to traverse # $IPTABLES -N tcp_packets $IPTABLES -N udp_packets $IPTABLES -N icmp_packets $IPTABLES -N out_packets # # # Special OUTPUT rules to decide which IP's to allow. # $IPTABLES -A OUTPUT -p ALL -s $LO_IP -j ACCEPT $IPTABLES -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT $IPTABLES -A OUTPUT -p ALL -o $INET_IFACE -j ACCEPT # # Rules for outgoing packets to the internet # $IPTABLES -A out_packets -p tcp -o $INET_IFACE --sport 111 -j DROP $IPTABLES -A out_packets -p tcp -o $INET_IFACE --sport 631 -j DROP $IPTABLES -A out_packets -p tcp -o $INET_IFACE --sport 657 -j DROP $IPTABLES -A out_packets -p tcp -o $INET_IFACE --sport 2049 -j DROP $IPTABLES -A out_packets -p tcp -o $INET_IFACE --sport 3049 -j DROP # $IPTABLES -A out_packets -p udp -o $INET_IFACE --sport 111 -j DROP $IPTABLES -A out_packets -p udp -o $INET_IFACE --sport 631 -j DROP $IPTABLES -A out_packets -p udp -o $INET_IFACE --sport 657 -j DROP $IPTABLES -A out_packets -p udp -o $INET_IFACE --sport 2049 -j DROP $IPTABLES -A out_packets -p udp -o $INET_IFACE --sport 3049 -j DROP # # Let LO_IP input packets # $IPTABLES -A INPUT -p ALL -s $LO_IP -j ACCEPT # # ICMP rules # $IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT $IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT # # Rules for incoming packets from the internet. # $IPTABLES -A INPUT -p ALL -i $INET_IFACE -m state --state ESTABLISHED,RELATED \ -j ACCEPT $IPTABLES -A INPUT -p TCP -i $INET_IFACE -j tcp_packets $IPTABLES -A INPUT -p UDP -i $INET_IFACE -j udp_packets $IPTABLES -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets # # Bad TCP packets we don't want. # $IPTABLES -A INPUT -p tcp -j bad_tcp_packets # # bad_tcp_packets chain # $IPTABLES -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK \ -m state --state NEW -j REJECT --reject-with tcp-reset $IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG \ --log-prefix "New not syn:" $IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP $IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets # # TCP RULES # $IPTABLES -A tcp_packets -p TCP --syn -j ACCEPT $IPTABLES -A tcp_packets -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A tcp_packets -p TCP -j DROP # $IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 22 -j allowed $IPTABLES -A tcp_packets -P TCP -s 0/0 --dport 25 -j allowed $IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 53 -j allowed $IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 80 -j allowed $IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 113 -j allowed $IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 1024: -j allowed $IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 111 -j DROP $IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 631 -j DROP $IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 657 -j DROP $IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 2049 -j DROP $IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 3049 -j DROP # # UDP ports # if [ $DHCP == "yes" ] ; then $IPTABLES -A udp_packets -p UDP -s $DHCP_SERVER --sport 67 \ --dport 68 -j ACCEPT fi # $IPTABLES -A udp_packets -p UDP -s 0/0 --source-port 53 -j ACCEPT $IPTABLES -A udp_packets -p UDP -s 0/0 --dport 1024: -j ACCEPT $IPTABLES -A udp_packets -p UDP -s 0/0 --dport 111 -j DROP $IPTABLES -A udp_packets -p UDP -s 0/0 --dport 631 -j DROP $IPTABLES -A udp_packets -p UDP -s 0/0 --dport 657 -j DROP $IPTABLES -A udp_packets -p UDP -s 0/0 --dport 2049 -j DROP $IPTABLES -A udp_packets -p UDP -s 0/0 --dport 3049 -j DROP # # In Microsoft Networks you will be swamped by broadcasts. These lines # will prevent them from showing up in the logs. # $IPTABLES -A udp_packets -p UDP -i $INET_IFACE \ --destination-port 135:139 -j DROP # # If we get DHCP requests from the Outside of our network, our logs will # be swamped as well. This rule will block them from getting logged. # $IPTABLES -A udp_packets -p UDP -i $INET_IFACE -d 255.255.255.255 \ --destination-port 67:68 -j DROP # # Special rule for DHCP requests from LAN, which are not caught properly # otherwise. # $IPTABLES -A INPUT -p UDP -i $LAN_IFACE --dport 67 --sport 68 -j ACCEPT # # Log weird packets that don't match the above. # $IPTABLES -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \ --log-level DEBUG --log-prefix "OUT packet" $IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \ --log-level DEBUG --log-prefix "IN packet" #user] [OT] tips on my 1st try at iptables? References: <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> In-Reply-To: <[EMAIL PROTECTED]> X-Enigmail-Version: 0.91.0.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit david wrote: > Here is my /var/lib/iptables/rules-save # Generated by > iptables-save v1.2.11 on Sat May 21 16:58:29 2005 *nat :PREROUTING > ACCEPT [29:1670] :POSTROUTING ACCEPT [431:26255] :OUTPUT ACCEPT > [0:0] [30:1841] -A POSTROUTING -o eth0 -j MASQUERADE COMMIT # > Completed on Sat May 21 16:58:29 2005 # Generated by iptables-save > v1.2.11 on Sat May 21 16:58:29 2005 *mangle :PREROUTING ACCEPT > [16422:18018799] :INPUT ACCEPT [16422:18018799] :FORWARD ACCEPT > [0:0] :OUTPUT ACCEPT [13453:2622146] :POSTROUTING ACCEPT > [13453:2622146] COMMIT # Completed on Sat May 21 16:58:29 2005 # > Generated by iptables-save v1.2.11 on Sat May 21 16:58:29 2005 > *filter :INPUT DROP [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT > [13453:2622146] [440:320869] -A INPUT -m state --state > RELATED,ESTABLISHED -j ACCEPT [0:0] -A INPUT -i ! eth0 -m state > --state NEW -j ACCEPT [0:0] -A INPUT -p icmp -j ACCEPT [3:180] -A > INPUT -p tcp -m tcp --dport 80 -j ACCEPT [0:0] -A INPUT -p tcp -m > tcp --dport 21 -j ACCEPT [0:0] -A INPUT -p tcp -m tcp --dport 20 -j > ACCEPT COMMIT # Completed on Sat May 21 16:58:29 2005 I followed > the guide here and it works great.Simple to set up. > http://gentoo-wiki.com/HOWTO_setup_a_home-server Here's mine. The innocent redacted to protect the guilty, ha??? #!/bin/sh # ########################################################################### # INET_IFACE="eth0" # # Information pertaining to DHCP over the Internet, if needed. # # Set DHCP variable to no if you don't get IP from DHCP. If you get DHCP # over the Internet set this variable to yes, and set up the proper IP # address for the DHCP server in the DHCP_SERVER variable. # DHCP="yes" DHCP_SERVER="192.168.1.1" # # your LAN's IP range and localhost IP. /24 means to only use the first 24 # bits of the 32 bit IP address. the same as netmask 255.255.255.0 # LAN_IP="192.168.1.1" LAN_IP_RANGE="192.168.0.0/16" LAN_IFACE="eth0" # # 1.4 Localhost Configuration. # LO_IFACE="lo" LO_IP="127.0.0.1" # # 1.5 IPTables Configuration. # IPTABLES="/sbin/iptables" # # Needed to initially load modules # /sbin/depmod -a # # no modules needed as everything compiled into kernel # ########################################################################### # # 3.1 Required proc configuration # echo "1" > /proc/sys/net/ipv4/ip_forward # ########################################################################### # # 4.1.1 Set policies # (notes- always know your default policy, it all stems from this) $IPTABLES -P INPUT DROP $IPTABLES -P OUTPUT DROP # # Create chain for bad tcp packets # $IPTABLES -N bad_tcp_packets # # Create separate chains for ICMP, TCP and UDP to traverse # $IPTABLES -N tcp_packets $IPTABLES -N udp_packets $IPTABLES -N icmp_packets $IPTABLES -N out_packets # # # Special OUTPUT rules to decide which IP's to allow. # $IPTABLES -A OUTPUT -p ALL -s $LO_IP -j ACCEPT $IPTABLES -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT $IPTABLES -A OUTPUT -p ALL -o $INET_IFACE -j ACCEPT # # Rules for outgoing packets to the internet (notes, ie NFS) # $IPTABLES -A out_packets -p tcp -o $INET_IFACE --sport 111 -j DROP $IPTABLES -A out_packets -p tcp -o $INET_IFACE --sport 631 -j DROP $IPTABLES -A out_packets -p tcp -o $INET_IFACE --sport 657 -j DROP $IPTABLES -A out_packets -p tcp -o $INET_IFACE --sport 2049 -j DROP $IPTABLES -A out_packets -p tcp -o $INET_IFACE --sport 3049 -j DROP # $IPTABLES -A out_packets -p udp -o $INET_IFACE --sport 111 -j DROP $IPTABLES -A out_packets -p udp -o $INET_IFACE --sport 631 -j DROP $IPTABLES -A out_packets -p udp -o $INET_IFACE --sport 657 -j DROP $IPTABLES -A out_packets -p udp -o $INET_IFACE --sport 2049 -j DROP $IPTABLES -A out_packets -p udp -o $INET_IFACE --sport 3049 -j DROP # # Let LO_IP input packets # (no restrictions on loopbackk) $IPTABLES -A INPUT -p ALL -s $LO_IP -j ACCEPT # # ICMP rules # (could be several more added here) $IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT $IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT # # Rules for incoming packets from the internet. # $IPTABLES -A INPUT -p ALL -i $INET_IFACE -m state --state ESTABLISHED,RELATED \ -j ACCEPT $IPTABLES -A INPUT -p TCP -i $INET_IFACE -j tcp_packets $IPTABLES -A INPUT -p UDP -i $INET_IFACE -j udp_packets $IPTABLES -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets # # Bad TCP packets we don't want. # $IPTABLES -A INPUT -p tcp -j bad_tcp_packets # # bad_tcp_packets chain # $IPTABLES -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK \ -m state --state NEW -j REJECT --reject-with tcp-reset $IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG \ --log-prefix "New not syn:" $IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP $IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets # # TCP RULES # $IPTABLES -A tcp_packets -p TCP --syn -j ACCEPT $IPTABLES -A tcp_packets -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A tcp_packets -p TCP -j DROP # (notes, allow mail, ssh, dns, www, ident, above 1024; drop NFS, LPR $IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 22 -j allowed $IPTABLES -A tcp_packets -P TCP -s 0/0 --dport 25 -j allowed $IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 53 -j allowed $IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 80 -j allowed $IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 113 -j allowed $IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 1024: -j allowed $IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 111 -j DROP $IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 631 -j DROP $IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 657 -j DROP $IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 2049 -j DROP $IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 3049 -j DROP # # UDP ports # (notes, accept DHCP) if [ $DHCP == "yes" ] ; then $IPTABLES -A udp_packets -p UDP -s $DHCP_SERVER --sport 67 \ --dport 68 -j ACCEPT fi # (notes- accept DNS, above 1024, exceptijng NFS) $IPTABLES -A udp_packets -p UDP -s 0/0 --source-port 53 -j ACCEPT $IPTABLES -A udp_packets -p UDP -s 0/0 --dport 1024: -j ACCEPT $IPTABLES -A udp_packets -p UDP -s 0/0 --dport 111 -j DROP $IPTABLES -A udp_packets -p UDP -s 0/0 --dport 631 -j DROP $IPTABLES -A udp_packets -p UDP -s 0/0 --dport 657 -j DROP $IPTABLES -A udp_packets -p UDP -s 0/0 --dport 2049 -j DROP $IPTABLES -A udp_packets -p UDP -s 0/0 --dport 3049 -j DROP # # In Microsoft Networks you will be swamped by broadcasts. These lines # will prevent them from showing up in the logs. # (note, its impossible to seperate wheat from chaffe without this) $IPTABLES -A udp_packets -p UDP -i $INET_IFACE \ --destination-port 135:139 -j DROP # # If we get DHCP requests from the Outside of our network, our logs will # be swamped as well. This rule will block them from getting logged. # (note, same as above explanation) $IPTABLES -A udp_packets -p UDP -i $INET_IFACE -d 255.255.255.255 \ --destination-port 67:68 -j DROP # # Special rule for DHCP requests from LAN, which are not caught properly # otherwise. # (accept DHCP) $IPTABLES -A INPUT -p UDP -i $LAN_IFACE --dport 67 --sport 68 -j ACCEPT # # Log weird packets that don't match the above. # $IPTABLES -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \ --log-level DEBUG --log-prefix "OUT packet" $IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \ --log-level DEBUG --log-prefix "IN packet" # -- gentoo-user@gentoo.org mailing list