Centralny firewall – iptables
Tworząc centralną zaporę sieciową w Dom0, należy pamiętać, że dostęp do pakietów lub ramek pochodzących z maszyn wirtualnych nie zawsze jest taki sam. Po pierwsze jeśli połączenie działa poza jądrem Linuksa jak w przypadku VDE, nie mamy zupełnie dostępu do filtracji pakietów między VM. Jeśli połączenie odbywa się w przestrzeni jądra, w warstwie łącza danych, przepływem ramek/pakietów sterują mechanizmy ebtables, a nie iptables. Dopiero w przypadku łączenia maszyn w warstwie sieciowej (routing), możemy za pomocą iptables filtrować pakiety między maszynami.
Jest możliwe filtrowanie pakietów/ramek poprzez ebtables, jednak możemy tu filtrować jedynie na podstawie dopasowania adresów źródłowych/docelowych MAC oraz IP. W ebtables nie mamy możliwości filtracji na podstawie rodzaju usługi TCP/UDP (warstwa transportowa). Ograniczenie to, w naszym przypadku, wyklucza zastosowanie ebtables jako zapory.
Łańcuchy i tablice w ebtables oraz iptabes są podobne, jednak pierwszy mechanizm zarządza ramkami w warstwie łącza danych, natomiast iptables pakietami warstwy sieciowej i transportowej.
Normalnie iptables „nie widzi” ramek/pakietów na mostach brctl. Możemy jednak włączyć przekazywanie pakietów z ebtables do iptables (bridge-nf-call-iptables). Pakiety/ramki powinny się pojawić w łańcuchu FORWARD iptables.
Ćwiczenie 4:
Połączmy VM1 Windowsa i VM2 Debiana poprzez linuksowy most br0 jak w ćwiczeniu poprzednim. Uruchomimy polecenie ping między tymi maszynami. Będziemy obserwować, które dopasowania jesteśmy w stanie przechwycić za pomocą iptables.
Wyczyśćmy tablicę filter iptables
i dodajmy kilka dopasowań
Sprawdźmy czy iptables „widzi” te ramki/pakiety
Niestety iptables nie widzi żadnych pakietów przechodzących przez most br0. Prawdopodobnie nie włączyliśmy przekazywania ich z ebtables do iptables. Włączmy to przekazywanie:
Przekazywanie działa już prawidłowo, cztery pakiety zostały złapane w łańcuchu FORWARD.