lista 7
(iptables)
Można używać dowolnego systemu z iptables (zapewne każdy linux, PrASKowa VMka lub PrASKowy router). Konfiguracja iptables na OpenWrt jest dość mocno zakręcona ;).
Jeśli ktoś ma ochotę jednak robić na OpenWrt - nie widzę przeszkód (w razie czego - ostrzegałem). Listę można w takim wypadku też (próbować) robić za pomocą pliku konfiguracyjnego /etc/config/firewall.
Rozwiązań oczekuję w formie listy poleceń (iptables -foo -bar ..), które się wykonują BEZ BŁĘDÓW.
Testowanie oraz metodyka wykonywania zadań:
- (zalecana konfiguracja) iptables na VM, sieć wewnętrzna - sieć w Twoim VPN/sieci dla VM/kontenerów (10.0.0.0/24)
- skrypty można pisać “na sucho” w dowolnym edytorze lub próbować bezpośredio w konsoli
- do VMek można się dostać inaczej niż przez ssh (⇒ konsola Proxmox) w razie “odcięcia się”, co zdarza się każdemu, szczególnie na początku przygód z iptables :)
Uwagi:
- Trzeba włączyć przekazywanie pakietów w linuksie (echo 1 > /proc/sys/net/ipv4/ip_forward)
- Regułki można pisać w notatniku, skrypcie, itp.
- pomoce: internety, google, kaczkakaczkaidź.pl, man iptables, man iptables-extensions
- dopuszczam robienie listy za pomocą nftables. O chęci robienia nft proszę najpierw poinformować mnie mailem - zobaczymy ile będzie chętnych i jak do tego podchodzimy
Zadania:
- Za pomocą iptables udostępnić sieć komputerom w podsieci vm1 i vm2 podłączonych do jednego z interfejsów sieciowych (ens19), używając translacji adresów na adres zewnętrzny (chodzi o NAT źródłowy). Co byś zrobił(a) gdyby adres zewnętrzny był zmienny (podpowiedź: SNAT vs MASQUERADE)? (1p)
- Używając iptables skonfiguruj firewall typu stateful, który przepuszcza:
- połączenia nawiązane oraz będące odpowiedzią na ruch pochodzący z wewnątrz (stateful firewall!)
- połączenia do OpenVPN (domyślnie port 1194 UDP)
- połaczenia na port 22 (TCP) z dowolnego adresu
- połączenia na port 53 (UDP i TCP) z dowolnego adresu (DNS dla VMek!)
- połączenia na port 80 i 443 (TCP) z dowolnego adresu (jako jedna regułka!)
- żądania icmp echo ale nie więcej niż jedno na sekundę
- zakres portów od 2000:3000 (TCP)
- połączenia na port 113 (TCP) mają dostawać natychmiastową odpowiedź icmp-port-unreachable.
Pozostałe porty mają całkowicie odrzucać połączenia (DROP). (4p)
- W tak (j/w) skonfigurowanej sieci przekieruj port zewnętrzny 222 (TCP) na wybrany komputer sieci wewnętrznej (np. vm1), port 22 (TCP). (1p)
- Za pomocą iptables spowoduj by wpisanie w przeglądarce na komputerze wewnętrznym adresu http://www.google.com powodowało wyświetlenie strony http://www.wolframalpha.com (ignorujemy błedy SSL). (1p)
- Przekieruj wszystkie zapytania DNS z sieci wewnętrznej na inny (swój) serwer DNS (1p)
- (ping fun) Napisz skrypt, który co sekundę zmienia odpowiedź serwera na żądania icmp echo. (2p)
- Jeden z użytkowników Twojego serwera (posiada konto shellowe (ale nie znajduje się w sieci lokalnej!)) jest podejrzany o sterowanie botnetem zarządzanym z IRC-a. Zaloguj wszystkie pakiety przesyłane do serwerów IRC pochodzące od tego użytkownika. (2p)
- W Twojej sieci wewnętrznej jeden z komputerów „nie ma internetu”. Odkryłeś(aś), że Twój operator blokuje pakiety z TTL < 64. Napraw to za pomocą iptables. (2p)
- Za pomocą iptables zabroń komputerowi o adresie MAC 00:ca:fe:ba:be:00 możliwość przesyłania pakietów na port 80 mniejszych niż 50 i większych niż 1000 bajtów, ale tylko w piątki jeśli jest 13 dzień miesiąca. (2p).
- Posiadasz łącze w technologii (x)dsl. W Twojej sieci wewnętrznej komputery mają problemy z internetem. Objawy: nie działają niektóre strony. Wszystkie pingi działają prawidłowo.
Na samym routerze wszystko działa prawidłowo. Napraw to za pomocą iptables.
Dodatkowe pytania można zadawać na stronie konsultacji lub mailem. (5p) - Za pomocą programu ip z pakietu iproute2 (linux) dodaj dodatkowy adres IP (alias) do wybranego interfejsu. (1p)
- Za pomocą programu ip ustaw statyczną trasę do sieci 1.1.1.0/24 przez router 1.1.1.1. (1p)
- Do konfiguracji z zadania 1 dodaj założenie, że sieci lokalnych podłączonych do routera jest więcej niż jedna. Dodatkowo są to sieci 11.12.13.0/24 i 18.19.20.0/23. Zmodyfikuj swoje reguły iptables tak, aby ruch między tymi sieciami (z sieci A do B) nie był NATowany, ale z tych A i B do internetu już miał NAT. (2p)
- * zadania przepisz na nft (1p, bo jest konwerter…)
- * zadania (poza NAT) wykonaj również dla ruchu IPv6 (2p)
Termin na listę 7: czwartek 17 grudnia 23:59:59:59niedziela 20 grudnia 2020, 23:59:59:59.
.