Hi
First of all I won't to tell, that I'am not very well with configuring the firewalls.
But I don't disappear any generators or sth, I prefer clear code. So I wrote the following rules:
I have fedora5 with the services: http + SSL, exim + SSL, clamav, SSH, pro-ftpd +SSL, named, spamassasin, boxtrapper, ntp, mysql, postgresql.
When I inurement the rules, looks that everythink all wright, but I could be wrong, because I'am entrant . Can anyone tell me what I missed or sth ?
Greetings.
First of all I won't to tell, that I'am not very well with configuring the firewalls.
But I don't disappear any generators or sth, I prefer clear code. So I wrote the following rules:
Code:
#!/bin/bash
HOSTIP=XX.XX.XX.XX
firewall_start() {
echo "Starting Firewall..."
/sbin/iptables -F
/sbin/iptables -P INPUT DROP
/sbin/iptables -P FORWARD DROP
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A OUTPUT -o lo -j ACCEPT
/sbin/iptables -A FORWARD -o lo -j ACCEPT
# INPUT
# TCP
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A INPUT -p tcp -s 0/0 -d $HOSTIP --dport 21 -mstate --state NEW -j ACCEPT
/sbin/iptables -A INPUT -p tcp -s 0/0 -d $HOSTIP --dport 25 -mstate --state NEW -j ACCEPT
/sbin/iptables -A INPUT -p tcp -s 0/0 -d $HOSTIP --dport 53 -mstate --state NEW -j ACCEPT
/sbin/iptables -A INPUT -p tcp -s 0/0 -d $HOSTIP --dport 80 -mstate --state NEW -j ACCEPT
/sbin/iptables -A INPUT -p tcp -s 0/0 -d $HOSTIP --dport 110 -mstate --state NEW -j ACCEPT
/sbin/iptables -A INPUT -p tcp -s 0/0 -d $HOSTIP --dport 143 -mstate --state NEW -j ACCEPT
/sbin/iptables -A INPUT -p tcp -s 0/0 -d $HOSTIP --dport 465 -mstate --state NEW -j ACCEPT
/sbin/iptables -A INPUT -p tcp -s 0/0 -d $HOSTIP --dport 953 -mstate --state NEW -j ACCEPT
/sbin/iptables -A INPUT -p tcp -s 0/0 -d $HOSTIP --dport 993 -mstate --state NEW -j ACCEPT
/sbin/iptables -A INPUT -p tcp -s 0/0 -d $HOSTIP --dport 999 -mstate --state NEW -j ACCEPT
/sbin/iptables -A INPUT -p tcp -s 0/0 -d $HOSTIP --dport 2082 -mstate --state NEW -j ACCEPT
/sbin/iptables -A INPUT -p tcp -s 0/0 -d $HOSTIP --dport 2083 -mstate --state NEW -j ACCEPT
/sbin/iptables -A INPUT -p tcp -s 0/0 -d $HOSTIP --dport 2084 -mstate --state NEW -j ACCEPT
/sbin/iptables -A INPUT -p tcp -s 0/0 -d $HOSTIP --dport 2086 -mstate --state NEW -j ACCEPT
/sbin/iptables -A INPUT -p tcp -s 0/0 -d $HOSTIP --dport 2087 -mstate --state NEW -j ACCEPT
/sbin/iptables -A INPUT -p tcp -s 0/0 -d $HOSTIP --dport 2095 -mstate --state NEW -j ACCEPT
/sbin/iptables -A INPUT -p tcp -s 0/0 -d $HOSTIP --dport 2096 -mstate --state NEW -j ACCEPT
/sbin/iptables -A INPUT -p tcp -s 0/0 -d $HOSTIP --dport 3306 -mstate --state NEW -j ACCEPT
/sbin/iptables -A INPUT -p tcp -s 0/0 -d $HOSTIP --dport 6666 -mstate --state NEW -j ACCEPT
/sbin/iptables -A INPUT -p tcp -s 0/0 -d $HOSTIP --dport 7786 -mstate --state NEW -j ACCEPT
#UDP
/sbin/iptables -A INPUT -p udp -s 0/0 -d $HOSTIP --dport 53 -mstate --state NEW -j ACCEPT
/sbin/iptables -A INPUT -p udp -s 0/0 -d $HOSTIP --dport 6277 -mstate --state NEW -j ACCEPT
# BLOCKS
# ECN
if [ -e /proc/sys/net/ipv4/tcp_ecn ]; then
echo 0 > /proc/sys/net/ipv4/tcp_ecn
fi
# ANTY-SPOOF
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
# HOLES
/sbin/iptables -A OUTPUT -m state -p icmp --state INVALID -j DROP
/sbin/iptables -A INPUT -p tcp --dst 0/0 --dport 113 -j REJECT --reject-with icmp-port-unreachable
/sbin/iptables -A INPUT -p tcp --dst 0/0 --dport 1080 -j REJECT --reject-with icmp-port-unreachable
# LOG
# /sbin/iptables -A INPUT -j LOG --log-prefix "bad input:"
/sbin/iptables -A INPUT -m state --state INVALID -m limit --limit 5/minute -j LOG
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_nat_ftp
}
firewall_stop(){
echo "Stop the Firewall..."
/sbin/iptables -F
/sbin/iptables -t nat -F
/sbin/iptables -P INPUT DROP
/sbin/iptables -P FORWARD DROP
/sbin/iptables -P OUTPUT DROP
}
firewall_flush()
{
/sbin/iptables -P INPUT ACCEPT
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -P FORWARD ACCEPT
/sbin/iptables -F
}
case "$1" in
'start')
firewall_start
;;
'stop')
firewall_stop
;;
'restart')
firewall_stop
sleep 1
firewall_start
;;
'flush')
firewall_flush
;;
'temp')
firewall_stop
sleep 1
firewall_start
sleep 40
firewall_flush
;;
*)
echo "usage $0 start|stop (-P DROP)|restart|flush (-P ACCEPT)|temp (time 40s)"
;;
esac
When I inurement the rules, looks that everythink all wright, but I could be wrong, because I'am entrant . Can anyone tell me what I missed or sth ?
Greetings.