Назад | Перейти на главную страницу

Есть ли способ ограничить количество попыток подключения с помощью firewalld?

На наших серверах CentOS 6 я использовал информацию из Эта статья чтобы уменьшить количество попыток грубой силы ssh на наших серверах, в частности в разделе ограничения скорости / ведения журнала. Есть ли способ сделать то же самое с помощью firewalld в CentOS 7? Я бы предпочел не переключаться обратно на iptables, так как кажется, что firewalld - это направление, в котором движется ОС.

Для справки, вот базовая конфигурация iptables, которую мы используем (некоторые значения отличаются)

/sbin/iptables -N LOGDROP
/sbin/iptables -A LOGDROP -j LOG
/sbin/iptables -A LOGDROP -j DROP
iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent  --update --seconds 60 --hitcount 4 -j LOGDROP

Попробуйте:

firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT_direct 0 -p tcp --dport 22 -m state --state NEW -m recent --set
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT_direct 1 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 30 --hitcount 4 -j REJECT --reject-with tcp-reset
firewall-cmd --reload

Полный пример: RHEL7: Как смягчить HTTP-атаки.

О ведении журнала отказ от пакета FirewallD просто не поддерживает тот же уровень ведения журнала, что и старая служба iptables. Видеть https://lists.fedorahosted.org/pipermail/firewalld-users/2014-Feb February/000155.html

Но может быть возможный обходной путь: https://bluehatrecord.wordpress.com/2014/04/17/logging-packet-drops-in-firewalld/

CentOS 7 изменила несколько вещей, которые стали привычными для людей, и они обычно извиваются - уклоняются - и убегают от реальности изменений.

Многие люди не знают или не осознают, что firewalld - это не «новый» брандмауэр - это «интерфейс» к iptables, который Red Hat включает в качестве надстройки продукта с поддержкой графического интерфейса. Для тех, кто знаком с словом "shorewall" - подумайте в этом смысле (http://shorewall.org), а Shorewall доступен для Centos 7 также через репозитории - см. также https://www.cyberciti.biz/faq/centos-rhel-shorewall-firewall-configuration-setup-howto-tutorial/ Shorewall не является простым и / или очень удобным интерфейсом, но на самом деле он очень мощный, который может объединить оба мира.

Я бы также добавил, что если вы используете Webmin - Shorewall, у него есть модуль графического интерфейса, который активируется, если вы установите shorewall и перенастроите Webmin для его просмотра. И нет, я не продвигаю все - и не имею отношения к автору ни одной программы.

С этой целью Fail2ban не является графическим, но также является «интерфейсом» для Iptables, поскольку он может сканировать файлы журналов и блокировать IP-адреса, которые показывают вредоносные признаки - слишком много сбоев пароля, поиск эксплойтов и т. Д. - временно или постоянно.

Обычно Fail2Ban затем используется для обновления правил брандмауэра, чтобы отклонять IP-адреса на определенный период времени, хотя любое другое действие (например, отправка электронной почты) также может быть настроено. Fail2Ban «из коробки» поставляется с фильтрами для различных сервисов (apache, courier, ssh и т. Д.).

Fail2ban можно использовать для создания правил с форматированным текстом, а также с firewalld - и хорошо то, что firewalld использует файлы xml, которые можно быстро редактировать с помощью любого редактора без перезаписи команды firewall-cmd. Использование с WinSCP и EditPadLite простое и быстрое.

У firewalld есть эквивалентные команды действий, которые создают записи iptables, например, если вы хотите создать более сложный, который ограничивает порт определенным IP или сетью, вам нужно использовать расширенное правило в качестве примера, показанного ниже:

 firewall-cmd --zone=OPS --add-rich-rule='rule family="ipv4" source address="xxx.xxx.xxx.0/24" port protocol="tcp" port="9200" accept'

Это создаст правило netfilter, о котором сообщает iptables -nL, как показано ниже:

 ACCEPT     tcp  --  xxx.xxx.xxx.0/24     0.0.0.0/0            tcp dpt:9200 ctstate NEW

Следует помнить, что, хотя многие люди не используют графический интерфейс для настройки Linux, которые обычно традиционно используются в качестве интернет-серверов, существует «центр управления», а для «NetworkManager» - «nm-connection-editor» и «firewall-config». "которые будут запускаться как графические инструменты, которые также облегчат работу.

Так много людей хотят отключить firewalld и «вернуться» к iptables - хотя правда в том, что вы никогда не покидали iptables

Итак, самый простой ответ - использовать fail2ban для постоянной регистрации IP-адресов в файле черного списка, а затем использовать правило форматированного текста для постоянного отклонения этого IP-адреса. Я поставляется с уже настроенными файлами, которые вы просто указываете на файл fail2ban, а он сделает все остальное.

Существует множество руководств и инструкций по настройке использования fail2ban для отображения ошибочного IP-адреса в файле черного списка и его запрета. См. Например http://www.itadminstrator.com/2017/05/how-to-protect-ssh-with-fail2ban-on.html и https://arno0x0x.wordpress.com/2015/12/30/fail2ban-permanent-persistent-bans/ показывает, как отобразить IP-адрес в файл черного списка. Я бы использовал файл /etc/fail2ban/action.d/firewallcmd-rich-rules.conf вместо multiport.conf для изменения и добавления команд эха, поскольку он навсегда удалит этот IP-адрес, нарушающий его, до тех пор, пока вы не отредактируете xml файл и выньте его.

Вот команда, которую вы помещаете в раздел actionban = ПОД фактической командой actionban, которая проверяет наличие дублированного ip в файле с именем ip.blacklist, а затем записывает его туда.

 if ! grep -Fq <ip> /etc/fail2ban/ip.blacklist; then echo "<ip> # fail2ban/$( date '+%%Y-%%m-%%d %%T' ): auto-add for repeat offender" >> /etc/fail2ban/ip.blacklist; fi

Запись будет выглядеть примерно так:

197.32.10.180 # fail2ban / 2017-11-22 16:18:33: автоматическое добавление для повторного нарушителя

Он должен создать файл ip.blacklist, если его нет в etc / fail2ban

Помните, что это инструкции для CentOS - и предположим, что вы установили fail2ban из репозитория yum для своей версии Centos 7.

Многие из этих атак происходят из таких стран, как Китай, Россия, Украина, Корея и т. Д. - где многие из хакеров-злоумышленников надеются вывести из строя ваш сервер (обычно удаляя ОДИН файл, который вы не делаете), а затем «вымогают» владельца сервера. попросить биткойн, поэтому я часто захожу в журналы и получаю IP-адреса - и захожу в http://whois.com/whois - и сбросьте его туда, чтобы получить полную сеть CIDR, затем отредактируйте файл xml и удалите всю подсеть, в которой он находится.

Изначально вы используете

 firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address=176.15.57.196 reject' --permanent

тогда сделай

 firewall-cmd --reload

После этого вы можете отредактировать файл в etc / firewalld / zone / public.xml <= обычно все используют "public" в качестве зоны - но используйте, что бы там ни было. Он создаст файл public.xml, если вы впервые делаете запись после команды firewall-cmd --reload как такую ​​запись (в зависимости от нескольких)

  <rule family="ipv4">
    <source address="xxx.xxx.xx.x/xx"/>
    <reject/>
  </rule>

Если на странице whois не указан CIDR сети, используйте онлайн-инструменты, например https://www.ipaddressguide.com/cidr или https://www.derman.com/blogs/IP-Range-to-CIDR-Calculator или другие, чтобы использовать диапазон IP, полученный из whois, для создания нотации CIDR - и поместить его в «исходный адрес» в xxx.xxx.xx.x / xx сохранить файл, затем выполнить firewall-cmd --reload команда. Вы можете изменить столько, сколько захотите, а затем выполнить команду перезагрузки - при условии, что вы не сделаете никаких ошибок. НИКТО в этой сети снова не зайдет на ваш сервер - и они получат сообщение «сеть недоступна» - это также снизит нагрузку на ваш сервер, который будет бороться с атаками, отражая их и регистрируя их, если они становятся динамическими. IP и снова. Во многих странах нет «антихакерских» законов, как в США и других крупных странах, поэтому вы должны решить, действительно ли им вообще нужно посещать ваш сайт.

Одна вещь не столь очевидна, это то, что firewalld по умолчанию настроен НЕ ДЛЯ ЖУРНАЛА. Он войдет в файл системного журнала, но вам нужно зайти в etc / firewalld / firewalld.conf и установить => LogDenied = all

Это также необходимо установить для других программ, таких как psad и mod-evasive, которым нужна информация журнала.

Также можно использовать modprobe для наблюдения за простыми атаками ddos ​​и реализовать правило, чтобы также отбросить злоумышленника. Видеть https://www.certdepot.net/rhel7-mitigate-http-attacks/

Конечно, вы также можете изменить номер порта ssh

Вы можете использовать легкий IPS, напримерfail2ban.

Это работает с firewalld используя плагин действия (/etc/fail2ban/action.d/firewallcmd-ipset.conf), который добавляет запрещенные IP-адреса в ipset используя прямые правила.

По умолчанию banaction (/etc/fail2ban/jail.conf) является ipables-multiport, но вы можете создать local.conf для своего [sshd-ddos] тюрьма с использованием другого banaction.

Посмотрите примеры в fail2ban wiki и Fedora wiki.