Wie richte ich eine einfache Firewall unter Ubuntu ein?
18
Könnte jemand ein paar einfache Schritte mit Konfigurationsbeispielen geben, wie man eine einfache Firewall unter Ubuntu einrichtet (nur mit der Konsole)? Nur ssh-, http- und https-Zugriff sollte erlaubt sein.
Wenn ich diese Befehle nacheinander über ssh aufrufen würde, würde dies meine Verbindung unterbrechen?
Klew
Das glaube ich nicht, aber Sie sollten es überprüfen, um sicherzugehen. Dies behält auch seinen Status zwischen Neustarts bei, so dass Sie es nur einmal tun sollten.
Nerdfest
Ich werde es überprüfen, wenn ich in der Nähe dieses Computers sein werde ...
klew
Sie können es in ein Skript einfügen und ausführen. Selbst wenn Sie die Verbindung trennen, können Sie die Verbindung anschließend wieder herstellen. Siehe meine Antwort unten für das Skript.
Hamish Downer
2
Der vorherige Kommentar ist korrekt. Führen Sie im Grunde den ersten Befehl im obigen Skript zuletzt aus.
Nerdfest
14
Verwenden Sie dieses Skript.
Entscheiden Sie einfach, ob Sie eingehendes ICMP (Ping) zulassen möchten oder nicht.
# Clear any existing firewall stuff before we start
iptables --flush
iptables -t nat --flush
iptables -t mangle --flush
# As the default policies, drop all incoming traffic but allow all
# outgoing traffic. This will allow us to make outgoing connections
# from any port, but will only allow incoming connections on the ports
# specified below.
iptables --policy INPUT DROP
iptables --policy OUTPUT ACCEPT
# Allow all incoming traffic if it is coming from the local loopback device
iptables -A INPUT -i lo -j ACCEPT
# Accept all incoming traffic associated with an established
# connection, or a "related" connection
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allow incoming connections
# SSH
iptables -A INPUT -p tcp -i eth0 --dport 22 -m state --state NEW -j ACCEPT
# HTTP
iptables -A INPUT -p tcp -i eth0 --dport 80 -m state --state NEW -j ACCEPT
# HTTPS
iptables -A INPUT -p tcp -i eth0 --dport 443 -m state --state NEW -j ACCEPT
# Allow icmp input so that people can ping us
iptables -A INPUT -p icmp -j ACCEPT
# Reject all other incoming packets
iptables -A INPUT -j REJECT
Wie in den Kommentaren zu einer anderen Antwort erwähnt, möchten Sie Ihre Verbindung nicht verlieren, bevor Sie den SSH-Port zulassen. Von der Manpage:
"FERNVERWALTUNG
Wenn Sie ufw enable ausführen oder ufw über sein Initscript starten, wird ufw seine Ketten leeren. Dies ist erforderlich, damit ufw einen konsistenten Zustand beibehalten kann, aber möglicherweise vorhandene Verbindungen (z. B. ssh) abbricht. ufw unterstützt das Hinzufügen von Regeln vor dem Aktivieren der Firewall, sodass Administratoren Folgendes tun können:
ufw allow proto tcp from any to any port 22
bevor Sie 'ufw enable' ausführen. Die Regeln werden weiterhin gelöscht, aber der SSH-Port ist nach dem Aktivieren der Firewall geöffnet. Bitte beachten Sie, dass ufw, sobald es 'aktiviert' ist, die Ketten beim Hinzufügen oder Entfernen von Regeln nicht leert (sondern beim Ändern einer Regel oder Ändern der Standardrichtlinie). "
Hier ist ein Ansatz, bei dem ein Skript zum Festlegen verwendet wird. Sie werden abgemeldet, wenn Sie dieses Skript ausführen, aber nachdem Sie es ausgeführt haben, können Sie sich über ssh erneut anmelden.
Schreiben Sie folgendes in ein Skript und nennen Sie es start-firewall.sh
Wenn Sie mit Skripten vertraut sind iptables, haben Sie die volle Kontrolle über alle Firewall-Funktionen. Es ist bei weitem nicht so freundlich wie Firestarter, aber es kann an der Konsole mit nano/ vieditors durchgeführt werden. Schauen Sie sich dieses auf Ubuntu ausgerichtete Tutorial an.
Quicktables halfen mir, die Iptables-Regeln zu lernen. Führen Sie einfach das Skript aus, und es generiert ein iptables-Skript für Sie. Anschließend können Sie es öffnen und die zugehörigen Befehle anzeigen, die durch die von ihm gestellten Fragen generiert wurden. Es ist eine großartige Lernressource.
Um die gewünschten Setup-Regeln zu erstellen, müssen Sie die Datei / etc / default / firehol bearbeiten und START_FIREHOL = YES ändern
Und Sie möchten, dass Ihre /etc/firehol/firehol.conf so aussieht.
version 5
interface any IfAll
client any AnyClient accept
server "ssh http https" accept
# Accept everything from trusted networks
server anystateless AllInside accept src "10.3.27.0/24"
Eines der großartigen Dinge an firehol ist der Befehl 'try'. Sie können Ihre Konfigurationsdatei anpassen und einen "firehol try" durchführen. Wenn Sie über ssh verbunden sind und etwas über das, was Sie geändert haben, Ihren Netzwerkzugriff beendet hat, macht firehol die Änderungen rückgängig. Damit die Änderungen tatsächlich wirksam werden, müssen Sie "Festschreiben" sagen.
Firehol eignet sich hervorragend zum Manipulieren von Iptables-Regeln. '$ firehol try' "Aktiviert die Firewall, wartet jedoch, bis der Benutzer das Wort commit eingibt. Wenn dieses Wort nicht innerhalb von 30 Sekunden eingegeben wird, wird die vorherige Firewall wiederhergestellt."
Gareth
So können Sie Regeln hinzufügen / bearbeiten / entfernen und dann testen. Wenn Sie dies über SSH aus der Ferne tun, werden Sie nicht von Ihrem eigenen Server ausgeschlossen!
Gareth
1
Ich würde Shorewall vorziehen . Es ist einfach einzurichten und gleichzeitig flexibel.
Ahh, mein Fehler. Alternative. Der Administrator kann weiterhin ssh -X auf dem Server ausführen und firestarter remote ausführen.
Spoulson
1
Ich müsste auch einen X-Server installieren, um ssh -X zu starten :).
Klew
@klew, Sie müssen keinen vollständigen X-Server installieren, um X-Anwendungen über ssh auszuführen. Sie brauchen mehrere Bibliotheken, aber Sie brauchen nicht alles. Für das Nötigste benötigen Sie nur die Pakete xauth und xbase-clients.
Antworten:
sudo ufw Standard verweigern
sudo ufw erlauben http
sudo ufw erlauben https
sudo ufw erlaube ssh
sudo ufw aktivieren
quelle
Verwenden Sie dieses Skript.
Entscheiden Sie einfach, ob Sie eingehendes ICMP (Ping) zulassen möchten oder nicht.
quelle
Wie in den Kommentaren zu einer anderen Antwort erwähnt, möchten Sie Ihre Verbindung nicht verlieren, bevor Sie den SSH-Port zulassen. Von der Manpage:
"FERNVERWALTUNG
Wenn Sie ufw enable ausführen oder ufw über sein Initscript starten, wird ufw seine Ketten leeren. Dies ist erforderlich, damit ufw einen konsistenten Zustand beibehalten kann, aber möglicherweise vorhandene Verbindungen (z. B. ssh) abbricht. ufw unterstützt das Hinzufügen von Regeln vor dem Aktivieren der Firewall, sodass Administratoren Folgendes tun können:
bevor Sie 'ufw enable' ausführen. Die Regeln werden weiterhin gelöscht, aber der SSH-Port ist nach dem Aktivieren der Firewall geöffnet. Bitte beachten Sie, dass ufw, sobald es 'aktiviert' ist, die Ketten beim Hinzufügen oder Entfernen von Regeln nicht leert (sondern beim Ändern einer Regel oder Ändern der Standardrichtlinie). "
Hier ist ein Ansatz, bei dem ein Skript zum Festlegen verwendet wird. Sie werden abgemeldet, wenn Sie dieses Skript ausführen, aber nachdem Sie es ausgeführt haben, können Sie sich über ssh erneut anmelden.
Schreiben Sie folgendes in ein Skript und nennen Sie es start-firewall.sh
Machen Sie es dann ausführbar und führen Sie es aus
Weitere Informationen finden Sie in der Manpage .
quelle
Wenn Sie mit Skripten vertraut sind
iptables
, haben Sie die volle Kontrolle über alle Firewall-Funktionen. Es ist bei weitem nicht so freundlich wie Firestarter, aber es kann an der Konsole mitnano
/vi
editors durchgeführt werden. Schauen Sie sich dieses auf Ubuntu ausgerichtete Tutorial an.quelle
Quicktables halfen mir, die Iptables-Regeln zu lernen. Führen Sie einfach das Skript aus, und es generiert ein iptables-Skript für Sie. Anschließend können Sie es öffnen und die zugehörigen Befehle anzeigen, die durch die von ihm gestellten Fragen generiert wurden. Es ist eine großartige Lernressource.
Leider wird es nicht mehr gepflegt.
http://qtables.radom.org/
quelle
Ich benutze sehr gerne firehol ( Paket ).
Um die gewünschten Setup-Regeln zu erstellen, müssen Sie die Datei / etc / default / firehol bearbeiten und START_FIREHOL = YES ändern
Und Sie möchten, dass Ihre /etc/firehol/firehol.conf so aussieht.
Eines der großartigen Dinge an firehol ist der Befehl 'try'. Sie können Ihre Konfigurationsdatei anpassen und einen "firehol try" durchführen. Wenn Sie über ssh verbunden sind und etwas über das, was Sie geändert haben, Ihren Netzwerkzugriff beendet hat, macht firehol die Änderungen rückgängig. Damit die Änderungen tatsächlich wirksam werden, müssen Sie "Festschreiben" sagen.
quelle
Ich würde Shorewall vorziehen . Es ist einfach einzurichten und gleichzeitig flexibel.
quelle
Vielleicht sollten Sie einen Blick auf http://iptables-tutorial.frozentux.net/iptables-tutorial.html werfen . Weitere Informationen finden Sie auch auf lartc.org
quelle
sudo apt-get install firestarter
Dann schauen Sie in das Menü System-> Administration.
quelle