Sziasztok!
Iptables-ben szeretnék megoldani torrent korlátozást. Olvasgattam ajánlásokat, hogy sokan az l7-filter, iptables-p2p és hasonló dolgokra esküsznek, de kezdőként nekem a lenti logika értelmezhetőbb lenne. Ezt a lenti 7 sort egy külföldi fórumon találtam, elvileg működik is. De nálam, miután a script lefut, ezekre hibát dob. Ha a lenti rész megjegyzésben van, akkor a tűzfal többi része rendesen lefut, olyankor semmire nem jelez hibát, és nmap-pal tesztelve is minden OK-nak tűnik.
Aki rutinosabb, tudna pár hasznos tanácsot adni, hogy hol nem stimmel a dolog? (A tesztelt környezet Wheezy lenne.)
iptables -A FORWARD -m string --string "torrents" --algo -kmp --65535 -j DROP
iptables -A FORWARD -m string --string "torrent" --algo -kmp --65535 -j DROP
iptables -A FORWARD -m string --string "info_hash" --algo -kmp --65535 -j DROP
iptables -A FORWARD -m string --string "announce.php?passkey=" --algo -kmp --65535 -j DROP
iptables -A FORWARD -m string --string "announce_peers" --algo -kmp --65535 -j DROP
iptables -A FORWARD -m string --string "BitTorrent protocol" --algo -kmp --65535 -j DROP
iptables -A FORWARD -m string --string "BitTorrent" --algo -kmp --65535 -j DROP
- 6222 megtekintés
Hozzászólások
Hol találtad?
Szerintem a -kmp és a --65535 lehet hibás.
A -kmp nem biztos, de az a --algo paramétere, én csak "-" nélküli formában találkoztam vele (--algo kmp), az a --65535 meg... szóval azzal nem tudok mit kezdeni. Persze ettől még lehet, hogy van ilyen, mindenesetre első menetben nekem arra jelez hibát az iptables.
- A hozzászóláshoz be kell jelentkezni
A hibát is leírhattad volna....
De valószínű, hogy az "--algo -kmp"-vel és a "--65535"-el van baja... :D
Inkább így kellene "--alog kmp" és "--to 65535"
https://wiztelsys.com/Article_iptables_bob2.html
--
Debian Linux rulez... :D
- A hozzászóláshoz be kell jelentkezni
A „kmp” elé nem kell a mínusz jel, a --65535 pedig fogalmam sincs, mi akar lenni. (Gondolom from vagy to, de mindegy, mert értelmetlen, mert nagyobb mint a max. csomagméret.)
- A hozzászóláshoz be kell jelentkezni
az valóban --to, de a 65535 portszámot jelöl, nem csomagméretet :)
- A hozzászóláshoz be kell jelentkezni
Lehetne offset is, de mindegy, minek adjam meg kézzel a maximumot? ;)
- A hozzászóláshoz be kell jelentkezni
Ez nekem így műxik éles szerveren több helyen is:
iptables -A FORWARD -m string --string "BitTorrent" --algo bm --to 65535 -j DROP
iptables -A FORWARD -m string --string "BitTorrent protocol" --algo bm --to 65535 -j DROP
iptables -A FORWARD -m string --string "peer_id=" --algo bm --to 65535 -j DROP
iptables -A FORWARD -m string --string ".torrent" --algo bm --to 65535 -j DROP
iptables -A FORWARD -m string --string "announce.php?passkey=" --algo bm --to 65535 -j DROP
iptables -A FORWARD -m string --string "torrent" --algo bm --to 65535 -j DROP
iptables -A FORWARD -m string --string "announce" --algo bm --to 65535 -j DROP
iptables -A FORWARD -m string --string "info_hash" --algo bm --to 65535 -j DROP
iptables -A FORWARD -m string --string "peer_id" --algo kmp --to 65535 -j DROP
iptables -A FORWARD -m string --string "BitTorrent" --algo kmp --to 65535 -j DROP
iptables -A FORWARD -m string --string "BitTorrent protocol" --algo kmp --to 65535 -j DROP
iptables -A FORWARD -m string --string "bittorrent-announce" --algo kmp --to 65535 -j DROP
iptables -A FORWARD -m string --string "announce.php?passkey=" --algo kmp --to 65535 -j DROP
iptables -A FORWARD -m string --string "find_node" --algo kmp --to 65535 -j DROP
iptables -A FORWARD -m string --string "info_hash" --algo kmp --to 65535 -j DROP
iptables -A FORWARD -m string --string "get_peers" --algo kmp --to 65535 -j DROP
iptables -A FORWARD -m string --string "announce" --algo kmp --to 65535 -j DROP
iptables -A FORWARD -m string --string "announce_peers" --algo kmp --to 65535 -j DROP
- A hozzászóláshoz be kell jelentkezni
Köszi, hogy megosztottad! Nálam is gond nélkül lefut és működik. Idővel majd a Suricatat akarom belőni ilyen célra, de azzal még csak ismerkedem, ez meg bőven megteszi addig. Van még egy olyan illesztése az IPTABLES-nek amiben a letöltött file-oknak lehet felső korlátot adni, azzal fogok még próbálkozni.
- A hozzászóláshoz be kell jelentkezni
Nem kifejezetten a kérdésre válaszolok, de a tapasztalat azt mutatja, hogy egyre több a titkosított torrent kapcsolat, ezért a szűrés csaknem lehetetlen (de minimum nehézkes), még layer7 szinten is. Arról nem is beszélve, hogy minél magasabb OSI rétegben van a szűrés, annál inkább erőforrásigényes.
Az egyetlen garantáltan működő megoldás, ha DROP policy-t vezetsz be az OUTPUT láncon (is), és utána csak azokat a portokat engedélyezed kifelé, amelyeket valóban ki akarsz engedni (pl. 80,443,995,21 stb).
Ezzel sajnos keresztbe teszel (többek között) a passzív FTP-nek, de ezen segíthez a conntrack_ftp modul használata (nem használtam még):
http://unix.stackexchange.com/questions/93554/iptables-to-allow-incomin…
- A hozzászóláshoz be kell jelentkezni
Nekem a fentebb leírt script részlet egy squid transzparens proxyval együtt fut, egyelőre nem sikerült senkinek se torrentezni ezen keresztül, pedig erősen próbálkoztak (kollégium, etc.)
A kettő valóban együtt hatékony: azaz kifelé csak az amit engedélyezni is kell, azaz HTTPS, NTP egyebek. Én még megfejeltem azzal, hogy belső caching DNS van, kifelé nem enged DNS kérést a tűzfal a belső hálóból, és fake zónákat megadva a bindnek simán keresheti a kliens localhoston az ismertebb torrent trackereket.
Tudom favágó megoldás, de működik egy ezer éves vason is. Persze átjárható is ha valaki nagyon akarja, de a célnak megfelel. És a 80-as port prerouting miatt a keresőszavak nem zavarnak be a normál HTTP forgalomba sem.
- A hozzászóláshoz be kell jelentkezni
De ugye simán forgalmazhat a 80-as porton is a torrent kliens, régről emlékeim vannak arról, hogy egy céges tűzfal mögül indított torrent kiírta hogy a 80-as porton üzemel mert csak azon tud (vagy hasonló). Tehát ez elvileg nem lesz megoldás szerintem.
- A hozzászóláshoz be kell jelentkezni
Mondtam, hogy nem 100% -os, de az adott eszközökkel bevált :) A 80-as porton pedig lehet játszani a squid -el, és akkor mégis jó a megoldás.
- A hozzászóláshoz be kell jelentkezni
Ez esetben csinálok egy vpn kapcsolatot hazafelé mondjuk az általad megengedett 443-as porton, és torrentezek azon.
Ezzel csak az "Az egyetlen garantáltan működő megoldás" című, sajnos téves kijelentésedet szerettem volna megcáfolni. :)
- A hozzászóláshoz be kell jelentkezni
Feltéve, ha képes vagy a VPN-t http-kapcsolatnak hazudni. (Vagy ha nem szűr a tűzfal a forgalom típusára.)
- A hozzászóláshoz be kell jelentkezni
Az már IDS. :)
Topic indító helyében én áttanulmányoznám a suricata csomagot, azzal faja kis ids-t lehet csinálni.
- A hozzászóláshoz be kell jelentkezni
amíg egy ICMP csomagot is kienged a tűzfal, addig tudnak protokolbújtatással akármit csinálni. a torrentezésnél nyílván nem az a cél, egyszerűen hogy ne tegyék, hanem hogy ne a cég/iroda IP-jével.
~~~~~~~~
deb http://deb.metaltux.tk/ wheezy yazzy repack
- A hozzászóláshoz be kell jelentkezni
Mondtam, hogy nem 100%. Kikerülni simán ki lehet, de, sejtem a topik indítója nem a NASA -nál kell hogy megoldja ezt a gondot, hanem egy kis hálón szűrné a userek forgalmát egyszerű módon. :)
"Az egyetlen garantáltan működő megoldás" -t nem tudom hol olvastad, vagy miért szúrta a szemed, hogy adtam egy olyan működő és különösebb beruházást valamint hozzáértést sem nagyon igénylő tippet, ami adott esetben valakinek segíthet. Szólj, és többet nem teszem :)
- A hozzászóláshoz be kell jelentkezni
mondjuk ezesetben simán torrentezek otthonról :)
- A hozzászóláshoz be kell jelentkezni
az egyik sor helyesen:
iptables -D FORWARD -m string --string "BitTorrent" --algo kmp --to 65535 -j DROP
Ez viszont már csak azért sem a legjobb módszer, mert próbálj meg ezek után pl. ide a fórumra feltenni egy kérdést amiben szerepelnek a fenti szavak :)
Tényleg jobb egy layer7 tűzfal erre a célra, ha komolyan gondolod.
- A hozzászóláshoz be kell jelentkezni
Ha a lenti rész megjegyzésben van, akkor a tűzfal többi része rendesen lefut, olyankor semmire nem jelez hibát
milyen meglepő :D
viccet félretéve, a string modul szerintem sok csomagot blokkolna, amit nem kéne, mert 64k-ig az egész tcp stream-ben keres.
én ezt aklalmazom, titkosítatlan torrent forgalom kezdeményezés ellen eddig úgy tűnik, bevált:
iptables -t mangle -A FORWARD ! -f -m connbytes --connbytes 0:255 --connbytes-mode bytes --connbytes-dir original -m state --state ESTABLISHED -m length --length 46:375 -m u32 --u32 "0x0>>0x16&0x3c@0xc>>0x1a&0x3c@0x0=0x13426974" -j torrent
iptables -t mangle -A torrent -m limit --limit 12/min --limit-burst 1 -j LOG --log-prefix "Firewall: torrent: " --log-level 6
iptables -t mangle -A torrent -j DROP
ez az u32 modulban használt sztring a bittorrent negotiation elején található "bittorrent" stringre illeszt rá. tehát más - legális - protokolt eléggé kis esélyben gátol.
a loggolás természetesen opcionális.
azt hogy miért a mangle táblába raktam, ne kérdezd :) lehet a filter-ben is mint a te példádban.
~~~~~~~~
deb http://deb.metaltux.tk/ wheezy yazzy repack
- A hozzászóláshoz be kell jelentkezni
Az XBT alapértelmezetten a 2710-es porton fut. Ha azt blokkolod, a legtöbb zárt oldalt már kilőtted, mert nem tud a trackerhez kapcsolódni a kliens.
Bye Bye Nyuszifül
- A hozzászóláshoz be kell jelentkezni