Як заблокувати спроби злому, орієнтовані на phpMyAdmin?

Мій веб-сайт щодня отримує тисячі показів з різних IP-адрес, які намагаються отримати доступ:

/php-myadmin/
/myadmin/
/mysql/

... і тисячі інших варіантів. Жоден з цих каталогів не існує, я навіть не маю phpmyadmin на моєму сервері.

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

31
Тисячі переглядів за день - це нічого. Насправді ви відчуваєте труднощі в роботі або лише припускаєте? Кілька тисяч 404-х за день - це дійсно нічого.
додано Автор Code Bling, джерело
Будьте обережні з блокуванням на основі IP - багато хто з IP-адрес отримує циклічний доступ до законних користувачів. Крім того, деякі законні користувачі можуть бути заражені як частина бот-мережі. Якщо ви здійснюєте блокування на основі IP-адрес, переконайтеся, що він має достатньо короткий термін дії.
додано Автор Bob, джерело
Немає згадки про mod_security у цьому потоці, тому перевірте це . Зверніть увагу, що коментар нижче зазначає, що це насправді призведе до того, що сервер, звичайно, повинен зробити більше роботи. Отже, можливо, mod_evasive також буде добре для реалізації . fail2ban , але вказано нижче.
додано Автор kiko, джерело
Немає проблем із продуктивністю. Але це дратує мене, і я запитав, чи є щось, що я можу зробити.
додано Автор amba88, джерело

7 Відповіді

Не турбуйтеся про це. Обслуговування 404 - це маленька, маленька, невелика кількість роботи для веб-сервера. Ви могли б служити десять 404 секунди за допомогою 486. Ширина смуги на 404 незначна; крихітний запит GET і крихітний 404 відповідь.

Серйозно; не турбуйтеся про це. Це лише частину роботи сервера в Інтернеті.

41
додано
Заборона пекла: Служити звичайною сторінкою (200 ОК) з тарілкою. Інструменти, якими користуються діти, знайдуть знайдену сторінку, і їм потрібно буде розібратися вручну (підроблена сторінка входу в систему, звичайно, буде диявольським пристроєм):)
додано Автор Pete Kirkham, джерело
Мета полягає в тому, щоб змусити противника витрачати додаткові ресурси (час) для аналізу результатів. Якщо ви отримаєте 404, ви знаєте, що не було можливості для атаки працювати. Результат ОК з змінною довжиною [без подальшого дослідження] не відрізняється від очікуваних результатів. Вони виконують ці сканування, тому що терпіння не є їхньою чеснотою, тому демотивуйте їх, і вони зупиняться :)
додано Автор Pete Kirkham, джерело
Для бонусних очок поверніть статичну сторінку, яка виглядає так само, як реальна сторінка phpmyadmin, але повністю не функціональна.
додано Автор Nuno Furtado, джерело
Зверніть увагу на те, що узгодження рядків (наприклад, mod_sec, або де-небудь ще) насправді просто змусить сервер працювати складніше, ніж просто надсилати 404 (це не було запропоновано, я просто помічаю це тут, якщо хтось його розглядає). Це дійсно шум, який ви можете спокійно заглушити, за умови, що ваша установка надійно захищена.
додано Автор Royi, джерело
@arul - Деякі зловмисники можуть сприймати це як виклик і приділяти додаткову увагу своєму серверу, незважаючи на це. Чи буде тут корисним виступати менший або інший 404? Наприклад, якщо хост зазвичай обслуговує 404 з посиланням на підтримку, він повинен/може замість цього служити простому 404 без вмісту цих цільових URL-адрес?
додано Автор shasi kanth, джерело
Для додаткових бонусних очок побудуйте затримку 0,5 - 1 секунду. Це не значно збільшить час на завантаження легітимними користувачами, але це сповільнить сканування, яке роблять погані хлопці. (Вам потрібно просто переконатися, що ваш сервер може зберігати з'єднання, відкриті довше, ніж потрібно, і продовжувати обробляти законні запити.)
додано Автор xitij, джерело

На жаль для Вас, як Інтернет працює. Просто ігноруйте його. Тисячі ботів/троянів сканують Інтернет. Джерело ІС буде завжди випадковим. Лікування відсутнє.

The only 100% solution for eliminating that traffic is illustrated below: enter image description here

Альтернатива:
 - для переміщення з https/http з порту 80/443 на щось інше. Боти, як правило, не шукають HTTP-сервера на всіх інших 65k портах.
 - використовувати VPN для підключення до сервера (думаю, це неможливо, якщо ви розміщуєте загальнодоступний веб-сайт).

36
додано
LOL +1 для діаграми :-) У мене є ця дратівлива проблема (як і всі ми) на статичному сайті, і це найкорисніший відповідь.
додано Автор stulster, джерело

Ви хочете Fail2ban (припускаючи, що це машина з Linux Ви не сказали ...

Що таке Fail2ban?

Fail2ban буде аналізувати системні журнали, шукаючи певні регулярні вирази для блокування. Коли він виявить відповідність (або кілька відповідностей з того ж самого IP-адреси, залежно від того, як ви його налаштуєте), він буде блокувати, як правило, через IPTables. Зазвичай це використовується для блокування невдалих спроб аутентифікації SSH або веб-серверів.

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

Як це допомагає блокувати роботі phpmyadmin?

Його можна так само легко використати, щоб відповідати загальним ознакам атаки, наприклад, намагаючись отримати доступ до неіснуючих папок phpmyadmin. Вам доведеться з'ясувати правильний регулярний вираз для відповідності таким спробам і переконатися, що ви не блокуєте законних користувачів.

Конфігурація, наведена в цьому блозі , може працювати verbatium або вимагати певного налаштування для налаштування .

Чому я повинен їх блокувати? 404 помилки не коштують дорого

Блокуючи їх у iptables НЕОБХІДНЕ використання - шанси, якщо вони перевіряють на phpmyadmin уразливості, вони можуть спробувати інші служби для вразливостей, аж до того, як вони потрапляють у щось що працює. Забороняючи їх, більшість ботів/сценаріїв відмовляться після деякого часу, і вони перейдуть до кращих цілей.

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

Як видно з коментаря, Fail2ban вимагає певних системних ресурсів. Але не багато. Принаймні я можу сказати, що у мене ніколи не було проблеми з продуктивністю, яку я міг би віднести до Fail2ban. Проте у мене були проблеми з продуктивністю від дуже агресивних скриптів, які намагалися перебрати паролі або викинути тисячі спроб ін'єкції SQL та інших експлуатацій в секунду на моєму сервері. Блокування їх на рівні брандмауера займає FAR менше ресурсів, ніж блокування на рівні сервера/програми. Вона також може бути розширена для запуску спеціальних сценаріїв для заборони IP-адрес - тому замість того, щоб забороняти їх у IP-таблицях, можна було б заборонити їх у апаратному брандмауері або надіслати електронною поштою, якщо одна й та сама людина намагається атакувати вас, щоб ви могли скаржитися до свого постачальника послуг Інтернету або заблокуйте ваш центр обробки даних на брандмауерах.

Інші поради?

ДУЖЕ РЕКОМЕНДУЄТЬСЯ, що ви надаєте список білих списків декількох IP-адрес, які ви контролюєте, щоб не випадково заблокувати себе.

29
додано
@JensNeubauer так. Ви також повинні стежити за людьми, які стоять за проксі-серверами або ящиками NAT-класу перевізників, оскільки ціла група користувачів має спільний IP-адресу.
додано Автор Grant, джерело
@ heinrich5991 блокується після перших спроб. Немає різниці для деяких сканувань, але величезна різниця для сканування, які спробують кілька спроб на сервері.
додано Автор Grant, джерело
Fail2ban (або подібне), ми сподіваємося, буде більше, ніж просто/phpmyadmin. Припускаючи, що він має будь-який вид віддаленого доступу, блокування типу F2B (3 паролі, а ви ... вийшли!) Більше 404-х.
додано Автор Francisco Couzo, джерело
Якщо ви робите щось подібне, переконайтеся, що заборона закінчується відносно швидко (кілька годин, максимум), або ви ризикуєте заблокувати легальних користувачів, якщо атака йде від динамічно розподіленого IP.
додано Автор Andra, джерело
@ user11153 Я б не назвав його безпекою, якщо ви заборонили після спроб.
додано Автор Alistair Cook, джерело
що буде рушійним ресурсом :) Я думаю, що ви будете використовувати більше циклів процесора на Fail2ban, ніж на простому обслуговуванні іноді 404 :)
додано Автор Bernardo Ramos, джерело
@ BartłomiejZarzecki Краща безпека завжди вимагає більших ресурсів
додано Автор user2814826, джерело

Найкращий спосіб знайти захищену паролем папку, в якій знаходиться phpmyadmin. Крім того, не використовуйте нічого, що стосується phpmyadmin як назви папки: pma, phpmy, etc ...

4
додано
З питання: Жоден з цих каталогів не існує, я навіть не маю phpmyadmin на моєму сервері. Не існує. Ви не можете перейменувати PMA або те, що є у вас, якщо воно не існує.
додано Автор Francisco Couzo, джерело

Що я роблю, це помістити невеликий скрипт у відповідний каталог, тому він запускається, якщо хтось звертається/phpmyadmin /. Цей скрипт не робить нічого іншого, крім виклику iptables (під Linux), який блокує IP-адресу, що звертається до скрипту протягом 30 хвилин (після чого cron-job скидає ланцюжок iptables, IP-адреса додається).

Перевагою над fail2ban є те, що ви не використовуєте жодних ресурсів для аналізу syslog/access-log. Недолік, звичайно, полягає в тому, що ви не перевіряєте нічого іншого, окрім доступу до цієї дуже конкретної адреси.

Чому я це роблю? Звичайно, обслуговування 404 буде простим для сервера, але я не хочу, щоб вони тикали, просто. Я хочу витрачати час на свій інструмент, чекаючи, коли сервер відповість, повторивши спробу, поки він остаточно не здасться. Крім того, якщо ви не заблокуєте їх, вони спробують багато різних URL-адрес, перш ніж остаточно перейти - іноді понад тисячу. Залежно від інструменту, це може бути "приємним" і простір протягом декількох годин, або це просто не хвилює і фунт ваш сервер з усіма ними протягом декількох хвилин.

Чому я не можу подати дійсну сторінку? Їх інструмент може зупинити сканування і сповістити skiddie, що його запускає - хто потім повинен перевірити вручну. Попереду цього є те, що вони нададуть вашому серверу набагато ближчий погляд, ніж вони мали б, якщо б їхнє сканування не примусило вас з'явитися в їх результатах. Можливо, вони будуть трохи більше тикати, можливо, кілька сканувань порту, можливо, ви змусять їх зненацька, і вони запускають DoS, щоб побачити, чи можуть вони щось зробити. Просто блокуючи їх - які з їхньої точки зору змушують сервер вичерпувати момент, коли вони отримують доступ до скрипту phpmyadmin - це ефективно витрачає час на свій інструмент, уникаючи при цьому небажаної уваги.

Якщо у вас є phpMyAdmin на сервері, ефективним рішенням може бути розміщення його в окремому каталозі, а для керування паролем (.htpasswd для Apache) заблокуйте доступ до того, як що-небудь досягне його.

3
додано
Звучить як гарна альтернативна опція ... але хіба це не вимагає веб-сервера, щоб він міг запускати скрипт з правами root?
додано Автор Grant, джерело
Налаштуйте псевдонім для інструментів, таких як phpMyAdmin. Проста зміна в конфігураційний файл, щоб змінити його на adminMyPhp або chrisPhpAdmin ... або щось, що не буде скриптовим.
додано Автор Francisco Couzo, джерело
Вибачте за пізню відповідь - це не (обов'язково). Ви можете використовувати sudo (з файлом sudoers), щоб дозволити веб-серверу виконати один добре відомий скрипт (і саме цей скрипт) з правами root. Цей скрипт буде приймати (як параметр) ІС, і ви перевіряєте його на регулярний вираз ([0-9] + [0-9] + [0-9] +. ), щоб переконатися, що він не вводить нічого дивного.
додано Автор War, джерело

FWIW обмежує доступ тільки до/phpmyadmin/до білих списків IP-адрес.

Ми також використовуємо mod_evasive (на apache2) для запобігання DOS/погано поводилися скриптових атак.

0
додано

прив'яжіть інструмент адміністрування MySQL до адреси своєї машинної петлі 127.0.0.1

потім скористайтеся ssh з перенаправленням портів, щоб отримати доступ до списку адміністраторів.

додайте додатковий рівень безпеки, який може бути досить прозорим.

0
додано