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

 

Шпаргалка по iptables с наиболее часто встречающимися способами настройки firewall для защиты сервера от взломщиков.

Справка по определенным командам:

 

Остановка, запуск и рестарт файрвола

Через ОС:

Команды iptables для остановки файрвола и удаления правил:

-F  удалить все правила.
-X  удалить цепочку правил.
-t table_name выбрать таблицу nat или mangle и удалить все правила/цепочку.
-P действие по-умолчанию: DROP, REJECT, или ACCEPT.

Показать статус.

Показать список правил

Показать список правил с номерами строк

Показать  INPUT или OUTPUT цепочки правил.

Показать существующие правила (с нумерацией по строкам)

 

Удаление правил

-D  удалить одно или несколько правил из цепочки.

Удалим строку номер 5

Ищем IP источника 201.53.1.1 и удаляем из правила:

 

Добавить правило в файрвол.

Перед добавлением правил в цепочку следует отобразить список с использованием номеров строк:

Для добавления правила между строкой 1 и 2 следует ввести:

и проверить результат …

Сохранить/восстановить правила файрвола.

Сохранить правила:

Восстановить правила:

 

Установить политику по умолчанию.

Для этого применяется ключ -P, —policy, который задаёт политику по умолчанию для заданной цепочки (действие, которое применитс к пакетам, которые не попали ни под одно правило в цепочке). Допускается использовать DROP и ACCEPT.

Пример сброса всего входящего/исходящего трафика:

 

Заблокировать все входящие запросы на порт.

Блокировка всех входящих запросов на 80й порт:

Блокировка всех входящих запросов на 80й порт только для определённого ip адреса/подсети:

Заблокировать запросы на исходящий IP адрес

Заблокируем доступ на 92.101.26.166/19:

Блокировка по домену:

Блокировка определенного IP адреса или подсети.

Сбросить/разрешить трафик только с определенных MAC адресов.

Разрешить только для TCP port # 8080 с mac адреса 00:0F:EA:91:04:07

 

Блокировка только входящих соединений

Блокировка всех входящих пакетов, кроме инициированных вами + разрешение исходящего трафика:

Сброс адресов изолированных сетей в публичной сети.

Список IP адресов для изолированных сетей:
10.0.0.0/8 -j (A)
172.16.0.0/12 (B)
192.168.0.0/16 (C)
224.0.0.0/4 (MULTICAST D)
240.0.0.0/5 (E)
127.0.0.0/8 (LOOPBACK)

Записать событие и сбросить.

Запись в лог входящих пакетов перед сбросом:

Проверка журнала /var/log/messages:

 

Чтобы не переполнить лог, введём ограничение на количество записей с помощью ключа -m. Например, разрешим записывать каждые 5 минут максимум 5 строк:

Разрешить или запретить ICMP Ping запросы.

Запрещаем ping запросы:

Разрешаем ping только для определённых сетей/хостов:

Разрешаем только часть ICMP запросов:

Разрешить входящий трафик для диапазона портов.

Открыть диапазон адресов.

Разрешить подключение к порту 80 (Apache) если адрес в диапазоне от 192.168.1.100 до 192.168.1.200

 

Пример для nat:

Закрыть или открыть стандартные порты.

Заменить ACCEPT на DROP, чтобы заблокировать порт.

ssh tcp port 22

cups (printing service) udp/tcp port 631 для локальной сети

time sync via NTP для локальной сети (udp port 123)

tcp port 25 (smtp)

dns server ports

http/https www server port

tcp port 110 (pop3)

tcp port 143 (imap)

Samba file server для локальной сети

proxy server для локальной сети

mysql server для локальной сети

 

Ограничение количества параллельных соединений к серверу для одного ip адреса.

Разрешаем только 2 ssh соединения на одного клиента (используется connlimit модуль):

—connlimit-above 2 : правило действует только если количество соединений превышает 2.
Ограничение количества HTTP запросов до 30:

—connlimit-mask 24 : маска сети.

Проверка правил iptables.

Проверка открытых / закрытых портов:

Проверка открытых / закрытых определенных портов:

Проверим, что iptables разрешает соединение с 80 портом:

В противном случае откроем его для всех:

Проверяем с помощью telnet