Dies ist eine mobil optimierte Seite, die schnell lädt. Wenn Sie die Seite ohne Optimierung laden möchten, dann klicken Sie auf diesen Text.

IPTables (Firewall) Script für euren Server

AW: IPTables (Firewall) Script für euren Server

Also, ich habe dann doch nochmal 2 Nächte Zeit mit der Geschichte verbracht, da die Lösung mir bisher nicht ganz zufriedenstellend erschien.

Das Ergebnis ist (so glaube ich) der bessere Weg zum Ziel. Bei dem bisherigen Script war die DNS-Auflösung nicht mehr gegeben und auch die CHAINS waren nach wie vor ACCEPT!

File erstellen
Code:
nano /etc/init.d/firewallv2


Inhalt in das erstellte File kopieren
Hinweis 1: eth1 natürlich durch euer verwendetes Interface ersetzen.
Hinweis 2: Wer natürlich sein System oder Programme aktualisieren möchte sollte auch ausgehend Port 80 öffnen!
Hinweis 3: Auf Wunsch werde ich bekannte SSH Bot IP-Ranges gerne weiter aktulisieren. Wer auch das nicht haben mag, einfach löschen.
Code:
#!/bin/sh
 
# SUCHE NACH IPTABLES
iptables=`which iptables`
 
# ABBRECHEN WENN IPTABLES NICHT INSTALLIERT IST
test -f $iptables || exit 0
 
case "$1" in
   start)
      echo "FIREWALL WIRD GESTARTET..."
      # ALLE BISHERIGEN REGELN LÖSCHEN
      $iptables -t nat -F
      $iptables -t filter -F
      $iptables -X
 
      # NEUE REGELN ERZEUGEN
      $iptables -N garbage
      $iptables -I garbage -p TCP -j LOG --log-prefix="DROP TCP-Packet: " --log-level 3
      $iptables -I garbage -p UDP -j LOG --log-prefix="DROP UDP-Packet: " --log-level 3
      $iptables -I garbage -p ICMP -j LOG --log-prefix="DROP ICMP-Packet: " --log-level 3
 
      # ÄNDERE CHAIN POLICY AUF DROP (Alle Ein- und Ausgehenden Pakete verwerfen die keine Regel haben)
      $iptables -P INPUT DROP
      $iptables -P OUTPUT DROP
      $iptables -P FORWARD DROP
 
      # ERLAUBE ALLES ÜBER LOOPBACK
      $iptables -I INPUT -i lo -j ACCEPT
      $iptables -I OUTPUT -o lo -j ACCEPT
 
      # ---> AUSGEHENDE VERBINDUNGEN (Alles mit # = keine Regel also gesperrt)
      # ---> SSH PORT 22
      #$iptables -I OUTPUT -o eth1 -p TCP --sport 1024:65535 --dport 22 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      #$iptables -I INPUT -i eth1 -p TCP --sport 22 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
      # ---> DNS PORT 53
      $iptables -I OUTPUT -o eth1 -p TCP --sport 1024:65535 --dport 53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      $iptables -I INPUT -i eth1 -p TCP --sport 53 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
      $iptables -I OUTPUT -o eth1 -p UDP --sport 1024:65535 --dport 53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      $iptables -I INPUT -i eth1 -p UDP --sport 53 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
[COLOR=#800000]       # ---> WEB PORT 80
      #$iptables -I OUTPUT -o eth1 -p TCP --sport 1024:65535 --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      #$iptables -I INPUT -i eth1 -p TCP --sport 80 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT[/COLOR]
      # ---> WEB PORT 8080
      #$iptables -I OUTPUT -o eth1 -p TCP --sport 1024:65535 --dport 8080 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      #$iptables -I INPUT -i eth1 -p TCP --sport 8080 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
      # ---> ICMP (INTERNET CONTROL MESSAGE PROTOCOL # = gesperrt)
      $iptables -I OUTPUT -o eth1 -p ICMP --icmp-type echo-request -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      $iptables -I INPUT -i eth1 -p ICMP --icmp-type echo-reply -m state --state ESTABLISHED,RELATED -j ACCEPT
      # ---> NTP (NETWORK TIME PROTOCOL)
      $iptables -I OUTPUT -o eth1 -p TCP --sport 1024:65535 --dport 123 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      $iptables -I INPUT -i eth1 -p TCP --sport 123 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
      $iptables -I OUTPUT -o eth1 -p UDP --sport 1024:65535 --dport 123 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      $iptables -I INPUT -i eth1 -p UDP --sport 123 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT      
      # ---> HIER EIN BEISPIEL FÜR CCCAM
      #$iptables -I OUTPUT -o eth1 -p TCP --sport 1024:65535 --dport 12200 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      #$iptables -I INPUT -i eth1 -p TCP --sport 12200 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
      # ---> HIER EIN BEISPIEL FÜR CAMD35
      #$iptables -I OUTPUT -o eth1 -p UDP --sport 1024:65535 --dport 54321 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      #$iptables -I INPUT -i eth1 -p UDP --sport 54321 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT

      # <--- EINGEHENDE VERBINDUNGEN (Alles mit # = keine Regel also gesperrt)
      # <--- SSH PORT 22
      #$iptables -I INPUT -i eth1 -p TCP --sport 1024:65535 --dport 22 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      #$iptables -I OUTPUT -o eth1 -p TCP --sport 22 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
      # <--- DNS PORT 53
      #$iptables -I INPUT -i eth1 -p TCP --sport 1024:65535 --dport 53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      #$iptables -I OUTPUT -o eth1 -p TCP --sport 53 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
      #$iptables -I INPUT -i eth1 -p UDP --sport 53 --dport 53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      #$iptables -I OUTPUT -o eth1 -p UDP --sport 53 --dport 53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      #$iptables -I INPUT -i eth1 -p UDP --sport 1024:65535 --dport 53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      #$iptables -I OUTPUT -o eth1 -p UDP --sport 53 --dport 1024:65535 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      # <--- WEB PORT 80
      #$iptables -I INPUT -i eth1 -p TCP --sport 1024:65535 --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      #$iptables -I OUTPUT -o eth1 -p TCP --sport 80 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
      # <--- WEB PORT 8080
      #$iptables -I INPUT -i eth1 -p TCP --sport 1024:65535 --dport 8080 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      #$iptables -I OUTPUT -o eth1 -p TCP --sport 8080 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
      # <--- ICMP (INTERNET CONTROL MESSAGE PROTOCOL)
      #$iptables -I INPUT -i eth1 -p ICMP --icmp-type echo-request -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      #$iptables -I OUTPUT -o eth1 -p ICMP --icmp-type echo-reply -m state --state ESTABLISHED,RELATED -j ACCEPT
      # <--- NTP (NETWORK TIME PROTOCOL)
      #$iptables -I INPUT -i eth1 -p TCP --sport 1024:65535 --dport 123 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      #$iptables -I OUTPUT -o eth1 -p TCP --sport 123 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
      #$iptables -I INPUT -i eth1 -p UDP --sport 1024:65535 --dport 123 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      #$iptables -I OUTPUT -o eth1 -p UDP --sport 123 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
      # <--- HIER EIN BEISPIEL FÜR CCCAM
      #$iptables -I INPUT -i eth1 -p TCP --sport 1024:65535 --dport 12200 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      #$iptables -I OUTPUT -o eth1 -p TCP --sport 12200 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
      # <--- HIER EIN BEISPIEL FÜR CAMD35
      #$iptables -I INPUT -i eth1 -p UDP --sport 1024:65535 --dport 54321 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      #$iptables -I OUTPUT -o eth1 -p UDP --sport 54321 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
      
      # --- SICHERHEIT
      # --- SYN FLOOD
      $iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
      # --- PORTSCAN
      $iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
      # --- PING-OF-DEATH
      $iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
      # --- HTTP LIMIT/MINUTE
      #$iptables -A INPUT -i eth1 -p tcp --dport 80 -j LOG --log-prefix "Apache Access" --log-level 6 -m limit --limit 3/m
      #$iptables -A INPUT -i eth1 -p tcp --dport 8080 -j LOG --log-prefix "NGINX Access" --log-level 6 -m limit --limit 3/m
      
      # BESTEHENDE VERBINDUNGEN ZULASSEN (# = nicht zulassen)
      #$iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
      #$iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 
      # GARBAGE ÜBERGEBEN WENN NICHT ERLAUBT
      $iptables -A INPUT -m state --state NEW,INVALID -j garbage
 
      # VERBIETE ALLES WAS BISHER ERLAUBT WAR
      $iptables -A INPUT -j garbage
      $iptables -A OUTPUT -j garbage
      $iptables -A FORWARD -j garbage
      
[COLOR=#ff0000]       # LISTE BEKANNTER SSH BOTS SPERREN
      # INFOS AT: INTERNET STORM CENTER / dshield.org
      # CHINANET-BACKBONE No.31,Jin-rong Street,CN
      $iptables -I INPUT -s 115.224.0.0/12 -j DROP
      $iptables -I INPUT -s 116.8.0.0/14 -j DROP
      $iptables -I INPUT -s 117.21.0.0/16 -j DROP
      $iptables -I INPUT -s 122.224.0.0/12 -j DROP
      $iptables -I INPUT -s 183.0.0.0/10 -j DROP
      $iptables -I INPUT -s 220.176.0.0/15 -j DROP
      # CHINANET-JS-AS-AP AS Number for CHINANET jiangsu province backbone,CN
      $iptables -I INPUT -s 222.186.30.0/24 -j DROP
      $iptables -I INPUT -s 222.186.34.0/23 -j DROP
      $iptables -I INPUT -s 222.186.56.0/21 -j DROP
      $iptables -I INPUT -s 222.186.130.0/23 -j DROP
      # ATLANTIC-NET - Atlantic.net, Inc.,US
      $iptables -I INPUT -s 69.28.92.0/22 -j DROP
      # SERVER4YOU - Hosting Solutions International, Inc.,US
      $iptables -I INPUT -s 209.239.112.0/20 -j DROP
      # AS-COLOCROSSING - ColoCrossing,US
      $iptables -I INPUT -s 23.94.0.0/22 -j DROP
      # SERVERCENTRAL - Server Central Network,US
      $iptables -I INPUT -s 216.246.0.0/17 -j DROP
      $iptables -I INPUT -s 216.246.49.0/24 -j DROP
      # TWTC - tw telecom holdings, inc.,US
      $iptables -I INPUT -s 216.64.144.0/20 -j DROP[/COLOR]
      ;;
   stop)
      echo "FIREWALL WIRD GESTOPPT..."
[COLOR=#008000] [/COLOR]      $iptables -t nat -F
      $iptables -t filter -F
      $iptables -X
      $iptables -P INPUT ACCEPT
      $iptables -P OUTPUT ACCEPT
      $iptables -P FORWARD ACCEPT
      ;;
   restart|reload|force-reload)
   $0 stop
   sleep 2
   $0 start
      ;;
   *)
      echo "Usage: /etc/init.d/firewallv2 {start|stop|restart|reload|force-reload}"
      exit 1
      ;;
esac
exit 0


Code:
chmod 775 /etc/init.d/firewallv2


WICHTIG: Die Chains werden hier auf Drop geändert, also einmal ausgesperrt bleibt auch ausgesperrt! Darum vor dem ersten Start lieber einen Testlauf machen.
TESTLAUF: Zweite SSH-Verbindungs zum Server aufbauen, folgendes eingeben und mit der ersten SSH-Verbindung prüfen ob die Verbindung noch da ist.
Dieser Befehl schaltet die Firewall nach einem 60 Sekunden Testlauf wieder ab. Falls ihr ausgesperrt werdet, einfach eine Minute warten.
Woran erkennt man es ausgesperrt worden zu sein? Im ersten SSH Fenster kann man nichts mehr machen!
Code:
/etc/init.d/firewallv2 start&&sleep 60&&/etc/init.d/firewallv2 stop


Symlink anlegen
Code:
ln -s /etc/init.d/firewallv2 /usr/sbin/fw2


Zum starten dann einfach "fw2 (start|stop|restart|reload|force reload)"


EDIT: Sorry da war noch ein Fehler bei den eingehenden ICMP drin
$iptables -I OUTPUT -o eth1 -p ICMP --icmp-type echo-request -m state --state ESTABLISHED,RELATED -j ACCEPT
$iptables -I OUTPUT -o eth1 -p ICMP --icmp-type echo-reply -m state --state ESTABLISHED,RELATED -j ACCEPT
Sonst gibts keine Antwort auf Ping und das könnte Böse für KeepAlive enden
 
Zuletzt bearbeitet:
AW: IPTables (Firewall) Script für euren Server

Hallo zusammen...

Ich habe auch mal wieder ein wenig gespielt und getestet

Nun habe ich folgendes Problem!

Ich lasse den apache2 Port NUR auf die tun0 IP lauschen so das IPC von aussen überhaupt nicht erreicht werden kann!

Ich habe Zugriff auf IPC sobald ich in den VPN Tunnel gestartet habe und eine virtuelle VPN IP besitze!

Jetzt habe ich aber das Problem, das ich VPN an meinen Notebook (UBUNTU) nur starten lässt wenn die Firewall am Server gestoppt ist!

Wenn sie gestartet ist kann ich mich mit meinen Notebook nicht verbinden!


Kann sich mal jemand die configanschauen und mir sagen wo ich den Fehler habe?

#OPENVPN
$IPT -A INPUT -i eth0 -p tcp --dport 4688 -j ACCEPT
$IPT -A OUTPUT -i eth0 -p tcp --dport 4688 -j ACCEPT
$IPT -A INPUT -i tun0 -p tcp --dport 4688 -j ACCEPT
$IPT -A OUTPUT -i tun0 -p tcp --dport 4688 -j ACCEPT


erledigt !!!

Paste and Copy ist manchmal echt scheisse TCP war falsch und OUTPUT -o nicht -i


Ich hoffe es kann mir jemand helfen

Danke
 
Zuletzt bearbeitet:
AW: IPTables (Firewall) Script für euren Server

Hallo,

ich bin gerade bei einem kumpel auf dem Raspi und wollte die iptables anpassen für eine Portweiterleitung.

Allerdings kommt bei mir nun diese Ausgabe.


was kann ich hier machen?
 
AW: IPTables (Firewall) Script für euren Server

Hi, sind die Regeln noch vorhanden wenn du iptables -L eingibst?
 
AW: IPTables (Firewall) Script für euren Server

root@raspberrypi ~ > iptables -L
-bash: iptables: command not found

root@raspberrypi ~ > whereis iptables
iptables:
root@raspberrypi ~ >


würde sagen die sind nicht vorhanden wie kann ich die wiederherstellen?
 
AW: IPTables (Firewall) Script für euren Server

Scheint so als wäre es deinstalliert worden.
Ich mache das ganze ohne script und es funktioniert ganz zuverlässig.
Nach dem erstellen der Regeln speichere ich diese ab:
Code:
iptables-save > /etc/iptables.rules
und die sollen ja beim reboot wieder laufen und deshalb ein Eintrag in die crontab
nano /etc/crontab
Code:
@reboot root iptables-restore < /etc/iptables.rules
und in den /etc/network/interfaces
Code:
pre-up iptables-restore < /etc/iptables.rules
LG Osprey
 
AW: IPTables (Firewall) Script für euren Server

ok ich bin jetzt nicht so bewandert
muss ich da nun eine neue datei erstellen?

mit.
nano /usr/sbin/iptables
 
AW: IPTables (Firewall) Script für euren Server

Du musst iptables neu installieren wie es aussieht. apt-get update && apt-get install iptables
Steht dein RPi im Rechenzentrum oder weshalb brauchst du iptables?
 
AW: IPTables (Firewall) Script für euren Server

nein, aber der hat nur macOS geräte und da funzt OpenVPN nicht bzw wir bekommen es nicht zum laufen, deswegen wollte ich eine portweiterleitung machen das wenn er den raspi(der einen tunnel zum VPS hat) anwählt auf den vps weitergeleitet wird.
 
AW: IPTables (Firewall) Script für euren Server

Wenn der Raspi per openvpn mit dem VPS verbunden ist, wäre es einfacher am VPS einen weiteren openVPN Client zu erstellen für den MacOS und sich direkt mit dem VPS zu verbinden.
Vom VPS aus siehst du ja den Raspi der ebenfalls den Tunnel nutzt.
 
AW: IPTables (Firewall) Script für euren Server

Das Problem ist ja das wir OpenVPN auf dem Mac (als Client) nicht zum laufen bekommen. nun aber genug OT
 
AW: IPTables (Firewall) Script für euren Server


Bekomme darüber VPN nicht zum laufen. Habe folgende Punkte hinzugefügt.

Wenn ich z.b den SSH Port über VPN erlauben möchte muss ich einfach nur eth0 auf tun0 anpassen oder?

Code:
     # <--- VPN PORT 51194
      $iptables -I INPUT -i eth0 -p TCP --sport 1024:65535 --dport 51194 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      $iptables -I OUTPUT -o eth0 -p TCP --sport 51194 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT

      # ---> VPN PORT 51194
      $iptables -I OUTPUT -o eth0 -p TCP --sport 1024:65535 --dport 51194 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      $iptables -I INPUT -i eth0 -p TCP --sport 51194 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT

Edit: Der Fehler sitzt immer vor dem Rechner habe mein VPN über UDP laufen nicht über TCP

Code:
     # <--- VPN PORT 51194
      $iptables -I INPUT -i eth0 -p [COLOR=#ff0000]UDP[/COLOR] --sport 1024:65535 --dport 51194 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      $iptables -I OUTPUT -o eth0 -p [COLOR=#ff0000]UDP[/COLOR] --sport 51194 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT

      # ---> VPN PORT 51194
      $iptables -I OUTPUT -o eth0 -p [COLOR=#ff0000]UDP[/COLOR] --sport 1024:65535 --dport 51194 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      $iptables -I INPUT -i eth0 -p [COLOR=#ff0000]UDP[/COLOR] --sport 51194 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT

Edit2: Kann ich das so lassen? Das ich über VPN alles zu lasse?
Code:
      # ERLAUBE ALLES ÜBER VPN
      $iptables -I INPUT -i tun0 -j ACCEPT
      $iptables -I OUTPUT -o tun0 -j ACCEPT
 
Zuletzt bearbeitet:
AW: IPTables (Firewall) Script für euren Server

irgendwie bekomme ich die Firewall nicht richtig zum laufen.

egal welchen Befehl ich eintrage, Sei es "f Start,restart,stop" oder auch über den langen weg. /etc/init.d/firewall start,restart eintrage bekomme ich immer wieder diese Meldung.

-bash: /usr/sbin/f: /bin/sh#!/bin/sh: bad interpreter: No such file or directory

was muss ich machen somit die Firewall wieder seine Aufgabe übernimmt?

*EDIT*
GELÖST
den fehler hab ich selbst gefunden. hatte im Script was flasches stehen.
 
Zuletzt bearbeitet:
AW: IPTables (Firewall) Script für euren Server

mach mal folgendes:


Code:
apt-get install dos2unix
cd /etc/init.d
dos2unix firewall
/etc/init.d/firewall start

Befehle sind im root terminal sonst sudo vorne dran setzen.
 
Für die Nutzung dieser Website sind Cookies erforderlich. Du musst diese akzeptieren, um die Website weiter nutzen zu können. Erfahre mehr…