chemikus
Goto Top

Gute Firewall für debian 6

Schönen guten Morgen liebe Admin-Gemeinde,

ich bin ein absoluter debian-noob und soll nun für einen Kollegen einen Debian-Server "absichern" für den Webgebrauch.
Auf dem System läuft bisher nginx, mysql & PHP.

Nach langer Suche im Internet stieß ich auf den Hiweis chkrootkit und rkhunter zu installieren, was ich bereits getan habe.

Wie von Windows-Systemen bekannt, macht es sicherlich Sinn auch eine Firewall zu installieren. Bei der Suche nach einer Firewall für Debian stieß ich jedoch nur auf weitere Rätsel, weswegen ich nun hier gelandet bin. Und ich denke mal Firewall-eintäge von 2005 oder älter machen wenig Sinn ;)

Es würde mich interessieren, welche Firewall sinn macht, wie ich die installiere und vor allem wie ich die konfiguriere.

mit freundliche Grüßen
chemikus

Content-Key: 212296

Url: https://administrator.de/contentid/212296

Printed on: April 24, 2024 at 17:04 o'clock

Member: Hitman4021
Hitman4021 Jul 24, 2013 at 08:14:38 (UTC)
Goto Top
Hallo,

wie wäre es den mit den guten alten ipTables?

Die sind standardmäßig installiert und du musst für die Firewall Regeln nur ein Script schreiben.

Gruß
Member: SlainteMhath
SlainteMhath Jul 24, 2013 at 08:51:35 (UTC)
Goto Top
Moin,

iptables -F
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables-save

Mehr brauchts nicht

lg,
Slainte
Member: Lochkartenstanzer
Lochkartenstanzer Jul 24, 2013 updated at 08:55:08 (UTC)
Goto Top
Moin,

Unter debian macht man das üblicherweise mit selbstgeschriebenen IP-Tables-Regeln, weil man damit die größten Freiheiten hat.

Als Klickibunti-Lösung kann man sich mit fwbuilder behelfen, das auch im repository sein sollte.

lks

Nachtrag: fwbuilder muß nicht auf dem Zielsystem instaliert sein, sondern nur auf der "Managementstation".
Member: chemikus
chemikus Jul 24, 2013 at 09:04:17 (UTC)
Goto Top
Zitat von @SlainteMhath:
Moin,

> iptables -F
> iptables -P INPUT DROP
> iptables -P FORWARD DROP
> iptables -P OUTPUT ACCEPT
> iptables -A INPUT -p tcp --dport 443 -j ACCEPT
> iptables -A INPUT -p tcp --dport 80 -j ACCEPT
> iptables -A INPUT -p tcp --dport 22 -j ACCEPT
> iptables-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
> iptables-save
> 

Mehr brauchts nicht

lg,
Slainte

k, also gebe ich einfach vor welche ports er erlauben soll...
danke dir für die ausführliche IPtables-anleitung.

Sollte ich da noch etwas beachten?
Member: Lochkartenstanzer
Lochkartenstanzer Jul 24, 2013 at 09:04:30 (UTC)
Goto Top
Zitat von @SlainteMhath:
Mehr brauchts nicht

Sofern man nur ssh, http und https auf den Standard ports macht. Wenn man darüber auch Mail abwicklet, muß man natürlich die passenden Ports "zuschalten" (nginx deutet darauf hin).

lks


PS an TO: Bedenke aber, daß SQL und PHP genügend eigene Fallstricke haben, vor denen Dich die Firewall nicht schützt!
Member: SlainteMhath
SlainteMhath Jul 24, 2013 at 09:15:01 (UTC)
Goto Top
Zitat von @chemikus:
k, also gebe ich einfach vor welche ports er erlauben soll...
Das ist im engeren Sinne die Aufgabe einer Firewall, ja face-smile

Sollte ich da noch etwas beachten?
Patchen, Patchen, Patchen! System immer aktuelle halten!
Und eigene PHP Scripte sauber halten usw. wie lochi shcon anmerkte.
Member: chemikus
chemikus Jul 24, 2013 at 10:49:37 (UTC)
Goto Top
Hi,
ein letztes mal, noch, bevor ich Frage schließe...

sehe ich es richtig, das in den IPtables das dann so drinsteht, das alle ports nach außen offen sind, jedoch nur die ports ssh,https und http offen sind und der Rest geschlossen?

habe einen send-only-email-service (https://library.linode.com/email/exim/send-only-mta-debian-6-squeeze) aufgesetzt. der müsste dann ja folglich problemlos funktionieren, stimmt's?

mfg
Member: SlainteMhath
SlainteMhath Jul 24, 2013 at 10:58:38 (UTC)
Goto Top
Zitat von @chemikus:
sehe ich es richtig, das in den IPtables das dann so drinsteht, das alle ports nach außen offen sind, jedoch nur die ports
ssh,https und http offen sind und der Rest geschlossen?
Richtig. Zusätzlich sind alle eingehenden Verbindungen zugelassen die zu ausgehenden gehören ("RELATED,ESTABLISHED").

habe einen send-only-email-service (https://library.linode.com/email/exim/send-only-mta-debian-6-squeeze) aufgesetzt. der
müsste dann ja folglich problemlos funktionieren, stimmt's?
Stimmt.
Member: Lochkartenstanzer
Lochkartenstanzer Jul 24, 2013 updated at 11:01:31 (UTC)
Goto Top
Zitat von @chemikus:
Hi,
ein letztes mal, noch, bevor ich Frage schließe...
sehe ich es richtig, das in den IPtables das dann so drinsteht, das alle ports nach außen offen sind, jedoch nur die ports
ssh,https und http offen sind und der Rest geschlossen?

zur Erläuterung:

> iptables -P OUTPUT ACCEPT

sagt aus, daß die default policy alle ausgehenden Pakete erlaubt, damit auch Deine SMTP-verbindungen.

Default policy ist ansonsten drop, bis auf die mit iptables freigeschalteten ports. Die Ports sind nicht geschlossen, sondern Pakete an diese Ports werden entsorgt. Es können auslo durchaus Dienste auf diesen Ports laufen (was nicht gut ist), aber es kommen keine Pakete durch.

> habe einen send-only-email-service (https://library.linode.com/email/exim/send-only-mta-debian-6-squeeze) aufgesetzt. der
müsste dann ja folglich problemlos funktionieren, stimmt's?

Um es mit Radio Eriwan zu sagen: Im Prinzip ja (wenn Du nicht geschludert hast).


lks
Member: chemikus
chemikus Jul 25, 2013 updated at 13:01:35 (UTC)
Goto Top
Zitat von @SlainteMhath:

> iptables -F
> iptables -P INPUT DROP
> iptables -P FORWARD DROP
> iptables -P OUTPUT ACCEPT
> 

sehe ich richtig, das dieses INPUT DROP sämtliche eingehenden Verbindungen untersagt? Habe nämlcih jetzt 2x mir den server zerlegt, sodass ich keinerlei zugriff mehr hatte.

hatte nun daran gedacht, erst

iptables -A INPUT -p tcp --dport 443 -j ACCEPT 
iptables -A INPUT -p tcp --dport 80 -j ACCEPT 
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

einzutippen und dann die ganzen teile von oben einzubauen. Aber bevor ich nun ein drittes mal meinen Server zerlege wollte ich kurz Rücksprache halten, was ihr davon haltet.

mfg
Member: Lochkartenstanzer
Lochkartenstanzer Jul 25, 2013 at 13:10:56 (UTC)
Goto Top
Zitat von @chemikus:
einzutippen und dann die ganzen teile von oben einzubauen. Aber bevor ich nun ein drittes mal meinen Server zerlege wollte ich
kurz Rücksprache halten, was ihr davon haltet.

Sofern Du nicht direkt an der Konsole sitzt, schreibst Du alle diese Kommandos in eine Datei, die als erste zeile ein
#!/bin/bash



enthält und führst diese entweder direkt aus, nachdem Du das schellskript ausführbar gemacht hast oder mit dem Shell-Kommando source.

Ansonsten sägst Du Dir den Ast ab, auf dem Du sitzt.

lks
Member: SlainteMhath
SlainteMhath Jul 25, 2013 updated at 13:15:58 (UTC)
Goto Top
sehe ich richtig, das dieses INPUT DROP sämtliche eingehenden Verbindungen untersagt?
Ja richtig. Das ganze ist auch nicht "zum eintuppen" gedacht, sondern um's als Script zb. beim start des Netzwerkes laufen zu lassen.

hatte nun daran gedacht, erst
[...]
einzutippen und dann die ganzen teile von oben einzubauen.

ja das geht. Sollte in dieser Reihenfolge funktionieren.

iptables -F
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -P INPUT DROP
iptables -P FORWARD DROP

/EDITH:
Und ein Pro Tipp für die Zukunft: Nicht einfach Commandos in die Shell tippen/kopieren von denen man nicht genau weis was sie tun face-smile
Member: chemikus
chemikus Jul 25, 2013 at 13:14:35 (UTC)
Goto Top
:D
vielen lieben dank. Hatte schon echt überlegt, ob ich total bekloppt bin :D

mit dem script beim starten des netzwekres. Kann das jemand näher erläutern, oder mir ein link zu einem tut schicken was es damit auf sich hat, wie ich das einrichte etc.?

mfg
Member: Lochkartenstanzer
Lochkartenstanzer Jul 25, 2013 updated at 15:21:38 (UTC)
Goto Top
Zitat von @chemikus:
:D
vielen lieben dank. Hatte schon echt überlegt, ob ich total bekloppt bin :D

mit dem script beim starten des netzwekres. Kann das jemand näher erläutern, oder mir ein link zu einem tut schicken was
es damit auf sich hat, wie ich das einrichte etc.?

Indem Du z.B. in /etc/network/interfaces ein pre-up oder post-up mit den passenden Parametern einträgst


lks

Nachtrag: Je nachdem, was Du in den "up"-Skripten treibst, mußt Du ggf in /etc/network/interfaces noch pre-down oder post-down hinzufügen.

edit: typo & Style.
Member: SlainteMhath
SlainteMhath Jul 25, 2013 updated at 13:20:34 (UTC)
Goto Top
mit dem script beim starten des netzwekres ...
Wenn die FW so tut wie sie soll:
iptables-save > /etc/ipt-rules

Dann die Datei "/etc/network/interfaces" editieren, und Zeile
post-up /sbin/iptables-restore < /etc/ipt-rules

bei dem entsprechenden Interface (idR eth0) hinzufügen

/EDITH: mist zu langsam.. dafür ausführlicher face-smile
Member: Lars1973
Lars1973 Jul 28, 2013 at 09:06:32 (UTC)
Goto Top
Neben den bereits genannten Tools könntest Du Dir noch fail2ban ansehen - hält zuverlässig Scriptkiddies fern.
Member: Lochkartenstanzer
Lochkartenstanzer Jul 28, 2013 at 11:07:02 (UTC)
Goto Top
Zitat von @Lars1973:
Neben den bereits genannten Tools könntest Du Dir noch fail2ban ansehen - hält zuverlässig Scriptkiddies fern.

Birgt aber auch Ansatzpunkte für DOS-Attacken.

lks
Member: Alchimedes
Alchimedes Jul 29, 2013 at 14:47:14 (UTC)
Goto Top
Hallo ,


deshalb sollte man dann entsprechend fail2ban konfigurieren, den ohne hat man ohne Ende ssh scans aus aller Welt.

hier nur mal der taegliche Rotz.


2013-07-29 09:18:51,773 fail2ban.actions: WARNING [ssh] Ban 69.42.67.4
2013-07-29 09:28:51,850 fail2ban.actions: WARNING [ssh] Unban 69.42.67.4
2013-07-29 10:14:35,754 fail2ban.actions: WARNING [ssh] Ban 199.19.106.225
2013-07-29 10:24:36,727 fail2ban.actions: WARNING [ssh] Unban 199.19.106.225
2013-07-29 10:48:19,609 fail2ban.actions: WARNING [ssh] Ban 64.253.208.121
2013-07-29 10:58:20,608 fail2ban.actions: WARNING [ssh] Unban 64.253.208.121
2013-07-29 12:11:58,267 fail2ban.actions: WARNING [ssh] Ban 176.102.192.17
2013-07-29 12:21:04,302 fail2ban.actions: WARNING [ssh] Ban 219.235.126.174
2013-07-29 12:21:58,328 fail2ban.actions: WARNING [ssh] Unban 176.102.192.17
2013-07-29 12:31:04,318 fail2ban.actions: WARNING [ssh] Unban 219.235.126.174
2013-07-29 13:30:55,040 fail2ban.actions: WARNING [ssh] Ban 54.250.140.192
2013-07-29 13:40:56,035 fail2ban.actions: WARNING [ssh] Unban 54.250.140.192

und das ist noch harmlos am WE sind es bis zu mehrere Hundert Eintraege.

Hilfreich sonst:

In der sshd.conf entsprechend den Port aendern.
Ausserdem sollte man undbedingt den root Zugriff via ssh unterbinden.

Gruss