Әртүрлі веб-сайттарда және форумдарда көптен бері WordPress сайттарында көптеген қатыгездік шабуылдар туралы айтылған мақалалар мен тақырыптар болды. Жақында бұл инфекцияға тап болды. :)
Осы лауазымда WordPress-та жұмыс істейтін сайттарға құпия сөзді таңдауда тәжірибем туралы айтып бергім келеді. Дереу менің барлық сайттарым nginx + php-fpm жұмыс істейтінін ескеремін .
Нұсқаулық ретінде бір мақала негіз болды. Дегенмен, сипатталған рецепт оның шабуылдаушылары ерекшелігі үшін сәл өзгертілген болатын. :)
Теңшеу
Бірінші қадам - fail2ban орнату. Бұл қиындықтарды тудырмауы керек.
мүмкіндіктерді орнату fail2ban
Содан кейін /etc/fail2ban/jail.conf конфигурациялық файлының соңына келесі қосамыз :
[nginx-wp-auth] enabled = true filter = nginx-wp-auth action = iptables-multiport [name = wp-auth, port = «http, https»] logpath = /var/log/nginx/*.access.log maxretry = 3 bandime = 3600
Бұл жағдайда, әрекет қолданушы хаттамада ғана рұқсат етілмейді және оларды wp-auth деп белгілейді. Журнал жолында журналдардың жолын белгілеңіз.
Барлық журналдар мысалы.com.com.access.log сияқты талданатын болады. Веб-торап журналдары үшін арнайы журнал атаулары, мысалы, wordpress-example.com.access.log, тек осы журнал файлдары талданатын етіп орнатуға болады.
Бір идентке авторизациялау әрекеттерінің ең көп саны үшеу. Блоктау уақыты - сағат. Осы екі параметрлерді жеке таңдауға болады.
Келесі қадам - сүзгі жасау.
touch /etc/fail2ban/filter.d/nginx-wp-auth.conf түртіңіз
Осы акция кезінде қиындықтар болды: түпнұсқадан шыққан мысал жұмыс істемеді. Және ол өзгеруі тиіс. :)
[Анықтау]
failregex = <HOST>. * / wp-login.php HTTP / 1.1 «200
<HOST>. * / Wp-login.php / HTTP / 1.1 «302
<HOST>. * / Wp-login.php HTTP / 1.0 «200
ignoreregex =
Бірінші параметр журнал файлдарында болуы керек барлық сәйкестіктерді қамтиды. Мұнда сіз өзіңіздің серверіңіздің журналдарында шабуылдаушылардың сұрауларын талдап, wp-login.php-ға қатысты күдікті барлық нәрселерді қосыңыз.
Екінші параметр бірінші жолдан алып тастауға арналған. Бұл міндетті емес және бос болып қалады.
Тестілеу
Сүзгіні жасағаннан кейін оның жұмысын мына пәрменмен тексеріңіз:
fail2ban-regex / var / log / nginx / example.com .access.log /etc/fail2ban/filter.d/nginx-wp-auth.conf
Табылған матчтар тест нәтижелерінде көрсетіледі. Мысалы:
Сынақтарды жүргізу
=============
Тіркеу файлын қолданыңыз: /etc/fail2ban/filter.d/nginx-wp-auth.conf
Журнал файлын қолданыңыз: /var/log/nginx/xxx.ru..access.log
Нәтижелері
=======
Failregex
| - Тұрақты өрнектер:
| [1]. * / Wp-login.php HTTP / 1.1 «200
| [2]. * / Wp-login.php / HTTP / 1.1 «302
| [3]. * / Wp-login.php HTTP / 1.0 «200
|
`- Матчтардың саны:
[1] 1 сәйкестік
[2] 0 сәйкестік
[3] 0 матч (а)
Ignoreregex
| - Тұрақты өрнектер:
|
`- Матчтардың саны:
Резюме
=======
Мекенжайлар табылды:
[1]
192.99.186.30 (Fri Jul 04 07:29:20 2014)
[2]
[3]
Күн үлгілерінің хиттері:
0 hit (s): MONTH күні сағат: минут: секунд
0 рет (а): WEEKDAY AY Күні сағаты: минут: екінші жыл
0 рет (а): WEEKDAY AY Күні сағаты: минут: секунд
0 hit (s): Жыл / ай / Күн Сағат: Минут: Екінші
0 hit (s): Күн / Ай / Жыл Сағаты: Минут: Екінші
0 hit (s): Күн / Ай / Жыл Сағаты: Минут: Екінші
58 рет (а): Күн / ай / Жыл: Сағат: Минут: Екінші
0 hit (s): Ай / Күн / Жыл: Сағат: Минут: Екінші
0 hit (s): Жылдық айлық күн сағаты: минут: секунд
0 hit (s): Year.Month.Day Hour: Минут: Екінші
0 хит (-дер): Күн-ай-жыл сағаты: минут: екінші [.Миллисекунд]
0 hit (s): Күн-ай-сағат уақыты: минут: екінші
0 hit (s): TAI64N
0 hit (s): Epoch
0 hit (s): ISO 8601
0 hit (s): Сағат: Минут: Екінші
0 hit (s): <Month / Day / Year @ Hour: Minute: Second>
Сәттілік, матчтың жалпы саны - 1 Құлыптау журналын тексеру
Fail2ban өндірілген барлық құлыптарды жазады. Қажет болған жағдайда /var/log/fail2ban.log файлының бар болуын тексеруге болады.
grep WARNING /var/log/fail2ban.log
