Как заблокировать большие диапазоны IP-адресов независимо от параметров, специфичных для сервера?

Я устал от того, что меня обманывают международные пользователи, постоянно разбирающиеся по краям моего SSH-сервера, и хотя DenyHosts был хорошей отправной точкой для управления SSH-доступом, я решил, что хочу что-то немного другое.

В конце концов - что, если вы не используете SSH? Что делать, если у вас есть веб-сервер или FTP-сервер? Что делать, если вы запускаете общедоступный сервер Minecraft? Что делать, если вы используете их все? Что делать, если вы не используете ни одного из них, а используете маршрутизатор на базе Linux? Пользователи Apache могут рассмотреть возможность использования правил .htaccess для доступа к сети, что также является хорошим выбором, или настроить modsecurity на постоянное блокирование строк пользовательского агента, в то время как mod_evasive блокирует оскорбительные IP-адреса на временной основе (довольно полезно для пауков и бот-ферм ), но нет ли что-то более универсальное, которое может быть применено ко всем потенциальным конфигурациям и ситуациям?

0
задан 15 October 2017 в 06:12

3 ответа

Введите iptables и Wizcrafts. Не каждая система Linux поставляется с libwrap, а hosts.deny не всегда получает консультацию или дает неожиданные результаты, если у вас есть проблемы с вашей конфигурацией.

Было много аргументов среди системных администраторов, которые либо поддерживать, либо осуждать tcpwrappers. Некоторые говорят, что нет ничего столь же впечатляющего, как тонко настроенный /etc/hosts.deny, чтобы держать нежелательных людей в страхе, в то время как другие говорят, что это не образец безопасности, что он вернулся в 90-е годы, особенно когда дело доходит до черных списков.

Я не хочу вникать в что-либо из этого - это слишком похоже на кругооборот Star Wars против Star Trek бесконечных аргументов. Я просто хочу, чтобы вы знали (если не были) разные мнения. Вы можете сделать свои собственные выводы.

Поскольку denyhosts требует, чтобы ваш ssh-сервер был настроен с включенной опцией поддержки tcp_wrappers, это делает некоторые администраторы неудобными (я лично не возражаю против этого). И, как упоминалось ранее, denyhosts даже не приносит пользы, если вы не используете SSH.

Итак, каково было мое универсальное решение? Довольно просто. Я взял все блоклисты, тщательно поддерживаемые Wizcrafts (ну, стоит того - его блоклисты Star Wars против Star Trek ) и сохранили их в один текстовый файл, а затем написал этот сценарий оболочки, чтобы отфильтровать комментарии из список и использовать iptables для блокировки диапазонов IP-адресов известных преступников со всего мира:

#/bin/bash
# |-----------------------------------------------------------------------------------------
# | rangeblock.sh - reads a list of IP ranges, filters non-numeric entries, then configures
# | iptables to block what's left
# | 
# | Maybe it's cutting corners to just check the first character, but iptables will throw
# | out anything it doesn't like anyway, and the loop won't break on errors
# | 
# | Hint: runs best as root
# |-----------------------------------------------------------------------------------------

file="wizcrafts.txt" # Change to a command-line option for more flexibility

while read line; do
    echo " "
    echo "Current Entry: $line"
    if [[ ${line:0:1} == [0-9]* ]]; then        
        echo "$line is a valid IP range. Added to iptables block list."
        iptables -I INPUT -s $line -j DROP
    else
        echo "$line was skipped. Not a valid IP or range."
    fi
done <"$file"

Теперь большая часть нарушившего трафика падает до того, как он даже попадает на мой SSH-сервер, и все это делает

Ничто не всегда на 100%, и это не заменяет умные методы (например, не разрешать root для входа через ssh), но это делает вещи намного проще с.

Или, по крайней мере, это было для меня. Интересный побочный эффект - моя система и производительность сети улучшились почти на 30% после того, как я это сделал.

0
ответ дан 22 May 2018 в 17:32

Введите iptables и Wizcrafts. Не каждая система Linux поставляется с libwrap, а hosts.deny не всегда получает консультацию или дает неожиданные результаты, если у вас есть проблемы с вашей конфигурацией.

Было много аргументов среди системных администраторов, которые либо поддерживать, либо осуждать tcpwrappers. Некоторые говорят, что нет ничего столь же впечатляющего, как тонко настроенный /etc/hosts.deny, чтобы держать нежелательных людей в страхе, в то время как другие говорят, что это не образец безопасности, что он вернулся в 90-е годы, особенно когда дело доходит до черных списков.

Я не хочу вникать в что-либо из этого - это слишком похоже на кругооборот Star Wars против Star Trek бесконечных аргументов. Я просто хочу, чтобы вы знали (если не были) разные мнения. Вы можете сделать свои собственные выводы.

Поскольку denyhosts требует, чтобы ваш ssh-сервер был настроен с включенной опцией поддержки tcp_wrappers, это делает некоторые администраторы неудобными (я лично не возражаю против этого). И, как упоминалось ранее, denyhosts даже не приносит пользы, если вы не используете SSH.

Итак, каково было мое универсальное решение? Довольно просто. Я взял все блоклисты, тщательно поддерживаемые Wizcrafts (ну, стоит того - его блоклисты Star Wars против Star Trek ) и сохранили их в один текстовый файл, а затем написал этот сценарий оболочки, чтобы отфильтровать комментарии из список и использовать iptables для блокировки диапазонов IP-адресов известных преступников со всего мира:

#/bin/bash # |----------------------------------------------------------------------------------------- # | rangeblock.sh - reads a list of IP ranges, filters non-numeric entries, then configures # | iptables to block what's left # | # | Maybe it's cutting corners to just check the first character, but iptables will throw # | out anything it doesn't like anyway, and the loop won't break on errors # | # | Hint: runs best as root # |----------------------------------------------------------------------------------------- file="wizcrafts.txt" # Change to a command-line option for more flexibility while read line; do echo " " echo "Current Entry: $line" if [[ ${line:0:1} == [0-9]* ]]; then echo "$line is a valid IP range. Added to iptables block list." iptables -I INPUT -s $line -j DROP else echo "$line was skipped. Not a valid IP or range." fi done <"$file"

Теперь большая часть нарушившего трафика падает до того, как он даже попадает на мой SSH-сервер, и все это делает

Ничто не всегда на 100%, и это не заменяет умные методы (например, не разрешать root для входа через ssh), но это делает вещи намного проще с.

Или, по крайней мере, это было для меня. Интересный побочный эффект - моя система и производительность сети улучшились почти на 30% после того, как я это сделал.

0
ответ дан 18 July 2018 в 05:17

Введите iptables и Wizcrafts. Не каждая система Linux поставляется с libwrap, а hosts.deny не всегда получает консультацию или дает неожиданные результаты, если у вас есть проблемы с вашей конфигурацией.

Было много аргументов среди системных администраторов, которые либо поддерживать, либо осуждать tcpwrappers. Некоторые говорят, что нет ничего столь же впечатляющего, как тонко настроенный /etc/hosts.deny, чтобы держать нежелательных людей в страхе, в то время как другие говорят, что это не образец безопасности, что он вернулся в 90-е годы, особенно когда дело доходит до черных списков.

Я не хочу вникать в что-либо из этого - это слишком похоже на кругооборот Star Wars против Star Trek бесконечных аргументов. Я просто хочу, чтобы вы знали (если не были) разные мнения. Вы можете сделать свои собственные выводы.

Поскольку denyhosts требует, чтобы ваш ssh-сервер был настроен с включенной опцией поддержки tcp_wrappers, это делает некоторые администраторы неудобными (я лично не возражаю против этого). И, как упоминалось ранее, denyhosts даже не приносит пользы, если вы не используете SSH.

Итак, каково было мое универсальное решение? Довольно просто. Я взял все блоклисты, тщательно поддерживаемые Wizcrafts (ну, стоит того - его блоклисты Star Wars против Star Trek ) и сохранили их в один текстовый файл, а затем написал этот сценарий оболочки, чтобы отфильтровать комментарии из список и использовать iptables для блокировки диапазонов IP-адресов известных преступников со всего мира:

#/bin/bash # |----------------------------------------------------------------------------------------- # | rangeblock.sh - reads a list of IP ranges, filters non-numeric entries, then configures # | iptables to block what's left # | # | Maybe it's cutting corners to just check the first character, but iptables will throw # | out anything it doesn't like anyway, and the loop won't break on errors # | # | Hint: runs best as root # |----------------------------------------------------------------------------------------- file="wizcrafts.txt" # Change to a command-line option for more flexibility while read line; do echo " " echo "Current Entry: $line" if [[ ${line:0:1} == [0-9]* ]]; then echo "$line is a valid IP range. Added to iptables block list." iptables -I INPUT -s $line -j DROP else echo "$line was skipped. Not a valid IP or range." fi done <"$file"

Теперь большая часть нарушившего трафика падает до того, как он даже попадает на мой SSH-сервер, и все это делает

Ничто не всегда на 100%, и это не заменяет умные методы (например, не разрешать root для входа через ssh), но это делает вещи намного проще с.

Или, по крайней мере, это было для меня. Интересный побочный эффект - моя система и производительность сети улучшились почти на 30% после того, как я это сделал.

0
ответ дан 24 July 2018 в 18:17

Другие вопросы по тегам:

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