listy:lista7

(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:

  1. 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)
  2. Używając iptables skonfiguruj firewall typu stateful, który przepuszcza:
    1. połączenia nawiązane oraz będące odpowiedzią na ruch pochodzący z wewnątrz (stateful firewall!)
    2. połączenia do OpenVPN (domyślnie port 1194 UDP)
    3. połaczenia na port 22 (TCP) z dowolnego adresu
    4. połączenia na port 53 (UDP i TCP) z dowolnego adresu (DNS dla VMek!)
    5. połączenia na port 80 i 443 (TCP) z dowolnego adresu (jako jedna regułka!)
    6. żądania icmp echo ale nie więcej niż jedno na sekundę
    7. zakres portów od 2000:3000 (TCP)
    8. połączenia na port 113 (TCP) mają dostawać natychmiastową odpowiedź icmp-port-unreachable.
      Pozostałe porty mają całkowicie odrzucać połączenia (DROP). (4p)
  3. W tak (j/w) skonfigurowanej sieci przekieruj port zewnętrzny 222 (TCP) na wybrany komputer sieci wewnętrznej (np. vm1), port 22 (TCP). (1p)
  4. 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)
  5. Przekieruj wszystkie zapytania DNS z sieci wewnętrznej na inny (swój) serwer DNS (1p)
  6. (ping fun) Napisz skrypt, który co sekundę zmienia odpowiedź serwera na żądania icmp echo. (2p)
  7. 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)
  8. 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)
  9. 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).
  10. 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)
  11. Za pomocą programu ip z pakietu iproute2 (linux) dodaj dodatkowy adres IP (alias) do wybranego interfejsu. (1p)
  12. Za pomocą programu ip ustaw statyczną trasę do sieci 1.1.1.0/24 przez router 1.1.1.1. (1p)
  13. 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)
  14. * zadania przepisz na nft (1p, bo jest konwerter…)
  15. * 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. .