FAQ по IPTABLES — различия между версиями

Материал из megapuper
Перейти к: навигация, поиск
(Полностью удалено содержимое страницы)
(Метка: очистка)
 
(не показано 14 промежуточных версий этого же участника)
Строка 1: Строка 1:
СИНТАКСИС:
 
  
iptables [-t ТАБЛИЦА] -A ЦЕПОЧКА ПАРАМЕТРЫ -j ДЕЙСТВИЕ
 
 
 
КЛЮЧИ ДЛЯ РАБОТЫ С ЦЕПОЧКАМИ:
 
-A <цепочка> - добавление новой записи в конец цепочки
 
-D <цепочка> - удалить правило
 
-I <цепочка> <номер> – вставляет правило над цепочкой с указаным номером
 
-F <цепочка> - удалить все правила из цепочки
 
-R <цепочка> <номер> - заменяет определенные критерии цепочки с номером
 
-L <цепочка> - листинг правил цепочки
 
-P <цепочка> – задать действие по умолчанию, действие будет выполняться на все пакеты, которые не подошли по каким-либо параметрам в другие правила.
 
 
 
Базовые цепочки:
 
PREROUTING - правила в этой цепочке применяются ко всем пакетам, которые поступают на сетевой интерфейс извне
 
INPUT - применяются к пакетам, которые предназначаются для самого хоста или для локального процесса, запущенного на данном хосте. То есть не являются транзитными
 
FORWARD - правила, которые применяются к транзитным пакетам, проходящими через хост, не задерживаясь
 
OUTPUT - применяются к пакетам, которые сгенерированы самим хостом
 
POSTROUTING - применяются к пакетам, которые должны покинуть сетевой интерфейс
 
 
ПАРАМЕТРЫ:
 
-p - протокол, можно использовать all,icmp,tcp,udp
 
-m -
 
-s - ip адрес/хост источника
 
-d - ip адрес/хост назначения
 
-i - интерфейс на который пришел пакет
 
-o - интерфейс с которого уйдет пакет
 
–-sport - порт источника
 
-–dport - порт назначения
 
 
 
ДЕЙСТВИЯ:
 
ACCEPT - разрешить пакеты
 
REJECT - блокировать пакеты с сообщением об отказе
 
DROP - блокировать пакеты(более приоритетный вариант, нежели REJECT, т.к для блокируемого ip адреса(или диапазонов) будет аналогичный эффект тому, когда сервер находится в дауне)
 
 
 
iptables -L - покажет вам какие правила у вас сейчас находятся в памяти<br/>
 
iptables -L -t nat - покажет правила таблицы nat<br/>
 
iptables -L –line-numbers - узнать номер правила<br/>
 
iptables -D INPUT 5 - удалить правило номер 5 iptables<br/>
 
iptables -L -n -v --line-numbers - параметр -v показывает детальную статистику по правилам, -n не резолвит ипишки<br/>
 
iptables -F - поностью очищаем список со всеми правилами<br/>
 
iptables -F -t nat - удаляем правила нат<br/>
 
 
 
Параметры конфигурации сервиса <code bash>/etc/sysconfig/iptables-config</code>
 
 
'''IPTABLES_SAVE_ON_STOP=«yes»''' - это заставит сервис iptables сохранять свою конфигурацию в файл при выключении файрвола или завершении работы, чтобы не пришлось конфигурировать все повторно<br/>
 
'''IPTABLES_STATUS_LINENUMBERS=«yes»''' - по команде /etc/init.d/iptables status отобразит номера правил<br/>
 
'''IPTABLES_STATUS_VERBOSE=«yes»''' - по команде /etc/init.d/iptables status покажет бегущие байтики и пакетики
 
 
 
Включение форвардинга <code bash>/etc/sysctl.conf</code>
 
net.ipv4.ip_forward=1
 
 
 
Запуск iptables при старте системы
 
chkconfig iptables on
 
 
 
Если после перезагрузки правила не загрузились - надо проверить, откуда их читает сервис
 
/etc/init.d/iptables → параметр IPTABLES_DATA
 
 
 
Сохранить правила(CentOS)
 
iptables-save > /etc/sysconfig/iptables
 
 
 
Сохранить правила, если файл уже создан:
 
/etc/init.d/iptables save
 
 
 
Восстановить правила из конфига(если чёто делали-делали и похерили)
 
iptables-restore < /etc/sysconfig/iptables
 
 
Сохранить правила(Debian)
 
iptables-save > /etc/iptables.conf
 
 
Сбросить правила и не потерять коннект
 
iptables -A INPUT ACCEPT
 
iptables -F
 
iptables -t nat -F
 
 
 
'''ПРИМЕРЫ:'''
 
 
Разрешаем прохождение любого трафика по loopback
 
iptables -A INPUT -i lo -j ACCEPT
 
iptables -A OUTPUT -o lo -j ACCEPT
 
 
 
Разрешаем пинги
 
iptables -A INPUT -p icmp -m icmp -i $INET_IFACE –icmp-type source-quench -j ACCEPT
 
iptables -A OUTPUT -p icmp -m icmp -o $INET_IFACE –icmp-type source-quench -j ACCEPT
 
 
 
Блокируем все пакеты, которые не подходят ни под одно описанное выше правило, со статусом «узел запрещен». Фактически «дефолтное» правило - запретить всё остальное
 
iptables -A INPUT -j REJECT –-reject-with icmp-host-prohibited
 
 
 
Блокируем все входящие пакеты с ip адреса 111.111.111.111
 
iptables -A INPUT -s 111.111.111.111 -j DROP
 
 
 
Блокируем пакеты со всех адресов, кроме 111.111.111.111
 
iptables -A INPUT ! -s 111.111.111.111 -j DROP
 
 
 
Блокируем подсеть по протоколу tcp на все порты
 
iptables -A INPUT -p tcp -s 111.111.111.0/255.255.255.0 -j DROP
 
 
 
Блокируем входящие пакеты для диапазона ip адресов c 192.168.0.8 по 192.168.0.25
 
iptables -I INPUT -m iprange –src-range 192.168.0.8-192.168.0.25 -j DROP
 
 
 
Блокируем весь входящий трафик на 80 порт
 
iptables -A INPUT -p tcp –-dport 80 -j DROP
 
 
 
Сбрасываем соединения, количество которых превышает 10 штук на порт 80
 
iptables -A INPUT -p tcp –-dport 80 -m connlimit –connlimit-above 10 -j REJECT
 
 
 
Блокируем домен vk.com
 
iptables -A INPUT -s vk.com -j DROP # блокируем входящие пакеты от домена vk.com
 
iptables -A OUTPUT -d vk.com -j DROP # блокируем исходящие пакеты к домену vk.com
 
 
 
Изменение конфига в реальном времени без стирания цепочек и таблиц(2-номер правила)
 
iptables -R INPUT 2 -i eth1 -p tcp –-dport 21 -j ACCEPT
 
 
 
Включение ната для локальной сети
 
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 ! -d 192.168.0.0/24 -j MASQUERADE
 
 
 
Проброс порта ssh на хост в локалке
 
iptables -t nat -A PREROUTING -p tcp -m tcp -d 188.9.31.168 --dport 2222 -j DNAT --to-destination 192.168.0.10:22
 
 
 
Снимаем бан с IP 111.111.111.111
 
iptables -D INPUT -s 111.111.111.111 -j DROP
 
 
 
Удаляем бан из цепочки fail2ban
 
iptables -D fail2ban-ASTERISK -s 109.195.52.173 -j DROP
 
 
Можно прописать алиасы в файл .bashrc(или в .bash_aliases) для удобства:
 
alias ban='iptables -I INPUT -j DROP -s'
 
alias unban='iptables -D INPUT -j DROP -s'
 
 
После чего можно гораздо быстрее банить ip адрес командой: ban 111.111.111.111
 
и снимать бан командой: unban 111.111.111.111
 

Текущая версия на 00:37, 7 апреля 2023