![]() | Это незавершённая статья. Вы можете помочь нам, исправив и дополнив её. |
Содержание |
Таблица используется для фильтрации трафика
Цепочки (chain):
Базовые правила:
На каждую цепочку назначается правило по умолчанию, срабатывающее при ненахождении соответствия среди правил в самой цепочке.
Фаервол, встроенный в ядро Linux настраивается командой iptables. Текущие параметры можно просмотреть командой iptables -L
Для наглядности напишем простейший bash-скрипт для настройки фаервола на шлюзе для локальной сети.
Для начала очистим все цепочки от правил:
iptables -F
Разрешим общение для локальной петли (интерфейс lo):
iptables -A INPUT -i lo -j ACCEPT
Разрешим доступ по ssh (протокол tcp, порт 22):
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Разрешим полный доступ из локальной сети (интерфейс eth0, сеть-источник 192.168.1.0/24):
iptables -A INPUT -i eth0 -s 192.168.1.0/24 -j ACCEPT
Разрешим поддерживать уже установленные соединения (состояния соединений RELATED,ESTABLISHED):
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Установим запрещающее правило по умолчанию для цепочки, т.е. запрещаем всё, что не разрешено:
iptables -P INPUT DROP
Для него обычно не задают правил и выставляют разрешающее правило по умолчанию на цепочку:
iptables -P OUTPUT ACCEPT
Предположим, что у нас есть настроенный SNAT.
Воспользуемся политикой "доброго админа" и зададим правило по умолчанию для цепочки, запрещающее всё, что не разрешено:
iptables -P FORWARD DROP
Разрешим поддерживать уже установленные соединения:
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
Теперь потихоньку начинаем разрешать:
Разрешим всей локальной сети ходить на Web-сайты:
iptables -A FORWARD -s 192.168.1.0/24 -p tcp --dport 80 -j ACCEPT
Разрешим директору (хост 192.168.1.2) пользоваться icq (порт 5190) и jabber (порты 5222 и 5223):
iptables -A FORWARD -s 192.168.1.2 -p tcp --dport 5190 -j ACCEPT iptables -A FORWARD -s 192.168.1.2 -p tcp --dport 5222 -j ACCEPT iptables -A FORWARD -s 192.168.1.2 -p tcp --dport 5223 -j ACCEPT
Таблица используется для ...
Цепочки (chain):
Текущие параметры можно просмотреть командой iptables -L -t nat
Для начала очистим все цепочки от правил:
iptables -F -t nat
SNAT (Destination network address translation) - трансляция адресов из локальной сети во внешнюю. Работает аналогично MASQUERADE, однако позволяет указать адрес «внешнего» интерфейса (опция --to-source). Такой подход позволяет экономить процессорное время шлюза, так как в случае с MASQUERADE для каждого пакета адрес внешнего интерфейса определяется заново.
Например обеспечим прозрачный доступ любой машине из локальной сети (192.168.1.0/24) во внешнюю сеть:
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 83.246.130.1
DNAT (Destination network address translation) - трансляция адресов из внешней сети в локальную. Ипользуется для проброса портов наружу (при обращении извне на определённый порт шлюза, трафик перенаправлялся на порт машины в локальной сети)
Пробросим порт 3389 (RDP) наружу:
iptables -t nat -A PREROUTING -p tcp -d 83.246.130.1 --dport 3389 -j DNAT --to-destination 192.168.1.1
MASQUERADE - подменяет адрес источника для исходящих пакетов адресом того интерфейса, с которого они исходят, то есть осуществляет маскарадинг. Такая операция позволяет, например, предоставлять доступ в Интернет целым локальным сетям через один шлюз. Если IP-адрес внешнего интерфейса шлюза динамический, то нужно использовать именно MASQUERADE вместо SNAT.
Обеспечим прозрачный доступ машинам из локальной сети (192.168.1.0/24) во внешнюю сеть, причём с интернетом соединён eth1 интерфейс шлюза:
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE