Sziasztok
Adott egy szerver, rajta sok féle honlap, többek között Wordpress és Joomla. Ezekre nincs közvetlen ráhatásom. Olyanok amilyenek. A frissítés úgy-ahogy kikényszeríthető.
Magas CPU terhelést generálnak, ha megpróbálják feltörni az admint.
Random IP-ről jönnek és nagyon sokan.
A következő fail2ban filtert raktam össze netes ajánlásokból:
cat /etc/fail2ban/filter.d/framework-ddos.conf
[INCLUDES]
before = common.conf
[Definition]
_daemon = framework-ddos
failregex = .*:(80|443) <HOST> .*POST .*/xmlrpc.php
.*:(80|443) <HOST> .*POST .*/wp-login.php
.*:(80|443) <HOST> .*POST /administrator/index.php HTTP
ignoreregex =
jail.conf:
[framework-ddos]
enabled = true
filter = framework-ddos
action = iptables-ddos[name=framework-ddos, port=http, protocol=tcp]
logpath = /var/log/apache2/other_vhosts_access.log
maxretry = 5
# findtime: 10 mins
findtime = 600
# bantime: 1 week
bantime = 604800
Szépen működik, de a probléma az, hogy a weboldal tulajok adminban történő matatására is ugrik. Hogyan lehetne tovább javítani, hogy tényleg csak a login próbálkozásokra szűrjön?
Alternatív megoldásnak még az jutott eszembe, hogy mérem az egyes vhostok CPU terhelését és ha elér egy küszöbértéket, error 503-ra irányítom, de nem tudom, hogy mennyire bevett és etikus gyakorlat?
- 4200 megtekintés
Hozzászólások
Ha jól értem, akkor 10 perc alatt 5db belépésnél büntetsz. Szerintem ha próbálkoznak, akkor jóval sűrűbben jönnek a kérések.
- A hozzászóláshoz be kell jelentkezni
Talán igen, talán nem:) Elég súnyin művelik. Ugyanaz az oldalt megsorozzák 1 IP-ről 4-5x, aztán másik IP-ről és így tovább. Nem csináltam még statisztikát, hogy az első 5 mikor jön ismét vissza, de félek vékony a jég a normál admin kattingat és e között.
- A hozzászóláshoz be kell jelentkezni
Tapasztalataim szerint az alap fail2ban stb. megoldások gyári filtereihez igazítva "úsznak a radar alatt". A "vékony jégen" meg lehet azért már csúszkálni, kamu useragent-ek, hamis google bot-ok, stb.
"If I had six hours to chop down a tree, I'd spend the first four hours sharpening the axe."
- A hozzászóláshoz be kell jelentkezni
"If I had six hours to chop down a tree, I'd spend the first four hours sharpening the axe."
- A hozzászóláshoz be kell jelentkezni
A tulajok egyébként főképp magyarok, vagy teljesen változó?
Olykor abból is lehet profitálni, hogy ilyen kicsi ország vagyunk. Tudom, hogy 2016 meg nem olyan szép megoldás, de a fail2ban-hoz tudsz csinálni olyan ignore list-et / action-t ami mellőzi a magyar IP-ket. (tudom proxy, tudom tor, de itt nyilván botnet támadásról van szó)
"If I had six hours to chop down a tree, I'd spend the first four hours sharpening the axe."
- A hozzászóláshoz be kell jelentkezni
fail2ban-nal akarsz DDoS kivedeni? :D Azert az eleg vicces.
Ha tenyleg elkezdenek DDoSolni mar mint rendesen akkor elobb fog a szervered osszeomlani out of memory-val mint ,hogy a failban megtudna vedeni vagy fognak egy 404-es oldalt elkezdenek random requestekkel tolni ,hogy kihaljon a HTTP szerver.
Ilyen ha DDoSolnak:
https://www.dropbox.com/s/y46tpksq4uj4aua/Screenshot%202016-12-16%2020…
--
"ssh in a for loop is not a solution" – Luke Kanies, Puppet developer
- A hozzászóláshoz be kell jelentkezni
Szerintem sokkal inkább jogosultság szerzésre gondolt, csak ezt olyan agresszívan teszik, hogy megterheli a szerverét - érted, nem statikus szöveget, hanem php fájlokat get-post-olnak. Elég általános ez sajnos.
btw: Hajdanán én is raktam emiatt rickroll jutub linket xmlrpc.php-ba. :D (plain, tagek nélkül)
De van ennél is lejjebb! Láttam olyan hazai "szolgáltatót", aki pl. törölteti KÖTELEZŐEN az xmlrpc.php-t. :D :D
"If I had six hours to chop down a tree, I'd spend the first four hours sharpening the axe."
- A hozzászóláshoz be kell jelentkezni
Őszintén mi az xmlrpc.php, ki és mire használja a gyakorlatban?
Wiki szerint távoli buzerálásra jó. Oké. Kell ez bárkinek is?
Tényleg érdekel, mert ez a másik kedvelt törési felület ahogy látom.
- A hozzászóláshoz be kell jelentkezni
Áh.. ne ezen törd a fejed! Elég sok minden tudja / szokta használni, az oldalak ezen keresztül tudnak egymással kommunikálni, mobil app-ok tudják használni, elég széles a felhasználási terület. (csak guglizz rá)
Törölni / Honeypot-ot rakni a helyére értelmetlen, mert túl sok lesz a fals pozitív, valamint egy update-tel úgy is felülíródik/újragenerálódik...
"If I had six hours to chop down a tree, I'd spend the first four hours sharpening the axe."
- A hozzászóláshoz be kell jelentkezni
"Ha tenyleg elkezdenek DDoSolni mar mint rendesen"
Úgy gondolom DDoS és DDoS is között van különbség. Vagy ha ez nem az, tessék neki jobb nevet adni. Ismereteim szerint ez (is) az.
Ez itt bizonyára nem a "rendesen" kategória van.
A Fail2Ban erre a szintre még jó, mert visszatérő IP-kről van szó, ami megszórja az egyik vhostot, az a másikat már nem tudja a ban miatt.
A pár órás esti megszórások eltüntek, tehát hatékonynak bizonyul ez a része.
- A hozzászóláshoz be kell jelentkezni
Vagy ha ez nem az, tessék neki jobb nevet adni
DoS vs. DDoS. Lásd például itt: http://www.webopedia.com/TERM/D/DDoS_attack.html
- A hozzászóláshoz be kell jelentkezni
"The Difference Between DoS and DDos Attacks
A Denial of Service (DoS) attack is different from a DDoS attack. The DoS attack typically uses one computer and one Internet connection to flood a targeted system or resource. The DDoS attack uses multiple computers and Internet connections to flood the targeted resource. DDoS attacks are often global attacks, distributed via botnets."
Köszi, de ennek fényében a több IP-ről jövő (gyanúsan botnetből érkező) 1 célgép felő irányuló támadás nem DDoS? Mert eddig így tudtam és a fenti sorokat is így értelmezem.
- A hozzászóláshoz be kell jelentkezni
A leiras alapjan nekem ez inkabb tunik bruteforce/dicthack jellegu tamadasnak. A (D)DoS altalaban a szolgaltatas ellen iranyul, nem annak feltoresere.
- A hozzászóláshoz be kell jelentkezni
Hm, igen, igazad lehet. Botnet által generált bruteforce. Köszi.
- A hozzászóláshoz be kell jelentkezni
En most bevezettem, hogy apache + geoip vel .hu esetleg .us meg .eu, sokat tud segiteni :>
Fedora 25, Thinkpad x220
- A hozzászóláshoz be kell jelentkezni
Igen, geoipvel nekem is jó tapasztalatom van egy másik szerveren és szolgáltatási területen, de szívás is volt vele. Az .hu IP adatbázisok elég hiányosak voltak, így több user nem tudott tudta elérni. Főleg mobil internetes userek jeleztek, de volt több vidéki szolgáltatós is.
Te nem tapasztaltál ilyet?
- A hozzászóláshoz be kell jelentkezni
Egyelőre nem. Bár mivel a legtöbb honlap magára hagyott, vagy alig gondozott nem szólt még senki. Mondjuk mióta ipv4 "elfogyott", azóta talán jobban kezd beállni a geoip is. Bár mozgások mindig lesznek (adok-veszek), de kibírható szerintem.
Fedora 25, Thinkpad x220
- A hozzászóláshoz be kell jelentkezni
Ugyan ezt említettem én is fentebb. Kicsi országnak is vannak előnyei. De azonnal bukott az egész, ha vlaki elkezd használni egy külföldi címes VPN-t, valami plugint, ami külföldről kommunikálna, nem elég friss a geo adatbázisod (ha online-t használsz is elő tud fordulni) stb.
Saját honlaphoz szerintem még mindig szuper, de ha "generál" van rá szükség (mint jelen esetben), akkor nem jó sajnos.
Max ha készítesz az ügyfeleidnek egy egyszerű "kapcsolót" ehhez, hogy tudják ők maguk ki- és bekapcsolni.
"If I had six hours to chop down a tree, I'd spend the first four hours sharpening the axe."
- A hozzászóláshoz be kell jelentkezni
@ventura: köszi, futottam vele ismét egy kört ez alapján, annyival kiegészítve, hogy nem Directory /, hanem
[FilesMatch "^(wp-login\.php|wp-trackback\.php|administrator)"]
SetEnvIf GEOIP_COUNTRY_CODE HU AllowCountry
Deny from all
Allow from env=AllowCountry
[/FilesMatch]
Így, ha hibás a HU adatbázis, nem sérül a felhasználó élmény. Legrosszabb esetben nem éri el az adminja.
@andras0602: köszi a kapcsolós ötletet, ez megoldhatja az előző problémát. Az ajánlott linket megnézem, köszi! Igen, én vagyok az ;)
- A hozzászóláshoz be kell jelentkezni
Jahh igen, nem mondtam, hogy arra húzzuk rá amire akarjuk :D
Fedora 25, Thinkpad x220
- A hozzászóláshoz be kell jelentkezni
Nem akarom ismételni magam, se reklámot csinálni, de fentebb már említettem a BitNinját
.
Egy ideje már használom, igazán jó tapasztalataim vannak vele. Tökéletesen az olyan problémákra (is) van, mint amit te is említettél.
Ha a Kandós Proci85 vagy, akkor szegről-végről már ismerjük is egymást, talán jövök is neked eggyel, (egy matek tárgyam tkp. miattad lett meg :D) írj és segítek beállítás és account ügyben is akár! ;)
"If I had six hours to chop down a tree, I'd spend the first four hours sharpening the axe."
- A hozzászóláshoz be kell jelentkezni
Jól néz ki, regisztrálok is egy 7 days trialt. WHM plugin esetleg?
- A hozzászóláshoz be kell jelentkezni
1: csak érdekességképp megnéztem egy (legfrissebb verziójú) wp oldalam admin logját, és abban egy kérés sem jött a wp-login.php-ra a ki- és bejelentkezéseken kívül, ergo - annak ellenére amit fentebb írsz - az adminok benti matatása nincs erre ráhatással. vagyis én mindenképpen ezt az url-t külön kezelném és a default maxretry-t én a helyedben 3-ra tenném a wp-login.php esetén, és az időkeretet is feljebb venném (ha azt látod, hogy az ip-k változnak, de egy órán belül azért vissza-visszatérnek, akkor mehet a findtime egy órára). pont a napokban javasoltam egy alternatív, loop-szerű megoldást, amivel a tényleg bénákat hosszú távon el lehet különíteni a botoktól (lehet, hogy minimális effort lesz, hogy vkit manuálisan unbanolj, de hát ez belefér szvsz).
2: az xmlrpc.php az api végpont. ergo ezt se nagyon kéne az adminok "benti" tevékenysége érintse.
3: gondolom a felesleges terhelést okozó próbálkozások java pontosan ezekre az url-ekre jönnek. ergo egy $ a regex végére, és ezáltal is lehet még elkülöníteni próbálkozásokat.
4: ha jól emlékszem, Joomla esetében nem a /administrator url-re szűrtem, hanem az "authentication failure." szövegre. ezzel is elkerülhető, hogy az adminjaid "benti" matatásával összekeverd a tényleges próbálkozásokat. de lehet, hogy ehhez már külön plugint használtam? sajnos nem emlékszem, rég volt :-/
5: ha a logjaid külön vannak, keresstess a fail2bannal egyszerre többen!
- A hozzászóláshoz be kell jelentkezni
Mindamellett, hogy a fail2ban-t egy zseniálisan jó eszköznek tartom, több éve használom/használtam, egy botnet támadás kivédésre sajnos alkalmatlan.
Még ha közel végtelenre rakod is a figyelési időt és a naplókat csak nagyon ritkán forgatod (nyilván a figyelés miatt) akkor sem fogsz tudni vele egy ilyen botnet támadást védeni. Több száz, illetve ezer db ip-vel egymás után ütnek rajtad 1-2-t utána az az ip téged már nem, hanem egy másik szervert fog bökdösni. Idióta példa: mint amikor a Mario-ban ugrálsz egyik tégláról a másikra, és főleg csak 1 irányba ugrálsz. (mario az ip, amiből sok van, nekünk meg egy pár téglánk)
Több ezer szerverre volna szükséged és centralizált logolásra, hogy ezt ki tudd védeni. Nekem sajnos sokkal kevesebb szerverem van. Ilyenkor hatalmas előny egy "elosztott rendszer" - vagy "cloud protection system" - nem írom le újra... na jó de :D BitNinja. Egyébként ha tudtok, minden alternatíva érdekel!
"If I had six hours to chop down a tree, I'd spend the first four hours sharpening the axe."
- A hozzászóláshoz be kell jelentkezni
Egyre több portálmotor már telepítésénél javasolja, hogy ne default címen legyen az admin login.
WP-hez (gondolom máshoz is) van bővítmény, ami kimondottam az admin felületet védi.
Már találkoztam szolgáltatónál, és mi is alkalmazzuk, hogy webszerver segítségével teszünk egy egyszerű jelszavas védelmet az admin felületekre. Ha a user/passwd is a domain név, akkor is 100%-os a védelem az eddigi kb 3 éves tapasztalat alapján.
Vannak publikus feketelisták olyan címekkel, amikről támadják az oldalakat. Ezekre is lehet szűrni.
Szóval egészen egyszerű, ingyenes eszközökkel vissza lehet szorítani az ilyen terheléseket.
Az ügyfélnek is érdeke, hogy gyors legyen az oldala, ezért meg lehet kérni, egy plugin telepítésére, vagy egy plusz jelszó megadására.
- A hozzászóláshoz be kell jelentkezni
Sajnos ez a megoldás halott ötlet, egyrészt mert nem csak az admin-t kell védeni, másrészt a fentebb említett CMS-ek esetén lesz olyan plugin, amiben az admin login elérése hardcode-olva van. És 100%, hogy az ügyfél fog ilyen plugin-t telepíteni. (elég egy retek téma, nem kell több)
Az eredmény? Az ügyfél kizárja magát a saját oldaláról (jobb esetben! működni még fog a site) és téged fog zaklatni vele, mert kézzel nem fogja tudni kikapcsolni plugin-t (átnevezni/törölni a plugin mappát). Kis "szerencsével" csak megijed és nem szól neked, nem mer hozzányúlni/frissíteni, közben lesz egy exploit, és nyugodt lehetsz, a kis indonéz barátaink bejutnak admin login page nélkül is. :D
WP-hez szerintem messze a legjobb védelmi bővítmény a WordFence
Ingyen is használható, értesítéseket és statokat is csinál neked, vírust keres, szól, ha van update valamihez, "süt-főz-mosogat". A nagy ámerikában viccen kívül, utólag és hálából veszik meg a premium-ot userek, mert annyit véd a kis wordpress-ükön.
De mint Proci85 fentebb írta, nem ő kezeli az oldalakat (ez a tipikusabb, lássuk be). És ha belegondolsz, erőforrás szempontjából marhára nem éri meg (különösen sok oldalnál) ilyen védelmi plugin-ok telepítése NEKÜNK, aki a szervert üzemelteti. Ahány oldal annyi AV, "tűzfal" szerűség, detector, stb.
A legoptimálisabb megoldásnak továbbra is a BitNinját tartom, ami minden egyben, log analyzer, tűzfal, captcha, stb.:
Így 1 füst alatt letudsz közel mindent, nincs fölösleges "overhead". Megy ingyen is, de nekem a védelemért amit ad, BŐVEN megér annyit, amennyibe kerül. Különösen, ha az időt és ügyfelek bizalmát nézem, amit meg tudok vele menteni. ( ha a szerver a tiéd, bajban a hibás mindig "úgy is te leszel" ;) ) Szerintem egyszerű a használata is. Meg ugye bármennyire is pro vagy ezen a téren, szinte kizárt, hogy 1 emberként jobb leszel, mint egy csapat, aki direkt és csak ezzel foglalkozik. (a kényelmen és a modularitáson kívül ez a másik ok, ami miatt az emberek CMS-eket használnak, nem?)
"If I had six hours to chop down a tree, I'd spend the first four hours sharpening the axe."
- A hozzászóláshoz be kell jelentkezni
Melyik megoldás a halott ötlet?
2 fő fejlesztővel szó szerint dupla létszám a BitNinja, mint az egy fős pro üzemeltető. De jobb hosting cégeknél nem egy fő szokta üzemeltetni a szervereket. Én nem azt mondtam, hogy a web-server csapata rosszat csinálna, hanem, hogy van pár egyszerű módszer, ami jelentősen visszaszorítja a felesleges terhelést.
Konkrétan nincsen tapasztalatom barkácsolt WP oldalak üzemeltetésében, így nem tudom, milyen problémák jelentkeznek a rosszul megírt pluginek mellett, ha le van védve plusz jelszóval az admin oldal, vagy ipset segítségével fekete listára van téve egy nagyobb ip lista, amit naponta frissítenek automatizáltan.
- A hozzászóláshoz be kell jelentkezni
Passz, ezekbe a dolgokba nem látok bele, de talán értem mire célzol.
Viszont nagyon szeretem az ilyen "keep it simple" megoldásokat, szóval ha tudsz még bármilyen hasonló "best practice"-t a témát illetően, adhatnál még pár ötletet, mert egész biztos hasznos volna mindenkinek!
Az előző viszont kicsit "vízipisztollyal elefántra" megoldásnak tűnt nekem. Azért adok neki egy próbát! Van egy használaton kívüli cloudatcost-os vps-em, dobok rá valami random pizzéria template-et, max. 1-2 hónap és minden kiderül! :D
"If I had six hours to chop down a tree, I'd spend the first four hours sharpening the axe."
- A hozzászóláshoz be kell jelentkezni
Egy kisebb webszerveren. Kb 20 holnap van rajta.
https://github.com/trick77/ipset-blacklist/blob/master/ipset-blacklist…
iptables -L -v
pkts bytes target prot opt in out source destination
671K 40M DROP all -- any any anywhere anywhere match-set blacklist src
Hosting szolgáltató küldhet hirlevelet az ügyfeleinek, hogy WP-hez ajánlja ezt és ezt a bővítményt az oldal védelme érdekében...
Ha a 10% beállítja, javult a helyzet, egy óra munka volt vele.
Mindenki maga tudja mire van szüksége.
Ezek nyilván nem profi védelmek, de az amatőr "támadásokat" egyszerűen ki lehet védeni.
- A hozzászóláshoz be kell jelentkezni
+1 wordfence-re. szépen lehet látni hogy miket próbálnak be admin,domainnév,stb.
- A hozzászóláshoz be kell jelentkezni
Teljesen egyetértek. Wordfence megbízhatóan teszi a dolgát, van több honlapom is, amin több tucat támadást blokkol naponta. Állandóan jönnek a "robotok" és próbálkoznak. Eddig minden hibátlan vele. És igazából az ingyenes verzió is kb mindent tud, ami kell. Amúgy vicces látni, hogy milyen névvel próbálkozgatnak, vannak érdekes nevek..:D
- A hozzászóláshoz be kell jelentkezni
Érdemben nem tudok hozzászólni, de mondjuk kínát és koreát nem árt rögtön kizárni, index.php-ba írva ez bejön:
$latogato=gethostbyaddr(GetIP());
#korea hanyagolasa
if (substr_count($latogato,'.kr')>=1) header("Location: http://www.disney.com");
#kina hanyagolasa
if (substr_count($latogato,'.cn')>=1) header("Location: http://www.disney.com");
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
Megoldják ezt ők maguknak apránként. :D BAN-olják saját magukat... (hidd el, láttam a túloldalról is a Nagy Falat)
Ráadásul piszok módon erősödnek a gazdasági kapcsolatok is, lényegesen több a valós látogatás Kínából, mint pár évvel ezelőtt.
Én Indonéziát és az arab világot érzem nagyobb "problémának" a töménytelen script kiddie-vel meg a végtelen szabadidejükkel. A ruszkik meg... továbbra is pro szinten űzik az ipart...
"If I had six hours to chop down a tree, I'd spend the first four hours sharpening the axe."
- A hozzászóláshoz be kell jelentkezni
Bár tudom, hogy ez nem megoldás neked de hátha hasznos lehet ötlet szinten. Én csak a saját céges pár oldalunkat védtem le, úgy hogy csak bizonyos ip címekről engedem a hozzáférést+fail2ban. A bejövő http/https kéréseket pedig varnish-al kezelem, bár az itt most nem releváns azt hiszem. A document rootban lévő .htacces tartalma:
Kézi megoldás de nekem bevált az illetéktelen próbálkozásoknál. Természetesen utána bannolva vannak akik nem oda illenek.
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$
RewriteCond %{REMOTE_ADDR} !^xxx\.xxx\.xxx\.xxx$
RewriteCond %{REMOTE_ADDR} !^yyy\.yyy\.yyy\.yyy$
RewriteRule ^(.*)$ - [R=403,L]
- A hozzászóláshoz be kell jelentkezni
fail2banban van lehetoseg ip whitelistre, felveszed az admin(ok) ip tartomanyait.
vagy akar csinalsz egy sajat cuccot, az admin meg eloszor megnyitja a http://teipd/engedelyezz-a-fail2banban.php oldalt, ami liveban felveszi a whitelistre (vagy irsz egy wrapper az iptables elott, ami nem tiltha ki az ipt aki meglatogatta ezt az oldalt)
--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
- A hozzászóláshoz be kell jelentkezni
Hm, jó az ötlet, köszönöm!
- A hozzászóláshoz be kell jelentkezni
Tegyél be a login oldal elé egy basic auth-ot. A 401 szerintem elijeszti a botokat, mivel nem látnak WP oldalt. Akkor brútolnak ha látják, hogy ott egy valódi WP admin oldal rejtőzik.
Persze lehet, hogy nekiesnek a basic auth-nak is, de kevésbé tartom valószínűnek, és a terhelés is kisebb lesz. Ráadásul arra valszeg egyszerűbb fail2ban -t konfigolni.
- A hozzászóláshoz be kell jelentkezni
+1
A mi tárhely szolgaltatonk is ezt csinálja. Wpr/wpr az user/pass (igazából nem az), nem bonyolult, de tavol tart.
- A hozzászóláshoz be kell jelentkezni
+1
- A hozzászóláshoz be kell jelentkezni