#!/bin/bash echo "The firewall is starting up...:-)" # Define variables IPT=/sbin/iptables # change if needed EXT_IF=eth0 # external interface (connected to internet) # Enable TCP SYN Cookie Protection # ** comment the line below if it throws an error; # ** TCP_SYN_COOKIES must be enabled in the kernel # ** for this to work echo 1 > /proc/sys/net/ipv4/tcp_syncookies # Disable ICMP Redirect Acceptance echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects # Do not send Redirect Messages echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects # Enable bad error message protection echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses # Enable broadcast echo protection echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts # Disable source-routed packets echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route # Log spoofed packets, source-routed packets, and redirect packets echo 1 > /proc/sys/net/ipv4/conf/all/log_martians # Let's allow redirects from trusted gateways only: echo 1 > /proc/sys/net/ipv4/conf/all/secure_redirects # Reduce chances of DOS'ing by reducing timeouts # Defaults: # echo 60 > /proc/sys/net/ipv4/tcp_fin_timeout # echo 7200 > /proc/sys/net/ipv4/tcp_keepalive_time # echo 8192 > /proc/sys/net/ipv4/tcp_max_orphans # echo 1 > /proc/sys/net/ipv4/tcp_window_scaling echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout echo 3600 > /proc/sys/net/ipv4/tcp_keepalive_time echo 4096 > /proc/sys/net/ipv4/tcp_max_orphans echo 1 > /proc/sys/net/ipv4/tcp_window_scaling # Let's load the module allowing Connection Tracking for FTP: /sbin/modprobe ip_conntrack_ftp # Let's load the module allowing Connection Tracking for IRC: /sbin/modprobe ip_conntrack_irc # Set default policy to DROP $IPT -P INPUT DROP $IPT -P OUTPUT ACCEPT $IPT -P FORWARD DROP # Flush old rules $IPT -F # Allow loopback traffic $IPT -A INPUT -i lo -j ACCEPT $IPT -A OUTPUT -o lo -j ACCEPT # Allow packets of established connections and those # which are related to established connections $IPT -A INPUT -i $EXT_IF -p all -m state --state ESTABLISHED,RELATED -j ACCEPT # Allow incoming ssh from internet # ** (uncomment the line below if you want to allow incoming ssh) #$IPT -A INPUT -i $EXT_IF -p tcp --destination-port 22 -m state --state NEW -j ACCEPT # Allow incoming conections # Azureus $IPT -A INPUT -i $EXT_IF -p tcp --destination-port 46661 -m state --state NEW -j ACCEPT $IPT -A INPUT -i $EXT_IF -p udp --destination-port 46661 -m state --state NEW -j ACCEPT # httpd $IPT -A INPUT -i $EXT_IF -p tcp --destination-port 80 -m state --state NEW -j ACCEPT # IRCD $IPT -A INPUT -i $EXT_IF -p tcp --destination-port 6886 -m state --state NEW -j ACCEPT #$IPT -A INPUT -i $EXT_IF -p udp --destination-port 46661 -m state --state NEW -j ACCEPT # MAIL #$IPT -A INPUT -i $EXT_IF -p tcp --destination-port 25 -m state --state NEW -j ACCEPT #$IPT -A INPUT -i $EXT_IF -p tcp --destination-port 110 -m state --state NEW -j ACCEPT #$IPT -A INPUT -i $EXT_IF -p tcp --destination-port 935 -m state --state NEW -j ACCEPT #$IPT -A INPUT -i $EXT_IF -p tcp --destination-port 995 -m state --state NEW -j ACCEPT #$IPT -A INPUT -i $EXT_IF -p tcp --destination-port 1024 -m state --state NEW -j ACCEPT #$IPT -A INPUT -i $EXT_IF -p tcp --destination-port 22 -m state --state NEW -j ACCEPT #$IPT -A INPUT -i $EXT_IF -p tcp -s 195.70.38.0/24 -d 195.70.38.0/24 --dport 1:65535 -j REJECT #$IPT -A INPUT -i $EXT_IF -p tcp -s 195.70.38.0/24 -d 195.70.38.0/24 --sport 1:65535 -j REJECT $IPT -A INPUT -i $EXT_IF -p udp --destination-port 1:65535 -j DROP $IPT -A INPUT -i $EXT_IF -p tcp --destination-port 2611 -j DROP $IPT -A INPUT -i $EXT_IF -p tcp --destination-port 111 -j DROP $IPT -A INPUT -i $EXT_IF -p tcp --destination-port 3306 -j DROP $IPT -A INPUT -i $EXT_IF -p tcp --destination-port 8080 -j DROP $IPT -A INPUT -i $EXT_IF -p tcp --destination-port 825 -j DROP $IPT -A INPUT -i $EXT_IF -p tcp --destination-port 3333 -j DROP $IPT -A INPUT -i $EXT_IF -p tcp --destination-port 5555 -j DROP $IPT -A INPUT -i $EXT_IF -p tcp --destination-port 4444 -j DROP $IPT -A INPUT -i $EXT_IF -p tcp --destination-port 2611 -j DROP $IPT -A INPUT -i $EXT_IF -p tcp --destination-port 7634 -j DROP $IPT -A INPUT -i $EXT_IF -p tcp --destination-port 7777 -j DROP # Set default policy to DROP $IPT -P INPUT DROP $IPT -P OUTPUT ACCEPT $IPT -P FORWARD DROP