Hi Please take a look at this ipchains firewall. how secure is this? What could be done better (except that the code could have more variables)? Many thanx in advance - Philipp #!/bin/sh -x # IP SPOOF PROTECTION echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter # SMURF PROTECTION echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts # DEFRAGMENTATION echo 1 > /proc/sys/net/ipv4/ip_always_defrag # FLUSH RULE /sbin/ipchains -F # POLICIES /sbin/ipchains -P input DENY /sbin/ipchains -P forward DENY /sbin/ipchains -P output DENY # DENIALS WHICH SHOULD NOT BE LOGGED /sbin/ipchains -A input -p udp -s 10.0.0.0/24 137:139 -j DENY /sbin/ipchains -A input -p udp -s 10.0.0.0/24 67:68 -j DENY # ROUTE PROTOCOL ACCEPT /sbin/ipchains -A output -p udp -s 10.0.0.191/24 520 -d 10.0.0.255/24 520 -i eth0 -j ACCEPT /sbin/ipchains -A output -p udp -s 178.178.178.178/24 520 -d 178.178.178.255/24 520 -i eth1 -j ACCEPT /sbin/ipchains -A input -p udp -s 178.178.178.179/24 520 -d 178.178.178.255/24 520 -i eth1 -j ACCEPT /sbin/ipchains -A input -p udp -s 10.0.0.191/24 520 -d 10.0.0.255/24 520 -i eth0 -j ACCEPT # DNS ACCEPT TO INTERNAL CACHE DNS SERVER /sbin/ipchains -A output -p udp -s 10.0.0.191/24 1024:9999 -d 10.0.0.100/24 53 -i eth0 -j ACCEPT /sbin/ipchains -A input -p udp -s 10.0.0.100/24 53 -d 10.0.0.191/24 1024:9999 -i eth0 -j ACCEPT # DNS ACCEPT TO INTERNET DNS SERVERS /sbin/ipchains -A input -p udp -s 10.0.0.100/24 1024:9999 -d ! 10.0.0.0/24 53 -i eth0 -j ACCEPT /sbin/ipchains -A forward -p udp -s 10.0.0.100/24 1024:9999 -d ! 10.0.0.0/24 53 -i eth1 -j ACCEPT /sbin/ipchains -A output -p udp -s 10.0.0.100/24 1024:9999 -d ! 10.0.0.0/24 53 -i eth1 -j ACCEPT /sbin/ipchains -A input -p udp -s ! 10.0.0.0/24 53 -d 10.0.0.100/24 1024:9999 -i eth1 -j ACCEPT /sbin/ipchains -A forward -p udp -s ! 10.0.0.0/24 53 -d 10.0.0.100/24 1024:9999 -i eth0 -j ACCEPT /sbin/ipchains -A output -p udp -s ! 10.0.0.0/24 53 -d 10.0.0.100/24 1024:9999 -i eth0 -j ACCEPT # SSH ACCEPT ON ETH0 /sbin/ipchains -A input -p tcp -s 10.0.0.0/24 1024:9999 -d 10.0.0.191/24 22 -i eth0 -j ACCEPT /sbin/ipchains -A output -p tcp -s 10.0.0.191/24 22 -d 10.0.0.0/24 1024:9999 -i eth0 -j ACCEPT # TRANSPARENT PROXY RULES, HTTP, HTTPS /sbin/ipchains -A input -p tcp -s 10.0.0.0/24 1024:9999 -d ! 10.0.0.0/24 80 -i eth0 -j REDIRECT 8008 /sbin/ipchains -A output -p tcp -s 178.178.178.178/24 1024:9999 -d 0/0 80 -i eth1 -j ACCEPT /sbin/ipchains -A input -p tcp -s 0/0 80 -d 178.178.178.178/24 1024:9999 -i eth1 -j ACCEPT /sbin/ipchains -A output -p tcp -s ! 10.0.0.0/24 80 -d 10.0.0.0/24 1024:9999 -j ACCEPT # FTP ALLOW /sbin/ipchains -A input -p tcp -s 10.0.0.0/24 1024:9999 -d ! 10.0.0.0/24 21: -i eth0 -j ACCEPT /sbin/ipchains -A forward -p tcp -s 10.0.0.0/24 1024:9999 -d ! 10.0.0.0/24 21: -i eth1 -j ACCEPT /sbin/ipchains -A output -p tcp -s 10.0.0.0/24 1024:9999 -d ! 10.0.0.0/24 21: -i eth1 -j ACCEPT /sbin/ipchains -A input -p tcp -s ! 10.0.0.0/24 21: -d 10.0.0.0/24 1024:9999 -i eth1 -j ACCEPT /sbin/ipchains -A forward -p tcp -s ! 10.0.0.0/24 21: -d 10.0.0.0/24 1024:9999 -i eth0 -j ACCEPT /sbin/ipchains -A output -p tcp -s ! 10.0.0.0/24 21: -d 10.0.0.0/24 1024:9999 -i eth0 -j ACCEPT # FTP-DATA ALLOW /sbin/ipchains -A input -p tcp -s 10.0.0.0/24 1024:9999 -d ! 10.0.0.0/24 20 -i eth0 -j ACCEPT /sbin/ipchains -A forward -p tcp -s 10.0.0.0/24 1024:9999 -d ! 10.0.0.0/24 20 -i eth1 -j ACCEPT /sbin/ipchains -A output -p tcp -s 10.0.0.0/24 1024:9999 -d ! 10.0.0.0/24 20 -i eth1 -j ACCEPT /sbin/ipchains -A input -p tcp -s ! 10.0.0.0/24 20 -d 10.0.0.0/24 1024:9999 -i eth1 -j ACCEPT /sbin/ipchains -A forward -p tcp -s ! 10.0.0.0/24 20 -d 10.0.0.0/24 1024:9999 -i eth0 -j ACCEPT /sbin/ipchains -A output -p tcp -s ! 10.0.0.0/24 20 -d 10.0.0.0/24 1024:9999 -i eth0 -j ACCEPT # SMTP ALLOW /sbin/ipchains -A input -p tcp -s 10.0.0.0/24 1024:9999 -d 195.186.1.68/32 25 -i eth0 -j ACCEPT /sbin/ipchains -A forward -p tcp -s 10.0.0.0/24 1024:9999 -d 195.186.1.68/32 25 -i eth1 -j ACCEPT /sbin/ipchains -A output -p tcp -s 10.0.0.0/24 1024:9999 -d 195.186.1.68/32 25 -i eth1 -j ACCEPT /sbin/ipchains -A input -p tcp -s 195.186.1.68/32 25 -d 10.0.0.0/24 1024:9999 -i eth1 -j ACCEPT /sbin/ipchains -A forward -p tcp -s 195.186.1.68/32 25 -d 10.0.0.0/24 1024:9999 -i eth0 -j ACCEPT /sbin/ipchains -A output -p tcp -s 195.186.1.68/32 25 -d 10.0.0.0/24 1024:9999 -i eth0 -j ACCEPT # POP-3 ALLOW /sbin/ipchains -A input -p tcp -s 10.0.0.0/24 1024:9999 -d 195.186.1.74/32 110 -i eth0 -j ACCEPT /sbin/ipchains -A forward -p tcp -s 10.0.0.0/24 1024:9999 -d 195.186.1.74/32 110 -i eth1 -j ACCEPT /sbin/ipchains -A output -p tcp -s 10.0.0.0/24 1024:9999 -d 195.186.1.74/32 110 -i eth1 -j ACCEPT /sbin/ipchains -A input -p tcp -s 195.186.1.74/32 110 -d 10.0.0.0/24 1024:9999 -i eth1 -j ACCEPT /sbin/ipchains -A forward -p tcp -s 195.186.1.74/32 110 -d 10.0.0.0/24 1024:9999 -i eth0 -j ACCEPT /sbin/ipchains -A output -p tcp -s 195.186.1.74/32 110 -d 10.0.0.0/24 1024:9999 -i eth0 -j ACCEPT # NNTP ALLOW /sbin/ipchains -A input -p tcp -s 10.0.0.0/24 1024:9999 -d ! 10.0.0.0/24 119 -i eth0 -j ACCEPT /sbin/ipchains -A forward -p tcp -s 10.0.0.0/24 1024:9999 -d ! 10.0.0.0/24 119 -i eth1 -j ACCEPT /sbin/ipchains -A output -p tcp -s 10.0.0.0/24 1024:9999 -d ! 10.0.0.0/24 119 -i eth1 -j ACCEPT /sbin/ipchains -A input -p tcp -s ! 10.0.0.0/24 119 -d 10.0.0.0/24 1024:9999 -i eth1 -j ACCEPT /sbin/ipchains -A forward -p tcp -s ! 10.0.0.0/24 119 -d 10.0.0.0/24 1024:9999 -i eth0 -j ACCEPT /sbin/ipchains -A output -p tcp -s ! 10.0.0.0/24 119 -d 10.0.0.0/24 1024:9999 -i eth0 -j ACCEPT # DENIALS /sbin/ipchains -A input -j DENY -l /sbin/ipchains -A forward -j DENY -l /sbin/ipchains -A output -j DENY -l