Як заблокувати клієнтів за 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"

Я вже дотримувався цього питання stackoverflow: як захистити phpMyAdmin .

Я хочу почати блокувати ботів від пропускної здатності.


4
Це очистить файли журналу, але не допоможе безпеці. Або завжди постійно оновлюйте phpmyadmin або отримуйте доступ до нього лише з localhost (і блокуйте весь інший трафік). Щоб отримати доступ до віддаленого сервера, тунелюйте порт через ssh.
Стефан М

Я думаю, що це допоможе безпеці, оскільки заблокує шкідливі IP-адреси, які намагаються отримати доступ до цього сайту.
Whitecat

@Whitecat 404код HTTP означає Page not found. Як ви розумієте, що ці ІР ображають ІР? Виходячи з того, який вихід ви вирішили заблокувати ці IP?
Валентин Байрамі

Я хочу заблокувати ip виходячи з того, що вони збираються до phpMyAdmin. Я захистив свій сайт, і я знаю, що кожен, хто переходить на цю сторінку, є шкідливим.
Whitecat

1
Чому б вам не створити.htpasswd
nicoX

Відповіді:


18

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


5
tbh саме ця проблема fail2banрозроблена для вирішення. Це трохи важко, але знову ж таки бажані критерії досить динамічні самі по собі. Все, що розглядається fail2ban, приблизно настільки ж легке, як ви збираєтеся зіткнутися з вирішенням цього класу проблем за допомогою стандартного інструменту.
Братчлі

1
Ну я припускаю, що ви можете написати бінарний cgi suid-root, розмістити його як / phpmyadmin, що додає правило брандмауера його виклику.
Джошуа

7

Не варто. У кращому випадку ви нічого не досягнете, крім того, щоб зробити ваші журнали менш захаращеними; в гіршому випадку ви врешті заблокуєте законних відвідувачів, які випадково отримали (через DHCP) IP-адресу, яка раніше належала тому, чий ПК був заражений як ботнет-вузол.

Справжня проблема тут - захаращення журналу, і його можна вирішити, просто налаштувавши свій журнал, щоб відмовитись від запитів, які, як відомо, сканування вульнами для вульз вашого сайту не мають і не будуть, оскільки ви не використовуєте вразливих рам, на які вони сканують. Якщо ви стурбовані повною втратою журналу (можливо, вони надають докази, які вказують на те, хто відповідав за іншу атаку, або коли почалася атака тощо), просто за короткий проміжок часу просто вимкніть кілька записів журналу для непотрібних URL-адрес із заданого IP-адреси. повинні працювати краще.


6
fail2banзаборони є тимчасовими - Х-хіти поганої спроби входу протягом Y секунд, заборона на хвилину Z, з можливістю налаштування XY та Z. Випадання журналів активних спроб вторгнення звучить мені як значно більш небезпечний вибір.
Шадур

2
в 0,1% шансів це трапиться, законні користувачі цього примірника phpmyadmin повинні мати можливість просто повідомлення OP, щоб розблокувати. Крім того, fail2ban може вимкнути атаку сканування до того, як трапиться на незахищений або нульовий день вразливості на вашому сервері.
Segfault

1
@Segfault: Імовірно, немає законних користувачів, /phymyadmin/оскільки їх /phymyadmin/немає на сервері (див.: 404). Замість законних користувачів, про яких йдеться, - це будь-які користувачі сайту, які були б заблоковані брандмауером.
R .. GitHub СТОП ДОПОМОГАТИ

1
"Найкращий" насправді включає додаткові тести, які блокуються, включаючи те, які могли б насправді досягти успіху. Пограти з вмістом журналу також здається хорошим способом втратити інформацію, коли ви зрозумієте, що ви зробили якусь помилку у своєму фільтрі. Якщо ви турбуєтесь про захаращення журналу, тоді вам потрібна аналітична платформа, на зразок ELK, щоб просіяти все це для того, що вас цікавить.
Братчлі

2
Інша, пов'язана з цим, проблема - збільшення використання CGN. Інтернет-провайдер може мати сотні клієнтів, які діляться однією IP-адресою, що робить блокування IP-адреси в кращому випадку небезпечним, навіть тимчасовим. Ви можете мати законного користувача та активне сканування з тієї самої адреси одночасно.
Боб

3

знайдіть phpMyAdmin.conf в одному з каталогів конфігурації httpd та додайте deny 73.199.136.112в розділ дозволу / заборони конфігураційного файлу та вимагайте 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>

Це круто. Але проблема полягає в тому, що є постійні боти з багатьох ip-iв. Я не можу йти в ногу з різними IP-адресами, оскільки отримую між 20-30 унікальних шкідливих ips в день.
Whitecat

2
Ось чому я показав зворотне місце, де ви дозволяєте сегментам, до яких потрібно мати доступ, і автоматично блокує решту.
thebtm

Alias /phpmyadmin /usr/share/phpMyAdmind /phpmyadminв цілях безпеки слід змінити на щось інше. Alias /secret /usr/share/phpMyAdmind
nicoX

Я змінив конфігураційний файл за замовчуванням, який постачається з інструментом при його встановленні, і створив кілька випадкових IP-адрес.
thebtm
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.