Firewall Beispielscript: Unterschied zwischen den Versionen
Buli (Diskussion | Beiträge) |
Gehrke (Diskussion | Beiträge) K (intene Verlinkung, Category) |
||
| (4 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
| − | #!/bin/sh | + | <!-- kleiner Tipp: Leerzeilen in Codeblöcken kriegt man mit einem leerzeichen am Anfang der ansonsten leeren Zeile hin -->#!/bin/sh |
locip=169.254.0.1 | locip=169.254.0.1 | ||
aport=1024:65535 | aport=1024:65535 | ||
| − | |||
iptunset(){ | iptunset(){ | ||
| − | |||
# erst mal ordentlich aufräumen ... | # erst mal ordentlich aufräumen ... | ||
iptables -F | iptables -F | ||
| Zeile 11: | Zeile 9: | ||
iptables -P FORWARD ACCEPT | iptables -P FORWARD ACCEPT | ||
} | } | ||
| − | |||
######################################################################## | ######################################################################## | ||
| − | |||
iptset(){ | iptset(){ | ||
| − | |||
# alles sperren | # alles sperren | ||
iptables -P INPUT DROP | iptables -P INPUT DROP | ||
iptables -P OUTPUT DROP | iptables -P OUTPUT DROP | ||
iptables -P FORWARD DROP | iptables -P FORWARD DROP | ||
| − | |||
# Loopback wieder aktivieren | # Loopback wieder aktivieren | ||
iptables -A INPUT -i lo -j ACCEPT | iptables -A INPUT -i lo -j ACCEPT | ||
iptables -A OUTPUT -o lo -j ACCEPT | iptables -A OUTPUT -o lo -j ACCEPT | ||
| − | |||
# eth0 für ICMP freischalten | # eth0 für ICMP freischalten | ||
iptables -A INPUT -i eth0 -p icmp -j ACCEPT | iptables -A INPUT -i eth0 -p icmp -j ACCEPT | ||
iptables -A OUTPUT -o eth0 -p icmp -j ACCEPT | iptables -A OUTPUT -o eth0 -p icmp -j ACCEPT | ||
| − | |||
# Anfragen von diesem Client an Nameserver erlauben | # Anfragen von diesem Client an Nameserver erlauben | ||
iptables -A OUTPUT -o eth0 -p udp -s $locip --sport $aport -d 0/0 --dport 53 -j ACCEPT | iptables -A OUTPUT -o eth0 -p udp -s $locip --sport $aport -d 0/0 --dport 53 -j ACCEPT | ||
iptables -A INPUT -i eth0 -p udp -s 0/0 --sport 53 -d $locip --dport $aport -j ACCEPT | iptables -A INPUT -i eth0 -p udp -s 0/0 --sport 53 -d $locip --dport $aport -j ACCEPT | ||
| − | |||
# Port 80 freischalten (Anfragen an fremden Webserver) | # Port 80 freischalten (Anfragen an fremden Webserver) | ||
iptables -A OUTPUT -o eth0 -p tcp -s $locip --sport $aport -d 0/0 --dport 80 -j ACCEPT | iptables -A OUTPUT -o eth0 -p tcp -s $locip --sport $aport -d 0/0 --dport 80 -j ACCEPT | ||
iptables -A INPUT -i eth0 -p tcp ! --syn -s 0/0 --sport 80 -d $locip --dport $aport -j ACCEPT | iptables -A INPUT -i eth0 -p tcp ! --syn -s 0/0 --sport 80 -d $locip --dport $aport -j ACCEPT | ||
| − | + | # Anfragen an entfernten ftp freischalten (Port 20/21/alle unpreviligierten)/kann man auch sein lassen | |
| − | # Anfragen an entfernten ftp freischalten (Port 20/21/alle unpreviligierten) | ||
iptables -A OUTPUT -o eth0 -p tcp -s $locip --sport $aport -d 0/0 --dport 21 -j ACCEPT | iptables -A OUTPUT -o eth0 -p tcp -s $locip --sport $aport -d 0/0 --dport 21 -j ACCEPT | ||
iptables -A INPUT -i eth0 -p tcp ! --syn -s 0/0 --sport 21 -d $locip --dport $aport -j ACCEPT | iptables -A INPUT -i eth0 -p tcp ! --syn -s 0/0 --sport 21 -d $locip --dport $aport -j ACCEPT | ||
| − | |||
iptables -A INPUT -i eth0 -p tcp -s 0/0 --sport 20 -d $locip --dport $aport -j ACCEPT | iptables -A INPUT -i eth0 -p tcp -s 0/0 --sport 20 -d $locip --dport $aport -j ACCEPT | ||
iptables -A OUTPUT -o eth0 -p tcp ! --syn -s $locip --sport $aport -d 0/0 --dport 20 -j ACCEPT | iptables -A OUTPUT -o eth0 -p tcp ! --syn -s $locip --sport $aport -d 0/0 --dport 20 -j ACCEPT | ||
| − | |||
iptables -A OUTPUT -o eth0 -p tcp -s $locip --sport $aport -d 0/0 --dport $aport -j ACCEPT | iptables -A OUTPUT -o eth0 -p tcp -s $locip --sport $aport -d 0/0 --dport $aport -j ACCEPT | ||
iptables -A INPUT -i eth0 -p tcp ! --syn -s 0/0 --sport $aport -d $locip --dport $aport -j ACCEPT | iptables -A INPUT -i eth0 -p tcp ! --syn -s 0/0 --sport $aport -d $locip --dport $aport -j ACCEPT | ||
} | } | ||
| − | |||
######################################################################## | ######################################################################## | ||
| − | |||
case "$1" in | case "$1" in | ||
s) iptset;; | s) iptset;; | ||
| Zeile 55: | Zeile 41: | ||
*) echo "Usage: $0 s|u (set|unset)" | *) echo "Usage: $0 s|u (set|unset)" | ||
esac | esac | ||
| + | |||
| + | =Weiterführende Links= | ||
| + | *[[iptables]] | ||
| + | |||
| + | [[Shellscripte|Zurück zur Shellscripteübersicht]] | ||
| + | [[Kategorie:Scripte]] [[Kategorie:Security]] | ||
Aktuelle Version vom 23. November 2013, 16:04 Uhr
#!/bin/sh
locip=169.254.0.1
aport=1024:65535
iptunset(){
# erst mal ordentlich aufräumen ...
iptables -F
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
}
########################################################################
iptset(){
# alles sperren
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
# Loopback wieder aktivieren
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# eth0 für ICMP freischalten
iptables -A INPUT -i eth0 -p icmp -j ACCEPT
iptables -A OUTPUT -o eth0 -p icmp -j ACCEPT
# Anfragen von diesem Client an Nameserver erlauben
iptables -A OUTPUT -o eth0 -p udp -s $locip --sport $aport -d 0/0 --dport 53 -j ACCEPT
iptables -A INPUT -i eth0 -p udp -s 0/0 --sport 53 -d $locip --dport $aport -j ACCEPT
# Port 80 freischalten (Anfragen an fremden Webserver)
iptables -A OUTPUT -o eth0 -p tcp -s $locip --sport $aport -d 0/0 --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp ! --syn -s 0/0 --sport 80 -d $locip --dport $aport -j ACCEPT
# Anfragen an entfernten ftp freischalten (Port 20/21/alle unpreviligierten)/kann man auch sein lassen
iptables -A OUTPUT -o eth0 -p tcp -s $locip --sport $aport -d 0/0 --dport 21 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp ! --syn -s 0/0 --sport 21 -d $locip --dport $aport -j ACCEPT
iptables -A INPUT -i eth0 -p tcp -s 0/0 --sport 20 -d $locip --dport $aport -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp ! --syn -s $locip --sport $aport -d 0/0 --dport 20 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -s $locip --sport $aport -d 0/0 --dport $aport -j ACCEPT
iptables -A INPUT -i eth0 -p tcp ! --syn -s 0/0 --sport $aport -d $locip --dport $aport -j ACCEPT
}
########################################################################
case "$1" in
s) iptset;;
u) iptunset;;
*) echo "Usage: $0 s|u (set|unset)"
esac