Zabezpieczenie phpMyAdmin przed próbami ataków

anon58059726 | 2021-10-27 21:08:55 UTC | #1

Witam serdecznie :kissing:
Tym razem zamiast udzielać pomocy innym osobą sam potrzebuję pomocy z zabezpieczeniem phpmyadmin na moim VPS LVLUP. Sprawa wygląda dokładnie tak, że posiadam fail2ban i zabezpiecza on tak jak trzeba i jestem zadowolony. W ostatnim czasie pomyślałem sobie, że przecież można zaatakować serwer przez panel logowania do phpmyadmin. Z istotnych informacji dodam, że nie posiadam stałego adresu IP oraz nie korzystam z VPN. Posiadam zainstalowaną wersję phpmyadmin 4.9.5deb2. Czy warto zabezpieczyć w jakiś sposób panel logowania do phpmyadmin? Czy lepiej zostawić tak jak jest, bo ataki nic nie zrobią? Jestem praktycznie bardziej przekonany, że istnieję możliwość przeciążenia VPS przez notoryczne nieudane próby zalogowania do phpmyadmin.

Pozdrawiam
Oczekuję na pomoc w tej sprawie
Z góry dziękuję za wszelką pomoc w tej sprawie


Nieznajomy11 | 2021-05-16 18:35:22 UTC | #2

Zakładając, że korzystasz z apache2, to potrzebny będzie własny VirtualHost, w którym ustawisz własny LogFormat oraz ścieżkę logów, tak aby potem móc łatwo filtrować je automatycznie (analogicznie należy zrobić w przypadku nginx).

Zależnie od twojej dokładnej konfiguracji będzie trzeba dostosować miejsce, gdzie należy to wkleić, np. w przypadku domyślnej konfiguracji warto by utworzyć nowy VirtualHost, ale od biedy można podmienić domyślne CustomLog lub dodać sam LogFormat do 000-default.conf:

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{userID}n %{userStatus}n" pma_combined
CustomLog /var/log/apache2/phpmyadmin_access.log pma_combined

Należy utworzyć filtr /etc/fail2ban/filter.d/phpmyadmin.conf:

[Definition]
denied = mysql-denied|allow-denied|root-denied|empty-denied
failregex = ^<HOST> -.*(?:%(denied)s)$
ignoreregex =

Do tego jeszcze powiązany jail /etc/fail2ban/jail.conf upewniając się, że CustomLog kieruje na to samo co logpath:

[phpmyadmin]
enabled = true
port = http,https
filter = phpmyadmin
logpath = /var/log/apache2/phpmyadmin_access.log

Na końcu jeszcze pozostaje przeładować fail2ban, aby nowa konfiguracja została załadowana:

service fail2ban reload

Wszystko zostało oparte na tym artykule: https://phryneas.de/fail2ban-phpmyadmin


anon58059726 | 2021-05-15 20:27:10 UTC | #3

Powiem szczerze, że aż tak zaawansowany to nie jestem
Będzie ciężko :thinking:


anon58059726 | 2021-05-16 17:33:46 UTC | #4

No dobrze, więc zrobiłem tak:

Plik /etc/apache2/sites-available/000-default.conf
Linijka 20 ErrorLog ${APACHELOGDIR}/error.log
Linijka 21 LogFormat “%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i" %{userID}n %{userStatus}n” pmacombined
Linijka 22 CustomLog /var/log/apache2/phpmyadmin
access.log pma_combined

Plik /etc/fail2ban/filter.d/phpmyadmin-syslog.conf
Linijka 8 [Definition]
Linijka 9 denied = mysql-denied|allow-denied|root-denied|empty-denied
Linijka 10 failregex = ^ -.*(?:%(denied)s)$
Linijka 11 ignoreregex =

Plik /etc/fail2ban/jail.conf
Linijka 937 [phpmyadmin-syslog]
Linijka 938 enabled = true
Linijka 939 port = http,https
Linijka 940 filter = phpmyadmin
Linijka 941 logpath = /var/log/apache2/phpmyadmin_access.log

Po dokonaniu zmian postanowiłem połączyć się z IP/phpmyadmin, następnie notorycznie wpisywałem niepoprawne hasło i nie zostaję banowany na adres IP na określony czas

Czy coś zrobiłem źle?
Bardzo proszę o pomoc :sleepy:


anon58059726 | 2021-05-16 18:35:18 UTC | #5

Problem rozwiązany! :wave:


system | 2021-06-17 18:35:49 UTC | #6

Ten temat został automatycznie zamknięty 32 dni po ostatnim wpisie. Tworzenie nowych odpowiedzi nie jest już możliwe.