ip_tables

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

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

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

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

1.2. ACCEPT

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

1.3. DROP

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

1.4. REJECT

1.4.1. --reject-with

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

1.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.

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

3. commands

3.1. -L, --list

3.1.1. iptables -L INPUT

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

3.2. -A, --append

3.2.1. iptables -A INPUT ...

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

3.3. -D, --delete

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

3.3.1.1. Новый узел

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

3.4. -I, --insert

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

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

3.5. -F, --flush

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

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

3.6. -P, --policy

3.6.1. iptables -P INPUT (DROP|ACCEPT)

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

3.7. -N, --new-chain

3.7.1. iptables -N allowed

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

3.8. -X, --delete-chain

3.8.1. iptables -X allowed

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

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

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

4.1.1. -p, --protocol

4.1.1.1. iptables -A INPUT -p tcp

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

4.1.2. -s, --src, --source

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

4.1.3. -d, --dst, --destination

4.1.3.1. -d, --dst, --destination

4.1.3.2. same as prev)

4.1.4. -i, --in-interface

4.1.4.1. iptables -A INPUT -i eth0

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

4.1.5. -p, --protocol

4.1.5.1. iptables -A INPUT -p tcp

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

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

4.2.1. TCP

4.2.1.1. --sport, --source-port

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

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

4.2.1.2. --dport, --destination-port

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

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

4.2.1.3. --tcp-flags

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

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

4.2.2. UDP

4.2.2.1. --sport, --source-port

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

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

4.2.2.2. --dport, --destination-port

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

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

4.2.3. ICMP

4.2.3.1. --icmp-type

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

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

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

4.3.1. --limit, limit-burst

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

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

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

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

4.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 с каждым вновь пришедшим пакетом.

4.3.2. --mac-source

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

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

4.3.3. Muliport

4.3.3.1. --source-port

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

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

4.3.3.2. --destination-port

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

4.3.3.2.2. same

4.3.3.3. --port

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

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

4.3.4. Owner

4.3.4.1. --uid-owner

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

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

4.3.4.2. --gid-owner

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

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

4.3.4.3. --pid-owner

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

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

4.3.4.4. --sid-owner

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

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

4.3.5. --state

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

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