Как заблокировать клиентам по IP-адресу доступ к определенным URL на моем веб-сервере?

9

Как я могу навсегда заблокировать любой ipaddress, который обращается к известным уязвимым страницам, таким как /phpMyadmin/? Я использую сервер Debian и часто вижу, как боты или хакеры сканируют мой сервер, пытаясь найти уязвимости.

73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpMyadmin/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpMyAdmin/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpmyAdmin/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpmyadmin2/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpmyadmin3/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpmyadmin4/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"

Я уже следил за этим вопросом: как обезопасить phpMyAdmin .

Я хочу начать блокировать ботов от использования полосы пропускания.

Белая кошка
источник
4
Это очистит ваши лог-файлы, но никак не поможет с безопасностью. Либо всегда держите ваш phpmyadmin в актуальном состоянии, либо обращайтесь к нему только с локального хоста (и блокируйте весь другой трафик). Чтобы получить доступ к удаленному серверу, проложите туннель через ssh.
Стефан М
Я думаю, что это поможет безопасности, потому что он заблокирует вредоносные IP-адреса, которые пытаются получить доступ к этому сайту.
Whitecat
@Whitecat 404означает код HTTP Page not found. Как вы чувствуете, что эти IP-адреса нарушают IP-адреса? На основании какого выхода вы решили заблокировать эти IP?
Валентин Байрами
Я хочу заблокировать IP на основании того, что они собираются phpMyAdmin. Я защитил свой сайт и знаю, что любой, кто заходит на эту страницу, является вредоносным.
Whitecat
1
Почему бы вам не создать.htpasswd
nicoX

Ответы:

18

Это может быть более тяжелый вес, чем вы ищете, но вы можете рассмотреть возможность использования fail2ban ( https://www.fail2ban.org ). Это инструмент, который может отслеживать ваши файлы журналов и автоматически блокировать адреса, которые генерируют журналы, которые соответствуют набору настраиваемых шаблонов.

Энди Далтон
источник
5
Точно это проблема fail2banпредназначена для решения. Это немного тяжело, но опять же желаемый критерий сам по себе довольно динамичен. Все рассматриваемые вещи fail2banнастолько легки, насколько вы можете попытаться решить этот класс проблем с помощью стандартного инструмента.
Братчли
1
Ну, я полагаю, вы могли бы написать двоичный cgi suid-root, разместить его как / phpmyadmin, который добавляет правило брандмауэра для вызывающего.
Джошуа
7

Не. В лучшем случае вы ничего не добьетесь, но сделаете свои журналы менее загроможденными; в худшем случае вы заблокируете законных посетителей, которые случайно (через DHCP) получили IP-адрес, который раньше принадлежал кому-то, чей компьютер был заражен как узел ботнета.

Настоящая проблема здесь - это беспорядок в журналах, и его можно решить, просто настроив ведение журналов так, чтобы отбрасывать запросы, которые, как известно, vuln-scan не проверяет и не будет, потому что вы не используете уязвимый рамки, которые они сканируют. Если вы беспокоитесь о полной потере регистрации (возможно, они предоставляют доказательства того, кто был ответственен за другую атаку, или когда началась атака и т. Д.), То просто за короткое время просто дросселируйте несколько записей журнала для нежелательных URL-адресов с заданного IP-адреса. должно работать лучше.

R .. GitHub ОСТАНОВИТЬ, ПОМОГАЯ ЛЕД
источник
6
fail2banЗапреты являются временными - X попаданий неудачной попытки входа в систему в течение Y секунд, запрет Z минуты, с настраиваемыми XY и Z. Удаление журналов активных попыток вторжения звучит для меня как значительно более опасный выбор.
Шадур
2
с вероятностью 0,1% законные пользователи этого экземпляра phpmyadmin должны иметь возможность просто сообщать OP, чтобы получить разблокировку. Кроме того, fail2ban может отключить проверку сканирования до того, как он попадет на уязвимую уязвимость или нулевой день на вашем сервере.
Segfault
1
@ Segfault: Предположительно, нет законных пользователей, /phymyadmin/потому /phymyadmin/что не существует на сервере (см .: 404). Скорее, речь идет о любых законных пользователях , которые будут заблокированы брандмауэром.
R .. GitHub ОСТАНОВИТЬ ЛЬДА
1
«Лучшее» на самом деле включает в себя дальнейшие блокируемые тесты, в том числе те, которые могли быть действительно успешными. Игра с содержимым журнала также кажется хорошим способом потерять информацию, когда вы понимаете, что допустили какую-то ошибку в своем фильтре. Если вы беспокоитесь о беспорядке в журнале, тогда вам нужна аналитическая платформа, такая как ELK, чтобы просеять все интересующие вас вещи
Bratchley
2
Другая связанная с этим проблема заключается в расширении использования CGN. Провайдер может иметь сотни клиентов, использующих один и тот же IP-адрес, что делает блокировку IP в лучшем случае опасной, даже временной. Вы можете иметь законного пользователя и активную проверку с одного и того же адреса одновременно.
Боб
3

найдите phpMyAdmin.conf в одном из каталогов конфигурации httpd и добавьте deny 73.199.136.112в раздел allow / deny файла конфигурации и требуемый IP-адрес в разделе 2.4. Я поместил пример полного конфигурационного файла ниже, где у меня есть записи в обратном порядке, я блокирую все, кроме разрешенных сегментов IP для доступа к инструменту.

[thebtm@server conf.d]# cat /etc/httpd/conf.d/phpMyAdmin.conf
# phpMyAdmin - Web based MySQL browser written in php
# 
# Allows only localhost by default
#
# But allowing phpMyAdmin to anyone other than localhost should be considered
# dangerous unless properly secured by SSL

Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin

<Directory /usr/share/phpMyAdmin/>
   AddDefaultCharset UTF-8

   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
       Require ip 10.10.26
       Require ip 192.168.56
       Require ip 127.0.0.1       
       Require ip ::1
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 10.10.25
     Allow from 192.168.56
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>

<Directory /usr/share/phpMyAdmin/setup/>
   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
       Require ip 127.0.0.1
       Require ip ::1
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>

# These directories do not require access over HTTP - taken from the original
# phpMyAdmin upstream tarball
#
<Directory /usr/share/phpMyAdmin/libraries/>
    Order Deny,Allow
    Deny from All
    Allow from None
</Directory>

<Directory /usr/share/phpMyAdmin/setup/lib/>
    Order Deny,Allow
    Deny from All
    Allow from None
</Directory>

<Directory /usr/share/phpMyAdmin/setup/frames/>
    Order Deny,Allow
    Deny from All
    Allow from None
</Directory>

# This configuration prevents mod_security at phpMyAdmin directories from
# filtering SQL etc.  This may break your mod_security implementation.
#
#<IfModule mod_security.c>
#    <Directory /usr/share/phpMyAdmin/>
#        SecRuleInheritance Off
#    </Directory>
#</IfModule>
thebtm
источник
Это круто. Но проблема в том, что есть постоянные боты с разных IP. Я не могу идти в ногу с каждым другим IP, поскольку я получаю от 20-30 уникальных вредоносных ips в день.
Whitecat
2
Вот почему я показал обратное, где вы разрешаете доступ к сегментам и автоматически блокируете остальные.
thebtm
Alias /phpmyadmin /usr/share/phpMyAdmind /phpmyadminдолжен быть изменен на что-то другое в целях безопасности. Alias /secret /usr/share/phpMyAdmind
nicoX
Я изменил файл конфигурации по умолчанию, который поставляется вместе с инструментом при его установке, и создал несколько случайных IP-адресов.
17