X-Git-Url: http://git.ipfire.org/?p=people%2Fpmueller%2Fipfire-2.x.git;a=blobdiff_plain;f=src%2Finitscripts%2Finit.d%2Ffirewall;h=62da3120bce7cb2ba05b63a65dba7006597481ee;hp=ad30c3d1d4523ddfce5a56223023bd54613d6e7b;hb=80234fec2cd0dc8ce9695a6f04c8efa948a78c63;hpb=905fbf3e06898ae8a62a5daa2adcea4098bc8458 diff --git a/src/initscripts/init.d/firewall b/src/initscripts/init.d/firewall index ad30c3d1d4..62da3120bc 100644 --- a/src/initscripts/init.d/firewall +++ b/src/initscripts/init.d/firewall @@ -2,6 +2,7 @@ eval $(/usr/local/bin/readhash /var/ipfire/ppp/settings) eval $(/usr/local/bin/readhash /var/ipfire/ethernet/settings) +eval $(/usr/local/bin/readhash /var/ipfire/optionsfw/settings) IFACE=`/bin/cat /var/ipfire/red/iface 2> /dev/null | /usr/bin/tr -d '\012'` if [ -f /var/ipfire/red/device ]; then @@ -33,17 +34,21 @@ iptables_init() { # This chain will log, then DROPs packets with certain bad combinations # of flags might indicate a port-scan attempt (xmas, null, etc) /sbin/iptables -N PSCAN - /sbin/iptables -A PSCAN -p tcp -m limit --limit 10/minute -j LOG --log-prefix "TCP Scan? " - /sbin/iptables -A PSCAN -p udp -m limit --limit 10/minute -j LOG --log-prefix "UDP Scan? " - /sbin/iptables -A PSCAN -p icmp -m limit --limit 10/minute -j LOG --log-prefix "ICMP Scan? " - /sbin/iptables -A PSCAN -f -m limit --limit 10/minute -j LOG --log-prefix "FRAG Scan? " - /sbin/iptables -A PSCAN -j DROP + if [ "$DROPPORTSCAN" == "on" ]; then + /sbin/iptables -A PSCAN -p tcp -m limit --limit 10/minute -j LOG --log-prefix "DROP_TCP Scan " -m comment --comment "DROP_TCP PScan" + /sbin/iptables -A PSCAN -p udp -m limit --limit 10/minute -j LOG --log-prefix "DROP_UDP Scan " -m comment --comment "DROP_UDP PScan" + /sbin/iptables -A PSCAN -p icmp -m limit --limit 10/minute -j LOG --log-prefix "DROP_ICMP Scan " -m comment --comment "DROP_ICMP PScan" + /sbin/iptables -A PSCAN -f -m limit --limit 10/minute -j LOG --log-prefix "DROP_FRAG Scan " -m comment --comment "DROP_FRAG PScan" + fi + /sbin/iptables -A PSCAN -j DROP -m comment --comment "DROP_PScan" # New tcp packets without SYN set - could well be an obscure type of port scan # that's not covered above, may just be a broken windows machine /sbin/iptables -N NEWNOTSYN - /sbin/iptables -A NEWNOTSYN -m limit --limit 10/minute -j LOG --log-prefix "NEW not SYN? " - /sbin/iptables -A NEWNOTSYN -j DROP + if [ "$DROPNEWNOTSYN" == "on" ]; then + /sbin/iptables -A NEWNOTSYN -m limit --limit 10/minute -j LOG --log-prefix "DROP_NEWNOTSYN " + fi + /sbin/iptables -A NEWNOTSYN -j DROP -m comment --comment "DROP_NEWNOTSYN" # Chain to contain all the rules relating to bad TCP flags /sbin/iptables -N BADTCP @@ -158,10 +163,10 @@ case "$1" in # trafic from ipsecX/TUN/TAP interfaces, before "-i GREEN_DEV" accept everything /sbin/iptables -N IPSECVIRTUAL /sbin/iptables -N OPENSSLVIRTUAL - /sbin/iptables -A INPUT -j IPSECVIRTUAL - /sbin/iptables -A INPUT -j OPENSSLVIRTUAL - /sbin/iptables -A FORWARD -j IPSECVIRTUAL - /sbin/iptables -A FORWARD -j OPENSSLVIRTUAL + /sbin/iptables -A INPUT -j IPSECVIRTUAL -m comment --comment "IPSECVIRTUAL INPUT" + /sbin/iptables -A INPUT -j OPENSSLVIRTUAL -m comment --comment "OPENSSLVIRTUAL INPUT" + /sbin/iptables -A FORWARD -j IPSECVIRTUAL -m comment --comment "IPSECVIRTUAL FORWARD" + /sbin/iptables -A FORWARD -j OPENSSLVIRTUAL -m comment --comment "OPENSSLVIRTUAL FORWARD" # Outgoing Firewall /sbin/iptables -A FORWARD -j OUTGOINGFW @@ -255,8 +260,15 @@ case "$1" in fi # last rule in input and forward chain is for logging. - /sbin/iptables -A INPUT -m limit --limit 10/minute -j LOG --log-prefix "INPUT " - /sbin/iptables -A FORWARD -m limit --limit 10/minute -j LOG --log-prefix "OUTPUT " + + if [ "$DROPINPUT" == "on" ]; then + /sbin/iptables -A INPUT -m limit --limit 10/minute -j LOG --log-prefix "DROP_INPUT " + fi + /sbin/iptables -A INPUT -j DROP -m comment --comment "DROP_INPUT" + if [ "$DROPOUTPUT" == "on" ]; then + /sbin/iptables -A FORWARD -m limit --limit 10/minute -j LOG --log-prefix "DROP_OUTPUT " + fi + /sbin/iptables -A FORWARD -j DROP -m comment --comment "DROP_OUTPUT" ;; startovpn) # run openvpn @@ -285,8 +297,14 @@ case "$1" in /etc/sysconfig/firewall.local stop fi - /sbin/iptables -A INPUT -m limit --limit 10/minute -j LOG --log-prefix "INPUT " - /sbin/iptables -A FORWARD -m limit --limit 10/minute -j LOG --log-prefix "OUTPUT " + if [ "$DROPINPUT" == "on" ]; then + /sbin/iptables -A INPUT -m limit --limit 10/minute -j LOG --log-prefix "DROP_INPUT " + fi + /sbin/iptables -A INPUT -j DROP -m comment --comment "DROP_INPUT" + if [ "$DROPOUTPUT" == "on" ]; then + /sbin/iptables -A FORWARD -m limit --limit 10/minute -j LOG --log-prefix "DROP_OUTPUT " + fi + /sbin/iptables -A FORWARD -j DROP -m comment --comment "DROP_OUTPUT" ;; stopovpn) # stop openvpn