Anti-Hammering létezik ftp, ill. ssh serverre?

Fórumok

Hali Linux guruk!

A kérdésem az, hogy létezik-e olyan megoldás, hogy a kis otthoni serveremen futó sshd / ftpd anti hammering technológiát alkalmazzon?

Sok időt töltöttem google kereséssel ezügyben, de nemsok sikerre vezetett.

Az otthoni serverem naplójában már kb 2 hete szótáras törési eljárással próbálkoznak különféle ip-kről ssh-n keresztül bejelentkezni. Biztonsági szempontból ezért olyan felhasználónevet választottam, amit szótáras törés tuti nem tartalmaz, mert van benne mindenféle karakter...

Ez egyelőre így oké, mert tuti, hogy ezzel a módszerrel nem jön be az illető, de mégis zavar a logban a sok bejegyzés.

Windows-os ftp szervereknél van egy un. anti-hammering megoldás erre: az ugyanarról az ip címről érkező belépési kísérletek, ha meghaladnak egy limitet, (pl.: 3 sikertelen próbálkozás / 10 perc), akkor azt az IP-t letiltja egyénileg beállított időre.

Nos linuxon nemnagyon találtam megoldást erre, eddig csak sshd conf-ba mászkáltam, de ilyennel nem találkoztam.

Gondolkodtam, hogy iptables-el esetleg megoldható lenne, de igazából az sem tűnik megfelelő megoldásnak.

Nos linuxos guruk! Világosítsatok már fel, hogy van ez linux alatt és mit kell tennem, hogy be tudjam állítani.

üdv.: Reznor

Hozzászólások

ugyan ilyet még nem csináltam, de iptables tökéletes a feladatra. ugyanúgy betudod állítani, hogy hány request/sec jöhet egy portra, és utána tiltsa azt le...

A fail2ban a csomag neve, amit megnézz. Az iptables kell neki, mert azzal működik. Meg asszem perl vagy python. De majd meglátod.

--
"SzAM-7 -es, tudjátok amivel a Mirage-okat szokták lelőni" - Robi.

erre nalam egy ilyen van iptables-ben:


iptables -A INPUT -p tcp --syn --dport ssh -m recent --update --seconds 60 --hitcount 3 -j DROP
iptables -A INPUT -p tcp --syn --dport ssh -m recent --set -j ACCEPT

Persze iptables-t csak ugy, ha erted is, mit csinalsz...

Nah teszteltem, tökéletes, bár még nehézségeim vannak a megértésével.

Első problémám volt, hogy az iptables lista végére tettem be... Így ameddigre már odaért volna a feltételhez, már korábban el lett fogadva a csomag, magyarul nem volt hatása a kódnak..

Aztán beraktam előre, de csak az első sort, még mindig nem történik semmi, azon kívül, hogy szépen a /proc/net/ipt_recent/DEFAULT file-ba naplózgat...

Ezután beraktam alá a második sort is, ami már működésre bírta a szabályt és tényleg 3-szori próbálkozás után 60 sec-et várnom kellett, hogy újra szóba álljon velem a szerver... Szóval örültem mint majom...

Csak nem értettem, hogy miért nem elég az első sor hozzá, miért kell a második..

Aztán ha a logikám nem téved: a második sor beenged mindent, de a lényege, hogy feltegye a listára az ip-t és a timestamp-et. Az első 3 esetben az első sor (update) nem csinál még semmit, de a 4-ik nél, ha igaz a feltétel, (3 syn packet / 60 second, amit a listáról ellenőriz) akkor már tilt.

Kérdés: miért nem lehet ezt egyben megcsinálni. Arra gondolok, hogy egy sorban, önmagában miért nem írja is a listát (ha üres), meg update-el is (ha nem üres, mert már van bejegyzés) és tilt is, ha kell???

iptables -A INPUT -p tcp --syn --dport ssh -m recent --update --seconds 60 --hitcount 3 -j DROP

Az iptables erre vonatkozó leírásából számomra nem derül ki, hogy ez a sor nem csinálná-e meg amit kell... Az UPDATE ezek szerint új bejegyzést nem hoz létre???

Egyébként kimerítettük a témát, tehát, köszi mindenkinek, műxik és örülök... (Csak valahogy izgatja a fantáziámat, hogy miért így műxik, miért nem úgy...)

URL: http://reznor.dyndns.org
skype: reznorbaa
mail: balazs.huvely@gmail.com

Os: OepnSuse 11.0, meg minden amit érek az Ecomstation-t is beleértve. Szeretem az oprendszereket.

A következőt sikerült elérni:

-A INPUT -p tcp --syn --dport 22 -m recent --set -m recent --update --seconds 60 --hitcount 3 -j DROP

Ez egy sorban van, és dolgozik rendesen, annyi, hogy a sorrendiség cserélődött, tehát: először set, aztán update (drop).

Gyakorlatilag összvér megoldás, nem tudo többet a kétsorosnál, csak rövidebb...

A sorrendiség miatt 2 lehetséges próbálkozás van, a 3-iknál már tilt is azonnal.

Nah abbahagytam, majd még jövök a kérdésekkel, ha lesz.

Köszi mindent, BUÉK!

URL: http://reznor.dyndns.org
skype: reznorbaa
mail: balazs.huvely@gmail.com

Os: OepnSuse 11.0, meg minden amit érek az Ecomstation-t is beleértve. Szeretem az oprendszereket.

Ez:

"Limiting Per-IP Connection Rate
Beginning with Shorewall 3.0.4, Shorewall has a “Limit” action. Limit is invoked with a comma-separated list in place of a logging tag. The list has three elements:
The name of a “recent” set; you select the set name which must conform to the rules for a valid chain name. Different rules that specify the same set name will use the same set of counters.
The number of connections permitted in a specified time period.
The time period, expressed in seconds.
Connections that exceed the specified rate are dropped.
For example, to use a recent set name of SSHA, and to limit SSH connections to 3 per minute, use this entry in /etc/shorewall/rules:
#ACTION SOURCE DEST PROTO DEST PORT(S)
Limit:none:SSHA,3,60 net $FW tcp 22
If you want dropped connections to be logged at the info level, use this rule instead:
#ACTION SOURCE DEST PROTO DEST PORT(S)
Limit:info:SSHA,3,60 net $FW tcp 22
To summarize, you pass four pieces of information to the Limit action:
The log level. If you don't want to log, specify “none”.
The name of the recent set that you want to use (“SSHA” in this example).
The maximum number of connections to accept (3 in this example).
The number of seconds over which you are willing to accept that many connections (60 in this example)."

nem valami ilyesmi?

------------------------
Debian testing KDE amd64
MSI K8N-Neo-4, Athlon64 3800+, Leadtek 6600GT


$ apt-cache show sshguard
Package: sshguard
Priority: optional
Section: net
Installed-Size: 92
Maintainer: Ernesto Nadir Crespo Avila <ecrespo@debianvenezuela.org>
Architecture: i386
Version: 1.0-2
Depends: libc6 (>= 2.7-1)
Filename: pool/main/s/sshguard/sshguard_1.0-2_i386.deb
Size: 23808
MD5sum: f181c76784249276c0690d3983fcaed2
SHA1: ba7d45fbbd4bc8e99281aa1c4d0728a311e602ac
SHA256: ab6abd815017163b120d280da54c6e5d263fbeb59aab72ce1976018557d5fb62
Description: protects from brute force attacks against ssh
 Protects networked hosts from the today's widespread
 brute force attacks against ssh servers. It detects such attacks
 and blocks the author's address with a firewall rule.
Homepage: http://sshguard.sourceforge.net/
Tag: implemented-in::c, role::program, security::firewall, security::ids

Esetleg így:


iptables -A INPUT -m tcp -p tcp --dport 22 -m state --state NEW \
	-m hashlimit --hashlimit-name sshlimit --hashlimit-mode srcip \
	--hashlimit 1/minute --hashlimit-burst 3 -j ACCEPT
iptables -A INPUT -m tcp -p tcp --dport 22 -j DROP

Szerk.: Annyiban különbözik a fenti recent modulos szabálytól, hogy per IP limitál.

--
40% of OpenBSD installs lead to shark attacks. It's their only standing security issue.

Nalam egyszeruen nem def porton figyel az sshd.

Huhh ! Köszi a válaszokat, rengeteg megoldást kínáltatok rá, nemsokára neki is vágok és valszeg az iptables-es verzió tetszik a legjobban, ugyhogy ez fog következni...

A többiek ötletét is köszönöm, azt is kipróbálom. Bár bevallom a shorewall nekem kicsit kemény, még mindig képtelen vagyok felfogni. Ellenben az iptables-t két hónapig tanulmányoztam, azt hiszem megszerettem, és valamennyire értem is, hogy ki kivel van. Azonban nem tudtam, hogy bele lehet még biggyeszteni --dport -ot is, szóval le a kalappal, ha ilyet tud...

Már csak attól félek, hogy a 3 próbálkozás után ha levág, akkor nem csak a portot tiltja le, hanem annak az adatforgalmát is, aki meg rendes user és bennt van éppen. Szóval nem az egész hálózati forgalmat akarom levágni, hanem azt az IP-t letiltani x időre...

Nah majd próbálkozok, mert ebből még sülhet ki jó...

A többieknek is köszi a programok / csomagok neveit, meglátom mi fordítható vagy érhető el suse alá.

Vagy visszapakolom a régi bevált debian-t... :)

URL: http://reznor.dyndns.org
skype: reznorbaa
mail: balazs.huvely@gmail.com

Os: OpenSuse 11.0, meg minden amit érek az Ecomstation-t is beleértve. Szeretem az oprendszereket.