
Wenn ich etwas wie eingebe sudo apt-get install firefox
, funktioniert alles, bis ich gefragt werde:
After this operation, 77 MB of additional disk space will be used.
Do you want to continue [Y/n]? Y
Dann werden Fehlermeldungen angezeigt:Failed to fetch: <URL>
Meine iptables-Regeln lauten wie folgt:
-P INPUT DROP
-P OUTPUT DROP
-P FORWARD DROP
-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
Was muss ich hinzufügen, damit apt-get Updates herunterladen kann? Danke
Antwort1
apt-get lädt fast immer über HTTP herunter, kann aber auch FTP verwenden. Die kurze Antwort lautet also wahrscheinlich, ausgehende HTTP-Verbindungen zuzulassen … und natürlich auch DNS.
Die Konfiguration, die Sie jetzt haben, verbietet allen ausgehenden Netzwerkverkehr (die ESTABLISHED
Regel, die Sie in der OUTPUT
Kette haben, ist nicht wirksam, da keine Sitzungen jemals eingerichtet werden). Müssen Sie zulassenNURapt-get updates, während alles andere weiterhin verboten wird? iptables
ist wahrscheinlich das falsche Tool für diese Aufgabe, da es URLs nicht wirklich interpretiert und HTTP-Übertragungen selektiv zulässt. Sie sollten für diese Aufgabe einen HTTP-Proxyserver verwenden.
Sie können ein einfacheres Setup verwenden, das apt-get-Downloads zulässt. Beachten Sie jedoch, dass dadurch auch alle anderen ausgehenden DNS- und HTTP-Verbindungen zugelassen werden, was möglicherweise nicht Ihren Wünschen entspricht.
iptables -F OUTPUT # remove your existing OUTPUT rule which becomes redundant
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT
Wenn Ihre APT-Quellen HTTPS- oder FTP-Quellen oder HTTP-Quellen auf anderen Ports als 80 enthalten, müssen Sie diese Ports ebenfalls hinzufügen.
Als nächstes müssen Sie den Rückverkehr zulassen. Sie können das mit dieser einzigen Regel tun, die jede hergestellte Verbindung zulässt:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
(Beim Verwenden der Verbindungsverfolgung können Sie sicher alle eingehenden hergestellten Verbindungen zulassen, da nur Verbindungen in den Status „HERGESTELLT“ gelangen, die Sie andernfalls zugelassen haben.)
Antwort2
Die apt-Transportdatei wird über HTTP-Protokolle übertragen. Sie sollten Ihren Computer daher so einstellen, dass er die Daten vom Server auf Port 80 und 8080 akzeptiert. Dann sollten die iptables-Regeln
iptables -A INPUT -p tcp --sport 80 -m conntrack --state NEW -j ACCEPT
iptables -A INPUT -p tcp --sport 8080 -m conntrack --state NEW -j ACCEPT