Всі команди виконуються під sudo

sudo su

Перевірка стану

iptables -L -nv

Також можна вивести результати за таблицями:

  • filter (результат буде такий самий, як і без вказання таблиці)
iptables -t filter -L -nv
  • nat
iptables -t nat -L -nv

Вивести список сервісів, які працюють з мережевими інтерфейсами:

ss -ntulp

Показати список мережевих інтерфейсів:

ip a
admin@vmi1582341:/home/admin$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:50:56:4d:ec:96 brd ff:ff:ff:ff:ff:ff
    altname enp0s18
    altname ens18
    inet 167.86.321.178/24 brd 167.86.321.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::250:56ff:fe4d:ec96/64 scope link
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 02:42:4a:70:83:30 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

Нам треба запам’ятати назву мережі eth0, бо вона може бути різною.

Додавання правил

В першу чергу дозволяємо собі підключення по ssh

iptables -A INPUT -p tcp --dport=22 -j ACCEPT

або з обмеженням по інтерфейсу:

iptables -A INPUT -i eth0 -p tcp --dport=22 -j ACCEPT

Дозволяємо трафік для внутрішніх інтерфейсів

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i docker0 -j ACCEPT

Дозволяємо PING-протокол

iptables -A INPUT -p icmp -j ACCEPT

Додаємо web-серверні порти

iptables -A INPUT -p tcp --dport=80 -j ACCEPT
iptables -A INPUT -p tcp --dport=443 -j ACCEPT

Дозвіл на отримання відповідей з зовні, які наш сервер очікує:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Закриваємо прийом всіх інших пакетів

iptables -P INPUT DROP

Якщо після цієї команди страчено доступ - треба перезавантажити сервер, бо правила ще не збережені.

Збереження правил

iptables-save > ./iptables-2024-05-26.rules

тут вказати ім’я файлу щоб була можливість потім відновити за допомогою

iptables-restore < ./iptables-2024-05-26.rules

Якщо не було раніше встановлено, то виконати команду

apt install iptables-persistent netfilter-persistent
netfilter-persistent save
netfilter-persistent start

Заблокувати якийсь IP

iptables -I INPUT -s 209.175.153.23 -j DROP

Додаткові матеріали

Налаштування з нуля

NAT і PORT FORWARDING