ip_tables

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

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

2. commands

2.1. -L, --list

2.1.1. iptables -L INPUT

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

2.2. -A, --append

2.2.1. iptables -A INPUT ...

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

2.3. -D, --delete

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

2.3.1.1. Новый узел

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

2.4. -I, --insert

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

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

2.5. -F, --flush

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

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

2.6. -P, --policy

2.6.1. iptables -P INPUT (DROP|ACCEPT)

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

2.7. -N, --new-chain

2.7.1. iptables -N allowed

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

2.8. -X, --delete-chain

2.8.1. iptables -X allowed

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

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

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

3.1.1. -p, --protocol

3.1.1.1. iptables -A INPUT -p tcp

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

3.1.2. -s, --src, --source

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

3.1.3. -d, --dst, --destination

3.1.3.1. -d, --dst, --destination

3.1.3.2. same as prev)

3.1.4. -i, --in-interface

3.1.4.1. iptables -A INPUT -i eth0

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

3.1.5. -p, --protocol

3.1.5.1. iptables -A INPUT -p tcp

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

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

3.2.1. TCP

3.2.1.1. --sport, --source-port

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

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

3.2.1.2. --dport, --destination-port

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

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

3.2.1.3. --tcp-flags

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

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

3.2.2. UDP

3.2.2.1. --sport, --source-port

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

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

3.2.2.2. --dport, --destination-port

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

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

3.2.3. ICMP

3.2.3.1. --icmp-type

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

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

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

3.3.1. --limit, limit-burst

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

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

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

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

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

3.3.2. --mac-source

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

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

3.3.3. Muliport

3.3.3.1. --source-port

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

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

3.3.3.2. --destination-port

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

3.3.3.2.2. same

3.3.3.3. --port

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

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

3.3.4. Owner

3.3.4.1. --uid-owner

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

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

3.3.4.2. --gid-owner

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

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

3.3.4.3. --pid-owner

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

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

3.3.4.4. --sid-owner

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

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

3.3.5. --state

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

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

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

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

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

4.2. ACCEPT

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

4.3. DROP

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

4.4. REJECT

4.4.1. --reject-with

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

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