Әртүрлі веб-сайттарда және форумдарда көптен бері 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