iptables представляет собой утилиту командной строки для настройки интегрированного в ядро Linux межсетевого экрана, разработанного в рамках проекта netfilter.
iptables — это программный межсетевой экран, который по умолчанию включен в большинство дистрибутивов Linux. Чтобы установить его, просто выполните следующую команду в терминале:
RHEL/CentOS:
# yum install iptables-services
Debian/Ubuntu:
# apt-get install iptables
Типы цепочек
iptables использует пять различных цепочек: PREROUTING, INPUT, FORWARD, OUTPUT and POSTROUTING.
- PREROUTING: пакеты войдут в эту цепочку до того, как будет принято решение о маршрутизации.
- INPUT: пакет будет доставлен локально. Он не имеет ничего общего с процессами, имеющими открытый сокет; локальная доставка контролируется таблицей маршрутизации»local-delivery» routing table: ip route show table local.
- FORWARD: все пакеты, которые были маршрутизированы и не предназначены для локальной доставки, будут проходить через эту цепочку.
- OUTPUT: пакеты, отправленные с самого компьютера, будут посещать эту цепочку.
- POSTROUTING: решение о маршруте принято. Пакеты входят в эту цепочку непосредственно перед передачей их аппаратному обеспечению.
Список правил iptables
Вы можете вывести список правил, используя флаг -L:
# iptables -L
Вы можете вывести номера строк для правил, используя –line-numbers:
# iptables -L --line-numbers
Чтобы вывести список конкретной таблицы, используйте флаг -t с именем таблицы:
# iptables -L -t nat
Добавление правил iptables
После настройки цепочек вы можете настроить iptables для разрешения или блокировки определенных адресов, диапазонов адресов и портов. В этих примерах мы установим соединения на DROP, но вы можете переключить их на ACCEPT или REJECT, в зависимости от ваших потребностей и конфигурации цепочек
Разрешить подключения с определенного IP-адреса:
# iptables -A INPUT -s <IP_ADDRESS> -j DROP
Разрешить подключение с определенного порта:
# iptables -I INPUT <NUMBER> -s <IP_ADDRESS> --dport <PORT_NUMBER> -j ACCEPT
<NUMBER> — номер добавляемого правила, желательно добавлять под номером 1.
SYN Flooding
# iptables -A INPUT -p tcp -m state --state NEW -m recent --update --seconds 60 --hitcount 20 -j DROP
# iptables -A INPUT -p tcp -m state --state NEW -m recent --set -j ACCEPT
Эти правила ограничивают скорость запросов SYN от одного IP до 20 в минуту. Не рекомендуется его использовать постоянно так как вы можете заблокировать белый трафик, исходящий из сетей за NAT.
Удаление правил iptables
Определите номер правила и название цепочки в списке:
# iptables -L --line-numbers
Удалить правило:
# iptables -D <CHAIN> <RULE_NUMBER>
Или вы можете удалить правило напрямую из списка:
# iptables -S
Скопируйте правило из вывода и удалите его:
# iptables -D INPUT -s 12.34.56.78 -j DROP
Удалить все правила:
# iptables -F
Сохранить правила iptables
RHEL/CentOS:
# iptables-save > /etc/sysconfig/iptables
Debian/Ubuntu:
# iptables-save > /etc/iptables/rules.v4
Восстановить правила iptables
RHEL/CentOS:
# iptables-restore < /etc/sysconfig/iptables
Debian/Ubuntu:
# iptables-restore < /etc/iptables/rules.v4