Все команды выполняются с `sudo`. Для чистоты сначала отключите ufw из прошлого задания: `sudo ufw disable`
**1. Текущие правила**
```
sudo iptables -L -n -v --line-numbers
sudo iptables -t nat -L -n -v
sudo iptables -t mangle -L -n
sudo iptables -t raw -L -n
```
В шапке `Chain INPUT (policy ACCEPT)` видна политика по умолчанию. Таблицы: filter, nat, mangle, raw. Цепочки в filter: INPUT, FORWARD, OUTPUT.
**2. Своя цепочка**
```
sudo iptables -N MY_INPUT
sudo iptables -A INPUT -j MY_INPUT
sudo iptables -L -n
```
**3. Правила входящего трафика**
```
sudo iptables -A MY_INPUT -s 192.168.1.100 -j DROP
sudo iptables -A MY_INPUT -s 10.10.10.0/24 -j DROP
sudo iptables -A MY_INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A MY_INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -I MY_INPUT 1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -L MY_INPUT -n --line-numbers
```
**4. Отрицание (!)**
```
sudo iptables -A MY_INPUT -p tcp ! --dport 23 -j ACCEPT
```
Разрешает весь TCP, кроме порта 23 (telnet). Отрицание удобно, когда проще описать исключение, чем перечислять все разрешённые порты.
**5. Удаление по номеру**
```
sudo iptables -L MY_INPUT -n --line-numbers
sudo iptables -D MY_INPUT 3
sudo iptables -L MY_INPUT -n --line-numbers
```
После удаления правила ниже сдвигаются вверх, номера пересчитываются.
**6. NAT (MASQUERADE)**
```
ip a
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -t nat -L -n -v
```
Замените `eth0` на ваш интерфейс из `ip a`. Задача: машины из внутренней сети выходят в интернет через один внешний IP, а адрес отправителя подменяется автоматически.
**7. Логирование**
```
sudo iptables -I MY_INPUT 1 -p tcp --dport 2222 -j LOG --log-prefix "PORT2222: " --log-level 4
nc -zv 127.0.0.1 2222
sudo journalctl -k | grep PORT2222
```
LOG не прерывающая цель: пакет записывается в журнал и продолжает идти по следующим правилам. Если `nc` нет: `sudo apt install netcat-openbsd`.
**8. Сброс**
```
sudo iptables -F
sudo iptables -t nat -F
sudo iptables -X
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -L -n -v
```
**9. fwbuilder**
```
sudo apt install fwbuilder -y
fwbuilder
```
В программе: File - New Project, затем правой кнопкой по Firewalls - New Firewall (платформа iptables). Сделайте скриншот окна с объектом.
Скриншоты делайте после каждого шага, как в списке отчёта.