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

Ausgedruckt am: 29.03.2024 um 12:03 Uhr

Mitglied: Hitman4021
Hitman4021 24.07.2013 um 10:14:38 Uhr
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ß
Mitglied: SlainteMhath
SlainteMhath 24.07.2013 um 10:51:35 Uhr
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
Mitglied: Lochkartenstanzer
Lochkartenstanzer 24.07.2013 aktualisiert um 10:55:08 Uhr
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".
Mitglied: chemikus
chemikus 24.07.2013 um 11:04:17 Uhr
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?
Mitglied: Lochkartenstanzer
Lochkartenstanzer 24.07.2013 um 11:04:30 Uhr
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!
Mitglied: SlainteMhath
SlainteMhath 24.07.2013 um 11:15:01 Uhr
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.
Mitglied: chemikus
chemikus 24.07.2013 um 12:49:37 Uhr
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
Mitglied: SlainteMhath
SlainteMhath 24.07.2013 um 12:58:38 Uhr
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.
Mitglied: Lochkartenstanzer
Lochkartenstanzer 24.07.2013 aktualisiert um 13:01:31 Uhr
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
Mitglied: chemikus
chemikus 25.07.2013 aktualisiert um 15:01:35 Uhr
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
Mitglied: Lochkartenstanzer
Lochkartenstanzer 25.07.2013 um 15:10:56 Uhr
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
Mitglied: SlainteMhath
SlainteMhath 25.07.2013 aktualisiert um 15:15:58 Uhr
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
Mitglied: chemikus
chemikus 25.07.2013 um 15:14:35 Uhr
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
Mitglied: Lochkartenstanzer
Lochkartenstanzer 25.07.2013 aktualisiert um 17:21:38 Uhr
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.
Mitglied: SlainteMhath
SlainteMhath 25.07.2013 aktualisiert um 15:20:34 Uhr
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
Mitglied: Lars1973
Lars1973 28.07.2013 um 11:06:32 Uhr
Goto Top
Neben den bereits genannten Tools könntest Du Dir noch fail2ban ansehen - hält zuverlässig Scriptkiddies fern.
Mitglied: Lochkartenstanzer
Lochkartenstanzer 28.07.2013 um 13:07:02 Uhr
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
Mitglied: Alchimedes
Alchimedes 29.07.2013 um 16:47:14 Uhr
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