mod
parent
b10eb896d4
commit
c2ef43b47d
|
@ -0,0 +1,64 @@
|
||||||
|
# iptables
|
||||||
|
|
||||||
|
## Таблицы
|
||||||
|
|
||||||
|
- `filter` - основная таблица для фильтрации пакетов, используется по умолчанию;
|
||||||
|
- `nat` - управление преобразованием сетевых адресов;
|
||||||
|
- `mangle` - модификация и замена содержимого сетевых пакетов вне контекста NAT и фильтрации пакетов;
|
||||||
|
- `raw` - предназначена для работы с сырыми пакетами, пока они еще не прошли обработку
|
||||||
|
|
||||||
|
## Цепочки
|
||||||
|
|
||||||
|
Цепочки бывают базовые/встроенные и пользовательские (можно создать самому).
|
||||||
|
|
||||||
|
В новую цепочку можно направлять пакеты чтобы подвергуть их анализу правил. Например для отладки правил или настройки особого движения пакетов как это сделано в Docker
|
||||||
|
|
||||||
|
- `INPUT` - входящий трафик (адресованный локальному хосту);
|
||||||
|
- `FORWARD` - транзитный трафик поступающий на локальную машину с целью передачи его на другую машину (трафик передаваемый в docker контейнер тоже будет считаться транзитным), при этом транзитный трафик проходит в обоих направлениях;
|
||||||
|
- `OUTPUT` - исходящий из локального хоста трафик
|
||||||
|
|
||||||
|
## Правила - условия и действия
|
||||||
|
|
||||||
|
Правило - состоит из условия/критерия (если нет значит применяется ко всему трафику) действия (может не быть) и счетчика (для учета пакетов попавших под правило).
|
||||||
|
|
||||||
|
основные действия с правилами:
|
||||||
|
|
||||||
|
`-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
|
||||||
|
Действия:
|
||||||
|
|
||||||
|
ACCEPT - пакет принят в текущей таблице
|
||||||
|
DROP - пакет сбрасывается и перестает движение в системе
|
||||||
|
LOG - пакет журналируется и продолжает дальнейшие движение по цепочке правил и таблицам (рассмотрим ниже)
|
||||||
|
REJECT - аналогично DROP только отдает сообщение об ошибке на хост отправителя (работает на всех цепочках таблицы filter):
|
||||||
|
--reject-with - тип ответа, RFC 793 или iptables -j REJECT -h
|
||||||
|
RETURN - возврат пакета в вышестоящую цепочку для применения действия по умолчанию, при отсутствии вышестоящей цепочки применится действие по умолчанию
|
Loading…
Reference in New Issue