X-Git-Url: http://git.ipfire.org/?p=ipfire-2.x.git;a=blobdiff_plain;f=src%2Finitscripts%2Finit.d%2Ffirewall;h=23d0c23ff7a3a03642727c85b102ce3589d3d118;hp=a67af7056486ad4e93db4786100d0a83ea80d100;hb=93899a216f7f03b8e1d5092fdd20afd07b0bedae;hpb=4c7bfb1f271bdd0de493772a15209e038344e57c diff --git a/src/initscripts/init.d/firewall b/src/initscripts/init.d/firewall index a67af70564..23d0c23ff7 100644 --- a/src/initscripts/init.d/firewall +++ b/src/initscripts/init.d/firewall @@ -64,16 +64,20 @@ iptables_init() { iptables -A BADTCP -i lo -j RETURN # Disallow packets frequently used by port-scanners - # nmap xmas - iptables -A BADTCP -p tcp --tcp-flags ALL FIN,URG,PSH -j PSCAN - # Null - iptables -A BADTCP -p tcp --tcp-flags ALL NONE -j PSCAN - # FIN + # NMAP FIN/URG/PSH (XMAS scan) + iptables -A BADTCP -p tcp --tcp-flags ALL FIN,URG,PSH -j PSCAN + # SYN/RST/ACK/FIN/URG + iptables -A BADTCP -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j PSCAN + # ALL/ALL + iptables -A BADTCP -p tcp --tcp-flags ALL ALL -j PSCAN + # FIN Stealth iptables -A BADTCP -p tcp --tcp-flags ALL FIN -j PSCAN # SYN/RST (also catches xmas variants that set SYN+RST+...) iptables -A BADTCP -p tcp --tcp-flags SYN,RST SYN,RST -j PSCAN # SYN/FIN (QueSO or nmap OS probe) iptables -A BADTCP -p tcp --tcp-flags SYN,FIN SYN,FIN -j PSCAN + # Null + iptables -A BADTCP -p tcp --tcp-flags ALL NONE -j PSCAN # NEW TCP without SYN iptables -A BADTCP -p tcp ! --syn -m conntrack --ctstate NEW -j NEWNOTSYN @@ -83,6 +87,7 @@ iptables_init() { # Connection tracking chain iptables -N CONNTRACK iptables -A CONNTRACK -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT + iptables -A CONNTRACK -m conntrack --ctstate INVALID -j DROP # Fix for braindead ISP's iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu @@ -107,7 +112,6 @@ iptables_init() { # Block OpenVPN transfer networks iptables -N OVPNBLOCK iptables -A INPUT -i tun+ -j OVPNBLOCK - iptables -A OUTPUT -o tun+ -j OVPNBLOCK iptables -A FORWARD -i tun+ -j OVPNBLOCK iptables -A FORWARD -o tun+ -j OVPNBLOCK @@ -121,10 +125,10 @@ iptables_init() { iptables -N IPTVFORWARD iptables -A FORWARD -j IPTVFORWARD - # filtering from GUI - iptables -N GUIINPUT - iptables -A INPUT -j GUIINPUT - iptables -A GUIINPUT -p icmp --icmp-type 8 -j ACCEPT + # Allow to ping the firewall. + iptables -N ICMPINPUT + iptables -A INPUT -j ICMPINPUT + iptables -A ICMPINPUT -p icmp --icmp-type 8 -j ACCEPT # Accept everything on loopback iptables -N LOOPBACK @@ -144,6 +148,31 @@ iptables_init() { iptables -A ${i} -j CONNTRACK done + # Allow DHCP + iptables -N DHCPINPUT + iptables -A DHCPINPUT -p udp --sport 68 --dport 67 -j ACCEPT + iptables -A DHCPINPUT -p tcp --sport 68 --dport 67 -j ACCEPT + + iptables -N DHCPOUTPUT + iptables -A DHCPOUTPUT -p udp --sport 67 --dport 68 -j ACCEPT + iptables -A DHCPOUTPUT -p tcp --sport 67 --dport 68 -j ACCEPT + + # Allow DHCP on GREEN + iptables -N DHCPGREENINPUT + iptables -N DHCPGREENOUTPUT + if [ -n "${GREEN_DEV}" ]; then + iptables -A INPUT -i "${GREEN_DEV}" -j DHCPGREENINPUT + iptables -A OUTPUT -o "${GREEN_DEV}" -j DHCPGREENOUTPUT + fi + + # allow DHCP on BLUE to be turned on/off + iptables -N DHCPBLUEINPUT + iptables -N DHCPBLUEOUTPUT + if [ -n "${BLUE_DEV}" ]; then + iptables -A INPUT -i "${BLUE_DEV}" -j DHCPBLUEINPUT + iptables -A OUTPUT -o "${BLUE_DEV}" -j DHCPBLUEOUTPUT + fi + # trafic from ipsecX/TUN/TAP interfaces, before "-i GREEN_DEV" accept everything iptables -N IPSECINPUT iptables -N IPSECFORWARD @@ -155,12 +184,11 @@ iptables_init() { iptables -t nat -A POSTROUTING -j IPSECNAT # localhost and ethernet. - iptables -A INPUT -i $GREEN_DEV -m conntrack --ctstate NEW -j ACCEPT ! -p icmp - - # allow DHCP on BLUE to be turned on/off - iptables -N DHCPBLUEINPUT - iptables -A INPUT -j DHCPBLUEINPUT - + # Always allow accessing the web GUI from GREEN. + iptables -N GUIINPUT + iptables -A INPUT -j GUIINPUT + iptables -A GUIINPUT -i "${GREEN_DEV}" -p tcp --dport 444 -j ACCEPT + # WIRELESS chains iptables -N WIRELESSINPUT iptables -A INPUT -m conntrack --ctstate NEW -j WIRELESSINPUT @@ -196,6 +224,7 @@ iptables_init() { # DNAT rules iptables -t nat -N NAT_DESTINATION iptables -t nat -A PREROUTING -j NAT_DESTINATION + iptables -t nat -A OUTPUT -j NAT_DESTINATION iptables -t mangle -N NAT_DESTINATION iptables -t mangle -A PREROUTING -j NAT_DESTINATION @@ -230,20 +259,6 @@ iptables_init() { iptables -t nat -N REDNAT iptables -t nat -A POSTROUTING -j REDNAT - # Filter logging of incoming broadcasts. - iptables -N BROADCAST_FILTER - iptables -A INPUT -j BROADCAST_FILTER - - iptables -A BROADCAST_FILTER -i "${GREEN_DEV}" -d "${GREEN_BROADCAST}" -j DROP - - if [ -n "${BLUE_DEV}" -a -n "${BLUE_BROADCAST}" ]; then - iptables -A BROADCAST_FILTER -i "${BLUE_DEV}" -d "${BLUE_BROADCAST}" -j DROP - fi - - if [ -n "${ORANGE_DEV}" -a -n "${ORANGE_BROADCAST}" ]; then - iptables -A BROADCAST_FILTER -i "${ORANGE_DEV}" -d "${ORANGE_BROADCAST}" -j DROP - fi - # Apply OpenVPN firewall rules /usr/local/bin/openvpnctrl --firewall-rules @@ -311,7 +326,10 @@ iptables_red() { # Outgoing masquerading (don't masqerade IPSEC (mark 50)) iptables -t nat -A REDNAT -m mark --mark 50 -o $IFACE -j RETURN - iptables -t nat -A REDNAT -o $IFACE -j MASQUERADE + + if [ "$IFACE" != "$GREEN_DEV" ]; then + iptables -t nat -A REDNAT -o $IFACE -j MASQUERADE + fi fi