Исправления lab4
This commit is contained in:
@@ -122,7 +122,11 @@ sudo iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
|
||||
* SSH-сессии, в которой ты уже сидишь;
|
||||
* ответов от DNS-сервера;
|
||||
* ответов от HTTP/HTTPS-серверов;
|
||||
* ответов на ping.
|
||||
* ответов на исходящий ping (`echo-reply`).
|
||||
|
||||
**Порядок имеет значение.** Раз это правило стоит **раньше**, чем узкие правила вида «принять UDP/TCP с `--sport 53` или TCP с `--sport 80/443`» или «`echo-reply`», то **все ответные пакеты** по уже разрешённым исходящим запросам срабатывают здесь. Отдельные строки `INPUT` для `sport` DNS/HTTP(S) и для входящего `echo-reply` становятся **лишними**: до них очередь не дойдёт, а счётчики у таких правил останутся нулевыми.
|
||||
|
||||
На `INPUT` в учебной конфигурации **осмысленно оставить** явные разрешения только для **нового** входящего трафика, которое не описывается как `ESTABLISHED`/`RELATED`: SSH (если нужен), loopback и входящий `echo-request` только с разрешённого адреса (см. раздел 8).
|
||||
|
||||
---
|
||||
|
||||
@@ -167,16 +171,7 @@ sudo iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
|
||||
* `--dport 53` — порт назначения 53, стандартный порт DNS.
|
||||
* `-j ACCEPT` — разрешить.
|
||||
|
||||
```bash
|
||||
sudo iptables -A INPUT -p udp --sport 53 -j ACCEPT
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* `-A INPUT` — правило для входящих ответов.
|
||||
* `-p udp` — протокол UDP.
|
||||
* `--sport 53` — исходный порт удалённого DNS-сервера равен 53.
|
||||
* `-j ACCEPT` — разрешить.
|
||||
Входящие ответы DNS (UDP с `sport 53`) после этого правила пропускаются правилом `ESTABLISHED,RELATED` на `INPUT`; отдельная строка `INPUT --sport 53` не нужна и при типичном порядке правил всё равно не получила бы трафика.
|
||||
|
||||
## TCP DNS
|
||||
|
||||
@@ -187,14 +182,7 @@ sudo iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
|
||||
Пояснение:
|
||||
|
||||
* TCP используется реже, но может понадобиться для больших DNS-ответов или специальных случаев.
|
||||
|
||||
```bash
|
||||
sudo iptables -A INPUT -p tcp --sport 53 -j ACCEPT
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* разрешает входящие TCP-ответы от DNS-сервера.
|
||||
* входящие TCP-ответы от DNS идут через `ESTABLISHED,RELATED` на `INPUT`.
|
||||
|
||||
---
|
||||
|
||||
@@ -214,13 +202,7 @@ sudo iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
|
||||
* `--dport 80` — порт назначения 80, стандартный HTTP.
|
||||
* правило разрешает открывать веб-страницы по HTTP.
|
||||
|
||||
```bash
|
||||
sudo iptables -A INPUT -p tcp --sport 80 -j ACCEPT
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* разрешает входящие ответы от HTTP-сервера, у которого исходный порт 80.
|
||||
Входящие ответы HTTP (и далее HTTPS) принимаются правилом `ESTABLISHED,RELATED` на `INPUT`; отдельное `INPUT --sport 80` не требуется.
|
||||
|
||||
## HTTPS
|
||||
|
||||
@@ -232,13 +214,7 @@ sudo iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
|
||||
|
||||
* порт 443 — стандартный HTTPS.
|
||||
|
||||
```bash
|
||||
sudo iptables -A INPUT -p tcp --sport 443 -j ACCEPT
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* разрешает входящие ответы от HTTPS-сервера.
|
||||
Входящие ответы HTTPS обрабатываются на `INPUT` через `ESTABLISHED,RELATED`.
|
||||
|
||||
---
|
||||
|
||||
@@ -256,14 +232,7 @@ sudo iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
|
||||
* `--icmp-type echo-request` — ICMP-пакеты типа “эхо-запрос”, то есть сам ping-запрос.
|
||||
* `-j ACCEPT` — разрешить отправку.
|
||||
|
||||
```bash
|
||||
sudo iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* `echo-reply` — ответ на ping.
|
||||
* правило разрешает принимать ответы на отправленные запросы.
|
||||
Ответы `echo-reply` на этот исходящий ping ядро относит к той же «сессии»; на `INPUT` они проходят через `ESTABLISHED,RELATED`. Отдельное правило `INPUT -p icmp --icmp-type echo-reply` не обязательно и при раннем conntrack дублирует его бесполезно.
|
||||
|
||||
---
|
||||
|
||||
@@ -338,8 +307,8 @@ sudo iptables -L -n -v --line-numbers
|
||||
|
||||
Пояснение:
|
||||
|
||||
* убедись, что правила SSH, loopback, DNS, HTTP/HTTPS и ICMP стоят в списке.
|
||||
* также удобно смотреть счётчики пакетов: если SSH работает, у соответствующих правил будут увеличиваться значения.
|
||||
* убедись, что правила SSH, conntrack, loopback, исходящие DNS/HTTP(S)/ICMP и узкое правило входящего ping с `192.168.100.2` стоят в списке.
|
||||
* на `INPUT` основной рост счётчиков у «ответного» трафика обычно виден у строки `ESTABLISHED,RELATED`, а не у отдельных `--sport` (если ты их вообще не добавляешь).
|
||||
|
||||
Открой **вторую SSH-сессию** к `firewall-host`:
|
||||
|
||||
@@ -418,21 +387,24 @@ ping -c 4 192.168.100.1
|
||||
|
||||
## Проверка блокировки лишнего трафика
|
||||
|
||||
Например, попробуй на `firewall-host`:
|
||||
Надёжный вариант — **TCP на порт, который не разрешён политикой**, на второй ВМ в `intnet` (у тебя это `external-client`).
|
||||
|
||||
На `external-client` подними слушатель на порт, например `8080`:
|
||||
|
||||
```bash
|
||||
nc -vz example.com 22
|
||||
python3 -m http.server 8080
|
||||
```
|
||||
|
||||
На `firewall-host` попробуй подключиться:
|
||||
|
||||
```bash
|
||||
timeout 5 nc -vz 192.168.100.2 8080
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* `nc` — netcat, утилита для проверки TCP/UDP-подключений.
|
||||
* `-v` — подробный режим.
|
||||
* `-z` — не передавать данные, а только проверить возможность подключения.
|
||||
* `example.com 22` — попытка открыть TCP-соединение на порт 22.
|
||||
* так как доступ наружу разрешён только для DNS, HTTP, HTTPS и ping, это подключение должно не пройти.
|
||||
|
||||
Если `nc` не установлен, можно проверить другим способом, но ты писал, что инструменты уже есть, так что, скорее всего, всё нормально.
|
||||
* исходящий TCP на `192.168.100.2:8080` не попадает под разрешённые `dport 53`/`80`/`443`, поэтому при политике `OUTPUT DROP` соединение не устанавливается (обычно таймаут).
|
||||
* проверка к `example.com:22` для отчёта часто бессмысленна: порт 22 у публичных имён часто закрыт независимо от твоего МЭ.
|
||||
|
||||
---
|
||||
|
||||
@@ -538,17 +510,12 @@ sudo iptables -A INPUT -i lo -j ACCEPT
|
||||
sudo iptables -A OUTPUT -o lo -j ACCEPT
|
||||
|
||||
sudo iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
|
||||
sudo iptables -A INPUT -p udp --sport 53 -j ACCEPT
|
||||
sudo iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
|
||||
sudo iptables -A INPUT -p tcp --sport 53 -j ACCEPT
|
||||
|
||||
sudo iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
|
||||
sudo iptables -A INPUT -p tcp --sport 80 -j ACCEPT
|
||||
sudo iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
|
||||
sudo iptables -A INPUT -p tcp --sport 443 -j ACCEPT
|
||||
|
||||
sudo iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
|
||||
sudo iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
|
||||
|
||||
sudo iptables -A INPUT -p icmp --icmp-type echo-request -s 192.168.100.2 -d 192.168.100.1 -j ACCEPT
|
||||
sudo iptables -A OUTPUT -p icmp --icmp-type echo-reply -s 192.168.100.1 -d 192.168.100.2 -j ACCEPT
|
||||
|
||||
Reference in New Issue
Block a user