Настройка фаервола с помощью Iptables
Iptables — утилита командной строки, являющаяся стандартным интерфейсом управления работой межсетевого экрана или брандмауэра. С ее помощью можно создать и изменить правила, управляющие фильтрацией и перенаправлением пакетов. Т.е. запретить, частично запретить или разрешить доступ пользователей и посетителей к серверу с целью не нанесения ему вреда, защиты от злоумышленников и установки мошеннического ПО.
Iptables — это стандартный фаервол, включенный в Ubuntu и большинство дистрибутивов Linux по умолчанию.
Необходимо запомнить, что команды iptables нужно запускать с привилегиями суперпользователя.
Проверим список текущих правил iptables, применив в команде флаг -L:
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Или в другом формате с помощью флага -S:
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
Во всех цепочках установлена политика ACCEPT (разрешить, по умолчанию):
INPUT: обрабатывает все входящие на сервер пакеты;
OUTPUT: содержит правила для исходящего трафика;
FORWARD: используется для обработки предназначенного для других серверов трафика, которая не была создана на данном сервере и необходима для маршрутизации запросов на другие серверы.
Сбрасываем правила, убедившись, что в цепочках INPUT и OUTPUT установлена политика ACCEPT.
Это делается так:
Данное руководство сконцентрировано на работе с цепочкой INPUT (входящий трафик). Рассмотрим правило, которое разрешает текущее SSH-подключение.
Запишем его в таком виде и поместим в начало :
Запросив список правил, можно увидеть изменения:
target prot opt source destination
ACCEPT all — anywhere anywhere ctstate RELATED,ESTABLISHED
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Оставляем открытыми три порта:
порт SSH (по умолчанию — 22);
порт APACHE (по умолчанию — 80);
порт FTP (по умолчанию — 20 и 21);
Предварительно в конце конфигурационного файла FTP добавив для vsftpd (у нас установлен vsftpd сервер):
pasv_max_port=60500
Перегружаем vsftpd:
Для работы loopback device на порту 4555 запишем правило для правильной работы многих программ:
Просмотрим текущие правила, используя флаг -S:
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack —ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp —dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp —dport 80 -j ACCEPT
Создаем правило DROP, записав в его конец данной цепочки, для сбрасывания всех несоответствующих пакетов:
Новое правило, которое необходимо внести, должно находиться перед основным правилом сброса. В нашем примере мы его записываем, указав номер строки записи, вызвав список текущих правил iptables, применив в команде флаг -L, причем, вставив правила DROP до (!!!) ACCEPT для портов, но перед замыкающим DROP (выделены желтым цветом):
num target prot opt source destination
1 ACCEPT all — anywhere anywhere
2 ACCEPT all — anywhere anywhere ctstate RELATED,ESTABLISHED
3 DROP all — ns000.xxx.org anywhere
4 DROP all — anywhere anywhere source IP range хх.хх.хх.хх-хх.хх.хх.хх
5 ACCEPT tcp — anywhere anywhere tcp dpt:ftp
6 ACCEPT tcp — anywhere anywhere tcp dpt:ftp-data
7 ACCEPT tcp — anywhere anywhere tcp dpts:60000:60500
8 ACCEPT tcp — anywhere anywhere tcp dpts:50000:50534
9 ACCEPT tcp — anywhere anywhere tcp dpt:ssh
10 ACCEPT tcp — anywhere anywhere tcp dpt:http
11 DROP all — anywhere anywhere
Теперь пользователи, у которых доменные имена и IP-адреса попадают в список правил DROP пунктов 3 и 4 зайти на сервер не смогут.
По умолчанию все несохраненные правила действуют до следующей перезагрузки сервера. После перезагрузки несохраненные правила будут потеряны.
Перед сохранением правил проверьте работоспособность настроек!!!
Для сохранения правил используйте пакет iptables-persistent:
В процессе инсталляции пакета отвечайте «Да» (enter).
Теперь при перезагрузке сервера правила будут автоматически устанавливаться.
Добавляя или меняя правила, не забывайте их сохранять:
Примеры записи правил:
Блокировка определенного IP: (3-строка правил в таблице!!!)
Блокировка диапазона IP: (4-строка правил в таблице!!!)
Удаление строки правил (где Х-номер удаляемой строки):
Здравствуйте, Кирилл. После выполнения настроек по вашим рекомендациям не могу войти в trnsmittion-daemon, что случилось?
Здравствуйте, Мэри. Вам необходимо открыть порт 9091 для демона, создав соответствующее правило, аналогично порту 22, и разместить его перед замыкающим правилом DROP в таблице. Тогда можно будет войти в веб интерфейс демона, набрав http://-lanip-:9091