A
Anonymous
Gast
so, ich denke mal folgende config dürfte für ein Routersystem mit 2 Netzwerkkarten recht sinnvoll sein, wenn jemand noch Ergänzungen hätte, bitte einfach sagen.
Es gilt in diesem Beispiel:
192.168.0.0/24 hat direkten Internetzugang über 192.168.0.1 als Gateway (Hardware-Router)
DNS Server REAL = 192.168.0.1 bei Subnet 255.255.255.0
Server WAN = 192.168.0.5 bei Subnet 255.255.255.0
Server LAN = 176.13.180.1 bei Subnet 255.255.0.0
Client LAN = 176.13.180.2 bei Subnet 255.255.0.0
DNS Server am Client = 176.13.180.1 bei Subnet 255.255.0.0
Gateway am Client = 176.13.180.1 bei Subnet 255.255.0.0
## Diese Firewall kann im Moment:
#1) Routen (192.168.0.0/24 > 176.13.180.0/24)
#2) zum Client hin filtern (CLIENT <--> INTERNET)
#3) Client maskieren (176.13.180.0/24 = 192.168.0.5)
#4) Groessere Sicherheitsluecken abdecken (--state-invalid zb.)
#5) Namen uebersetzen (bind9 muss installiert und gestartet sein!)
#es wird noch dazu kommen:
#1) Schutz des SERVER <--> INTERNET Netzes
#2) Content Filtering (Domainsperren etc...)
#3) erweitertes Content Filtering (Headeranalyse und -filterung)
#4) sichere Shell, sicheres FTP (strict chRoot)
## Basis-Config laden, alle Regeln loeschen
########################################################
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
#########################################################
##Default-Policies setzen
########################################################
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP #Und hier is Schluss mit lustig )
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING DROP
iptables -t mangle -P INPUT ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
iptables -t mangle -P FORWARD ACCEPT
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P POSTROUTING ACCEPT
##########################################################
##Client darf folgendes
#########################################################
#########################################################
iptables -A FORWARD -p tcp --dport 53 -s 176.13.180.1 -j ACCEPT
iptables -A FORWARD -p udp --dport 53 -s 176.13.180.1 -j ACCEPT
iptables -A FORWARD -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -p tcp --dport 20 -j ACCEPT
iptables -A FORWARD -p icmp --icmp-type 8 -j ACCEPT
#########################################################
#########################################################
##Dem Client die eigene IP geben
####################################################
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
####################################################
##Routing zwischen 2 Netzen erlauben
##################################################
iptables -A FORWARD -d 176.13.180.0/24 -j ACCEPT
##################################################
##kopierte, leicht geaenderte Sicherheitseinstellungen
#(harry@homelinux.org)
####################################################################
# FORWARD fuellen
iptables -A FORWARD -p tcp -m limit --limit 7200/h -j LOG --log-prefix "TCP "
iptables -A FORWARD -p udp -m limit --limit 7200/h -j LOG --log-prefix "UDP "
iptables -A FORWARD -p icmp -m limit --limit 7200/h -j LOG --log-prefix "ICMP "
iptables -A FORWARD -s 192.168.0.0/24 -j DROP
iptables -A FORWARD -m limit --limit 7200/h -j LOG --log-prefix "OTHER "
#Alle verworfenen Pakete protokollieren
iptables -A FORWARD -m state --state INVALID -m limit --limit 7200/h -j LOG --log-prefix "INPUT INVALID "
iptables -A OUTPUT -m state --state INVALID -m limit --limit 7200/h -j LOG --log-prefix "OUTPUT INVALID "
# Korrupte Pakete zurueckweisen
iptables -A FORWARD -m state --state INVALID -j DROP
iptables -A OUTPUT -m state --state INVALID -j DROP
# Stealth Scans etc. DROPpen
# Keine Flags gesetzt
iptables -A FORWARD -p tcp --tcp-flags ALL NONE -j DROP
# SYN und FIN gesetzt
iptables -A FORWARD -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
# SYN und RST gleichzeitig gesetzt
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
# FIN und RST gleichzeitig gesetzt
iptables -A FORWARD -p tcp --tcp-flags FIN,RST FIN,RST -j DROP
# FIN ohne ACK
iptables -A FORWARD -p tcp --tcp-flags ACK,FIN FIN -j DROP
# PSH ohne ACK
iptables -A FORWARD -p tcp --tcp-flags ACK,PSH PSH -j DROP
# URG ohne ACK
iptables -A FORWARD -p tcp --tcp-flags ACK,URG URG -j DROP
# Loopback-Netzwerk-Kommunikation zulassen
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# Max. 500/Sekunde (5/Jiffie) senden
echo 5 > /proc/sys/net/ipv4/icmp_ratelimit
# Speicherallozierung und -timing fr IP-De/-Fragmentierung
echo 262144 > /proc/sys/net/ipv4/ipfrag_high_thresh
echo 196608 > /proc/sys/net/ipv4/ipfrag_low_thresh
echo 30 > /proc/sys/net/ipv4/ipfrag_time
# TCP-FIN-Timeout zum Schutz vor DoS-Attacken setzen
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
# Maximal 3 Antworten auf ein TCP-SYN
echo 3 > /proc/sys/net/ipv4/tcp_retries1
# TCP-Pakete maximal 15x wiederholen
echo 15 > /proc/sys/net/ipv4/tcp_retries2
Es gilt in diesem Beispiel:
192.168.0.0/24 hat direkten Internetzugang über 192.168.0.1 als Gateway (Hardware-Router)
DNS Server REAL = 192.168.0.1 bei Subnet 255.255.255.0
Server WAN = 192.168.0.5 bei Subnet 255.255.255.0
Server LAN = 176.13.180.1 bei Subnet 255.255.0.0
Client LAN = 176.13.180.2 bei Subnet 255.255.0.0
DNS Server am Client = 176.13.180.1 bei Subnet 255.255.0.0
Gateway am Client = 176.13.180.1 bei Subnet 255.255.0.0
## Diese Firewall kann im Moment:
#1) Routen (192.168.0.0/24 > 176.13.180.0/24)
#2) zum Client hin filtern (CLIENT <--> INTERNET)
#3) Client maskieren (176.13.180.0/24 = 192.168.0.5)
#4) Groessere Sicherheitsluecken abdecken (--state-invalid zb.)
#5) Namen uebersetzen (bind9 muss installiert und gestartet sein!)
#es wird noch dazu kommen:
#1) Schutz des SERVER <--> INTERNET Netzes
#2) Content Filtering (Domainsperren etc...)
#3) erweitertes Content Filtering (Headeranalyse und -filterung)
#4) sichere Shell, sicheres FTP (strict chRoot)
## Basis-Config laden, alle Regeln loeschen
########################################################
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
#########################################################
##Default-Policies setzen
########################################################
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP #Und hier is Schluss mit lustig )
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING DROP
iptables -t mangle -P INPUT ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
iptables -t mangle -P FORWARD ACCEPT
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P POSTROUTING ACCEPT
##########################################################
##Client darf folgendes
#########################################################
#########################################################
iptables -A FORWARD -p tcp --dport 53 -s 176.13.180.1 -j ACCEPT
iptables -A FORWARD -p udp --dport 53 -s 176.13.180.1 -j ACCEPT
iptables -A FORWARD -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -p tcp --dport 20 -j ACCEPT
iptables -A FORWARD -p icmp --icmp-type 8 -j ACCEPT
#########################################################
#########################################################
##Dem Client die eigene IP geben
####################################################
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
####################################################
##Routing zwischen 2 Netzen erlauben
##################################################
iptables -A FORWARD -d 176.13.180.0/24 -j ACCEPT
##################################################
##kopierte, leicht geaenderte Sicherheitseinstellungen
#(harry@homelinux.org)
####################################################################
# FORWARD fuellen
iptables -A FORWARD -p tcp -m limit --limit 7200/h -j LOG --log-prefix "TCP "
iptables -A FORWARD -p udp -m limit --limit 7200/h -j LOG --log-prefix "UDP "
iptables -A FORWARD -p icmp -m limit --limit 7200/h -j LOG --log-prefix "ICMP "
iptables -A FORWARD -s 192.168.0.0/24 -j DROP
iptables -A FORWARD -m limit --limit 7200/h -j LOG --log-prefix "OTHER "
#Alle verworfenen Pakete protokollieren
iptables -A FORWARD -m state --state INVALID -m limit --limit 7200/h -j LOG --log-prefix "INPUT INVALID "
iptables -A OUTPUT -m state --state INVALID -m limit --limit 7200/h -j LOG --log-prefix "OUTPUT INVALID "
# Korrupte Pakete zurueckweisen
iptables -A FORWARD -m state --state INVALID -j DROP
iptables -A OUTPUT -m state --state INVALID -j DROP
# Stealth Scans etc. DROPpen
# Keine Flags gesetzt
iptables -A FORWARD -p tcp --tcp-flags ALL NONE -j DROP
# SYN und FIN gesetzt
iptables -A FORWARD -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
# SYN und RST gleichzeitig gesetzt
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
# FIN und RST gleichzeitig gesetzt
iptables -A FORWARD -p tcp --tcp-flags FIN,RST FIN,RST -j DROP
# FIN ohne ACK
iptables -A FORWARD -p tcp --tcp-flags ACK,FIN FIN -j DROP
# PSH ohne ACK
iptables -A FORWARD -p tcp --tcp-flags ACK,PSH PSH -j DROP
# URG ohne ACK
iptables -A FORWARD -p tcp --tcp-flags ACK,URG URG -j DROP
# Loopback-Netzwerk-Kommunikation zulassen
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# Max. 500/Sekunde (5/Jiffie) senden
echo 5 > /proc/sys/net/ipv4/icmp_ratelimit
# Speicherallozierung und -timing fr IP-De/-Fragmentierung
echo 262144 > /proc/sys/net/ipv4/ipfrag_high_thresh
echo 196608 > /proc/sys/net/ipv4/ipfrag_low_thresh
echo 30 > /proc/sys/net/ipv4/ipfrag_time
# TCP-FIN-Timeout zum Schutz vor DoS-Attacken setzen
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
# Maximal 3 Antworten auf ein TCP-SYN
echo 3 > /proc/sys/net/ipv4/tcp_retries1
# TCP-Pakete maximal 15x wiederholen
echo 15 > /proc/sys/net/ipv4/tcp_retries2