Сегодня в статье поговорим о защите вашей операционной системы Linux при помощи встроенной утилиты iptables

Вывод списка правил iptables

Чтобы узнать все активные правила в iptables, откройте терминал и введите следующую команду:

sudo iptables -L 

Если никаких правил не существует (они не добавлены), вы увидите подобный вывод:

Screenshot iptables

На картинке выше вы видите, что в iptables существуют 3 цепочки, которые называются INPUT, FORWARD, OUTPUT и никакие правила для них не применяются.

Введите следующую команду чтобы узнать статус цепочек вашего межсетевого экрана iptables:

sudo iptables -S 

Как удалять правила в iptables

Чтобы удалить все правила из iptables, введите следующую команду:

sudo iptables -F 

Если вы хотите удалить только цепочку INPUT или любую другую цепочку, используйте следующие команды:

sudo iptables -F INPUT
sudo iptables -F OUTPUT
sudo iptables -F FORWARD 

Цепочки ACCEPT или DROP

Чтобы принимать или откидывать отдельные цепочки, введите одну из следующих команд в терминале, которая соответствует вашим требованиям:

iptables --policy INPUT DROP  

Правило выше не разрешит принимать любой трафик на этом сервере.

Чтобы вернуть его назад к ACCEPT, сделайте следующее:

iptables --policy INPUT ACCEPT 

Тоже самое и для других цепочек:

iptables --policy OUTPUT DROP
iptables --policy FORWARD DROP 

Замечание: По умолчанию, все цепочки iptables находятся в режиме ACCEPT.

Разрешаем порты

Если у вас на сервере запущен веб-сервер, тогда вы должны разрешить 80 порт вашему межсетевому экрану для того, чтобы сервер мог его прослушивать или отвечать на него. Сделаем это с помощью следующей команды:

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT 

В команде выше:

  • -A означает добавление нового правила в список iptables.
  • INPUT значит, что изменения касаются цепочки INPUT.
  • -p — указывает на протокол. В нашем случае, на TCP.
  • –dport — порт назначения. По умолчанию любой веб-сервер запущен на 80-ом порте.

Точно также вы можете разрешить порт SSH:

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT 

По умолчанию, SSH запущен на 22 порте.

Замечание: Пример хорошей практики — не запускать SSH на порте по умолчанию. Сделайте это на другом порте! Для этого откройте файл /etc/ssh/sshd_config в своем любимом редакторе и измените 22 на любой другой свободный номер порта. 

Блокирование портов

Чтобы заблокировать порт 1080, вводим:

sudo iptables -A INPUT -p tcp --dport 1080 -j DROP 

Если вы хотите заблокировать возможность подключаться по SSH с вашего сервера к другому хосту/серверу, введите следующую команду:

sudo iptables -A OUTPUT -p tcp --dport 22 -j DROP 

Делая это, никто не сможет использовать ваш сервер для старта SSH подключения. Цепочка OUPUT будет фильтровать, а DROP — сбрасывать любое исходящее TCP подключение к другим хостам.

Разрешаем IP-адреса и порты

Делаем это с помощью команды:

sudo iptables -A INPUT -p tcp -s 0/0 --dport 22  -j ACCEPT 

Правило -s 0/0 разрешает любой IP-адрес источника.

Если вы хотите разрешить определенный IP-адрес, используйте эту команду:

sudo iptables -A INPUT -p tcp -s 10.10.10.10/32 --dport 22  -j ACCEPT 

В примере выше, вы разрешаете только IP-адресу 10.10.10.10 подключаться к порту SSH. Остальные IP-адреса не смогут этого сделать.

Если вы хотите заблокировать IP-адрес, измените ACCEPT на DROP таким образом:

sudo iptables -A INPUT -p tcp -s 10.10.10.0/24 --dport 22  -j DROP  

Эта команда не разрешит подключаться к порту 22 всем устройствам в сети 10.10.10.0.

Блокирование ICMP

Если вам нужно заблокировать запрос ICMP (ping) от и к вашему серверу, введите следующие команды: 

sudo iptables -A OUTPUT -p icmp --icmp-type 8 -j DROP 

Эта команда заблокирует отправку ICMP пакетов к другому хосту. Попробуйте пропинговать google.com, у вас ничего не получится!

Чтобы заблокировать входящий ping запрос, введите следующие команды в терминале:

sudo iptables -I INPUT -p icmp --icmp-type 8 -j DROP 

Теперь сервер не будет отвечать на ping запросы.

Как предотвращать DDoS атаки с помощью iptables

Я уверен, что вы все знаете что такое DDoS. Чтобы не допустить этого, воспользуйтесь следующей командой:

iptables -A INPUT -p tcp --dport 80 -m limit --limit 20/minute --limit-burst 100 -j ACCEPT 

, где

  • –limit 20/minute — максимальная средняя частота положительных результатов. После числа можно указывать единицы: `/second’, `/minute’, `/hour’, `/day’; значение по умолчанию — 3/hour. Лимит настраивайте в зависимости от своих требований.
  • –limit-burst number — ограничивает исходное число пропускаемых пакетов: это число увеличивается на единицу каждый раз когда ограничение на частоту положительных результатов не достигается. Это происходит столько раз, сколько указано в данном параметре. Значение по умолчанию — 5.

Блокировка сканирования порта используя iptables

Хакеры так и ждут возможности просканировать открытые порты на вашем сервере и взломать систему безопасности. Чтобы не допустить этого безобразия:

sudo iptables -N block-scan
sudo iptables -A block-scan -p tcp —tcp-flags SYN,ACK,FIN,RST -m limit —limit 1/s -j RETURN
sudo iptables -A block-scan -j DROP 

где block-scan — это название новой цепочки.

Надеюсь, что этот пост был максимально полезным для вас!

[endtxt]

RSS

Добавление RSS-ленты на главную страницу этого сайта не поддерживается, так как это может привести к зацикливанию, замедляющему работу вашего сайта. Попробуйте использовать другой блок, например блок Последние записи, для отображения записей сайта.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

5 1 голос
Рейтинг статьи

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Продолжая пользование настоящим сайтом Вы выражаете своё согласие на обработку Ваших персональных данных (файлов cookie) с использованием трекеров "Google Analytics" и "Yandex.Metrics". Порядок обработки Ваших персональных данных, а также реализуемые требования к их защите, содержатся в Политике конфиденциальности.
Принять