Warum nicht meine iptables Einträge blockieren eine Xen virtuelle Maschine anzusprechen? [geschlossen]
Frage
Ich schreibe ein Bash-Skript einfach firewalling für Xen hinzuzufügen.
Hier ist die eigentliche Firewall-Konfiguration:
Chain INPUT (policy ACCEPT)
target prot opt source destination
RH-Firewall-1-INPUT all -- anywhere anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
RH-Firewall-1-INPUT all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain RH-Firewall-1-INPUT (2 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT icmp -- anywhere anywhere icmp any
ACCEPT esp -- anywhere anywhere
ACCEPT ah -- anywhere anywhere
ACCEPT udp -- anywhere 224.0.0.251 udp dpt:mdns
ACCEPT udp -- anywhere anywhere udp dpt:ipp
ACCEPT tcp -- anywhere anywhere tcp dpt:ipp
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT udp -- anywhere anywhere state NEW udp dpt:ha-cluster
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:http
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:https
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Ich möchte eine neue Kette für jeden meiner virtuellen Maschinen hinzufügen (jeder von ihnen hat eine virtuelle Schnittstelle namens vif1.0, vif2.0, etc). Ausgabe-Schnittstelle (Brücke) ist xenbr0.
Hier ist, was ich tun (zum Beispiel ping zu blockieren ‚in'to domU1, vif1.0):
iptables -N domUFirewall
iptables -I FORWARD -j domUFirewall
iptables -I INPUT -j domUFirewall
iptables -A domUFirewall -i vif1.0 -p icmp -j DROP
Aber .. es nicht funktioniert, bin ich noch in der Lage zu ping in / out der domU.
Muss etwas wirklich ‚dumm‘ sein, aber ich kann nicht herausfinden, was los ist.
Irgendwelche Hinweise?
Thx
Lösung
Da Sie mit XEN mit Bridged Networking, Pakete werden auf einem Niveau abgefangen, bevor gewöhnlichen iptables Befehle sie beeinflussen können. So müssen Sie wahrscheinlich den ebtables
Befehl verwenden Paket-Routing in der Art und Weise zu beeinflussen, die Sie wollen.
- ebtables / iptables Interaktion auf einer Linux-basierte Brücke
- ebtables (8) - Linux-man-Seite
- Xen Wiki * XenNetworking
Original Antwort unten, dass links für andere Konfigurationen arbeiten, aber nicht für XEN mit Bridged Networking.
Ich werde im Interesse des Beispiels, so zu tun, dass die IP-Adresse des vif1.0
ist 192.168.1.100.
Ich würde die Logik wiederholt nicht das Eingabegerät zu überprüfen, sondern stattdessen durch IP-Adresse zu überprüfen. An der Eingangskette wird das Paket kommt von (sagen wir) -Gerät eth0
, nicht aus vif1.0
. Somit ist diese Regel:
iptables -I INPUT -i vif1.0 -j domUFirewall
, dass ich vorher nie irgendwelche Pakete prüfen vorgeschlagen. Wenn Sie jedoch die folgenden tun, sollte es tun, was Sie wollen:
iptables -I INPUT -d 192.168.1.100 -j domUFirewall
Dabei gilt in diesem Fall die Kette domUFirewall
eingerichtet ist durch:
iptables -N domUFirewall
iptables -F domUFirewall
iptables -A domUFirewall -p icmp -j DROP
Wenn eine bestimmte Kette für ein einzelnes Gerät ist, dann sollten Sie diese überprüfen, um vor in die Kette springt, auf in der Regel mit dem „-j chainName
“ -Aktion. Dann wird in der Kette selbst, müssen Sie sich niemals für das Gerät oder die IP-Adresse überprüfen.
Zweitens würde ich immer bündig (leer) die Kette in Ihrem Skript, falls Sie das Skript erneut ausgeführt wird. Beachten Sie, wenn Sie das Skript erneut ausführen, Sie Beschwerden über die -N
Linie bekommen kann. Das ist in Ordnung.
Es gibt auch andere Möglichkeiten, wie Sie dies tun könnte, aber um ein anderes Beispiel zu geben, würde ich genau wissen müssen, wie Sie Ihre VM eingerichtet ist - Vernetzung überbrückt? NAT? Etc. Aber das Beispiel, das ich hier gab sollten in jedem dieser Modi arbeiten.
Hier sind einige nützliche Links für die Zukunft: