{"id":744,"date":"2017-01-30T16:51:45","date_gmt":"2017-01-30T16:51:45","guid":{"rendered":"http:\/\/kapica.it\/?p=744"},"modified":"2021-10-27T10:50:33","modified_gmt":"2021-10-27T10:50:33","slug":"router-z-kontekstowym-filtrowaniem-tresci-stron-www-na-ubuntu-server","status":"publish","type":"post","link":"http:\/\/kapica.it\/?p=744","title":{"rendered":"Router z kontekstowym filtrowaniem tre\u015bci stron WWW na Ubuntu Server"},"content":{"rendered":"<p>Poni\u017cej przedstawiam instrukcj\u0119 instalacji i konfiguracji serwera Ubuntu do pracy jako router z automatycznym filtrem tre\u015bci stron internetowych. Przyk\u0142adem zastosowania jest usuni\u0119cie mo\u017cliwo\u015bci ogl\u0105dania tre\u015bci pornograficznych na stronach www lub zablokowanie dost\u0119pu do gier online.<\/p>\n<hr \/>\n<p><strong>INSTALACJA SYSTEMU<\/strong><\/p>\n<p>&#8211; \u015bci\u0105gni\u0119cie najnowszej dystrybucji Ubuntu Server (poni\u017csze instrukcje sprawdzone dla wersji 16.04 &#8211; uwaga! tylko aktualne wersje maj\u0105 dzia\u0142aj\u0105ce repozytoria!)<\/p>\n<p>&#8211; uruchomienie instalatora z CD lub USB<\/p>\n<p>&#8211; wybranie j\u0119zyka, nast\u0119pnie wybranie opcji &#8222;Instalacja Ubuntu Server&#8221; i potwierdzenie ch\u0119ci instalacji mimo nieuko\u0144czonego t\u0142umaczenia instalatora.<br \/>\n&#8211; wyb\u00f3r lokalizacji (&#8222;Polska&#8221;) oraz uk\u0142adu klawiatury (pomijamy wykrywanie, wybieramy kraj i uk\u0142ad &#8222;Polski&#8221;).<br \/>\n&#8211; wskazanie podstawowego interfejsu sieciowego, czyli karty sieciowej pod\u0142\u0105czonej do internetu, oraz podanie nazwy serwera. Nazwy wykrytych kart nale\u017cy zapisa\u0107!<br \/>\n&#8211; utworzenie konta u\u017cytkownika: podanie pe\u0142nej nazwy, loginu oraz dwukrotnie has\u0142a.<br \/>\n&#8211; odm\u00f3wienie szyfrowania katalogu domowego.<br \/>\n&#8211; ustawienie strefy czasowej: zatwierdzenie domy\u015blnie wybranej strefy &#8222;Europe\/Warsaw&#8221;.<br \/>\n&#8211; przygotowania partycji i zapisanie zmian na dysku (najszybciej automatycznie: &#8222;przewodnik &#8211; ca\u0142y dysk&#8221;).<br \/>\n&#8211; zainstalowanie pakiet\u00f3w na twardym dysku.<br \/>\n&#8211; wprowadzenie danych ewentualnego serwera proxy, je\u015bli \u0142\u0105czymy si\u0119 przez niego w sieci.<br \/>\n&#8211; okre\u015blenie sposobu aktualizacji systemu. Najlepiej &#8222;Brak aktualizacji automatycznych&#8221;.<br \/>\n&#8211; wyb\u00f3r zestawu (r\u00f3l) oprogramowania serwerowego. Opr\u00f3cz zaznaczonej opcji wybieramy dodatkowo &#8222;OpenSSH Server&#8221; (przyda si\u0119 do konfiguracji zdalnej).<br \/>\n&#8211; zainstalowanie boot mened\u017cera GRUB. Potwierdzamy propozycj\u0119 zainstalowania w MBR (master boot record).<br \/>\n&#8211; nast\u0105pi ponowne uruchomienie komputera.<br \/>\n&#8211; dokonujemy aktualizacji ca\u0142ego systemu poprzez<\/p>\n<blockquote><p>apt-get dist-upgrade<\/p><\/blockquote>\n<p>&#8211; ponowne uruchomienie komputera &#8211; instalacja zako\u0144czona.<\/p>\n<hr \/>\n<h3>UWAGA NAD UWAGAMI!<\/h3>\n<h3>Je\u017celi cokolwiek skopiujesz z tej strony w Windows i b\u0119dziesz wkleja\u0142 do plik\u00f3w w linuks pojawi si\u0119 problem ze znakami ko\u0144ca linii. Ka\u017cdy plik przygotowany w ten spos\u00f3b trzeba sprawdzi\u0107 w edytorze vi i pousuwa\u0107 na ko\u0144cu linii znaki ^M\u00a0 !!! Bez tego skrypty bash b\u0119d\u0105 wykonywane z b\u0142\u0119dami!<\/h3>\n<h3>Dodatkowowo &#8211; wdytor w systemie CMS tej strony zamienia podw\u00f3jne znaki &#8212; na pojedyncze. Stara\u0142em si\u0119 to poprawi\u0107, ale mog\u0142em co\u015b jeszcze przeoczy\u0107!<\/h3>\n<hr \/>\n<p><strong>PO INSTALACJI &#8211; KONFIGURACJA INTERFEJS\u00d3W SIECIOWYCH<\/strong><\/p>\n<blockquote><p>#ip addr<\/p><\/blockquote>\n<p>Okre\u015bl i zapisz nazwy interfejs\u00f3w i sprawd\u017a kt\u00f3ry zosta\u0142 przypisany do WAN, a kt\u00f3ry do LAN<br \/>\nnast\u0119pnie edytuj plik\u00a0 \/etc\/network\/interfaces<\/p>\n<blockquote><p>dokonuj\u0105c zapisu:<\/p>\n<p>auto lo<br \/>\niface lo inet loopback<\/p>\n<p># WAN interface przez DHCP<br \/>\nauto eth0<br \/>\niface eth0 inet dhcp<\/p>\n<p># LAN interface statycznie<br \/>\nauto eth1<br \/>\niface eth1 inet static<br \/>\naddress 192.168.100.1<br \/>\nnetwork 192.168.100.0<br \/>\nnetmask 255.255.255.0<br \/>\nbroadcast 192.168.100.255<br \/>\ndns-nameservers 192.168.100.1<br \/>\ndns-search mojadomena.org<br \/>\ndns-domain mojadomena.org<\/p><\/blockquote>\n<p>&#8211; zapisz plik i zrestartuj komputer<\/p>\n<hr \/>\n<p><strong>SERWER DHCP i DNS &#8211; DNSMASQ<br \/>\n<\/strong><\/p>\n<blockquote><p>#sudo apt-get install dnsmasq<\/p><\/blockquote>\n<p>Edytuj plik \/etc\/dnsmasq.conf do postaci:<\/p>\n<blockquote><p>domain-needed<br \/>\nbogus-priv<br \/>\nfilterwin2k<br \/>\n# nie korzystaj z pliku \/etc\/resolv.conf<br \/>\nno-resolv<br \/>\n# serwery Open DNS (lub naszego ISP)<br \/>\nserver=208.67.222.222<br \/>\nserver=208.67.220.220<br \/>\n# nasza domena<br \/>\nlocal=\/mojadomena.org\/<br \/>\n# nas\u0142uchuj na interfejsie &#8211; ustaw sw\u00f3j interfejs LAN<br \/>\ninterface=eth1<br \/>\nexpand-hosts<br \/>\ndomain=mojadomena.org<br \/>\n# zakres adres\u00f3w<br \/>\ndhcp-range=192.168.100.10,192.168.100.200,255.255.255.0,12h<br \/>\n# przyk\u0142ad rezerwacji adres\u00f3w sta\u0142ych<br \/>\ndhcp-host=00:1E:33:49:0E:C2,stacja1,192.168.19.14,12h<br \/>\n# dodatkowe opcje<br \/>\ndhcp-option=3,192.168.100.1 # adres routera<br \/>\n# Opcje dla Samby w roli PDC je\u017celi korzystamy<br \/>\n#dhcp-option=19,0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # opcja ip-forwarding off<br \/>\n#dhcp-option=44,0.0.0.0\u00a0\u00a0\u00a0\u00a0 # WINS server(s)<br \/>\n#dhcp-option=45,0.0.0.0\u00a0\u00a0\u00a0\u00a0 # netbios datagram distribution server<br \/>\n#dhcp-option=46,8\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # netbios node type (hybrid)<br \/>\ndhcp-option=vendor:MSFT,2,1i # zwalnianie przydzielonego adresu DHCP<br \/>\n# serwer autorytatywny<br \/>\ndhcp-authoritative<br \/>\ncache-size=200<\/p><\/blockquote>\n<p>Nast\u0119pnie edytuj plik \/etc\/dhcp\/dhclient.conf<\/p>\n<blockquote><p>supersede domain-name &#8222;mojadomena.org&#8221;;<br \/>\nprepend domain-name-servers 127.0.0.1;<\/p><\/blockquote>\n<p>Edytuj plik \/etc\/hosts<\/p>\n<blockquote><p>#127.0.1.1 mojserwer.mojadomena.org mojserwer #to zakomentowujemy<br \/>\n192.168.100.1 mojserwer.mojadomena.org mojserwer<\/p><\/blockquote>\n<p>Serwer uruchamiamy<\/p>\n<blockquote><p>sudo service dnsmasq start<\/p><\/blockquote>\n<p>Teraz nale\u017cy sprawdzi\u0107 czy serwer przydziela prawid\u0142owo adresy IP i inne potrzebne parametry (w windows ipconfig \/all) Je\u015bli nie dzia\u0142a mo\u017ce by\u0107 konieczny restart serwera.<\/p>\n<hr \/>\n<p><strong>FIREWALL i NAT<\/strong><\/p>\n<p>W pliku \/etc\/sysctl.conf trzeba odkomentowa\u0107 opcj\u0119:<\/p>\n<blockquote><p>net.ipv4.ip_forward=1<\/p><\/blockquote>\n<p>Utw\u00f3rz plik tekstowy\u00a0 \/etc\/dowolny_katalog\/firewall.sh<\/p>\n<p>W \u015brodku wklej tre\u015b\u0107:<\/p>\n<blockquote><p>#!\/bin\/bash<br \/>\nINTIF=&#8221;eth1&#8243;<br \/>\nINTNET=&#8221;192.168.100.0\/24&#8243;<br \/>\nINTIP=&#8221;192.168.100.254&#8243;<br \/>\nEXTIF=&#8221;eth0&#8243;<br \/>\nEXTIP=&#8221;`\/sbin\/ifconfig $EXTIF | grep 'inet addr&#8217; | awk '{print $2}&#8217; | sed -e 's\/.*:\/\/&#8217;`&#8221;<br \/>\nUNIVERSE=&#8221;0.0.0.0\/0&#8243;<\/p>\n<p>iptables -P INPUT ACCEPT<br \/>\niptables -F INPUT<br \/>\niptables -P OUTPUT ACCEPT<br \/>\niptables -F OUTPUT<br \/>\niptables -P FORWARD ACCEPT<br \/>\niptables -F FORWARD<br \/>\niptables -F -t nat<\/p>\n<p>if [ &#8222;`iptables -L | grep droplog`&#8221; ]; then<br \/>\niptables -F droplog<br \/>\nfi<br \/>\niptables -X<br \/>\niptables -Z<\/p>\n<p># W\u0142\u0105czenie routowania<br \/>\niptables -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE<br \/>\niptables -A FORWARD -i $EXTIF -o $INTIF -m conntrack &#8212;ctstate ESTABLISHED,RELATED -j ACCEPT<\/p><\/blockquote>\n<p>Nadajemy plikowi prawo do wykonania tego pliku:<\/p>\n<blockquote><p>sudo chmod a+x \/etc\/mojserwer\/testf.sh<\/p><\/blockquote>\n<p>Teraz mo\u017cemy ju\u017c uruchomi\u0107 przygotowany firewall:<\/p>\n<blockquote><p>sudo sh \/etc\/mojserwer\/testf.sh<\/p><\/blockquote>\n<p>\u2013 i sprawdzi\u0107, czy hosty podpi\u0119te do interfejsu LAN mog\u0105 po\u0142\u0105czy\u0107 si\u0119 z internetem.<\/p>\n<p>Uwaga! Skrypt musi si\u0119 wykona\u0107 bez \u017cadnego b\u0142\u0119du. Je\u015bli masz z tym problem sprawd\u017a czy masz prawid\u0142owe znaki ko\u0144ca linii (edytor vi -&gt; znaki ^M trzeba pousuwa\u0107).<\/p>\n<p><strong>Powy\u017cszy firewall przepuszcza ca\u0142y ruch<\/strong>. Bardziej przydatny skrypt poni\u017cej (uwaga na podw\u00f3jne minusy przy &#8211;ctstate, &#8211;log-level, &#8211;dport, &#8211;to-ports, &#8211;sport):<\/p>\n<blockquote>\n<pre class=\"f10\">#!\/bin\/bash\r\necho -e \"Regu\u0142y iptables...\\n\\n\"\r\n# Nazwa interfejsu LAN, adres sieci LAN i adres IP interfejsu LAN\r\nINTIF=\"eth1\"             \r\nINTNET=\"192.168.100.0\/24\"\r\nINTIP=\"192.168.100.1\"\r\n# Nazwa interfejsu WAN i jego adres IP\r\nEXTIF=\"eth0\"\r\nEXTIP=\"`\/sbin\/ifconfig $EXTIF | grep 'inet addr' | awk '{print $2}' | sed -e 's\/.*:\/\/'`\"\r\n\r\nUNIVERSE=\"0.0.0.0\/0\"\r\n\r\n# Odkomentowana opcja w \/etc\/sysctl.conf, wi\u0119c tu mo\u017ce by\u0107 zakomentowane\r\n#echo 1 &gt; \/proc\/sys\/net\/ipv4\/ip_forward\r\n\r\n# Wyczyszczenie wszystkich \u0142a\u0144cuch\u00f3w i regu\u0142, okre\u015blenie domy\u015blnej polityki odrzucania pakiet\u00f3w (DROP).\r\niptables -P INPUT DROP\r\niptables -F INPUT\r\niptables -P OUTPUT DROP\r\niptables -F OUTPUT\r\niptables -P FORWARD DROP\r\niptables -F FORWARD\r\niptables -F -t nat\r\nif [ \"`iptables -L | grep drop-and-log-it`\" ]; then\r\n   iptables -F drop-and-log-it\r\nfi\r\niptables -X\r\niptables -Z\r\n\r\n# Utworzenie \u0142a\u0144cucha drop-and-log-it.\r\niptables -N drop-and-log-it\r\niptables -A drop-and-log-it -j LOG --log-level info\r\niptables -A drop-and-log-it -j REJECT\r\n\r\n# Regu\u0142y INPUT\r\n# Wszystkie po\u0142\u0105czenia z localhost\r\n iptables -A INPUT -i lo -j ACCEPT\r\n# Odrzucenie po\u0142\u0105cze\u0144 podszywaj\u0105cych si\u0119 pod lokalne\r\n iptables -A INPUT -i $EXTIF -s $INTNET -d $UNIVERSE -j drop-and-log-it\r\n# Protok\u00f3\u0142 ICMP\r\n iptables -A INPUT -i $INTIF -p icmp -s $INTNET -d $UNIVERSE -j ACCEPT\r\n iptables -A INPUT -i $EXTIF -p icmp -s $UNIVERSE -d $EXTIP -j ACCEPT\r\n# Po\u0142\u0105czenia zwrotne do serwera maskarady na interfejsie LAN\r\n iptables -A INPUT -i $INTIF -s $INTNET -d $INTIP -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT\r\n# Komunikaty ICMP: ping i echo\r\n iptables -A INPUT -i $INTIF -p tcp -s $INTNET -d $UNIVERSE --dport 7 -j ACCEPT\r\n iptables -A INPUT -i $INTIF -p udp -s $INTNET -d $UNIVERSE --dport 7 -j ACCEPT\r\n# Zapytania DNS\r\n iptables -A INPUT -i $INTIF -p tcp -s $INTNET -d $UNIVERSE --dport 53 -j ACCEPT\r\n iptables -A INPUT -i $INTIF -p udp -s $INTNET -d $UNIVERSE --dport 53 -j ACCEPT\r\n# Zapytania DHCP\r\n iptables -A INPUT -i $INTIF -p udp --dport 67 -j ACCEPT\r\n# Us\u0142ugi Samby (je\u017celi korzystamy, odkomentowa\u0107)\r\n# iptables -A INPUT -i $INTIF -p tcp -s $INTNET -d $UNIVERSE --dport 135 -j ACCEPT\r\n# iptables -A INPUT -i $INTIF -p tcp -s $INTNET -d $UNIVERSE --dport 139 -j ACCEPT\r\n# iptables -A INPUT -i $INTIF -p tcp -s $INTNET -d $UNIVERSE --dport 445 -j ACCEPT\r\n# iptables -A INPUT -i $INTIF -p udp -s $INTNET -d $UNIVERSE --dport 137 -j ACCEPT\r\n# iptables -A INPUT -i $INTIF -p udp -s $INTNET -d $UNIVERSE --dport 138 -j ACCEPT\r\n# Protok\u00f3\u0142 SSH\r\n iptables -A INPUT -i $INTIF -p tcp -s $INTNET -d $UNIVERSE --dport 22 -j ACCEPT\r\n\r\n# Serwer proxy Squid na interfejsie LAN, port 3128\r\n# iptables -A INPUT -i $INTIF -p tcp --dport 3128 -j ACCEPT\r\n\r\n# Squid3 transparent bez Dansguardiana\r\n# iptables -t nat -A PREROUTING -i $INTIF -p tcp --dport 80 -j REDIRECT --to-ports 3128\r\n\r\n# Dansguardian + Squid3 transparent proxy\r\n iptables -A INPUT -i $INTIF -p tcp --dport 8080 -j ACCEPT\r\n iptables -t nat -A PREROUTING -i $INTIF -p tcp --dport 80 -j REDIRECT --to-ports 8080\r\n\r\n# Po\u0142\u0105czenia przychodz\u0105ce na interfejs WAN\r\n# Po\u0142\u0105czenia zwrotne do serwera maskarady na interfejsie WAN\r\n iptables -A INPUT -i $EXTIF -s $UNIVERSE -d $EXTIP -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT\r\n# Komunikaty ICMP: ping i echo.\r\n iptables -A INPUT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP --dport 7 -j ACCEPT\r\n iptables -A INPUT -i $EXTIF -p udp -s $UNIVERSE -d $EXTIP --dport 7 -j ACCEPT\r\n\r\n# Odrzucanie i logowanie wszystkich innych po\u0142\u0105cze\u0144 przychodz\u0105cych\r\n iptables -A INPUT -s $UNIVERSE -d $UNIVERSE -j drop-and-log-it\r\n\r\n# Regu\u0142y OUTPUT\r\n# Odrzucanie po\u0142\u0105cze\u0144 do sieci LAN z WAN\r\n iptables -A OUTPUT -o $EXTIF -s $UNIVERSE -d $INTNET -j drop-and-log-it\r\n# Wszystkie po\u0142\u0105czenia localhost\r\n iptables -A OUTPUT -o lo -j ACCEPT\r\n# Zezwolenie dla LAN\r\n iptables -A OUTPUT -o $INTIF -d $INTNET -j ACCEPT\r\n# Zezwolenie na DHCP reply typu broadcast - dla MS Visty\r\n  iptables -A OUTPUT -o $INTIF -p udp -s $INTIP --sport 67 -d $UNIVERSE --dport 68 -j ACCEPT\r\n# Zezwolenie dla WAN\r\n iptables -A OUTPUT -o $EXTIF -j ACCEPT\r\n\r\n# Odrzucanie i logowanie wszystkie innych po\u0142\u0105cze\u0144 wychodz\u0105cych\r\n iptables -A OUTPUT -s $UNIVERSE -d $UNIVERSE -j drop-and-log-it\r\n\r\n# FORWARD: W\u0142\u0105czenie routowania, tj. us\u0142ugi NAT, zwanej maskarad\u0105, czyli IMPASQ.\r\n# Routing na interfejsie WAN\r\n iptables -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE\r\n# Routowanie ustanowionych po\u0142\u0105cze\u0144\r\n iptables -A FORWARD -i $EXTIF -o $INTIF -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT\r\n\r\n# Odblokowanie poszczeg\u00f3lnych us\u0142ug\r\n# Protok\u00f3\u0142 ICMP\r\n iptables -A FORWARD -i $INTIF -p icmp -j ACCEPT\r\n# Porty wysokie\r\n iptables -A FORWARD -i $INTIF -p tcp --dport 1024:65535 -j ACCEPT\r\n iptables -A FORWARD -i $INTIF -p udp --dport 1024:65535 -j ACCEPT\r\n# Komunikaty ICMP: ping, echo\r\n iptables -A FORWARD -i $INTIF -p tcp --dport 7 -j ACCEPT\r\n iptables -A FORWARD -i $INTIF -p udp --dport 7 -j ACCEPT\r\n# Us\u0142uga DNS\r\n iptables -A FORWARD -i $INTIF -p tcp --dport 53 -j ACCEPT\r\n iptables -A FORWARD -i $INTIF -p udp --dport 53 -j ACCEPT\r\n# Protok\u00f3\u0142 SSH\r\n iptables -A FORWARD -i $INTIF -p tcp --dport 22 -j ACCEPT\r\n iptables -A FORWARD -i $INTIF -p udp --dport 22 -j ACCEPT\r\n\r\n# HTTP-FORWARD-OK\r\n# HTTP -- je\u017celi nie korzystamy ze squida i dansguardiana, trzeba odkomentowa\u0107:\r\n# iptables -A FORWARD -i $INTIF -p tcp --dport 80 -j ACCEPT\r\n# iptables -A FORWARD -i $INTIF -p udp --dport 80 -j ACCEPT\r\n\r\n# HTTPS\r\n iptables -A FORWARD -i $INTIF -p tcp --dport 443 -j ACCEPT\r\n iptables -A FORWARD -i $INTIF -p udp --dport 443 -j ACCEPT\r\n# FTP\r\n iptables -A FORWARD -i $INTIF -p tcp --dport 20:21 -j ACCEPT\r\n iptables -A FORWARD -i $INTIF -p udp --dport 21 -j ACCEPT\r\n# Poczta: smtp, pop3, imap, legacy secure SMTP, smtp Submission, imap ssl, pop3s\r\n iptables -A FORWARD -i $INTIF -p tcp --dport 25 -j ACCEPT\r\n iptables -A FORWARD -i $INTIF -p tcp --dport 110 -j ACCEPT\r\n iptables -A FORWARD -i $INTIF -p tcp --dport 143 -j ACCEPT\r\n iptables -A FORWARD -i $INTIF -p tcp --dport 465 -j ACCEPT\r\n iptables -A FORWARD -i $INTIF -p tcp --dport 587 -j ACCEPT\r\n iptables -A FORWARD -i $INTIF -p tcp --dport 993 -j ACCEPT\r\n iptables -A FORWARD -i $INTIF -p tcp --dport 995 -j ACCEPT\r\n\r\n# Odrzucanie i logowanie wszystkich pozosta\u0142ych po\u0142\u0105cze\u0144.\r\n iptables -A FORWARD -j drop-and-log-it\r\n\r\necho -e \"Zako\u0144czono!\\n\\n\"<\/pre>\n<\/blockquote>\n<p>Uruchamianie firewall przy starcie systemu:\u00a0 w pliku \/etc\/rc.local dopisujemy:<\/p>\n<blockquote><p>\/etc\/nazwa_folderu_z_plikiem_firewall\/firewall.sh<\/p><\/blockquote>\n<p>(przed exit 0)<\/p>\n<hr \/>\n<p><strong>SQUID &#8211; SERWER PROXY<\/strong><\/p>\n<p>Komendy po kolei:<\/p>\n<blockquote><p>sudo apt-get install squid3<\/p>\n<p>sudo mv \/etc\/squid\/squid.conf \/etc\/squid\/squid.conf.org<br \/>\nsudo touch \/etc\/squid\/squid.conf<\/p><\/blockquote>\n<p>Edytujemy plik \/etc\/squid\/squid.conf &#8211; wklejamy poni\u017csze:<\/p>\n<blockquote><p>acl all src<br \/>\nacl manager proto cache_object<br \/>\n#acl localhost src 127.0.0.1\/32 ::1<br \/>\n#acl to_localhost dst 127.0.0.0\/8 0.0.0.0\/32 ::1<br \/>\nacl localnet src 192.168.100.0\/24 #Opis sieci LAN<br \/>\nacl LAN src 192.168.100.0\/24 #Opis sieci LAN<br \/>\nacl safeports port 21 70 80 210 280 443 488 563 591 631 777 873 901 81 3128 1025-65535<br \/>\nacl sslports port 443 563 81 873 2087 10000<br \/>\nacl purge method PURGE<br \/>\nacl connect method CONNECT<\/p>\n<p>follow_x_forwarded_for allow localhost<\/p>\n<p>http_access allow manager localhost<br \/>\nhttp_access deny manager<br \/>\nhttp_access allow purge localhost<br \/>\nhttp_access deny purge<br \/>\nhttp_access deny !safeports<br \/>\nhttp_access deny CONNECT !sslports<br \/>\nhttp_access allow localhost<br \/>\nhttp_access allow localnet<br \/>\nhttp_access allow LAN<br \/>\nhttp_access deny all<\/p>\n<p>icp_access allow localnet<br \/>\nicp_access deny all<\/p>\n<p># Normalny proxy<br \/>\nhttp_port 3128<\/p>\n<p># Rozmiar cache&#8217;u<br \/>\ncache_mem 256 MB # rozmiar dodatkowej(!) pami\u0119ci dla squida<br \/>\nmaximum_object_size_in_memory 512 KB<br \/>\nmemory_replacement_policy heap GDSF<br \/>\ncache_replacement_policy heap LFUDA<br \/>\ncache_dir aufs \/srv\/cache 8000 14 256<br \/>\nmaximum_object_size 16 MB<br \/>\ncache_swap_low 93<br \/>\ncache_swap_high 97<\/p>\n<p># Logi<br \/>\naccess_log \/var\/log\/squid3\/access.log<br \/>\ncache_log\u00a0 \/var\/log\/squid3\/cache.log<br \/>\ncache_store_log none<br \/>\nlogfile_rotate 5<br \/>\nlog_icp_queries off<\/p>\n<p># TIMEOUTS<br \/>\nforward_timeout 240 second<br \/>\nconnect_timeout 30 second<br \/>\npeer_connect_timeout 5 second<br \/>\nread_timeout 600 second<br \/>\nrequest_timeout 60 second<br \/>\nshutdown_lifetime 10 second<\/p><\/blockquote>\n<p>Nast\u0119pnie wykonujemy komendy (przygotowanie katalogu cache):<\/p>\n<blockquote><p>sudo mkdir \/srv\/cache<br \/>\nsudo chmod 777 \/srv\/cache\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # uprawnienia do zapisu<br \/>\nsudo chown proxy:proxy \/srv\/cache # ustawienia w\u0142a\u015bciciela i grupy<\/p><\/blockquote>\n<p>Inicjujemy squida (wy\u015bwietli ewentualne b\u0142\u0119dy w konfiguracji &#8211; je\u015bli czysto to jest OK)<\/p>\n<blockquote><p>sudo squid3 -z<\/p><\/blockquote>\n<p>Poprawiamy ewentualne b\u0142\u0119dy<\/p>\n<p>Zarz\u0105dzanie squidem:<\/p>\n<blockquote><p>sudo service squid start [restart\/stop]<\/p><\/blockquote>\n<p>Dodajemy do firewall wpis otwieraj\u0105cy port 3128 (na ko\u0144cu pliku)<\/p>\n<blockquote><p>iptables -A INPUT -i $INTIF -p tcp &#8211;dport 3128 -j ACCEPT<\/p><\/blockquote>\n<p>Po restarcie powinni\u015bmy po\u0142\u0105czy\u0107 si\u0119 z internetem przez port 3128 (sprawd\u017a koniecznie czy dzia\u0142a zmieniaj\u0105c ustawienia proxy w przegl\u0105darce &#8211; IP LAN serwera i port 3128)<\/p>\n<hr \/>\n<p><strong>DANSGUARDIAN &#8211; FILTROWANIE ZABRONIONEJ TRE\u015aCI<br \/>\n<\/strong><\/p>\n<blockquote><p>sudo apt-get install dansguardian<\/p><\/blockquote>\n<p>W pliku \/etc\/dansguardian\/dansguardian.conf\u00a0\u00a0 zmieniamy:<\/p>\n<blockquote><p>language = 'polish&#8217;<br \/>\nfilterip =192.168.100.1 #ip, na kt\u00f3rym ma nas\u0142uchiwa\u0107 dansguardian czyli nasz LAN<br \/>\n# zakomentowujemy lini\u0119 zaczynaj\u0105c\u0105 si\u0119:<br \/>\n#accessdeniedaddress = 'http:\/\/YOURSERVER.YOURDOMAIN&#8230;&#8217;<br \/>\nforwardedfor = on<\/p><\/blockquote>\n<p>W pliku \/etc\/dansguardian\/dansguardianf1.conf<\/p>\n<blockquote><p>naughtynesslimit = 150 #ustawienie wra\u017cliwo\u015bci filtra &#8211; czym mniej tym wi\u0119ksze restrykcje<\/p><\/blockquote>\n<p>W tym momencie filtr powinien dzia\u0142a\u0107 przy ustawieniu przegl\u0105darki na proxy 8080 &#8211; przetestuj koniecznie przed dalszymi krokami!<\/p>\n<p>\u017beby ruch przechodzi\u0142 automatycznie przez filtr bez konieczno\u015bci r\u0119cznej konfiguracji przegl\u0105darki nale\u017cy do firewalla doda\u0107 zapis:<\/p>\n<blockquote><p>iptables -A INPUT -i $INTIF -p tcp &#8211;dport 8080 -j ACCEPT<br \/>\niptables -t nat -A PREROUTING -i $INTIF -p tcp &#8211;dport 80 -j REDIRECT &#8211;to-ports 8080<\/p>\n<p>(na ko\u0144cu pliku)<\/p><\/blockquote>\n<p>Pozostaje jedynie zablokowa\u0107 mo\u017cliwo\u015b\u0107 obej\u015bcia filtrowania blokuj\u0105c port 3128 poprzez zmian\u0119 ACCEPT na DROP w<br \/>\npliku firewall<\/p>\n<blockquote><p>iptables -A INPUT -i $INTIF -p tcp &#8211;dport 3128 -j DROP #wcze\u015bniej by\u0142o ACCEPT<\/p><\/blockquote>\n<p>Dostrojenia blokowanych tre\u015bci dokonujemy w listach zawartych w katalogu \/etc\/dansguardian\/lists. Ju\u017c na pocz\u0105tku warto zmieni\u0107 ustawienia:<\/p>\n<p>bannedextensionlist \u2013 odblokowa\u0107 (zakomentowa\u0107) rozszerzenia wyst\u0119puj\u0105ce w plikach cz\u0119sto pobieranych z sieci, np.: .exe, .js, .jse, .msi, .doc, .xls, .ppt, .gz, .tgz, .bz2, .zip, .rar, .mp3, .iso, .ogg, .wmf<br \/>\nbannedmimetypelist \u2013 odblokowa\u0107 (zakomentowa\u0107) zawarto\u015b\u0107 archiw\u00f3w: application\/gzip, #application\/x-gzip, application\/zip<br \/>\nbannedsitelist \u2013 tu dopisujemy strony, kt\u00f3re chcemy w ca\u0142o\u015bci zablokowa\u0107, np.: facebook.com<br \/>\nbannedurllist \u2013 strony, kt\u00f3re chcemy zablokowa\u0107 cz\u0119\u015bciowo, np.: members.home.net\/uporn<br \/>\nexceptionfilesitelist \u2013 strony, z kt\u00f3rych mo\u017cna pobiera\u0107 pliki, np. serwery obs\u0142uguj\u0105ce aktualizacje Windows: windowsupdate.microsoft.com, download.windowsupdate.com itp.<br \/>\nexceptioniplist \u2013 tu mo\u017cna dopisa\u0107 adresy IP komputer\u00f3w z sieci LAN, kt\u00f3rych nie nale\u017cy filtrowa\u0107, np. komputery z ksi\u0119gowo\u015bci itp.<br \/>\nexceptionsitelist \u2013 strony, na kt\u00f3re w ca\u0142o\u015bci zezwalamy, np.: update.microsoft.com, watson.microsoft.com, archive.ubuntu.com, ftp.pl.debian.org, archlinux.org<br \/>\ngreysitelist \u2013 w listach &#8222;grey&#8221; wpisujemy strony, dla kt\u00f3rych wy\u0142\u0105czamy filtrowanie URL, ale zachowujemy filtrowanie tre\u015bci, czyli mo\u017cna je przegl\u0105da\u0107 pod warunkiem, \u017ce dany zas\u00f3b nie zawiera czego\u015b niedozwolonych, np.: wp.pl, onet.pl, interia.pl, gazeta.pl<\/p>\n<p>Uruchomienie us\u0142ugi:<\/p>\n<blockquote><p>sudo service dansguardian start<\/p><\/blockquote>\n<p>Restart po zmianac:<\/p>\n<blockquote><p>sudo service dansguardian restart<\/p><\/blockquote>\n<p>Dostosowanie wy\u015bwietlanej strony blokady mo\u017cna wykona\u0107 w pliku:<\/p>\n<p>\/etc\/dansguardian\/languages\/polish\/template.html<\/p>\n<p>(standardowy HTML + kilka dodatkowych funkcji opisanych w komentarzu do tego pliku, mo\u017cna wy\u015bwietla\u0107 obrazki z internetu)<\/p>\n<p>Warto wy\u015bwietli\u0107 gdzie\u015b na stronie blokady opcj\u0119 -REASONLOGGED- kt\u00f3ra wy\u015bwietla szczeg\u00f3\u0142owe informacje o powodach blokady, wraz z odnalezionymi wyrazami zabronionymi oraz ich wagami. Obserwacja tej zmiennej pomaga w lepszym dopasowaniu konfiguracji filtrowania do naszych potrzeb. Dansguardian jest doskona\u0142ym programem,ale nale\u017cy pami\u0119ta\u0107, \u017ce nie da si\u0119 ca\u0142kowicie zablokowa\u0107 niechcianej tre\u015bci. Filtr obs\u0142uguje wy\u0142\u0105cznie po\u0142\u0105czenia nieszyfrowane na porcie 80. W przypadku stron HTTPS filtr nie zadzia\u0142a. To samo dotyczy szyfrowanych web proxy.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Poni\u017cej przedstawiam instrukcj\u0119 instalacji i konfiguracji serwera Ubuntu do pracy jako router z automatycznym filtrem tre\u015bci stron internetowych. Przyk\u0142adem zastosowania jest usuni\u0119cie mo\u017cliwo\u015bci ogl\u0105dania tre\u015bci pornograficznych na stronach www lub zablokowanie dost\u0119pu do gier online. INSTALACJA SYSTEMU &#8211; \u015bci\u0105gni\u0119cie najnowszej dystrybucji Ubuntu Server (poni\u017csze instrukcje sprawdzone dla wersji 16.04 &#8211; uwaga! tylko aktualne wersje maj\u0105&#8230;<\/p>\n","protected":false},"author":1,"featured_media":745,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[4,84,159,161],"tags":[120,115,117,121,118,116,119],"_links":{"self":[{"href":"http:\/\/kapica.it\/index.php?rest_route=\/wp\/v2\/posts\/744"}],"collection":[{"href":"http:\/\/kapica.it\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/kapica.it\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/kapica.it\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/kapica.it\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=744"}],"version-history":[{"count":9,"href":"http:\/\/kapica.it\/index.php?rest_route=\/wp\/v2\/posts\/744\/revisions"}],"predecessor-version":[{"id":747,"href":"http:\/\/kapica.it\/index.php?rest_route=\/wp\/v2\/posts\/744\/revisions\/747"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/kapica.it\/index.php?rest_route=\/wp\/v2\/media\/745"}],"wp:attachment":[{"href":"http:\/\/kapica.it\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=744"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/kapica.it\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=744"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/kapica.it\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=744"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}