Главная Форум Wiki Почта Jabber Devel NIX-FILES
Материал из AltLUG Wiki
Перейти к: навигация, поиск

Iptables

Image:50px-Exquisite-kwrite.pngЭто незавершённая статья. Вы можете помочь нам, исправив и дополнив её.

Содержание

filter

Теория

Таблица используется для фильтрации трафика

Цепочки (chain):

  • INPUT (входящий)
  • OUTPUT (исходящий)
  • FORWARD (транзитный)

Базовые правила:

  • ACCEPT (пропустить пакет)
  • DROP (убить пакет)
  • REJECT (отбросить пакет)
  • LOG

На каждую цепочку назначается правило по умолчанию, срабатывающее при ненахождении соответствия среди правил в самой цепочке.

Практика

Фаервол, встроенный в ядро Linux настраивается командой iptables. Текущие параметры можно просмотреть командой iptables -L

Для наглядности напишем простейший bash-скрипт для настройки фаервола на шлюзе для локальной сети.

  • Интерфейс eth0 (локалка): IP = 192.168.1.250, сеть: 192.168.1.0/24
  • Интерфейс eth1 (интернет): IP = 83.246.130.1

Очистка

Для начала очистим все цепочки от правил:

iptables -F

INPUT

Разрешим общение для локальной петли (интерфейс 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

OUTPUT

Для него обычно не задают правил и выставляют разрешающее правило по умолчанию на цепочку:

iptables -P OUTPUT ACCEPT

FORWARD

Предположим, что у нас есть настроенный 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


nat

Теория

Таблица используется для ...

Цепочки (chain):

  • PREROUTING
  • POSTROUTING
  • OUTPUT

Практика

Текущие параметры можно просмотреть командой iptables -L -t nat

Очистка

Для начала очистим все цепочки от правил:

iptables -F -t nat

SNAT

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

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

MASQUERADE - подменяет адрес источника для исходящих пакетов адресом того интерфейса, с которого они исходят, то есть осуществляет маскарадинг. Такая операция позволяет, например, предоставлять доступ в Интернет целым локальным сетям через один шлюз. Если IP-адрес внешнего интерфейса шлюза динамический, то нужно использовать именно MASQUERADE вместо SNAT.

Обеспечим прозрачный доступ машинам из локальной сети (192.168.1.0/24) во внешнюю сеть, причём с интернетом соединён eth1 интерфейс шлюза:

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
Источник — «http://wiki.altlug.ru/Iptables»
Личные инструменты