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/.
Witam mam dość trywialny problem - jak zablokowac facebooka w sieci lokalnej regułki:
iptables -I FORWARD -p tcp --dport 80 -d www.facebook.com -j DROP
i
iptables -I FORWARD -p tcp --dport 80 -d www.facebook.pl -j DROP
nie działa :-/
dzieki za pomoc
Offline
Squid?
Jest m.in właśnie do tego.
Iptables może ubić adres IP, musiałbyś wytargać z DNS listę adresów IP Facebooka, i przy okazji, FB chodzi na https, czyli porcie 443.
Dlatego blokada tylko na port 80 to lamerska pomyłka. ;)
Jak walisz
-d facebook.com
to blokujesz 1 hosta, bo DNS jednorazowo zwróci 1 adres, a np FB ma stadko serwerów korzystające z maski /18. :D
np:
iptables -I INPUT -p tcp -s facebook.com -j DROP
W firewallu ląduje tak:
-A INPUT -s 173.252.100.16/32 -p tcp -j DROP
Tymczasem w DNS stoi jak byk:
whois 173.252.100.16 | egrep 'NetRange|CIDR' NetRange: 173.252.64.0 - 173.252.127.255 CIDR: 173.252.64.0/18
Kolejny błąd, to
-d www.facebook.com
- nazwa hosta to facebook.com, przedrostki www powstały dla wygody przeglądarek.
To by było na tyle
;-)
Ostatnio edytowany przez Jacekalex (2013-01-08 16:24:26)
Offline
U ciebie mam zrobione tak:
iptables -t nat -A PREROUTING -p tcp -s 192.168.1.100 -d 173.194.70.1/24 --dport 80 -j DNAT --to 192.168.1.2:80
Ewentualnie dla zabawy"
iptables -t nat -A PREROUTING -p tcp -s 192.168.1.100 -d 173.194.70.1/24 --dport 80 -j DNAT --to 62.212.83.1:80
Offline
Przez FaceBook rozgłaszane są następujące sieci:
31.13.24.0/21 31.13.64.0/19 31.13.64.0/24 31.13.65.0/24 31.13.66.0/24 31.13.69.0/24 31.13.70.0/24 31.13.71.0/24 31.13.72.0/24 31.13.73.0/24 31.13.74.0/24 31.13.75.0/24 31.13.76.0/24 31.13.77.0/24 31.13.78.0/24 31.13.79.0/24 31.13.80.0/24 31.13.81.0/24 31.13.82.0/24 31.13.96.0/19 66.220.144.0/21 66.220.152.0/21 69.63.176.0/21 69.63.176.0/24 69.63.184.0/21 69.171.224.0/20 69.171.239.0/24 69.171.240.0/20 69.171.255.0/24 74.119.76.0/22 103.4.96.0/22 173.252.64.0/19 173.252.70.0/24 173.252.96.0/19 204.15.20.0/22
Offline
...
Ostatnio edytowany przez boshh (2013-01-17 06:10:42)
Offline
tak, oto przepis na naleśniki http://www.kwestiasmaku.com/kuchnia_polska/nalesniki/nalesniki.html
p.s.
iptables nie obsługuje przypadkiem layer7 ?
tam mozna po nazwach hostów blokować
Ostatnio edytowany przez urbinek (2013-01-08 19:48:17)
Offline
Filtrowanie po nazwach hostów nie ma nic wspólnego z filtrowaniem w warstwie 7. W przypadku podania w regule nazwy hosta, jest ona wcześniej rozwiązywana przez resolver, używany w systemie i zamieniana na adres IP.
Natomiast filtrowanie w warstwie 7 odbywa się przez proxy i im podobne systemy, które zaglądają do wnętrza pakietu (albo najczęściej wielu pakietów) i podejmują decyzję na podstawie przenoszonych danych.
Offline
to czy jest jakies jedno konkretne rozwiązanie ? bo z Waszych odpowiedzi nic jednoznacznie nie wynika,
rozwiazanie Mati75 u mnie nie dziala a zastanawiam sie czy jest sens w odp jurgensena blokowania wyszystkich sieci na firewallu ?
dzieki
Offline
Ja podałem sieci, które FB ogłasza światu, że należą do niego. A pewnie znaczna ich część nie jest w ogóle używana lub jest używana do innych zastosowań.
Co do Iptables, może reguła Ci nie działa, bo wcześniej masz bardziej ogólną regułę NATującą, pod którą to podpada.
Jeśli chodzi o najlepsze rozwiązanie, to ja rekomendowałbym proxy, jednak tak, aby wszyscy go używali (czyli transparent proxy lub blokada portów 80,443 i ręczne ustawienie proxy).
Własny DNS nie jest najlepszym rozwiązaniem, ponieważ użytkownik może użyć innego DNSa (chyba że zablokujemy wychodzący port 53, zarówno UDP, jak i TCP).
Offline
W przypadku ustawienia DNS, zdeterminowany użytkownik może dopisać sobie facebooka do /etc/hosts, ale to już chyba naprawdę skrajna sytuacja ;)
Offline
@jurgensen
Przynajmniej działa. U mnie swego czasu np nie szło ruszyć blokad (w sensie ich nałożenia) ani za pomocą danguardiana, ani za pomocą iptables.
Ostatnio edytowany przez PavloAkaLogan (2013-01-08 21:26:51)
Offline
Ale się Dugowicze rozpędzili ;)
FBHOST=`host facebook.com | grep address | awk '{print $4}'` FBCIDR=`whois $FBHOST | grep CIDR | awk '{print $2}'` iptables -I OUTPUT -d $FBCIDR -j DROP
lft facebook.com Tracing sendto: Operation not permitted LFT: Your platform may prevent you from using raw TCP sockets. This could be the result of a local (host-based) firewall or a permissions problem on this binary or the BPF device. You can try UDP-based tracing using the "-u" option.
Tak wygląda wersja dość kiepska, profesjonalnie należy użyć w takiej opcji ipseta.
ipset -create BANANY hash:net
/usr/sbin/ipset add BANANY $FBCIDR
/usr/sbin/ipset list BANANY Name: BANANY Type: hash:net Header: family inet hashsize 1024 maxelem 65536 Size in memory: 16792 References: 0 Members: 173.252.64.0/18
iptables -I FORWARD -o eth0 -m set --match-set BANANY dst -j DROP
I potem można BANANIĆ setki klas IP różnych serwerów typu FB, NK, YT, czaterie i duperie.
Pojemność Ipseta?
np:
ipset list PEERBLOCK | wc -l 252807
To akurat peerblock
ipset list sblamdrop | wc -l 23735
A to sblam.
Trudne?
Pozdrawiam
;-)
Offline
Niestety nie jest to takie proste. Facebook wykorzystuje wiele klas adresowych. Polecenie
host facebook.com | grep address | awk '{print $4}'
zwróci nam adres 173.252.100.16, natomiast strona komunikuje się z adresu 31.13.80.23. Dodatkowo, pewnie inne adresy również pozwalają dostać się do strony (np. 66.220.158.25).
Dlatego też najskuteczniejsze byłoby pobieranie wszystkich sieć routowanych do AS32934 i na ich podstawie budować reguły.
Offline
Poza tym pisze się
host facebook.com | awk '/address/ {print $4}' whois $FBHOST | awk '/CIDR/ {print $2}
a nie
host facebook.com | grep address | awk '{print $4} whois $FBHOST | grep CIDR | awk '{print $2}
:PP
Offline
[quote=jurgensen]Niestety nie jest to takie proste. Facebook wykorzystuje wiele klas adresowych. Polecenie
host facebook.com | grep address | awk '{print $4}'
zwróci nam adres 173.252.100.16, natomiast strona komunikuje się z adresu 31.13.80.23. Dodatkowo, pewnie inne adresy również pozwalają dostać się do strony (np. 66.220.158.25).
Dlatego też najskuteczniejsze byłoby pobieranie wszystkich sieć routowanych do AS32934 i na ich podstawie budować reguły.[/quote]
Host pobiera 1 adres, whois wyciąga z tego całą klasę adresową.
Można wyciągać klasy z AS, ale raczej nie będziesz tego robił co tydzień, wtedy bajzel przestaje blokować, kiedy np fb czy nk zmieni adresy.
O wiele prościej jest zbanować dostęp do innych DNSów poza biurowymi.
Potem skrypt odpytuje lokalny DNS, wyciąga adres IP i wio, do ipseta, natomiast lokalny DNS trzyma zablokowany adres w cache, i zwraca wszystkim, którzy o niego pytają.
Jeśli natomiast ktoś miałby się pierd* ze sprawdzaniem ręcznie AS-ów, to 50 razy szybciej Squida albo Havpa postawi.
Chyba, ze masz sposób, żeby wytargać skryptem wszystkie klasy IP, jakie są przypisane do danego AS-a, i to w pętli, żeby z whois wyciągać wszystkie ASy np FB, bo może ich być kilka na całym świecie.
Generalnie chodzi o to,żeby sam proces banowania był całkowicie zautomatyzowany, i działał skutecznie bez majstrowania "organoleptycznego".
Chodzi o coś, w typie:
banuj domena.tld
i skrypt banuj sam wie, co zrobić, żeby było skutecznie.
W dodatku zakładając nawet, że dzisiaj ręczne kopiowanie z AS adresów Ip ma jakiśtam sens, to jak za rok czy dwa wejdzie IPv6............... ;P
U mnie wycięcie tej klasy adresowej:
173.252.64.0/18
całkowicie obcięło FB (mam lokalny DNS).
@Winnetou
Dzięki, coś słabo znam awka, przyda się.
Pozdrawiam
;-)
Ostatnio edytowany przez Jacekalex (2013-01-09 02:44:19)
Offline
Witam
iptables -I FORWARD -m string --string "facebook" --algo bm -j DROP
Pozdrawiam
Offline
Time (s) | Query |
---|---|
0.00011 | SET CHARSET latin2 |
0.00005 | SET NAMES latin2 |
0.00091 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.15.149.24' WHERE u.id=1 |
0.00072 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.15.149.24', 1732353378) |
0.00054 | SELECT * FROM punbb_online WHERE logged<1732353078 |
0.00058 | DELETE FROM punbb_online WHERE ident='3.144.31.17' |
0.00073 | SELECT topic_id FROM punbb_posts WHERE id=219956 |
0.00007 | SELECT id FROM punbb_posts WHERE topic_id=22658 ORDER BY posted |
0.00053 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=22658 AND t.moved_to IS NULL |
0.00005 | SELECT search_for, replace_with FROM punbb_censoring |
0.00164 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=22658 ORDER BY p.id LIMIT 0,25 |
0.00080 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=22658 |
Total query time: 0.00673 s |