Cerox
29.12.05, 20:41
Hallo zusammen,
ich muss euch mal wieder mit meinem iptables Script nerven; ich habe dazu zwei Fragen.
Erstmal das Script:
#iptables-Script
#Routing aktivieren
echo "1" > /proc/sys/net/ipv4/ip_forward
#TCP Syncookies aktivieren
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
#RST bei vollem Buffer senden
echo "1" > /proc/sys/net/ipv4/tcp_abort_on_overflow
#TCP FIN,ACK Timeout
echo "30" > /proc/sys/net/ipv4/tcp_fin_timeout
#Verbindungsaufbau nach 3 SYN-Anfragen unterbrechen
echo "3" > /proc/sys/net/ipv4/tcp_syn_retries
#Keine Redirection
echo "0" > /proc/sys/net/ipv4/conf/eth0/accept_redirects
#ICMP Broadcasts ignorieren
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
#Alle Regeln löschen
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
#Policies setzen
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#Loopback-Kommunikation immer erlauben
iptables -A INPUT -i lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
iptables -A OUTPUT -o lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
#ICMP eingehend
iptables -A INPUT -p icmp --icmp-type fragmentation-needed -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
iptables -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
iptables -A INPUT -p icmp --icmp-type parameter-problem -j ACCEPT
iptables -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
iptables -A INPUT -p icmp --icmp-type timestamp-reply -j ACCEPT
iptables -A INPUT -p icmp --icmp-type timestamp-request -j ACCEPT
#ICMP ausgehend
iptables -A OUTPUT -p icmp -j ACCEPT
#Hergestellte Verbindungen eingehend zulassen
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#SSH von außen zulassen
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#Ausgehende Services zulassen
iptables -A OUTPUT -p tcp --dport 20:21 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 110 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
#DNS Anfragen zulassen
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
#Registered Ports nach außen zulassen
iptables -A OUTPUT -p tcp --dport 1024:49151 -j ACCEPT
iptables -A OUTPUT -p udp --dport 1024:49151 -j ACCEPT
#Logge unzulässige Pakete
iptables -A INPUT -j LOG -m limit --limit 5/s --log-prefix "INPUT-DROP: "
iptables -A FORWARD -j LOG -m limit --limit 5/s --log-prefix "FORWARD-DROP: "
iptables -A OUTPUT -j LOG -m limit --limit 5/s --log-prefix "OUTPUT-DROP: "
1. Ist das Script so als sicher zu betrachten? Ich muss leider die Registered Ports nach außen hin zulassen. Der Grund dafür ist Passive FTP. Passive FTP benötigt nach außen zum Server eine Verbindung mit einem Port > 1024; das zeigen auch die Packetsniffer wie Ethereal - kann ich das noch begrenzen auf eine bestimmte Portrange?
2. Die Policies stehen alle auf DROP; d.h nach dem Durchlaufen der Regeln, wird alles gedroppt, was nicht erlaubt wurde. Das wollte ich dann am Ende des Scriptes noch vorher loggen mit
iptables -A INPUT -j LOG -m limit --limit 5/s --log-prefix "INPUT-DROP: "
iptables -A FORWARD -j LOG -m limit --limit 5/s --log-prefix "FORWARD-DROP: "
iptables -A OUTPUT -j LOG -m limit --limit 5/s --log-prefix "OUTPUT-DROP: "
Naja das funktioniert leider nicht so ganz, die Meldungen tauchen weder in /var/log/messages noch in /var/log/firewall auf. Wo werden sie standardmäßig gespeichert und wie kann ich das in eine extra Datei loggen?
ich muss euch mal wieder mit meinem iptables Script nerven; ich habe dazu zwei Fragen.
Erstmal das Script:
#iptables-Script
#Routing aktivieren
echo "1" > /proc/sys/net/ipv4/ip_forward
#TCP Syncookies aktivieren
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
#RST bei vollem Buffer senden
echo "1" > /proc/sys/net/ipv4/tcp_abort_on_overflow
#TCP FIN,ACK Timeout
echo "30" > /proc/sys/net/ipv4/tcp_fin_timeout
#Verbindungsaufbau nach 3 SYN-Anfragen unterbrechen
echo "3" > /proc/sys/net/ipv4/tcp_syn_retries
#Keine Redirection
echo "0" > /proc/sys/net/ipv4/conf/eth0/accept_redirects
#ICMP Broadcasts ignorieren
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
#Alle Regeln löschen
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
#Policies setzen
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#Loopback-Kommunikation immer erlauben
iptables -A INPUT -i lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
iptables -A OUTPUT -o lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
#ICMP eingehend
iptables -A INPUT -p icmp --icmp-type fragmentation-needed -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
iptables -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
iptables -A INPUT -p icmp --icmp-type parameter-problem -j ACCEPT
iptables -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
iptables -A INPUT -p icmp --icmp-type timestamp-reply -j ACCEPT
iptables -A INPUT -p icmp --icmp-type timestamp-request -j ACCEPT
#ICMP ausgehend
iptables -A OUTPUT -p icmp -j ACCEPT
#Hergestellte Verbindungen eingehend zulassen
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#SSH von außen zulassen
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#Ausgehende Services zulassen
iptables -A OUTPUT -p tcp --dport 20:21 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 110 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
#DNS Anfragen zulassen
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
#Registered Ports nach außen zulassen
iptables -A OUTPUT -p tcp --dport 1024:49151 -j ACCEPT
iptables -A OUTPUT -p udp --dport 1024:49151 -j ACCEPT
#Logge unzulässige Pakete
iptables -A INPUT -j LOG -m limit --limit 5/s --log-prefix "INPUT-DROP: "
iptables -A FORWARD -j LOG -m limit --limit 5/s --log-prefix "FORWARD-DROP: "
iptables -A OUTPUT -j LOG -m limit --limit 5/s --log-prefix "OUTPUT-DROP: "
1. Ist das Script so als sicher zu betrachten? Ich muss leider die Registered Ports nach außen hin zulassen. Der Grund dafür ist Passive FTP. Passive FTP benötigt nach außen zum Server eine Verbindung mit einem Port > 1024; das zeigen auch die Packetsniffer wie Ethereal - kann ich das noch begrenzen auf eine bestimmte Portrange?
2. Die Policies stehen alle auf DROP; d.h nach dem Durchlaufen der Regeln, wird alles gedroppt, was nicht erlaubt wurde. Das wollte ich dann am Ende des Scriptes noch vorher loggen mit
iptables -A INPUT -j LOG -m limit --limit 5/s --log-prefix "INPUT-DROP: "
iptables -A FORWARD -j LOG -m limit --limit 5/s --log-prefix "FORWARD-DROP: "
iptables -A OUTPUT -j LOG -m limit --limit 5/s --log-prefix "OUTPUT-DROP: "
Naja das funktioniert leider nicht so ganz, die Meldungen tauchen weder in /var/log/messages noch in /var/log/firewall auf. Wo werden sie standardmäßig gespeichert und wie kann ich das in eine extra Datei loggen?