Konto administratora zostało zablokowane po ataku słownikowym – 10 000 prób logowania w ciągu godziny. Magento po 6 nieudanych próbach blokuje konto na 30 minut. Problem: atakujący ciągle resetował licznik przez zmianę IP, a prawdziwy admin nie mógł się zalogować. Czas naprawy: 1 godzina.
Objawy
- Admin nie może się zalogować – „Account is locked”
- Resetowanie przez „Forgot password” nie pomaga – email nie dochodzi (skrzynka zapchana alertami)
- Nginx access log: tysiące POST do
/admin_XXXXX/admin/z różnych IP - Konto blokuje się ponownie kilka minut po odblokowaniu
Natychmiastowe odblokowanie
-- Odblokuj konto admina bezpośrednio w bazie
UPDATE admin_user
SET failures_num = 0,
first_failure = NULL,
lock_expires = NULL
WHERE username = 'admin';
Zatrzymanie ataku
# Zablokuj netbloki atakujących
awk '{print $1}' /var/log/nginx/access.log \
| sort | uniq -c | sort -rn | head -30
# Blokuj w iptables (szybciej niż nginx)
iptables -A INPUT -s 185.220.0.0/16 -j DROP
iptables -A INPUT -s 45.153.0.0/16 -j DROP
# Lub przez nginx geo module - whitelist znanych IP
geo $allowed_ip {
default 0;
1.2.3.4 1; # biuro
5.6.7.8 1; # VPN
}
server {
location /admin_XXXXX/ {
if ($allowed_ip = 0) { return 403; }
}
}
Wzmocnienie długoterminowe
# Zmień URL admina na trudniejszy do zgadnięcia bin/magento setup:config:set --backend-frontname="panel_$(openssl rand -hex 6)" # Włącz 2FA - po tym ataku to priorytet bin/magento module:enable Magento_TwoFactorAuth bin/magento setup:upgrade bin/magento cache:flush # Ustaw agresywniejszy lockout # Stores > Config > Advanced > Admin > Security # Max Login Failures to Lockout Account: 3 # Lockout Time (minutes): 60
Wnioski
URL admina /admin jest skanowany automatycznie przez boty kilka razy dziennie. Zmiana URL, whitelist IP i 2FA razem sprawiają że brute force staje się praktycznie niemożliwy. Fail2ban jako dodatkowa warstwa blokuje napastników po 3 nieudanych próbach zanim dotrą do Magento.
