Konfiguruję router z systemem Linux iptables
. Chcę napisać testy akceptacyjne dla konfiguracji, które potwierdzają:
- ruch z jakiegoś faceta w Internecie nie jest przekazywany, i
- Przesyłany jest protokół TCP do portu 80 na serwerze WWW w strefie DMZ z hostów w korporacyjnej sieci LAN.
Starożytne FAQ odnosi się do iptables -C
opcji, która pozwala zapytać: „biorąc pod uwagę pakiet od X do Y na porcie Z, czy zostałby zaakceptowany czy odrzucony?” Chociaż FAQ sugeruje, że tak to działa, ponieważ iptables
(ale może nie ipchains
tak, jak w przykładach) -C
opcja wydaje się nie symulować pakietu testowego przebiegającego przez wszystkie reguły, ale sprawdza, czy istnieje dokładnie pasująca reguła. Ma to niewielką wartość jako test. Chcę stwierdzić, że reguły mają pożądany efekt, a nie tylko to, że istnieją.
Zastanawiałem się nad stworzeniem kolejnych testowych maszyn wirtualnych i sieci wirtualnej, a następnie sondowaniem za pomocą narzędzi takich jak nmap
efekty. Jednak unikam tego rozwiązania ze względu na złożoność tworzenia tych wszystkich dodatkowych maszyn wirtualnych, co jest naprawdę dość ciężkim sposobem na wygenerowanie ruchu testowego. Byłoby również miło mieć zautomatyzowaną metodologię testowania, która może również działać na prawdziwym serwerze w produkcji.
Jak inaczej mogę rozwiązać ten problem? Czy istnieje jakiś mechanizm, którego mógłbym użyć do wygenerowania lub symulacji dowolnego ruchu, a następnie wiedzieć, czy zostałby (lub zostałby) odrzucony lub zaakceptowany przez iptables
?
źródło
Odpowiedzi:
Jeśli jesteś przygotowany na trochę kodowania, możesz spróbować:
CLONE_NEWNET
flagi dlaclone
wywołania systemowego lub za pomocą poleceńip netns add
iip netns exec
.tun
sterownika lubip link add
.iptables-restore
tun
lubveth
tun
lubveth
Takie podejście prawdopodobnie najlepiej sprawdzi się w testowaniu reguł dla przekazywanych pakietów. Połączenia z / z komputera, na którym jest używany iptables, wymagają nieco większego wysiłku, ale powinno być również możliwe przetestowanie w ten sposób.
Oto przykład sekwencji poleceń, których można użyć:
To stworzy trzy sieciowe przestrzenie nazw do testowania i załaduje zestaw reguł iptables w jednym z nich. Pozostałe dwie pełnią rolę faceta w Internecie i hosta w sieci LAN.
W powyższym przykładzie pierwsze
telnet
polecenie odmawia połączenia ztest-iptables-lan-host
przestrzeni nazw, drugietelnet
polecenie dostaje limit czasu, jeśli zestaw reguł upuści pakiet.Nie dotyczy to początkowej przestrzeni nazw sieci, czyli tej, w której domyślnie będzie się odbywać cała produkcja. Jedynym sposobem na uzyskanie większej separacji od produkcji jest uruchomienie jej na osobnym hoście (fizycznym lub wirtualnym).
źródło
świat zawodowy robi to za pomocą sprzętu / oprogramowania dostarczanego przez 2 firmy.
www.ixiacom.com
www.spirent.com
W pierwszym przypadku możesz użyć czegoś takiego jak podwozie Ixia 400T + Ixload.
W drugim przypadku linia Smartbits lub Testcenter z odpowiadającymi im aplikacjami
Urządzenia te mogą (między innymi) emulować wielu klientów wykonujących różnego rodzaju żądania na wybranym serwerze docelowym. Są gotowe do przetestowania bezpieczeństwa serwerów, w tym wstępnie zdefiniowanego zestawu testów ataku, a ponadto zawsze możesz zdefiniować własny zestaw. Mają także wiele innych możliwości, takich jak testy obciążeniowe i tym podobne.
Nie jest to tania opcja.
źródło