Использование IPTables для блокировки портов в подсети класса A при разрешении веб-портов (80/443)

Ваши inode, вероятно, израсходованы: проверьте использование inode: df -i

EDIT: также может быть, что дисковое пространство, выделенное виртуальной системе, составляет 10 ГБ, но базовая файловая система на хосте была перегружена, и теперь у виртуальных хостов не осталось места для совместного использования.

1
25.07.2015, 00:44
2 ответа

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

Я обнаружил, что некоторые вещи считаются необходимыми, поэтому приведенный выше пример может работать не на всех системах, поскольку для исполняемых файлов следует использовать полный путь. Кроме того, при указании диапазона портов вам необходимо добавить --match multiport, иначе правило полностью игнорируется. Наконец, я добавил вверху строку, чтобы сценарий корректно запускался оболочкой.

Итак, вот окончательная версия:

/usr/local/csf/bin/csfpre.sh

#!/bin/sh
/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 443 -j ACCEPT
/sbin/iptables -A INPUT -p all -s 60.168.112.0/20 -j DROP
/sbin/iptables -A INPUT -p tcp --match multiport --dport 21:26 -s 1.0.0.0/8 -j DROP
/sbin/iptables -A INPUT -p tcp --match multiport --dport 21:26 -s 112.0.0.0/7 -j DROP
/sbin/iptables -A INPUT -p tcp --match multiport --dport 21:26 -s 116.96.0.0/12 -j DROP
/sbin/iptables -A INPUT -p tcp --match multiport --dport 21:26 -s 116.118.0.0/16 -j DROP
/sbin/iptables -A INPUT -p tcp --match multiport --dport 21:26,110,465,587,995 -s 117.0.0.0/8 -j DROP

Теперь разберем то, что происходит на этом сервере cPanel с установленным CSF для брандмауэра.

  1. CSF позволяет добавлять собственные правила, которые работают в отдельных группах. В конечном итоге все группы управляются iptables. Сначала csfpre.sh, затем CSF, затем csfpost.sh.

  2. Создайте файл csfpre.sh, если он не существует. Вы также можете поместить его где-нибудь в папку / etc /, но он всегда будет иметь версию в / usr / local / csf / bin / с приоритетом.

  3. Добавьте шебанг вверху:

    ! / Bin / sh

  4. Мой план - сделать некоторую блокировку портов через csfpre.sh, но вместо того, чтобы запускать его по всем правилам, я должен сначала определить предназначено ли соединение для посещения веб-страницы. Проверяя это в первую очередь, сокращается время ожидания / ответа.

Порты 80 и 443 предназначены для протоколов HTTP и HTTPS, прежде всего, если ввод для любого из этих портов, ПРИНЯТЬ и прекратить проверку правил для этой группы csfpre:

/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 443 -j ACCEPT
  1. Теперь мы могли бы просто полностью заблокировать все остальные порты, кроме 80 и 443, если следующая строка выглядит так:

    / sbin / iptables -A INPUT -p all -s 60.168.112.0/20 -j DROP

Поскольку весь веб-трафик уже принят, это приведет к не блокировать трафик веб-сайта для этого диапазона. Если эта линия появится первой, то она заблокирует весь трафик, включая веб-трафик. Я не хочу блокировать просмотр веб-сайтов хороших пользователей, блокируя всю подсеть, в которой они находятся.

  1. Если блокировка сводится к определенным портам, то мы можем заблокировать определенный порт, диапазон, список или комбинацию из этих.

Чтобы заблокировать только FTP:

/sbin/iptables -A INPUT -p tcp --dport 21 -s 1.0.0.0/8 -j DROP

FTP фактически использует несколько разных портов для установления соединения, а также есть SFTP / SSH, который стандартно является портом 22, поэтому лучше заблокировать диапазон, используя начальный порт, разделенный двоеточием. а затем конечный порт:

/sbin/iptables -A INPUT -p tcp --match multiport --dport 21:26 -s 1.0.0.0/8 -j DROP

Вы должны использовать --match multiport, если вы используете диапазон или список. В списках может быть не более 15 портов, и каждый порт в диапазоне учитывается в 15 общих портах.

Вы также можете заблокировать стандартные почтовые порты SMTP:

/sbin/iptables -A INPUT -p tcp --match multiport --dport 110,465,587,995 -s 117.0.0.0/8 -j DROP

И вы действительно можете использовать диапазоны в вашем списке для блокировки FTP и почтовых портов с помощью одного правила:

/sbin/iptables -A INPUT -p tcp --match multiport --dport 21:26,110,465,587,995 -s 117.0.0.0/8 -j DROP
  1. Сохраните ваш сценарий и перезапустите брандмауэр.

  2. Разрешить CSF и cpHulk блокировать отдельные IP-адреса по мере необходимости.

Вы можете использовать свой смартфон, не используя локальное соединение для тестирования. Получите IP-адрес своего телефона и убедитесь, что он не совпадает с IP-адресом компьютера, с которого вы будете работать. Затем вы можете выполнить все сценарии, если у вас есть телефон, настроенный для проверки или отправки электронной почты через ваш сервер, а также программу FTP.

Для блокировки я решил ограничить доступ целых подсетей к FTP, а для некоторых - к SMTP. Чтобы уменьшить его, я проанализировал все входящие предупреждения, а затем сравнил худшие подсети со странами, перечисленными на этом веб-сайте: http://www.tcpiputils.com/browse/ip-address

Конечная цель - уменьшить количество отдельных IP-адресов, блокируемых CSF. Блокировка тысяч IP-адресов может вызвать проблему с задержкой, поэтому наличие некоторых стандартных правил для блокировки стран, изобилующих злоумышленниками, снижает потребность в управлении таким большим количеством отдельных IP-адресов.

Чтобы пересчитать допустимые диапазоны подсети, используйте этот инструмент: http://www.subnet-calculator.com/cidr.php

112.0.0.0/7 диапазоны 112.0.0.0 к 113.255.255.255 , но 111.0.0.0/7 недопустимая блокировка, поэтому будет 110.0.0.0 к 111.255.255.255 .Важно, чтобы вы проверили диапазоны своих подсетей, чтобы не блокировать неправильные IP-адреса.

0
28.01.2020, 01:37

Чтобы ответить на ваш вопрос напрямую: нет, нет веских причин для этого. Кроме того, sudo su создает две записи журнала, когда достаточно одной.

Я видел, как многие люди делают это, и когда я спрашиваю, почему они просто не запускают sudo-s , ответ просто в том, что они не знают о флаге -s sudo, и обычно они переключаются после того, как я указываю на это.

Однако к вашему списку sudo-s и sudo-i я хотел бы добавить еще один вариант, sudo-sE , который является своего рода заменой su-m . sudo-sE сохраняет среду, включая домашний каталог. Если домашний каталог небезопасен (на NFS), возникает опасность. Но в среде, где многие люди используют root, это избавляет вас от необходимости согласовывать содержимое корневого файла .bashrc . Мой .bashrc содержит много специализаций для root, поэтому я не получаю точно такую же среду, как root, но, по крайней мере, я получаю именно ту среду, которую хочу.

-121--5210-

В файле .tmux.conf , расположенном в домашнем каталоге пользователя, можно изменять или добавлять сочетания клавиш в сеансы tmux. Если этот файл не существует, его можно просто создать. Существует много образцов файлов .tmux.conf по всему Интернету и несколько хороших загадок.

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

unbind n                     # Unbind 'n' and 'p'
unbind p
bind-key , next-window
bind-key . previous-window

Как всегда можно увидеть текущие настройки клавиш в сеансе смокинга с помощью CTRL + b (или какой бы ни была клавиша привязки, это значение по умолчанию), то ? для справки. Для выхода из экрана справки за вычетом нажмите q .

-121--216963-

Может ли это быть лучше обработано спамовым программным обеспечением? 670 хостов в день - это не огромное количество хостов. При таком размере, вы также можете рассмотреть только ограничения скорости хостов, чтобы разрешить всем, но если кто-то неоднократно подключается и пытается отправить спам, вы блокируете их. Это может быть выполнено посредством отслеживания соединения. Имейте в виду, отслеживание соединений может пойти ужасно неправильно, если у вас есть миллионы хостов, связывающихся с вами, но это должно быть хорошо на 670/день. Это означало бы нечто подобное (непроверенное, извините):

iptables -A INPUT -p tcp --dport 21:25 -i eth0 -m conntrack --ctstate NEW -m recent  --update --seconds 300 --hitcount 20 -j DROP
iptables -A INPUT -p tcp --dport 21:25 -i eth0 -m conntrack --ctstate NEW -m recent --set

(Конечно, вы можете внести в белый список людей, которые отправляют вам тонны электронной почты.)

0
28.01.2020, 01:37

Теги

Похожие вопросы