Squid & Qlproxy
Z wiki linux-user
(Utworzył nową stronę „Category:Serwer == Serwer proxy == '''Proxy''' <br /><google1 style="4"></google1>”) |
|||
Linia 1: | Linia 1: | ||
[[Category:Serwer]] | [[Category:Serwer]] | ||
== Serwer proxy == | == Serwer proxy == | ||
− | ''' | + | '''Serwer proxy''' służy do filtrowania ruchu w sieci, w dzisiejszych czasach odgrywa już bardzo małą rolę albo w ogóle jej nie odgrywa jeśli chodzi o caching stron (gdyż wiele ze stron www tworzona jest dynamicznie). |
+ | W tym howto chciałbym zademonstrować w jaki sposób możemy zainstalować oraz skonfigurować oprogramowanie '''squid''' oraz '''qlproxy''' do działania w roli serwera '''proxy'''. | ||
+ | Zalety serwera proxy: | ||
+ | *filtrowanie stron po treściach | ||
+ | *filtrowanie domen | ||
+ | *filtrowanie rozszerzeń ściąganych plików | ||
+ | *blokowanie reklam | ||
+ | *blokowanie plików po nazwie | ||
+ | *i inne | ||
+ | Konfiguracja serwera została przeprowadzona na systemie CentOS 6.0 i nie powinna wiele odbiegać od instalacji tego typu oprogramowania na innych dystrybucjach takich jak np [[debian]]. | ||
+ | Oprogramowanie instalowane było na serwerze działającym jako router z następującą konfiguracją sieci | ||
+ | #ip a | ||
+ | eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000 | ||
+ | link/ether 4c:00:10:7b:6a:03 brd ff:ff:ff:ff:ff:ff | ||
+ | inet 10.14.14.131/24 brd 10.14.14.255 scope global eth1 | ||
+ | inet6 fe80::4e00:10ff:fe7b:6a03/64 scope link | ||
+ | valid_lft forever preferred_lft forever | ||
+ | eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000 | ||
+ | link/ether 00:24:1d:d0:53:64 brd ff:ff:ff:ff:ff:ff | ||
+ | inet 192.168.0.1/24 brd 192.168.0.255 scope global eth0 | ||
+ | inet6 fe80::224:1dff:fed0:5364/64 scope link | ||
+ | valid_lft forever preferred_lft forever | ||
+ | gdzie '''eth1''' to ''WAN'' a '''eth0''' to ''LAN''. | ||
+ | |||
+ | === Instalacja oprogramowania squid === | ||
+ | Aby zainstalować oprogramowanie '''Squid''' należy wydać polecenie jako root | ||
+ | yum install squid | ||
+ | w moim przypadku (system CentOS 6.0) była to wersja ''squid i386 3.1.STABLE21-6.el6'' | ||
+ | W kolejnym kroku ustawiamy '''squida''' tak aby uruchamiał się wraz ze startem systemu | ||
+ | chkconfig squid on | ||
+ | |||
+ | === Konfiguracja oprogramowania squid === | ||
+ | Pliki konfiguracyjne squid'a znajdują się w ścieżce ''/etc/squid/'' a głównym plikiem konfiguracyjnym jest '''squid.conf'''. Plik squid.conf zawiera bardzo dużo komentarzy co utrudnia edycję dlatego też polecam usunąć wszelkiego rodzaju komentarze i doprowadzić plik squid.conf do takiej postaci | ||
+ | |||
+ | acl all src 0.0.0.0/0.0.0.0 | ||
+ | acl manager proto cache_object | ||
+ | acl localhost src 127.0.0.1/255.255.255.255 | ||
+ | acl to_localhost dst 127.0.0.0/8 | ||
+ | acl SSL_ports port 443 | ||
+ | acl Safe_ports port 80 # http | ||
+ | acl Safe_ports port 21 # ftp | ||
+ | acl Safe_ports port 443 # https | ||
+ | acl Safe_ports port 70 # gopher | ||
+ | acl Safe_ports port 210 # wais | ||
+ | acl Safe_ports port 1025-65535 # unregistered ports | ||
+ | acl Safe_ports port 280 # http-mgmt | ||
+ | acl Safe_ports port 488 # gss-http | ||
+ | acl Safe_ports port 591 # filemaker | ||
+ | acl Safe_ports port 777 # multiling http | ||
+ | acl CONNECT method CONNECT | ||
+ | http_access allow manager localhost | ||
+ | http_access deny manager | ||
+ | http_access deny !Safe_ports | ||
+ | http_access deny CONNECT !SSL_ports | ||
+ | http_access allow localhost | ||
+ | http_access deny all | ||
+ | icp_access allow all | ||
+ | http_port 3128 | ||
+ | hierarchy_stoplist cgi-bin ? | ||
+ | access_log /var/log/squid/access.log squid | ||
+ | acl QUERY urlpath_regex cgi-bin \? | ||
+ | cache deny QUERY | ||
+ | refresh_pattern ^ftp: 1440 20% 10080 | ||
+ | refresh_pattern ^gopher: 1440 0% 1440 | ||
+ | refresh_pattern . 0 20% 4320 | ||
+ | acl apache rep_header Server ^Apache | ||
+ | broken_vary_encoding allow apache | ||
+ | coredump_dir /var/spool/squid | ||
+ | Zmieniamy następujące opcje tak aby dostosować do swoich potrzeb | ||
+ | acl all src 192.168.0.0/24 | ||
+ | oraz aby nasz serwer pracował w postaci serwera proxy transparentnego | ||
+ | http_port 3128 transparent | ||
+ | i restartujemy squida | ||
+ | service squid start | ||
+ | |||
+ | === Instalacja qlproxy === | ||
+ | Ściągamy paczkę dla swojego systemu ze strony | ||
+ | ja używam programu curl do ściągnięcia paczki http://www.quintolabs.com/qlicap_download.php | ||
+ | curl http://www.quintolabs.com/qlproxy/binaries/2.0.1/qlproxy-2.0.0-1cbef.i386.rpm>qlproxy-2.0.0-bb01d.i386.rpm | ||
+ | i instalujemy oprogramowanie za pomocą polecenia | ||
+ | yum localinstall qlproxy-2.0.0-bb01d.i386.rpm --nogpgcheck | ||
+ | i wydajemy polecenie aby qlproxy uruchamiało się przy starcie systemu | ||
+ | chkconfig qlproxy on | ||
+ | === Integracja squida z qlproxy === | ||
+ | Teraz musimy umożliwić współpracę squida z qlproxy, zaczniemy od dodania odpowiednich opcji do pliku ''/etc/squid/squid.conf'' | ||
+ | icap_enable on | ||
+ | icap_preview_enable on | ||
+ | icap_preview_size 4096 | ||
+ | icap_persistent_connections on | ||
+ | icap_send_client_ip on | ||
+ | icap_send_client_username on | ||
+ | icap_service qlproxy1 reqmod_precache bypass=0 icap://127.0.0.1:1344/reqmod | ||
+ | icap_service qlproxy2 respmod_precache bypass=0 icap://127.0.0.1:1344/respmod | ||
+ | adaptation_access qlproxy1 allow all | ||
+ | adaptation_access qlproxy2 allow all | ||
+ | i restartujemy usługi | ||
+ | service qlproxy start | ||
+ | oraz | ||
+ | service squid restart | ||
+ | Główne pliki konfiguracyjne '''qlproxy''' znajdują się w ścieżce ''/etc/opt/quintolabs/qlproxy/policies''. | ||
+ | Możesz użyć pliku ''/etc/opt/quintolabs/qlproxy/policies/strict/rules/block_ads.conf'' do blokowania reklam wyświetlających się na stronach www, w tym celu edytujesz plik block_ads.conf i usuwasz komentarze tak jak poniżej | ||
+ | # less /etc/opt/quintolabs/qlproxy/policies/strict/rules/block_ads.conf | ||
+ | |||
+ | ################################################################################# | ||
+ | # block_ads.conf | ||
+ | # | ||
+ | # Contains specific ad blocking rules for the default policy. To disable | ||
+ | # ad block in this policy completely, comment out all lines in this file | ||
+ | # | ||
+ | # Available subscription names are file names present in $VARDIR/spool/adblock | ||
+ | # | ||
+ | ################################################################################ | ||
+ | use_subscription = easylist.txt | ||
+ | use_subscription = easylistgermany.txt | ||
+ | use_subscription = fanboy-russian.txt | ||
+ | use_subscription = easylist_custom.txt | ||
+ | use_subscription = easyprivacy.txt | ||
+ | |||
+ | Do pliku ''block_site_by_name.conf'' możemy dodać regułe | ||
+ | regexp = http:// \ d + \. \ D + \. \ D + \. \ D + / *. | ||
+ | aby blokować wyświatlanie stron po adresach IP. | ||
+ | Po wprowadzonych zmianach należy zrestartować '''qlproxy''' | ||
+ | /etc/init.d/qlproxy restart | ||
+ | |||
+ | === Instalacja graficznego GUI programu qlproxy === | ||
+ | Możemy zainstalować sobie oprogramowanie, które pozwoli nam na przeglądanie logów i konfigurację qlproxy za pośrednictwem przeglądarki internetowej. Do tego celu potrzebujemy działający serwer www, jak uruchomić serwer stron www opisane jest [[Apache|tutaj]]. | ||
+ | Jeżeli mamy już działający serwer www, możemy przystąpić do instalacji oraz konfiguracji dodatkowych modułów dla serwera apache oraz pythona aby to uczynić wydajemy kolejne polecenia jako [[root]] w terminalu | ||
+ | # yum install mod_wsgi python-setuptools | ||
+ | # easy_install virtualenv | ||
+ | # cd /var/opt/quintolabs/qlproxy/www | ||
+ | # virtualenv --no-site-packages qlproxy_django | ||
+ | # ./qlproxy_django/bin/easy_install django==1.3.1 | ||
+ | A następnie do pliku ''/etc/httpd/conf/httpd.conf'' dodajemy poniższy wpis | ||
+ | <VirtualHost *:80> | ||
+ | ServerName proxy.lan | ||
+ | ServerAdmin webmaster@proxy.lan | ||
+ | LogLevel info | ||
+ | ErrorLog /var/log/httpd/proxy.lan-error.log | ||
+ | CustomLog /var/log/httpd/proxy.lan-access.log combined | ||
+ | # aliases to static files (must come before the mod_wsgi settings) | ||
+ | Alias /static/ /var/opt/quintolabs/qlproxy/www/qlproxy/static/ | ||
+ | Alias /redirect/ /var/opt/quintolabs/qlproxy/www/qlproxy/redirect/ | ||
+ | # mod_wsgi settings | ||
+ | WSGIDaemonProcess proxy.lan display-name=%{GROUP} | ||
+ | WSGIProcessGroup proxy.lan | ||
+ | WSGIScriptAlias / /var/opt/quintolabs/qlproxy/www/qlproxy/qlproxy.wsgi | ||
+ | <Directory /var/opt/quintolabs/qlproxy/www/qlproxy> | ||
+ | Order deny,allow | ||
+ | Allow from all | ||
+ | </Directory> | ||
+ | </VirtualHost> | ||
+ | oraz do pliku ''/etc/httpd/conf.d/wsgi.conf'' dodajemy | ||
+ | WSGISocketPrefix /var/run/wsgi | ||
+ | I po restarcie serwera Apache | ||
+ | /etc/init.d/httpd restart | ||
+ | powinniśmy móc wejść na stronę http://ip_serwera_apache/qlproxy | ||
<br /><google1 style="4"></google1> | <br /><google1 style="4"></google1> |