Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Cześć,
posiadam małą stronę internetową (sklep) na własnym VPS-ie. Od jakiegoś czasu obserwuję w logu Apache bardzo wiele wpisów świadczących o próbie poszukiwania panelu phpmyadmin, np:
121.31.21.136 - - [22/May/2018:07:14:32 +0200] "GET /phpmyadmin/index.php HTTP/1.1" 302 184 "-" "Mozilla/5.0"
121.31.21.136 - - [22/May/2018:07:14:33 +0200] "GET /phpMyAdmin/index.php HTTP/1.1" 302 184 "-" "Mozilla/5.0"
121.31.21.136 - - [22/May/2018:07:14:33 +0200] "GET /pmd/index.php HTTP/1.1" 302 184 "-" "Mozilla/5.0"
121.31.21.136 - - [22/May/2018:07:14:34 +0200] "GET /pma/index.php HTTP/1.1" 302 184 "-" "Mozilla/5.0"
121.31.21.136 - - [22/May/2018:07:14:35 +0200] "GET /PMA/index.php HTTP/1.1" 302 184 "-" "Mozilla/5.0"
121.31.21.136 - - [22/May/2018:07:14:36 +0200] "GET /PMA2/index.php HTTP/1.1" 302 184 "-" "Mozilla/5.0"
121.31.21.136 - - [22/May/2018:07:14:36 +0200] "GET /pmamy/index.php HTTP/1.1" 302 184 "-" "Mozilla/5.0"
121.31.21.136 - - [22/May/2018:07:14:37 +0200] "GET /pmamy2/index.php HTTP/1.1" 302 184 "-" "Mozilla/5.0"
121.31.21.136 - - [22/May/2018:07:14:38 +0200] "GET /mysql/index.php HTTP/1.1" 302 184 "-" "Mozilla/5.0"
121.31.21.136 - - [22/May/2018:07:14:38 +0200] "GET /admin/index.php HTTP/1.1" 302 184 "-" "Mozilla/5.0"
121.31.21.136 - - [22/May/2018:07:14:40 +0200] "GET /db/index.php HTTP/1.1" 302 184 "-" "Mozilla/5.0"
121.31.21.136 - - [22/May/2018:07:14:41 +0200] "GET /dbadmin/index.php HTTP/1.1" 302 184 "-" "Mozilla/5.0"
121.31.21.136 - - [22/May/2018:07:14:42 +0200] "GET /web/phpMyAdmin/index.php HTTP/1.1" 302 184 "-" "Mozilla/5.0"
121.31.21.136 - - [22/May/2018:07:14:42 +0200] "GET /admin/pma/index.php HTTP/1.1" 302 184 "-" "Mozilla/5.0"
121.31.21.136 - - [22/May/2018:07:14:43 +0200] "GET /admin/PMA/index.php HTTP/1.1" 302 184 "-" "Mozilla/5.0"
121.31.21.136 - - [22/May/2018:07:14:44 +0200] "GET /admin/mysql/index.php HTTP/1.1" 302 184 "-" "Mozilla/5.0"[/quote]
Niektóre z tych botów są trochę sprytniejsze bo skanowania wykonują co kilka sekund. Wiem, że samo poszukiwanie panelu nie jest żadnym zagrożeniem, ale pojawia się problem logowania bo logi dostępu do serwera rosną lawinowo. Logrotate jest ustawiony prawidłowo i jakoś sobie z tym radzi, ale na tym VPS-ie mam tylko jeden procesor i wolałbym żeby nie był obciążony logowaniem jakichś chińskich botów. Czy jest możliwość aby stworzyć skrypt powłoki lub skorzystać z jakiegoś oprogramowania, które będzie analizowało log Apache i w przypadku natrafienia na ciąg znaków "phpmyadmin" albo "mysql" od razu dodawało blokującą (DROP) regułę do iptables? Coś w stylu fail2ban.
Pozdrawiam.
Offline
To sobie ustaw logowanie by ci nie łapał tych ścieżek. Poniżej przykład:
SetEnvIf Request_URI "^\/cos\/cos\/cos$" dontlog CustomLog ${APACHE_LOG_DIR}/access.log combined env=!dontlog
Więcej tu masz:
https://httpd.apache.org/docs/current/mod/mod_setenvif.html
https://httpd.apache.org/docs/current/mod/mod_log_config.html
Offline
W fail2ban mozesz takie coś zrobić. Są gotowe parsery do logów apache a jak zabrnie ci funkcji możesz dodać swoje
Offline
Co prawda nie na Apachu ale na Nginxie, wszystko na VPS mam podzielone na publiczne i prywatne, wszystko co prywatne jest schowane za certyfikatem PKCS#12.
Do logów praktycznie nie zaglądam, ale potwierdzam, na stronie
https://admin.{domena.tld}/awstats//awstats.nginx.errors404.htm
Wywołania do Phpmyadmina, panelu administracyjnego a nawet ścieżki typu /asterisk/ czy /backofiice/ to norma.
Masz tu listę jednego VPSa z ostatnich kilku dni.
https://pastebin.com/raw/b2z01my4
Ale to zwykły śmietnik, nie ma się praktycznie czym interesować, o ile serwera nie konfigurował jakiś lama.
Proponowanego wyżej fail2bana nie potrzebujesz, Apache ma taką fajną zabawkę jak [b]httpd-guardian[/b], którą można stosunkowo prosto podłączyć do modułów Apacha [b]mod-security[/b] czy [b]mod_evasive[/b].
Pozdro
;-)
Ostatnio edytowany przez Jacekalex (2018-05-22 17:44:46)
Offline
Dziękuję wszystkim za odpowiedzi, szczególnie przydatna okazała się porada z http-guardian. :)
Jeżeli już o mod_security mówimy to przeglądając log modsec_audit widzę trochę wpisów z próbami ataków xss, sql injection. Większość to jakaś amatorszczyzna - boty albo próby ataków na zasadzie kopiuj-wklej z jakiegoś forum informatycznego. Nie mniej jednak, zastanawia mnie tak duża liczba "syfu". Nie zdążyłem jeszcze na dobre otworzyć swojej strony a już zaczynam martwić się o bezpieczeństwo. Sądzę, że serwer jest skonfigurowany poprawnie, aczkolwiek jakimś super administratorem nie jestem a jak wiadomo jedynym bezpiecznym serwerem jest ten odłączony od prądu. :)
Jak te boty w ogóle trafiają na moje IP? Czy to na zasadzie losowego generowania adresu, czy np. moje IP mogło być przydzielone kiedyś do jakiejś dużej aktywnej usługi i jest w bazie aktywnych adresów?
Offline
Jak vps gdzie masz własne jądro to [deb]xtables-addons-dkms[/deb], taka konfiguracja:
DROP tcp -- anywhere anywhere -m geoip --source-country KR,CN,IN,RU,SA,TR,VN,UA,BR,VE,PK,JP
wycina 90% nie chcianego ruchu. Do tej pory jedna osoba się do mnie zgłosiła że ma problem połączeniem.
Offline
[quote=mati75]Jak vps gdzie masz własne jądro to [deb]xtables-addons-dkms[/deb], taka konfiguracja:
DROP tcp -- anywhere anywhere -m geoip --source-country KR,CN,IN,RU,SA,TR,VN,UA,BR,VE,PK,JP
wycina 90% nie chcianego ruchu. Do tej pory jedna osoba się do mnie zgłosiła że ma problem połączeniem.[/quote]
Szkoda czasu, 95% ataków na phpmyadmina i inne "backoffice" i tak idzie przez TORa,
więc GEOIP pod względem bezpieczeństwa można o doopę potłuc.
GEOIP może pomóc jedynie na ataki DOS/DDOS z zagranicy, ale do tego lepszy jest CloudFlare
Porządna autoryzacja http + limit prób (np apache evasive) to minimum, optymalny i moim zdaniem niezniszczalny sposób to dodatkowa autoryzacja certem PKCS$12.
Pierwszy raz mi się udało zrobić pKCS#12 na Apachu i Ligthttpd wg tego:
https://linuxconfig.org/apache-web-server-ssl-authentication
Od tego czasu to moje ulubione zabezpieczenie. ;)
Ostatnio edytowany przez Jacekalex (2018-06-01 19:25:29)
Offline
Time (s) | Query |
---|---|
0.00009 | SET CHARSET latin2 |
0.00006 | SET NAMES latin2 |
0.00095 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.220.97.161' WHERE u.id=1 |
0.00075 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.220.97.161', 1732414026) |
0.00072 | SELECT * FROM punbb_online WHERE logged<1732413726 |
0.00661 | DELETE FROM punbb_online WHERE ident='54.36.148.248' |
0.00098 | DELETE FROM punbb_online WHERE ident='54.36.149.10' |
0.00065 | SELECT topic_id FROM punbb_posts WHERE id=319611 |
0.00124 | SELECT id FROM punbb_posts WHERE topic_id=30459 ORDER BY posted |
0.00034 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=30459 AND t.moved_to IS NULL |
0.00053 | SELECT search_for, replace_with FROM punbb_censoring |
0.00065 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=30459 ORDER BY p.id LIMIT 0,25 |
0.00086 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=30459 |
Total query time: 0.01443 s |