Установка iptables и отключение firewalld в CentOS 7

В CentOS 7 вместо iptables используется служба firewalld и, если вы сторонник старой школы, мы расскажем как избавиться от firewalld и вернуться к iptables.

Отключаем firewalld:

systemctl stop firewalld
systemctl mask firewalld

Устанавливаем iptables:

yum install iptables-services

Добавим iptables в автозагрузку

systemctl enable iptables

Проверяем, добавились ли стандартные правила в iptables (SSH, Apache)

cat /etc/sysconfig/iptables

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [214:43782]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i lo -j ACCEPT
COMMIT

Если внесли какие-то изменения, то перезапускаем iptables:

systemctl restart iptables.service

или

systemctl restart iptables

Далее проверим статус iptables:

systemctl status iptables

Проверим правила iptables:

iptables -L

Теперь можно использовать стандартный iptables вместо firewalld в CentOS 7

 

https://voipnotes.ru/install-iptables-and-disabled-firewalld-on-centos-7/

 

 

Анти synflood с Iptables

Нужно отредактировать  /etc/sysctl.conf, чтобы защититься от некоторых видов атак и добавить или обновить можно добавив эти строки в файл:

net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.netfilter.ip_conntrack_max = 1048576

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

Если у вас на сервере запущен веб-сервер, тогда вы должны разрешить 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 на любой другой свободный номер порта.

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

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

 sudo iptables -A INPUT -p tcp --dport 135 -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 12.12.12.12/32 --dport 22  -j ACCEPT 

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

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

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

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

Блокирование 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 — это название новой цепочки.

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

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, регистрируйтесь на курсы Cisco и Linux Professional Institute на платформе SEDICOMM University.

 

Iptables: установка и настройка.

Leave a Comment

Your email address will not be published. Required fields are marked *

Shares