Squid & Qlproxy
Z wiki linux-user
| 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 | + | '''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'''. | 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: | Zalety serwera proxy: | ||
| Linia 10: | Linia 10: | ||
*blokowanie plików po nazwie | *blokowanie plików po nazwie | ||
*i inne | *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> | ||
