Firewall Beispielscript: Unterschied zwischen den Versionen
Buli (Diskussion | Beiträge)  | 
				Gehrke (Diskussion | Beiträge)  K (intene Verlinkung, Category)  | 
				||
| (7 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 10: | Zeile 8: | ||
  iptables -P OUTPUT ACCEPT  |   iptables -P OUTPUT ACCEPT  | ||
  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  | ||
| + |  s) iptset;;  | ||
| + |  u) iptunset;;  | ||
| + |  *) echo "Usage: $0 s|u (set|unset)"  | ||
| + |  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