Debian 4 iptables.conf

  • Ersteller Ersteller Willüüü
  • Erstellt am Erstellt am
W

Willüüü

Gast
Hallo,

ich versuche meine iptables.conf über die Schnitstelle eth0 mit dem Befehl pre-up /sbin/iptables-restore < /etc/iptables.conf zu laden. Jedoch nach dem Einbinden und Neustarten des Netzwerkes ist scheinbar alles dicht. Das Script gebe ich unter /etc/network/interfaces mit an. Habe auch nur eine Schnitstelle nämlich eth0.

#iptables-Script

#Module laden
modprobe ip_tables
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe iptable_nat

#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/all/accept_redirects

#Kein Source-Routing
echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route

#ICMP Broadcasts ignorieren
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

#Killt Pakete aus dem Adressraum 0.X.X.X
echo "0" > /proc/sys/net/ipv4/conf/all/bootp_relay

#Killt gespoofte Pakete
echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter

#Alle Regeln löschen
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -F DROPKETTE
iptables -X DROPKETTE

#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

#Lokale Kommunikation immer erlauben
iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -j ACCEPT
iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -j ACCEPT

#Logging-Kette
iptables -N DROPKETTE
iptables -A DROPKETTE -j LOG -m limit --limit 5/s --log-prefix "Blockiert:"
iptables -A DROPKETTE -j DROP

#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

#Server-Ports freigeben
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 23 -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
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT

#Antworten hergestellter Verbindungen
iptables -A INPUT -p tcp --sport 20:21 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --sport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --sport 23 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --sport 25 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --sport 80 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --sport 110 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --sport 443 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p udp --sport 53 -m state --state ESTABLISHED,RELATED -j ACCEPT

#ICQ
iptables -A OUTPUT -p tcp --dport 5190 -j ACCEPT
iptables -A INPUT -p tcp --sport 5190 -j ACCEPT
Jemand eine Idee? Wieso nimmt er die Regeln nicht an?

Gruß

Willi
 
Zuletzt bearbeitet von einem Moderator:
Hi

Anfangs löscht du nicht alle Regeln. Es gibt auch noch die Tabellen "nat" und "mangle". Um die Firewall vollständig zu deaktivieren (alle Regeln flushen) führe Folgendes aus:

Code:
#!/bin/bash
iptables='/sbin/iptables'

# Reset Default Policies
$iptables -P INPUT ACCEPT
$iptables -P FORWARD ACCEPT
$iptables -P OUTPUT ACCEPT
$iptables -t nat -P PREROUTING ACCEPT
$iptables -t nat -P POSTROUTING ACCEPT
$iptables -t nat -P OUTPUT ACCEPT
$iptables -t mangle -P PREROUTING ACCEPT
$iptables -t mangle -P OUTPUT ACCEPT

# Flush all rules
$iptables -F
$iptables -t nat -F
$iptables -t mangle -F

# Erase all non-default chains
$iptables -X
$iptables -t nat -X
$iptables -t mangle -X

Damit stellst du sicher, dass die Firewall komplett "gespült" worden ist und sich keine alten Regeln darin befinden.

Loopback solltest du ohne Angabe von Source-IP oder Destination-IP zulassen. Einfach den Verkehr über das Loopback-Interface zulassen:

Code:
$iptables -A INPUT -i lo -p all -j ACCEPT
$iptables -A OUTPUT -o lo -p all -j ACCEPT

Ausserdem ist bei dir alles dicht, weil nur Pakete zugelassen werden, die zu einer bestehenden Verbindung gehören (ESTABLISHED) oder mit einer Verbindung zu tun haben, wie z.B. FTP (RELATED). Neue Verbindungen (-m state --state NEW) werden keine zugelassen. Die Firewall ist also komplett abgeriegelt, bis auf Port 22 (tcp), den du mit einer stateless Regel zulässt.

Statt der Auflistung aller Ports, auf denen bestehende Verbindungen zugelassen werden, genügen zwei Zeilen:

Code:
$iptables -A INPUT -p tcp -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
$iptables -A INPUT -p udp -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

Stateful Rules funktionieren auch bei UDP.

Um Ports zu öffnen solltest du dann richtige Stateful Rules verwenden:

Code:
$iptables -A INPUT -p tcp -i eth0 --dport 80 -m state --state NEW -j ACCEPT

Damit lässt du nur neue Verbindungen zu und nicht einfach alle Pakete, die etwas mit Port 80 zu tun haben :)

Davor solltest du noch neue Verbindungsversuche ohne SYN Flag blockieren:

Code:
$iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

LG
 
Zuletzt bearbeitet:
Zurück
Oben