Вы здесь

Работа с IPTABLES

iptables -t filter -nL - отобразить все цепочки правил

iptables -nL - отобразить все цепочки правил

iptables -t nat -L -отобразить все цепочки правил в NAT-таблице

iptables -t filter -F - очистить все цепочки правил в filter-таблице

iptables -F - очистить все цепочки правил в filter-таблице

iptables -t nat -F -очистить все цепочки правил в NAT-таблице

iptables -t filter -X  -удалить все пользовательские цепочки правил в filter-таблице

iptables -t filter -A INPUT -p tcp --dport telnet -j ACCEPT - позволить входящее подключение telnet'ом

iptables -t filter -A OUTPUT -p tcp --dport http -j DROP -блокировать исходящие HTTP-соединения

iptables -t filter -A FORWARD -p tcp --dport pop3 -j ACCEPT  - позволить "прокидывать" (forward) POP3-соединения

iptables -t filter -A INPUT -j LOG --log-prefix "DROP INPUT"  - включить журналирование ядром пакетов, проходящих через цепочку INPUT, и добавлением к сообщению префикса "DROP INPUT"

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE  -включить NAT (Network Address Translate) исходящих пакетов на интерфейс eth0. Допустимо при использовании с динамически выделяемыми ip-адресами.

iptables -t nat -A PREROUTING -d 192.168.0.1 -p tcp -m tcp --dport 22 -j DNAT --to-destination 10.0.0.2:22  - перенаправление пакетов, адресованных одному хосту, на другой хост

iptables -A INPUT -p tcp --syn --dport 23 -m connlimit --connlimit-above 2 -j REJECT - допускать не больше 2 соединений telnet с одного хоста

iptables -p tcp --syn --dport 80 -m connlimit --connlimit-above 16 --connlimit-mask 24  -j REJECT - ограничить число одновременных запросов http до 16 на подсеть класса C (24 первых разряда) Блок контейнер для охраны. Пост охраны блок http://www.bitstroy.ru. . Flexi mop флекси моп швабра http://www.h2omop-x5.ru. . Смотрите кроссовки купить в Самаре здесь.

Примечание:  Чтобы отменить ошибочное правило не обязательно очищать все цепочки правил, для  этого в опции iptables есть команда
-A, --append означает -добавить одно или несколько правил в конец указанной цепочки.

-D, --delete удалить

Так в нашем случае:

iptables -t filter -D OUTPUT -p tcp --dport http -j DROP - отменяет заданную нами ранее блокировку исходящих HTTP-соединений

можно также

iptables -t nat -D POSTROUTING 1
где 1 это номер правила по порядку, или удаляем все правила из таблицы POSTROUTING
iptables -t nat -F POSTROUTING

Еще примеры использования iptables:

Прописываем правила, закрывающие все порты за исключением 25 (smtp: принимаем почту) и 80 (http: показываем web страницы)

# iptables -A INPUT -i eth1 -p tcp --dport 25 -j ACCEPT
# iptables -A INPUT -i eth1 -p tcp --dport 80 -j ACCEPT
# iptables -A INPUT -i eth1 -p tcp -m tcp --tcp-flags FIN,SYN,ACK SYN -j REJECT --reject-with icmp-port-unreachable
# iptables -A FORWARD -o eth1 -p tcp -j DROP

Теперь наш сервер прикрыт с внешнего мира. Запуск команд netcat и nmap c самого сервера покажет тоже, что и до внесения правил, но если пробовать с другого компьютера, то заметим результат: доступ везде прикрыт, кроме как на разрешённые нами 25 и 80 порты.

iptables -t nat -A POSTROUTING -s 10.0.3.41 -d 217.217.217.217 -o eth1 -p tcp --dport 25 -j SNAT --to 116.116.116.116
Разрешаем прямой доступ к внешней почте. Подробнее: разрешаем доступ хосту 10.0.3.41 из внутренней сети обращаться к хосту 217.217.217.217 на 25 порт (smtp) протокола tcp; такие обращения пропускаем через интерфейс eth1, который имеет адрес 116.116.116.116
Для доступа к РОР добавляем такое же правило для порта 110

iptables -t nat -A POSTROUTING -s 10.0.3.41 -p tcp --dport 25 -j MASQUERADE
Более короткое правило, аналогичное вышеприведённому, только здесь пользователь с ip 10.0.3.41 имеет доступ к любому почтовому серверу в Интернете.

 

Можно посмотреть действующие правила  в виде команд:
# iptables-save

Чтобы запомнить эти правила сохраняем новую конфигурацию в этот файл:

# iptables-save > /etc/sysconfig/iptables
Теперь при запуске системы прописанные нами правила восстановятся.

 

Дополнение:  Разрешаем маршрутизацию на на один раз до перезагрузки
sysctl -w net.ipv4.ip_forward=1
Проверить
sysctl -a |grep forwarding
увидеть net.ipv4.conf.lo.forwarding = 1 или 0 если не открыт
Для того чтобы правило вступало в силу и после перезагрузки заходим в /etc/net/sysctl.conf находим
net.ipv4.ip_forward = 0 и изменяем на 1

 

Проверим, осуществляется ли автоматический запуск iptables, то есть  запускается при перезагрузки сервера проверяем
chkconfig --list iptables
iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off
видим, что нет. Добавляем и проверяем:
chkconfig --level 35 iptables on
chkconfig --list iptables

iptables 0:off 1:off 2:off 3:on 4:off 5:on 6: off

 

http://www.opennet.ru/docs/RUS/iptables/
http://ru.wikipedia.org/wiki/Iptables

 

Взято отсюда