diff --git a/iptables.md b/iptables.md index 18688e4..5529e09 100644 --- a/iptables.md +++ b/iptables.md @@ -23,42 +23,59 @@ основные действия с правилами: -`-A` - добавить правило в цепочку; -`-С` - проверить все правила; -`-D` - удалить правило; -`-I` - вставить правило с нужным номером; -`-L` - вывести все правила в текущей цепочке; -`-S` - вывести все правила; -`-F` - очистить все правила; -`-N` - создать цепочку; -`-X` - удалить цепочку; -`-P` - установить действие по умолчанию. +- `-A` - добавить правило в цепочку; +- `-С` - проверить все правила; +- `-D` - удалить правило; +- `-I` - вставить правило с нужным номером; +- `-L` - вывести все правила в текущей цепочке; +- `-S` - вывести все правила; +- `-F` - очистить все правила; +- `-N` - создать цепочку; +- `-X` - удалить цепочку; +- `-P` - установить действие по умолчанию. Условия: -`-p` - протокол (TCP, UDP, ICMP, ALL); -`-s` - ip адрес источника (можно с маской 10.0.0.0/24), допускается отрицание (т.е. все кроме) `-s ! 10.0.0.0/24`; -`-d` - ip адрес получателя (аналогично `-s`); -`-i` - интерфейс с которого пришел пакет (только для `INPUT`, `FORWARD`, `PREROUTING`), например `ens3`, допускается указать `ens+` что означает все имена интерфейсов начинающиеся с заданной строки, допускается отрицание `-i ! ens+`; -`-o` - интерфейс локального хоста, из которого выходит трафик (только для `OUTPUT`, `FORWARD`, `PREROUTING`); -`--sport` - порт с которого был отправлен TCP/UDP пакет (допускаются имена служб из /etc/services), поддерживаются диапазоны вида 20:80 что значит от 20 до 80 порта, так же можно опустить одно из значений :80 (от 0 до 80) или 20: (от 20 до 65535), отрицание поддерживается даже к диапазонам --sport ! 20:80 ---dport - аналогично --sport только речь идет про порт, которому адресован пакет ---icmp-type - тип ICMP сообщения (номер или название), поддерживается отрицание. RFC 792 или iptables --protocol icmp --help --m mac --mac-source - MAC адрес устройства передавшего пакет, поддерживается отрицание --m state --state - состояние соединения: -INVALID - неизвестное соединение, возможно ошибочное -NEW - новое соединение -ESTABLISHED - уже установленное соединение -RELATED - пакет принадлежит уже существующему соединению, но он отправляется по новому --m ttl - Time To Live: ---ttl-eq N - TTL пакета равен N ---ttl-lt N - TTL пакета меньше N ---ttl-gt N - TTL пакета больше N +- `-p` - протокол (TCP, UDP, ICMP, ALL); +- `-s` - ip адрес источника (можно с маской 10.0.0.0/24), допускается отрицание (т.е. все кроме) `-s ! 10.0.0.0/24`; +- `-d` - ip адрес получателя (аналогично `-s`); +- `-i` - интерфейс с которого пришел пакет (только для `INPUT`, `FORWARD`, `PREROUTING`), например `ens3`, допускается указать `ens+` что означает все имена интерфейсов начинающиеся с заданной строки, допускается отрицание `-i ! ens+`; +- `-o` - интерфейс локального хоста, из которого выходит трафик (только для `OUTPUT`, `FORWARD`, `PREROUTING`); +- `--sport` - порт с которого был отправлен TCP/UDP пакет (допускаются имена служб из `/etc/services`), поддерживаются диапазоны вида `20:80` что значит от 20 до 80 порта, так же можно опустить одно из значений `:80` (от 0 до 80) или `20:` (от 20 до 65535), отрицание поддерживается даже к диапазонам `--sport ! 20:80`; +- `--dport` - аналогично `--sport` только речь идет про порт, которому адресован пакет; +- `--icmp-type` - тип ICMP сообщения (номер или название), поддерживается отрицание. RFC 792 или `iptables --protocol icmp --help`; +- `-m mac --mac-source` - MAC адрес устройства передавшего пакет, поддерживается отрицание; +- `-m state --state` - состояние соединения: + - `INVALID` - неизвестное соединение, возможно ошибочное; + - `NEW` - новое соединение; + - `ESTABLISHED` - уже установленное соединение; + - `RELATED` - пакет принадлежит уже существующему соединению, но он отправляется по новому +- `-m ttl` - Time To Live: + - `--ttl-eq N` - TTL пакета равен N; + - `--ttl-lt N` - TTL пакета меньше N; + - `--ttl-gt N` - TTL пакета больше N + Действия: -ACCEPT - пакет принят в текущей таблице -DROP - пакет сбрасывается и перестает движение в системе -LOG - пакет журналируется и продолжает дальнейшие движение по цепочке правил и таблицам (рассмотрим ниже) -REJECT - аналогично DROP только отдает сообщение об ошибке на хост отправителя (работает на всех цепочках таблицы filter): ---reject-with - тип ответа, RFC 793 или iptables -j REJECT -h -RETURN - возврат пакета в вышестоящую цепочку для применения действия по умолчанию, при отсутствии вышестоящей цепочки применится действие по умолчанию +- `ACCEPT` - пакет принят в текущей таблице; +- `DROP` - пакет сбрасывается и перестает движение в системе; +- `LOG` - пакет журналируется и продолжает дальнейшие движение по цепочке правил и таблицам (рассмотрим ниже) +- `REJECT` - аналогично DROP только отдает сообщение об ошибке на хост отправителя (работает на всех цепочках таблицы filter): + - `--reject-with` - тип ответа, RFC 793 или `iptables -j REJECT -h` +- `RETURN` - возврат пакета в вышестоящую цепочку для применения действия по умолчанию, при отсутствии вышестоящей цепочки применится действие по умолчанию + +## Примеры + +- Просмотр текущих правил + +```bash +iptables -L +``` + +более наглядно + +```bash +iptables -vnL --line-numbers +``` + +