Konfiguracja zapory Iptables - czy dobrze zrobiłem?

Arch / Debian. Skonfigurowałem reguły Iptables (a właściwie “posklejałem” z kilku różnych przykładów :wink: ) i umieściłem skrypt w /etc/iptables/iptables.rules. Uruchamia się wraz z systemem, działa normalnie, przeglądam net itp. Ale nie mam pewności czy na pewno dobrze to napisałem, czy te regułki nie mają jakichś błędów, nie znam się tak na tym, dlatego proszę o konsultacje i ewentualne korekty jak ktoś obeznany w temacie.:

Cytat
sudo iptables -F
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT DROP
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -m state --state INVALID -j DROP
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -p tcp -i eth0 -j REJECT --reject-with tcp-reset
sudo iptables -A INPUT -p udp -i eth0 -j REJECT --reject-with icmp-port-unreachable
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j REJECT --reject-with icmp-host-unreachable
sudo iptables -A INPUT -m conntrack --ctstate INVALID -p tcp ! --tcp-flags SYN,RST,ACK,FIN,PSH,URG SYN,RST
sudo iptables -N syn-flood
sudo iptables -A INPUT -p tcp --syn -j syn-flood
sudo iptables -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN
sudo iptables -A syn-flood -m limit --limit 1/s --limit-burst 4 -j LOG --log-prefix "SYN-flood: "
sudo iptables -A syn-flood -j DROP;
sudo iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j LOG --log-prefix "Ping: "
sudo iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT # Ping of death
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j REJECT --reject-with icmp-host-unreachable
sudo iptables -A OUTPUT -p tcp --dport telnet -j REJECT
sudo iptables -A INPUT -p tcp --dport telnet -j REJECT
sudo iptables -A FORWARD -m state --state INVALID -j DROP
sudo iptables -A OUTPUT -m state --state INVALID -j DROP
sudo iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A OUTPUT -p tcp -m multiport --dports 20,21,22,25,43,53,80,443,465,587,1935,4321,5579,7634,8074 --syn -m state --state NEW -j ACCEPT
sudo iptables -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT
sudo iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT

Na pewno mają bo żeby klepać iptables to trzeba być niezłym kotem - by nie zrobić przy tym sobie krzywdy. Wątpię by za darmo ktoś Ci to weryfikował, a za samo zerknięcie to pewnie byś musiał zapłacić kilka stówek osobie która to naprawdę ogarnia.
Proponuję zainstalować CSF i go skonfigurować do własnych potrzeb.
Konfigurowanie firewalla na serwerze przy pomocy reguł od wujków dobre rady to najgorsze co można zrobić.

2 polubienia

Już w tym momencie zakładając, że pacjent korzysta z połączenia kablowego, przy zastosowaniu poprawnej nazwy interfejsu enp[…] odcinasz sobie internet.

Przyjmując politykę drop, wystarczą Ci:

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptabls -P OUTPUT DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A FORWARD -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
1 polubienie

Mam właśnie tylko połączenie kablowe. Internet mi działa normalnie. Trzeba poprawić te regułki czy usunąć jako niepotrzebne?

Chodziło mi właśnie o domyślne odrzucenie wszystkiego, i otwarcie “okienek” tego co potrzebne czyli bezpieczne w miare przeglądanie internetu. Takie reguły jakie napisałeś to wystarczający skrypt?

Te regulki mówią zaporze, że Ty możesz wyjść do Świata, Świat do Ciebie wejść nie może.

Dokładniej, gdy Ty nawiązuje połączenie, to tylko te pakiety mogą do Ciebie wrócić. Pakiety próbując nawiązać połączenie z Tobą będą odrzucane.

To tak jak z dzwiami - możesz je otworzyć od wewnątrz i wyjść z domu i wrócić do niego, bo masz klucz do nich. Obca osoba z zewnątrz nie wejdzie, bo drzwi są zamknięte.

Usuń - są błędne (nazwa interfejsu), a po drugie dublują zachowanie iptables zdefiniowane z polityce całego łańcucha i odwołują ruch “INPUT” dozwolony trzy linie wyżej - przed nimi. To co podał @roobal jest dobre. A dlaczego są błędne? Chodzi o to, żeby nie przeklepywać ślepo z internetu. Pisałem - jakby tam była poprawna nazwa interfejsu np. enp0s3 - te reguły odcinałyby połączenie internetowe.

Jak chcesz mieć bezproblemowo - użyj np. gufw (chociaż podobno lubi się nie uruchomić, itd.) :smiley:

Jak chcesz zrozumieć to czytaj:
https://www.google.com/search?client=firefox-b-d&q=jak+działa+iptables .
https://www.google.com/search?client=firefox-b-d&q=konfiguracja+iptables .

Staraj się szukać oczywiście najnowszych poradników.

PS
Nftables u bram … :stuck_out_tongue_winking_eye:

Ja używam UFW i działa bezproblemowo.

Gdy uczyłem się iptables, wydawało mi się, że gorzej tego ktoś wymyślić nie mógł. Gdy widziałem nftables, to sobie myślę, że jednak ktoś mógł to gorzej wymyślić :slight_smile:

No co zrobić … “lepsze” jest wrogiem dobrego. Interpretacja pakietów żądania echa chyba nie za bardzo działa z limit rate przy blokowaniu ping flood tak jak chcieli twórcy albo ja nie za bardzo wiem jak chcieli twórcy - trzeba robić obejście :stuck_out_tongue_winking_eye: Trzeba być samemu sobie sterem i okrętem … na co komu liczniki - dopisz se pan z łapy :smiley: