Get Started. It's Free
or sign up with your email address
Rocket clouds
ip_tables by Mind Map: ip_tables

1. commands

1.1. -L, --list

1.1.1. iptables -L INPUT

1.1.2. Вывод списка правил в заданной цепочке. Если не указать, то всех цепочек.

1.2. -A, --append

1.2.1. iptables -A INPUT ...

1.2.2. Добавляет новое правило в конец заданной цепочки.

1.3. -D, --delete

1.3.1. iptables -D INPUT --dport 80 -j DROP, iptables -D INPUT 1

1.3.1.1. Новый узел

1.3.2. Удаление правила из цепочки. По критерию или по номеру(2й пример).

1.4. -I, --insert

1.4.1. iptables -I INPUT 1 --dport 80 -j ACCEPT

1.4.2. Вставляет новое правило в цепочку, цифра за именем цепочки указывает перед каким правилом вставить новое.

1.5. -F, --flush

1.5.1. iptables -F [INPUT] [-t table]

1.5.2. Сброс (удаление) всех правил из заданной цепочки (таблицы), без параметров -- все правила всех цепочек в таблице filter

1.6. -P, --policy

1.6.1. iptables -P INPUT (DROP|ACCEPT)

1.6.2. Задает политику по-умолчанию для заданной цепочки. т.е. если не применилось ни одно правило

1.7. -N, --new-chain

1.7.1. iptables -N allowed

1.7.2. создать новую цепочку, имя-- уникальное.В нее потом можно добавлять правила.

1.8. -X, --delete-chain

1.8.1. iptables -X allowed

1.8.2. Удаление заданной цепочки из заданной таблицы. Удаляемая цепочка не должна иметь правил и не должно быть ссылок из других цепочек на удаляемую цепочку. Если имя цепочки не указано, удалятся все цепочки заданной таблице кроме встроенных.

2. Критерии совпадения

2.1. Общие критерии

2.1.1. -p, --protocol

2.1.1.1. iptables -A INPUT -p tcp

2.1.1.2. Этот критерий используется для указания типа протокола(см /etc/protocols) можно юзать как имена так и числовые обозначения, -p ! tcp==(все кроме TCP)

2.1.2. -s, --src, --source

2.1.2.1. iptables -A INPUT -s 192.168.1.1[/<mask>]

2.1.2.2. IP-адрес(а) источника пакета. -s ! 192.168.1.0/24 -- все кроме подсетки

2.1.3. -d, --dst, --destination

2.1.3.1. -d, --dst, --destination

2.1.3.2. same as prev)

2.1.4. -i, --in-interface

2.1.4.1. iptables -A INPUT -i eth0

2.1.4.2. Интерфейс, с которого был получен пакет. т.е. на который фактически пришел в систему.олько в цепочках INPUT, FORWARD и PREROUTING

2.1.5. -p, --protocol

2.1.5.1. iptables -A INPUT -p tcp

2.1.5.2. Этот критерий используется для указания типа протокола(см /etc/protocols) можно юзать как имена так и числовые обозначения, -p ! tcp==(все кроме TCP)

2.2. Неявные Критерии

2.2.1. TCP

2.2.1.1. --sport, --source-port

2.2.1.1.1. iptables -A INPUT -p tcp --sport 22

2.2.1.1.2. Исходный порт, с которого был отправлен пакет. 22:80 диапазон портов; "! 22", "! 22:80" -- инверсия;

2.2.1.2. --dport, --destination-port

2.2.1.2.1. iptables -A INPUT -p tcp --dport 22

2.2.1.2.2. Порт или диапазон портов, на который адресован пакет.

2.2.1.3. --tcp-flags

2.2.1.3.1. iptables -p tcp --tcp-flags SYN,FIN,ACK SYN

2.2.1.3.2. Определяет маску и флаги tcp-пакета. Пакет считается удовлетворяющим критерию, если из перечисленных флагов в первом списке в единичное состояние установлены флаги из второго списка. Так для вышеуказанного примера под критерий подпадают пакеты у которых флаг SYN установлен, а флаги FIN и ACK сброшены.

2.2.2. UDP

2.2.2.1. --sport, --source-port

2.2.2.1.1. iptables -A INPUT -p udp --sport 53

2.2.2.1.2. Исходный порт, с которого был отправлен пакет. В качестве параметра может указываться номер порта или название сетевой службы. варианты: :80, 20:80, 80: Если есть "!" то инверсия "--sport ! :80" -- все кроме 0-80

2.2.2.2. --dport, --destination-port

2.2.2.2.1. iptables -A INPUT -p udp --dport 53

2.2.2.2.2. Порт, на который адресован пакет. Формат аргументов полностью аналогичен принятому в критерии --source-port.

2.2.3. ICMP

2.2.3.1. --icmp-type

2.2.3.1.1. iptables -A INPUT -p icmp --icmp-type 8

2.2.3.1.2. Тип сообщения ICMP определяется номером или именем. iptables --protocol icmp --help ; ! == инвертирование

2.3. Явные Критерии

2.3.1. --limit, limit-burst

2.3.1.1. iptables -A INPUT -m limit --limit 3/hour

2.3.1.2. Устанавливается средняя скорость "освобождения емкости" за единицу времени

2.3.1.3. iptables -A INPUT -m limit --limit-burst 5 -j DROP

2.3.1.4. Устанавливает максимальное значение числа burst limit для критерия limit.

2.3.1.4.1. Предположим наличие правила, содержащего критерий -m limit --limit 5/second --limit-burst 10. Ключ limit-burst установил объем "емкости" равный 10-ти. Каждый пакет, который подпадает под указанное правило, направляется в эту емкость. Допустим, в течение 1/1000 секунды, мы получили 10 пакетов, тогда с получением каждого пакета "уровень" в "емкости" будет возрастать: 1-2-3-4-5-6-7-8-9-10. Емкость наполнилась. Теперь пакеты, подпадающие под наше ограничительное правило, больше не смогут попасть в эту "емкость" (там просто нет места), поэтому они (пакеты) пойдут дальше по набору правил, пока не будут явно восприняты одним из них, либо подвергнутся политике по-умолчанию. Каждые 1/5 секунды "уровень" в воображаемой емкости снижается на 1, и так до тех пор, пока "емкость" не будет опустошена. Через секунду, после приема 10-ти пакетов "емкость" готова будет принять еще 5 пакетов. Само собой разумеется, что "уровень" в "емкости" возрастает на 1 с каждым вновь пришедшим пакетом.

2.3.2. --mac-source

2.3.2.1. iptables -A INPUT -m mac --mac-source 00:00:00:00:00:01

2.3.2.2. MAC адрес сетевого узла, передавшего пакет. ! -- для инверсии

2.3.3. Muliport

2.3.3.1. --source-port

2.3.3.1.1. iptables -A INPUT -p tcp -m multiport --source-port 22,53,80,110

2.3.3.1.2. С помощью данного критерия можно указать до 15 различных портов, только совместно с критериями -p tcp или -p udp

2.3.3.2. --destination-port

2.3.3.2.1. iptables -A INPUT -p tcp -m multiport --destination-port 22,53,80,110

2.3.3.2.2. same

2.3.3.3. --port

2.3.3.3.1. iptables -A INPUT -p tcp -m multiport --port 22,53,80,110

2.3.3.3.2. проверка портов обоих направлений

2.3.4. Owner

2.3.4.1. --uid-owner

2.3.4.1.1. iptables -A OUTPUT -m owner --uid-owner 500

2.3.4.1.2. Производится проверка "владельца" по User ID (UID).

2.3.4.2. --gid-owner

2.3.4.2.1. iptables -A OUTPUT -m owner --gid-owner 0

2.3.4.2.2. Производится проверка "владельца" пакета по Group ID (GID).

2.3.4.3. --pid-owner

2.3.4.3.1. iptables -A OUTPUT -m owner --pid-owner 78

2.3.4.3.2. Производится проверка "владельца" пакета по Process ID (PID)

2.3.4.4. --sid-owner

2.3.4.4.1. iptables -A OUTPUT -m owner --sid-owner 100

2.3.4.4.2. Производится проверка Session ID пакета.

2.3.5. --state

2.3.5.1. iptables -A INPUT -m state --state RELATED,ESTABLISHED

2.3.5.2. Проверяется признак состояния соединения (state): INVALID, ESTABLISHED, NEW и RELATED

3. Действия и переходы

3.1. Переход на своб цепочку

3.1.1. iptables -N tcp_packets Теперь мы можем выполнять переходы на эту цепочку подобно: iptables -A INPUT -p tcp -j tcp_packets

3.2. ACCEPT

3.2.1. Если над пакетом выполняется действие ACCEPT, то пакет прекращает движение по цепочке (и всем вызвавшим цепочкам, если текущая цепочка была вложенной) и считается ПРИНЯТЫМ в данной таблице, но может быть отвергнут в другой

3.3. DROP

3.3.1. Игнорирует текущий пакет, но оставляет открытым соединение, лучше использовать REJECT

3.4. REJECT

3.4.1. --reject-with

3.4.1.1. iptables -A FORWARD -p TCP --dport 22 -j REJECT --reject-with tcp-reset

3.4.1.2. REJECT используется, как правило, в тех же самых ситуациях, что и DROP, но в отличие от DROP, команда REJECT выдает сообщение об ошибке на хост, передавший пакеттипы ответов: icmp-net-unreachable, icmp-host-unreachable, icmp-port-unreachable, icmp-proto-unreachable, icmp-net-prohibited и icmp-host-prohibited.