Uzoq vaqt mobaynida turli veb-saytlarda va forumlarda WordPress saytlariga ko'p sonli qo'pollik hujumlari haqida so'z boradigan maqolalar va mavzular bor edi. So'nggi paytlarda ushbu infektsiyaga duch kelgan. :)
Ushbu maqolada WordPress-da ishlaydigan saytlarda parolni tanlash bilan bog'liq bo'lgan tajribam haqida sizlarga aytib o'tmoqchiman. Darhol mening barcha saytlarim nginx + php-fpm-da ishlashini ta'kidlayman .
Tavsif sifatida bitta maqola asos bo'ldi. Biroq, ta'rif etilgan retsepti hujumchilarning o'ziga xos xususiyatlari uchun biroz o'zgartirilishi kerak edi. :)
Xususiylashtirish
Birinchi qadam fail2ban o'rnatish. Bu qiyinchiliklarga olib kelmasligi kerak.
qobiliyat o'rnatish fail2ban
Shundan so'ng biz /etc/fail2ban/jail.conf konfiguratsiya faylining oxirigacha quyidagilarni qo'shamiz :
[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 bandim = 3600
Bunday holatda, ushbu protsessor faqat buzilgan protokollarga kirishni bloklaydi va ularni wp-auth deb belgilaydi. Kundalik yo'lda loglar yo'lini belgilang.
Barcha jurnallar example.com.access.log kabi tahlil qilinadi. Veb-saytlar jurnallari uchun, masalan, wordpress-example.com.access.log maxsus nomlarini o'rnatishingiz mumkin, shunda faqat shu log fayllari tahlil qilinadi.
Bir ip uchun avtorizatsiya qilishning maksimal soni uchta. Bloklash vaqti - bir soat. Har ikkala parametr alohida-alohida tanlanishi mumkin.
Keyingi qadam filtr yaratishdir.
Touch /etc/fail2ban/filter.d/nginx-wp-auth.conf manzilini tanlang
Ushbu aktsiya davomida men qiyinchiliklarga duch keldim: asl nusxadagi misol ishlamadi. Va u o'zgarishi kerak edi. :)
[Ta'rif] 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 =
Birinchi parametr log fayllarida mavjud bo'lgan barcha mos keladigan ma'lumotlarni o'z ichiga oladi. Bu erda siz serveringizdagi jurnallarda tajovuzkorlarning talablarini tahlil qilish va wp-login.php bilan bog'liq barcha shubhali narsalarni kiritishingiz kerak.
Ikkinchi parametr birinchi satrdan istisnolar uchun mo'ljallangan. Bu shart emas va bo'sh qolmoqda.
Viktorina
Filtrni yaratganingizdan so'ng, uning ishini buyruq bilan tekshiring:
fail2ban-regex / var / log / nginx / example.com .access.log /etc/fail2ban/filter.d/nginx-wp-auth.conf
Topilgan topilgan testlar test natijalarida ko'rsatiladi. Masalan:
Sinovlarni boshlash ============= Regex faylini ishlatish: /etc/fail2ban/filter.d/nginx-wp-auth.conf Kundalik fayldan foydalaning: /var/log/nginx/xxx.ru..access.log Natijalar ======= Failregex | - Muntazam iboralar: | [1]. * / Wp-login.php HTTP / 1.1 "200 | [2]. * / Wp-login.php / HTTP / 1.1 "302 | [3]. * / Wp-login.php HTTP / 1.0 "200 | `- Klublar soni: [1] 1 ta natija [2] 0 ta natijadan 1-tasi [3] 0 ta natijadan 1-tasi Ignoreregex | - Muntazam iboralar: | `- Klublar soni: Xulosa ======= Topilgan manzillar: [1] 192.99.186.30 (Jum Jul 04 07:29:20 2014) [2] [3] Sana shabloni: 0 hit (lar): MONTH Kun Soati: daqiqa: sekunddan 0 hit (lar): WEEKDAY AY Oy Kun Soati: daqiqa: Ikkinchi yil 0 hit (lar): WEEKDAY OY OY kuni soat: soniya: sekunddan 0 hit (lar): Yil / Oy / Kun Kuni: Daqiqa: Ikkinchi 0 hit (lar): Kun / Oy / yil Soat: daqiqa: Ikkinchi 0 hit (lar): Kun / Oy / yil Soat: daqiqa: Ikkinchi 58 hit (lar): kun / oy / yil: soat: daqiqa: sekund 0 hit (lar): Bir oy / kun / yil: Soat: daqiqa: sekund 0 hit (lar): Yil oyi kungi soati: daqiqa: sekund 0 hit (lar): Yil.Month.Day soat: daqiqa: sekunddan 0 hit (lar): KUN-MON-Yil soati: daqiqa: sekund [.Millisecond] 0 hits (s): Kun-oy-yilgi soati: daqiqa: sekund 0 hit (lar): TAI64N 0 hit (lar): Epoch 0 hit (lar): ISO 8601 0 hit (lar): Soat: daqiqa: sekund 0 hit (lar): <oy / kun / yil @ soat: daqiqa: sek> Muvaffaqiyat, o'yin umumiy soni 1
Qulflash jurnalini tekshirish
Fail2ban ishlab chiqarilgan barcha asosiylarni yozib oladi. Agar kerak bo'lsa, ularning mavjudligi uchun /var/log/fail2ban.log log faylini tekshirishingiz mumkin.
ogohlantirish /var/log/fail2ban.log