Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
-
braniz
- Beiträge: 23
- Registriert: 30.08.2007 14:39:02
- Wohnort: Nürnberg
-
Kontaktdaten:
Beitrag
von braniz » 27.12.2014 13:54:37
Hallo Leute.
Ich habe auf einem Test VM Server ein wenig mit iptables experimentiert.
Da bei habe ich mir diese config von iptables zusammen geschrieben. (Ich will kein Firewall Gur werden nur es ein wenig besser verstehen)
Würde mich Interessieren ob dies so Sin macht.
Mein Gedanke bei der config war, erst mal alles verbieten und dann nur die Dienge erlauben welche benötig werden.
In diesem Fall ssh und http.
Code: Alles auswählen
# Generated by iptables-save v1.4.7 on Wed Dec 24 12:32:26 2014
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [1:332]
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j LOG --log-prefix "SSH LOGIN"
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --sport 53 -m state --state ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -p icmp -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 80 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 80 -j ACCEPT
-A OUTPUT -o eth0 -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 53 -j ACCEPT
COMMIT
# Completed on Wed Dec 24 12:32:26 2014
-
wanne
- Moderator
- Beiträge: 7625
- Registriert: 24.05.2010 12:39:42
Beitrag
von wanne » 27.12.2014 22:42:28
Ich halte recht wenig von den Dingern: Da wo du keinen Server laufen hast bzw keine Verbindungen aufbaust, kannst du ja eh nicht angegriffen werden. Warum also nochmal in der Firewall verbieten? Einfach nur sinnlos.
Das SSH loging würde ich eher über den SSH-Server machen, weil der dann auch noch weitere Infos (Getesteter username.) mitlifern kann.
Außerdem wenn dann so:
Code: Alles auswählen
iptables -A INPUT -p tcp -m tcp --syn --dport 22 -j LOG --log-prefix "SSH LOGIN"
Sonst läuft dir das über, wenn du für jedes SSH-Paket einen Logeintrag machst.
Next: -m state ist eine sehr teure Regel. Das macht anfällig gegen DOS-Attacken. Nach Möglichkeit nicht verwenden. (Auch wenn heutige DOS eher nicht mehr auf den Kernel Zielen.)
Wenn also eher so:
Code: Alles auswählen
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 --syn -j LOG --log-prefix "SSH LOGIN"
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --sport 53 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --sport 53 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -p tcp -m tcp --syn -j REJECT
-A OUTPUT -p tcp -m tcp --sport 80 -j ACCEPT
-A OUTPUT -p icmp -j ACCEPT
-A OUTPUT -o eth0 -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 53 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 22 -j ACCEPT
-A OUTPUT -j REJECT
rot: Moderator wanne spricht, default: User wanne spricht.
-
braniz
- Beiträge: 23
- Registriert: 30.08.2007 14:39:02
- Wohnort: Nürnberg
-
Kontaktdaten:
Beitrag
von braniz » 28.12.2014 11:29:24
Danke für die Infos.
Das mit der Option -m state verstehe ich nicht so ganz.
Habe mich an dieser Beschreibung Orientiert, da wird es ein wenig anders erklärt.
Hast Du da vielleicht einen link mit einer Beschreibung den ich lesen kann?
Code: Alles auswählen
http://www.dulug.de/archiv/2004/2004-09-24-iptables.pdf
....
....
Ganz einfach: Wenn wir -m STATE state ESTABLISHED weglassen würden,
könnte jeder Angreiferm der sich trickreich genug verhält ohne Aufwand durch
unsere Firewall gelangen, er müÿte nur sicherstellen, das jedes seiner gesendeten
Pakete vom Quellport 53 kommt. Durch die Erweiterung um diese Option haben
wir eine sogenannte "STATEFULL FIREWALL" erhalten, also eine Firewall, die
auch den schon vergangenen Netzwerkverkehr mit in ihre Entscheidungen
einbezieht, und in diesem Falle nur die eingehende Pakete zuläÿt, die zu einer von
uns initiierten verbindung gehören.
-
mat6937
- Beiträge: 3414
- Registriert: 09.12.2014 10:44:00
Beitrag
von mat6937 » 28.12.2014 13:24:41
braniz hat geschrieben:
Das mit der Option -m state verstehe ich nicht so ganz.
Habe mich an dieser Beschreibung Orientiert, da wird es ein wenig anders erklärt.
Code: Alles auswählen
..., er müÿte nur sicherstellen, das jedes seiner gesendeten
Pakete vom Quellport 53 kommt.
Ja, diese Art von (unrelated) Verbindungsversuche vom source Port 53 (aus dem Internet auf meinen Server) kann ich bestätigen. Z. B.:
Code: Alles auswählen
12:38:49.973957 In ##:##:##:ca:6e:12 ethertype IPv4 (0x0800), length 90: (tos 0x0, ttl 110, id 3230, offset 0, flags [none], proto UDP (17), length 74)
213.123.233.228.53 > xx.xxx.xxx.142.10880: [udp sum ok] 41934 ServFail q: A? sryhgjwxsxqjkt.www.hrcpw.com. 0/0/0 (46)
13:00:04.472935 In ##:##:##:ca:6e:12 ethertype IPv4 (0x0800), length 82: (tos 0x0, ttl 46, id 0, offset 0, flags [DF], proto UDP (17), length 66)
178.205.137.49.53 > xx.xxx.xxx.142.10880: [udp sum ok] 41934 ServFail q: A? ybsrop.www.hrcpw.com. 0/0/0 (38)
Debian 12.9 mit LXDE, OpenBSD 7.6 mit i3wm, FreeBSD 14.1 mit Xfce
-
wanne
- Moderator
- Beiträge: 7625
- Registriert: 24.05.2010 12:39:42
Beitrag
von wanne » 28.12.2014 20:16:53
braniz hat geschrieben:Ganz einfach: Wenn wir -m STATE state ESTABLISHED weglassen würden,
könnte jeder Angreiferm der sich trickreich genug verhält ohne Aufwand durch
unsere Firewall gelangen, er müÿte nur sicherstellen, das jedes seiner gesendeten
Pakete vom Quellport 53 kommt. Durch die Erweiterung um diese Option haben
wir eine sogenannte "STATEFULL FIREWALL" erhalten, also eine Firewall, die
auch den schon vergangenen Netzwerkverkehr mit in ihre Entscheidungen
einbezieht, und in diesem Falle nur die eingehende Pakete zuläÿt, die zu einer von
uns initiierten verbindung gehören.
Das ist so richtig. Wie gesagt. Ich finde die Firewall so eh nicht so sinnvoll. Du kannst dir halt aussuchen ob du unbedingt eine solche unumgehbare Firewall haben willst oder ob du lieber gegen bekannte DOS Angriffe angreifbar bleibst. Ich meine DOS kann man auch mit aureichend Rechenleistung fixen,
Als alternative:
Du kannst für TCP vor der Regel 53er Regel sowas einbauen:
Damit hättest du zumindest den TCP teil entschärft.
Bei UDP könntest du alles außer deinen DNS-Server blocken.
rot: Moderator wanne spricht, default: User wanne spricht.
-
braniz
- Beiträge: 23
- Registriert: 30.08.2007 14:39:02
- Wohnort: Nürnberg
-
Kontaktdaten:
Beitrag
von braniz » 28.12.2014 20:32:26
Ok, ich sehe es bedeutet man muss sich eine Strategie zurecht legen was man genau macen möchte.
Erst mal danke für die tips, dies hilft mir weiter.
-
wanne
- Moderator
- Beiträge: 7625
- Registriert: 24.05.2010 12:39:42
Beitrag
von wanne » 28.12.2014 20:45:36
Ich mache mir halt meistens Sowas:
Code: Alles auswählen
-P OUTPUT ACCEPT
-P INPUT ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A INPUT -o lo -j ACCEPT
-A OUTPUT -p tcp -m tcp --syn -j REJECT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 1:1024 -j REJECT
-A INPUT -p udp -m udp --dport 1:1024 -j REJECT
Dann blocke ich mir halt versehentlich lufende Services.
rot: Moderator wanne spricht, default: User wanne spricht.