Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Postanowiłem się wziąć za ogarnięcie moich torrentów a konkretnie klienta torrenta -- qbittorrent, bo jak nie patrzeć 240M zjadanego ramu to trochę za dużo. Do tej pory wydawało mi się, że to tak ma, ale jak się okazało, nie do końca. Generalnie ten qbittorrent ma zwykłego klienta i coś co się zwie nox, czyli klienta bez x-ów. W każdym razie problem dotyczył obu klientów. Sprawa wygląda tak, że qbttorrent może obsługiwać coś co się nazywa filtr adresów ip i z reguły ludzie ładują listę co się zwie level1 coś tam. ona ma prawie 250k wpisów, a plik waży koło 13M. Bez tej listy klienty zjadają 20/50M (nox/zwykły), a z nią 200/240M .
Zapytałem na forum qbittorenta wtf, no i mi admin tamtejszego forum odpowiedział, że to pewnie raczej bug, a sama lista tak naprawdę na nic się zdaje. W każdym razie przeszedłem na qbittorent-nox i zostawiłem go bez ładowania listy. Ale mi to nie dawało spokoju za bardzo i postanowiłem poszukać czegoś co mogłoby zastąpić mi ten filter, tak na wszelki wypadek, gdyby jednak miał znaczenie i znalazłem coś takiego: https://sourceforge.net/projects/peerguardian/
Źródła nawet są przystosowane pod debiana, przynajmniej z grubsza, generalnie działa ootb po zbudowaniu i zainstalowaniu paczki. Ma on gui i kilka innych ficzerów, w każdym razie on tworzy własne łańcuchy w iptables i na podstawie list, które można sobie wybrać (jest też i level1), blokuje ruch nie tylko na torrencie ale również na całej maszynie. Jeszcze nie przetestowałem tego dokładnie ale google jest blokowany na szczęście idzie go bez problemu wykroić. xD
I tak się zastanawiam, w oparciu o to co powiedział admin forum qb, czy ten peerguardian i inne podobne filtry mają jakiś większy sens w stosowaniu ich? Czy warto w ogóle budować filtr w oparciu o peerguardiana? Bo jeśli chodzi o performance to duet qb-nox + pgld zjada praktycznie 0 proca (po wyłączeniu logowani) i koło 35M ramu razem, także całkiem nieźle to wygląda.
Offline
PeerGuardian?
ipset create peerblock hash:net maxelem 262144 2>/dev/null iptables -t raw -S | grep peerblock -A PREROUTING -p tcp -m multiport ! --sports 80,443 -m set --match-set peerblock src -j STEAL -A OUTPUT -p tcp -m multiport ! --dports 80,443 -m set --match-set peerblock dst -j STEAL
root ~> cat `which peerblock`| egrep -v '^#' echo "Peerblock wita, robimy blokadę szpiegaczy ;)"; curl -L "http://list.iblocklist.com/?list=bt_level1&fileformat=p2p&archiveformat=gz" | gunzip | cut -d: -f2 | grep -E "^[-0-9.]+$" | gawk '{print "add peerblock "$1}' | ipset restore -exist; echo ""; echo "PeerBlock - lista szpiegaczy aktualna :)"; echo "":
SOA#1
Ostatnio edytowany przez Jacekalex (2013-12-03 19:39:29)
Offline
A ja chyba mam niekompatybilną podkładkę pod mysze. xD
Zrobiłem seta i poniżej info po exporcie do pliku (bez ip):
Name: peerblock Type: hash:net Revision: 3 Header: family inet hashsize 131072 maxelem 300000 Size in memory: 5894648 References: 0 Members:
Ale jak mu chciałem dodać te 2 reguły do iptables, to wyrzucił, że:
# iptables -A PREROUTING -p tcp -m multiport ! --sports 80,443 -m set --match-set peerblock src -j STEAL iptables v1.4.20: Couldn't load target `STEAL':No such file or directory Try `iptables -h' or 'iptables --help' for more information.
By to działało trzeba doinstalować mu xtables-addons-dkms i xtables-addons-common albo samo to drugie. Ale i tak nie weszła jedna reguła:
# iptables -A PREROUTING -p tcp -m multiport ! --sports 80,443 -m set --match-set peerblock src -j STEAL iptables: No chain/target/match by that name.
Jakieś info co mam z tym zrobić?
Ten "size in memory" odnosi się do rzeczywistego ramu i jeśli ten set waży 5MiB, to z 1000 wolnych MiB w ramie zrobi się automatycznie 995, dobrze to rozumiem?
Kolejna sprawa, te wpisy w secie zostają po resecie czy trzeba to uzupełniać z każdym rebootem? I jak wygląda sprawa z aktualizacją tych ip? Jak dodam ten skrypt do crona, to bez problemu będzie aktualizował czy trzeba pierw flushować?
I jak sprawdzić czy to w ogóle coś blokuje? Z tego co rozumiem, to te regułki w iptables sprawią, że porty 80 i 443 nie będą filtrowane? I powinny się pojawić w:
# iptables -nvL Chain INPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 7256 458K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 11102 9698K ACCEPT all -- eth0 * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED 0 0 ACCEPT all -- tun0 * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED 6 240 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID 3 144 REJECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 reject-with tcp-reset 1205 374K REJECT udp -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-proto-unreachable Chain FORWARD (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 6474 packets, 711K bytes) pkts bytes target prot opt in out source destination 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID 0 0 STEAL tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports !80,443 match-set peerblock dst
I jeśli np. imap na googlu nie będzie działał, to trzeba dodać po jednej regule (niekoniecznie porty) w OUTPUT i PREROUTING, tak to ma działać?
p.s.
Czyli jednak te listy są przydatne?
Offline
Cel STEAL jest w xtables-addons, w standardowym Netfilterze jest DROP albo REJECT.
Poza tym ja mam te reguły w tablicy RAW
#RAW - peerblock ipset create peerblock hash:net maxelem 262144 2>/dev/null iptables -t raw -I OUTPUT -p tcp --match multiport ! --dports 80,443 -m set --match-set peerblock dst -j STEAL iptables -t raw -I PREROUTING -p tcp --match multiport ! --sports 80,443 -m set --match-set peerblock src -j STEAL
Skrypcio działa?
ipset list peerblock | head Name: peerblock Type: hash:net Revision: 2 Header: family inet hashsize 131072 maxelem 262144 Size in memory: 5895736 References: 2 Members: 72.236.159.0/25 81.117.80.184/29 194.117.117.80/30 .................
ipset list peerblock | wc -l 255790
U mnie siedzi w /etc/cron.hourly, jak widać śmiga. ;)
Ostatnio edytowany przez Jacekalex (2013-12-03 21:11:35)
Offline
Po odpaleniu skryptu jest:
# ./peerblock Peerblock wita, robimy blokadę szpiegaczy ;) % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 3567k 100 3567k 0 0 397k 0 0:00:08 0:00:08 --:--:-- 564k PeerBlock - lista szpiegaczy aktualna :) : # ipset list peerblock | head Name: peerblock Type: hash:net Revision: 3 Header: family inet hashsize 131072 maxelem 300000 Size in memory: 5894648 References: 1 Members: 12.25.231.248/29 66.123.107.80/29 203.108.94.0/24 # ipset list peerblock | wc -l 255790
Czyli działa.
Dodałem to do tabeli raw i obecnie to wygląda:
# iptables -nvL -t filter Chain INPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 10460 662K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 19876 20M ACCEPT all -- eth0 * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED 0 0 ACCEPT all -- tun0 * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED 11 440 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID 6 288 REJECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 reject-with tcp-reset 1714 531K REJECT udp -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-proto-unreachable Chain FORWARD (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 14 packets, 901 bytes) pkts bytes target prot opt in out source destination 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID root:/home/morfik/Desktop# iptables -nvL -t raw Chain PREROUTING (policy ACCEPT 2154 packets, 647K bytes) pkts bytes target prot opt in out source destination 0 0 STEAL tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport sports !80,443 match-set peerblock src Chain OUTPUT (policy ACCEPT 2000 packets, 272K bytes) pkts bytes target prot opt in out source destination 0 0 STEAL tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports !80,443 match-set peerblock dst
Nadal nie widzę by to coś blokowało. Ta polityka w tych łąńcuchach output i prerouting w tabeli raw ma być na accept?
Ostatnio edytowany przez morfik (2013-12-03 21:19:00)
Offline
Naucz się sprawdzać tablice FW poleceniem
iptables -t <ŁAŃCUCH> -S
W ten sposób zobaczysz konkretne reguły tak, jak były wprowadzone.
np
iptables -t raw -S
To by było na tyle
;-)
Offline
Tam nie łańcuch tylko tabela xD
# iptables -t raw -S -P PREROUTING ACCEPT -P OUTPUT ACCEPT -A PREROUTING -p tcp -m multiport ! --sports 80,443 -m set --match-set peerblock src -j STEAL -A OUTPUT -p tcp -m multiport ! --dports 80,443 -m set --match-set peerblock dst -j STEAL # iptables -t filter -S -P INPUT DROP -P FORWARD DROP -P OUTPUT ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -i eth0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -i tun0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -m state --state INVALID -j DROP -A INPUT -p tcp -j REJECT --reject-with tcp-reset -A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable -A INPUT -j REJECT --reject-with icmp-proto-unreachable -A OUTPUT -m state --state INVALID -j DROP
I jak sprawdzić czy blokuje coś?
Odpaliłem qbittorrenta i zaczoł się zapełniać:
Chain OUTPUT (policy ACCEPT 11034 packets, 1902K bytes) pkts bytes target prot opt in out source destination 249 14940 STEAL tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports !80,443 match-set peerblock dst
EDIT:
A jak podejrzeć te adresy, które blokuje? Tak na wypadek jakby coś nie działało i trzeba by dopasować.
Ostatnio edytowany przez morfik (2013-12-03 21:37:28)
Offline
Tak sobie przeglądałem te listy na https://www.iblocklist.com/list.php i jest tam jedna która moją uwagę przyciągnęła: adservers, wgrałem ją do ipseta i ustawiłem regułkę w optables w raw na porty 80 i 443, wyłączyłem adblocka, po czym wlazłem na wp. 0 śmieci, wyczyściłem reguły, od razu syfu na cały ekran. xD Czyli można by zrezygnować z adblocka przy tym, tylko jest takie jedno ale. Strona jakby się nie ładuje do końca, tzn jest załadowana w pełni ale jest możliwość naciśnięcia przycisku stop. Jak patrze sobie w podgląd iptables, to tam pakiety ciągle napływają, dopiero po naciśnięciu stop przestają. Da radę jakoś to ogarnąć?
Offline
Lista:
ipset list peerblock
Zrzut w formacie zjadliwym dla skryptu:
ipset -S peerblock
Sprawdzanie adresu, np:
ipset test peerblock 202.221.238.012
Albo może zajrzeć do mana..... :D
Ostatnio edytowany przez Jacekalex (2013-12-04 21:09:26)
Offline
Ja to obadałem i wszystko jest ok. Bo stronki mogę bez problemu przeglądać. Tylko, że one niby się nie ładują do końca, tzn one są załadowane, jedyne czego im brakuje to reklam. Bo te są blokowane przez
Chain OUTPUT (policy ACCEPT 358K packets, 173M bytes) pkts bytes target prot opt in out source destination 992 81990 STEAL tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 80,443 match-set adserver dst
I generalnie tylko na zakładce jest wężuś ganiający swój ogon, sugerujący, że strona się nie załadowała w pełni. Tyle, że ona jest załadowana. xD
W sumie zostawiłem dla testu otwarte dwie strony, jedna to wp druga to liveleak. I liveleak przestał się ładować po 1,5min, a wp załadowała się po 7,5 i pakiety przez cały czas ładowania stron są blokowane. Ja wiem, że to z winy tego, że ip adserverów są na blackliście, w końcu po to ją dodałem xD Tylko dlaczego przez cały czas przeglądarka wysyła pakiety, mimo, że ciągle są zrzucane. Da radę coś z tym zrobić?
# host adv.wp.pl adv.wp.pl has address 212.77.100.127 # ipset test adserver 212.77.100.127 212.77.100.127 is in set adserver.
Przecie inaczej się tego nie za zablokować. xD
Ostatnio edytowany przez morfik (2013-12-04 21:38:37)
Offline
SOA#1
U mnie wsio śmiga, jak powinno.
Offline
Do reklam ja mam Noscripta, Ghostery, Request Policy i /etc/hosts, i całą masę innych dodatków.
Także mam problemy ze zrozumieniem, co dokładnie masz na myśli. :D
Offline
No bo mi strona wisi na: connecting to vda.wp.pl, i ciągle próbuje się z tym adresem połączyć ale tam są reklamy, temu jest to nie możliwe. Jak nauczyć przeglądarkę by nie ponawiała połączeń tylko poszła dalej?
Offline
127.0.0.1 vda.wp.pl
w /etc/hosts?
Ban na adres w Noscripcie lub RequestPolicy?
W ogóle jaka to przeglądarka?
Noscript w takiej czy innej formie śmiga na Firefoxie/Operze/Chrome.
RequestPolicy - to już chyba tylko FF.
Ostatnio edytowany przez Jacekalex (2013-12-04 22:19:33)
Offline
No ff, a tego nie da się zrobić przez ipset + iptables? No bo z /etc/hosts bez problemu blokuje i strona się wczytuje do końca.
Ostatnio edytowany przez morfik (2013-12-04 22:23:05)
Offline
Ipset blokuje po IP.
Jeśli na jednym Ip wisi kilka domen, to jak je posortować przez Firewalla?
To raczej jakiś proxy, typu np Squid, Privoxy czy Havp.
Offline
Buuu, a już się tak napaliłem na tego ipseta. xD No nic, to zostawię go tylko do p2p, a z tymi adami i privoxy jeszcze poszukam sobie, bo przydałoby mi się coś co działa poza przeglądarką.
Offline
Próbowałem wykorzystać twój artykuł http://dug.net.pl/tekst/258/peerguardian_w_oparciu_o_ipset/
Chyba coś nie tak mi poszło z konfiguracją iptables.
iptables-restore < rules.v4 iptables-restore: line 12 failed
Czy miałeś jeszcze jakieś inne dodatkowe ustawienia, bo próbowałem wdrożyć to na czystym systemie. Plik rules.v4 jest twój.
Offline
Mówisz o skrypcie
/etc/init.d/peerblock
?
Ten plik uruchamiam wcześniej.
Offline
Mówię o sprawdzeniu tego co masz w ipsecie aktualnie:
# ipset --list -t Name: bt_level1 Type: hash:net Revision: 3 Header: family inet hashsize 131072 maxelem 290000 Size in memory: 5900944 References: 2 Name: bt_spyware Type: hash:net Revision: 3 Header: family inet hashsize 1024 maxelem 4000 Size in memory: 55184 References: 2 Name: bt_webexploit Type: hash:net Revision: 3 Header: family inet hashsize 1024 maxelem 2000 Size in memory: 42160 References: 2 Name: whitelist Type: hash:net Revision: 3 Header: family inet hashsize 1024 maxelem 50 Size in memory: 16816 References: 2
Offline
Mam
ipset --list -t Name: bt_level1 Type: hash:net Revision: 2 Header: family inet hashsize 131072 maxelem 290000 Size in memory: 4850804 References: 0 Name: bt_spyware Type: hash:net Revision: 2 Header: family inet hashsize 1024 maxelem 4000 Size in memory: 46932 References: 0 Name: bt_webexploit Type: hash:net Revision: 2 Header: family inet hashsize 1024 maxelem 2000 Size in memory: 33844 References: 0 Name: whitelist Type: hash:net Revision: 2 Header: family inet hashsize 1024 maxelem 50 Size in memory: 8532 References: 0
Offline
Hmm,
przekeiłem ze strony
*raw
:PREROUTING ACCEPT [12:676]
:OUTPUT ACCEPT [12:676]
-A PREROUTING -p tcp -m set --match-set whitelist src -j ACCEPT
-A OUTPUT -p tcp -m set --match-set whitelist dst -j ACCEPT
-A PREROUTING -p tcp -m multiport ! --sports 80,443 -m set --match-set bt_level1 src -j STEAL
-A OUTPUT -p tcp -m multiport ! --dports 80,443 -m set --match-set bt_level1 dst -j STEAL
-A PREROUTING -m set --match-set bt_spyware src -j STEAL
-A OUTPUT -m set --match-set bt_spyware dst -j STEAL
-A PREROUTING -m set --match-set bt_webexploit src -j STEAL
-A OUTPUT -m set --match-set bt_webexploit dst -j STEAL
COMMIT
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [24:1352]
-A INPUT -i eth0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i tun0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m state --state INVALID -j DROP
-A INPUT -p tcp -j REJECT --reject-with tcp-reset
-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
-A INPUT -j REJECT --reject-with icmp-proto-unreachable
-A OUTPUT -m state --state INVALID -j DROP
Dwunasta linia wypada na COMMIT.
Czy masz jakieś wspóldzielenie łącza, squid albo inne wynalazki?
Ew. mam teraz włączony dnscrypt, więc może to?
Spróbowałem tak:
iptables -A PREROUTING -m set --match-set bt_spyware src -j STEAL iptables: No chain/target/match by that name. sudo iptables -A OUTPUT -m set --match-set bt_spyware dst -j STEAL iptables: No chain/target/match by that name
Ostatnio edytowany przez gnejusz pompejusz (2013-12-20 18:23:48)
Offline