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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 212296
Url: https://administrator.de/contentid/212296
Ausgedruckt am: 24.11.2024 um 22:11 Uhr
18 Kommentare
Neuester Kommentar
Moin,
Mehr brauchts nicht
lg,
Slainte
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
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".
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".
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!
Das ist im engeren Sinne die Aufgabe einer Firewall, ja
Und eigene PHP Scripte sauber halten usw. wie lochi shcon anmerkte.
Sollte ich da noch etwas beachten?
Patchen, Patchen, Patchen! System immer aktuelle halten!Und eigene PHP Scripte sauber halten usw. wie lochi shcon anmerkte.
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").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?
Stimmt.müsste dann ja folglich problemlos funktionieren, stimmt's?
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?
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
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.
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
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.
[...]
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
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.?
: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.
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
Zitat von @Lars1973:
Neben den bereits genannten Tools könntest Du Dir noch fail2ban ansehen - hält zuverlässig Scriptkiddies fern.
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
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
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