Главная страница Статьи / Unix iptables for beginners - краткое руководство для начинающих

Рекомендую - скидка 25%

Баннер

Поиск по сайту

Добавить в закладки!

odnaknopka.ru/kolyan.cz

iptables for beginners - краткое руководство для начинающих PDF Печать E-mail
Статьи - Unix

Пишу большей части по памяти (как писал в свое время руководство по редактору VIM), нужда заставила разобраться буквально на днях (настраивал кое-какой девайс с embedded Linux на борту) и соответственно решил сделать вот такой вот документ.

В сравнении с FreeBSD ipfw конечно более сложный путь настройки, однако “все работает” и это радует.

Итак, ниже список того, чем прийдется пользоваться в повседневной практике администратору Linux для настройки firewall

Сохранить текущую конфигурацию
iptables-save > /path/to/iptables (путь зависит от вашего дистрибутива)

Прочитать (восстановить) конфигурацию
iptables-restore < /path/to/iptables

Просмотреть список правил
iptables -L
iptables -L INPUT

INPUT - эта цепочка предназначена для входящих пакетов на сервер

Также рекомендую

iptables -L -n -v

-n не резолвить IP-адреса в DNS
-v, –verbose более информативный вывод
–line-numbers вывести нумерацию строк

Добавление правил
-A

iptables -A INPUT --dport 80 -j DROP
iptables -A INPUT --dport 80 -j ACCEPT

Удаление правил
-D, –delete

iptables -D INPUT 1

Удалить правило из правил трансляции адресов (живой пример)
iptables -L -t nat –line-numbers
….
iptables -t nat -D POSTROUTING 1

где единица - номер правила, счет начинается с единицы

-t - имя таблицы (по умолчанию filter)

или можно удалять написав все правило целиком (неудобно :( iptables -D INPUT –dport 80 -j DROP

Заменить одно правило другим
-R, –replace

iptables -R INPUT 1 -s 193.0.0.193 -j DROP

меняем первое правило в списке
где -s - source ip адрес который блокируем в данном случае

Очистить все правила (flush)
-F, –flush

либо конкретную цепочку
iptables -F INPUT

*я надеюсь что всегда в iptables политика default to accept по-умолчанию?

Чуть-чуть подробнее про опции фильтрации пакетов

Заблокировать все входящие коннекты по 110 порту
iptables -A INPUT -p tcp --dport 110 -j DROP

Заблокировать входящие подключения по 80 порту на адрес 195.0.0.195
iptables -A INPUT -p tcp --dport 80 -d 195.0.0.195 -j DROP

Заблокировать входящие подключения по порту 80 tcp с адреса 193.0.0.193 на адрес 195.0.0.195
iptables -A INPUT -p tcp --dport 80 -s 193.0.0.193 -d 195.0.0.195 -j DROP

Указать интерфейс eth0
iptables -A INPUT -p tcp --dport 80 -s 193.0.0.193 -i eth0 -j DROP

Можно также использовать символ отрицания !

Блокируем все подключения по 80 порту tcp отовсюду кроме сети 192.168.0.0/16
iptables -A INPUT -p tcp 80 -s ! 192.168.0.0/16 -j DROP

Настраиваем NAT через iptables имея постоянный внешний адрес
iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o eth1 -j SNAT 193.0.0.193

Где
-o или –out-interface
-t nat имя таблицы (используется для NAT, в примерах ранее мы ее не указывали и все передавалось в таблицу filter)
-A POSTROUTING имя цепочки, в нее попадают пакеты после проходждения всех других адресов
-j SNAT Source Network Address Translation и указан адрес с которого отправятся пакеты в мир

Настраиваем NAT не имея постоянного внешнего адреса (iptables MASQUERADE)
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.0/16 -j MASQUERADE

Все пакеты которые будут выходить через интерфейс eth1 и берут адрес для отNATчивания с этого интерфейса.

Также вам потребуется включенный net.ipv4.ip_forward = 1
(в моем устройстве со встроенным Linux это прописано как echo 1 > /proc/sys/net/ipv4/ip_forward)

Для более подробного изучения рекомендую прочитать Iptables Tutorial

 
Документация @ Ihtiandr.Info