Instalacja Squid Proxy Serwer, ClamAV, SquidClamav, C-ICAP Serwer – Debian 6, Debian 7, Debian 8, Ubuntu.

Instalacja Squid Proxy Serwer, ClamAV, SquidClamav, C-ICAP Serwer – Debian 6, Debian 7, Debian 8, Ubuntu.

 

 

 

 

1. Instalacja programów potrzebnych do kompilacji i instalacji programów ze źródeł.

sudo apt-get install gcc make curl libcurl4-gnutls-dev

 

2. Instalacja i konfiguracja Squida.

sudo apt-get install squid3 calamaris

 

Edycja pliku konfiguracyjnego /etc/squid3/squid.conf.

sudo nano /etc/squid3/squid.conf

 

Upewniamy się że ten wpis nie jest zahashowany.

acl CONNECT method CONNECT

 

Definiujemy naszą wewnętrzną listę kontroli ACL.

acl LAN src 192.168.0.0/24

 

Dodatkowo możemy dodać listy tj: blacklist, whitelist, malware_block_list do naszej konfiguracji.
Będą się w niej znajdowały adresy stron ze: spamem, reklamami, virusami, rootkitami, malwarem, robakami, trojanami, backdoorami…

acl malware_block_list url_regex -i "/etc/squid3/malware_block_list"
acl blacklist dstdom_regex "/etc/squid3/blacklist"
acl whitelist dstdom_regex "/etc/squid3/whitelist"

 

Ustawiamy dostęp do internetu.
Uwaga!, kolejność ma znaczenie!
Dodajemy i ustawiamy dostępy:

http_access allow whitelist
http_access deny blacklist
http_access deny malware_block_list
http_access allow LAN

 

Powiadamianie o blokadzie użytkowników stroną z błędem.
Zablokowane reklamy bedą wyswietlały się jako puste miejsca na stronie..

deny_info http://twój_serwer/error/dot-transparent.png blacklist
deny_info http://twój_serwer/error/dot-transparent.png whitelist
deny_info http://twój_serwer/error/error.html malware_block_list

 

Upewniamy się że wpisy poniżej wyglądają tak samo nie są zahashowane.

http_access allow localhost
http_access allow manager localhost
http_access deny manager
http_access allow !Safe_ports
http_access allow CONNECT !SSL_ports
http_access allow localhost
http_access deny all

 

Ustawiamy adres IP i port nasłuchiwania.
transparent oznacza brak cachowania.
192.168.0.X – podstawiamy własny adres IP.

http_port 192.168.0.X:3128 intercept

 

Dodatkową opcją jest Anonymizer.
Blokujemy dostęp do nagłówków np:

request_header_access Allow allow all
request_header_access Authorization allow all
request_header_access WWW-Authenticate allow all
request_header_access Proxy-Authorization allow all
request_header_access Proxy-Authenticate allow all
request_header_access Content-Encoding allow all
request_header_access Content-Length allow all
request_header_access Content-Type allow all
request_header_access Date allow all
request_header_access Expires allow all
request_header_access Host allow all
request_header_access If-Modified-Since allow all
request_header_access Last-Modified allow all
request_header_access Location allow all
request_header_access Pragma allow all
request_header_access Accept allow all
request_header_access Accept-Charset allow all
request_header_access Accept-Encoding allow all
request_header_access Accept-Language allow all
request_header_access Content-Language allow all
request_header_access Mime-Version allow all
request_header_access Retry-After allow all
request_header_access Title allow all
request_header_access Connection allow all
request_header_access Proxy-Connection allow all
request_header_access User-Agent allow all
request_header_access Cookie allow all
request_header_access Referer deny all
request_header_access X-Forwarded-For deny all
request_header_access Via deny all
request_header_access All deny all
request_header_access Cache-Control deny all
httpd_suppress_version_string on

 

Cache (400MB)

cache_dir ufs /var/spool/squid3 400 16 256

 

Wyłączenie cachowania dla naszej sieci:

cache deny LAN

 

Nazwa hosta

visible_hostname twój_serwer

 

Ukrywanie adresu IP

forwarded_for off

 

Uwaga!

Jeśli nie posiadamy własnego serwera dns cache (np: bind), ładowanie stron trwa wieki lub widzisz stronę z błędem od Squida, należy usunąć hash przy dns_nameservers i dodać dnsy swojego ISP np:

dns_nameservers 12.34.56.78 98.76.54.32

 

Ściągamy pliki blacklist i whitelist i zapisujemy je w katalogu /etc/squid3.

sudo wget http://pl.terminal28.com/wp-content/uploads/2012/02/blacklist.tar.bz2
sudo tar -xvf blacklist.tar.bz2
sudo mv blacklist whitelist /etc/squid3

 

Restart Squida.

sudo /etc/init.d/squid3 restart
Restarting Squid HTTP Proxy 3.x: squid3 Waiting.....................done.

 

Uwaga!

Od 7.10.2013 należy subskrybować listę adresów malware.

 

Ściągamy skrypt do aktualizacji listy domen i adresów IP (malware_block_list), rozpakowujemy i zapisujemy.

wget http://pl.terminal28.com/wp-content/uploads/2012/02/malware_block_list.tar.bz2
sudo tar -xvf malware_block_list.tar.bz2
sudo mv malware_block_list /usr/local/bin/
sudo chmod +x /usr/local/bin/malware_block_list
sudo rm -fr malware_block_list.tar.bz2
sudo touch  /var/log/malware_block_list.log

 

Dodajemy skrypt do Crona aby móc go aktualizować automatycznie (jeden raz dziennie).

sudo crontab -e
@daily /etc/squid3/lista_malware.cmd

 

Przejdź do nowej strony MalwarePatrol.net, następnie kliknij w menu Block List.
Powinna pojawić się lista subskrypcji: darmowa (niepełna) i płatna. Na dole listy kliknij w Free/Subscribe.
Zostaniesz przekierowany na stronę subskrypcji gdzie należy wypełnić dane.
Po wypełnieniu danych powinieneś dostać powiadomienie mailem o subskrypcji oraz dane logowania.
Zaloguj się na stronę: https://www.malwarepatrol.net/login.php; zostaniesz przekierowany na stronę z listami malware.
Znajdź listę Squid Web Proxy ACL i kliknij w Download.
Powinna otworzyć się strona z listą adresów malware.
Każda subskrypcja posiada unikalny identyfikator, który jest także hasłem np:
https://lists.malwarepatrol.net/cgi/getfile?receipt=f1234567890&product=8&list=squid
Skopiuj link z przeglądarki i wklej go do skryptu przy zmiennej link.

Uzupełnij pola: link, user, pass.

sudo nano /usr/local/bin/malware_block_list

link='TU WKLEJ LINK ZE STRONY Z MALWAREPATROL.NET'
user='--http-user=NAZWA_UŻYTKOWNIKA'
passwd='--http-passwd=HASŁO_UŻYTKOWNIKA'

 

sudo sh /usr/local/bin/malware_block_list

 

3. Instalacja i configuracja antywirusa ClamAV.

sudo apt-get install clamav-daemon

Upewniamy się, że taki wpis istnieje w pliku konfiguracyjnym ClamAV:

sudo nano /etc/clamav/clamd.conf
LocalSocket /var/run/clamav/clamd.ctl

 

Konfiguracja Freshclam.

sudo nano /etc/clamav/freshclam.conf
SafeBrowsing true

 

Rejestrujemy sie na stronie Securiteinfo.com:

https://www.securiteinfo.com/clients/customers/account

Subskrybujemy prostą listę do clamav (Basic).
W zakładce Setup powinna pojawić się informacja o wygenerowanych linkach do baz danych które są przypisane do naszego konta. Bazę danych należy aktualizować nie częsciej niż raz dziennie.

securiteinfo.com_01
Wygenerowane linki dodajemy na sam koniec pliku konfiguracyjne freshclam.conf.

DatabaseCustomURL http://www.securiteinfo.com/get/signatures/3b4d0...5764/securiteinfo.hdb
DatabaseCustomURL http://www.securiteinfo.com/get/signatures/3b4b...eafd/securiteinfo.ign2
DatabaseCustomURL http://www.securiteinfo.com/get/signatures/3b4d0d...61eafd/javascript.ndb
DatabaseCustomURL http://www.securiteinfo.com/get/signatures/34d...81f/spam_marketing.ndb
DatabaseCustomURL http://www.securiteinfo.com/get/signatures/3b...61eafd/securiteinfohtml.hdb
DatabaseCustomURL http://www.securiteinfo.com/get/signatures/3b...365afd/securiteinfoascii.hdb

 

4. Instalacja i konfiguracja serwera ICAP.

Tworzymy folder install, do którego bedziemy ściągali i kompilowali programy.

sudo mkdir /var/run/c-icap
sudo mkdir install
cd install
sudo wget http://sourceforge.net/projects/c-icap/files/c-icap/0.3.x/c_icap-0.3.5.tar.gz/download -O c_icap-0.3.5.tar.gz

 

Rozpakowujemy i kompilujemy i instalujemy.

sudo tar -xvf c_icap-0.3.5.tar.gz
cd c_icap-0.3.5
sudo ./configure
sudo make
sudo make install
cd ..

 

Konfiguracja serwera c-icap.

sudo nano /usr/local/etc/c-icap.conf

 

Zmieniamy:

ServerAdmin root@twój_serwer
ServerName twój_serwer

 

Dodajemy..

Service squidclamav squidclamav.so

 

C-ICAP server autostart script.

sudo wget http://pl.terminal28.com/wp-content/uploads/2013/10/c-icap-autostart.tar.gz
sudo tar xvf c-icap-autostart.tar.gz
sudo rsync -avh init.d default /etc
sudo update-rc.d c-icap defaults

 

Użycie: /etc/init.d/c-icap {start|stop|restart|force-reload|status|force-stop}

 

 

Tworzenie skryptu do rotacji logów.

sudo cat << EOT > /etc/logrotate.d/c-icap
/usr/local/var/log/server.log /usr/local/var/log/access.log {
     daily
     rotate 4
     missingok
     notifempty
     compress
     create 0644 root root
     postrotate
     /etc/init.d/c-icap force-reload > /dev/null
     endscript
}
EOT

 

Zmiana uprawnień do skryptu i logów serwera c-icap.

sudo chmod 644 /etc/logrotate.d/c-icap
sudo chown root:root /etc/logrotate.d/c-icap
sudo chmod 644 /usr/local/var/log/ -R
sudo chown root:root /usr/local/var/log/ -R
sudo ln -s /usr/local/var/log/server.log /var/log/server.log
sudo ln -s /usr/local/var/log/access.log /var/log/access.log

 

Położenie logów serwera c-icap:

/usr/local/var/log/server.log
/usr/local/var/log/access.log

or

/var/log/access.log
/var/log/server.log

 

5. Instalacja squidclamav.

Ściągamy squidclamav.

sudo wget https://sourceforge.net/projects/squidclamav/files/squidclamav/6.15/squidclamav-6.15.tar.gz/download -O squidclamav-6.15.tar.gz

 

Rozpakowujemy, kompilujemy i instalujemy.

sudo tar zxvf squidclamav-6.15.tar.gz
cd squidclamav-6.15
sudo ./configure
sudo make
sudo make install
cp -rf cgi-bin /usr/lib/
chmod +x /usr/lib/cgi-bin/clwarn* -R
chown www-data:www-data /usr/lib/cgi-bin/clwarn* -R
sudo ldconfig

 

Skrypt informujacy o rodzaju wirusa w języku polskim.

sudo nano /usr/lib/cgi-bin/clwarn-pl.cgi

#!/usr/bin/perl
use strict;

use CGI;

my $VERSION = '6.10';

my $cgi = new CGI;

my $url = CGI::escapeHTML($cgi->param('url')) || '';
my $virus = CGI::escapeHTML($cgi->param('virus')) || CGI::escapeHTML($cgi->param('malware')) || '';
my $source = CGI::escapeHTML($cgi->param('source')) || '';
$source =~ s/\/-//;
my $user = CGI::escapeHTML($cgi->param('user')) || '';


my $TITLE_VIRUS = "SquidClamAv $VERSION: Znaleziono Wirusa!";
my $subtitle = 'Nazwa wirusa';
my $errorreturn = 'Ten plik nie mo&#380;e by&#263; sci&#261;gniety.';
my $urlerror = 'zawiera wirusa.';
if ($virus =~ /Safebrowsing/) {
    $TITLE_VIRUS = "SquidClamAv $VERSION: Unsafe Browsing detected";
    $subtitle = 'Typ malware / pishing';
    $urlerror = 'znajduje si&#281; na li&#347;cie podejrzanych';
    $errorreturn = 'Ta strona nie mo&#380;e być wy&#347;wietlona';
}

# Remove clamd infos
$virus =~ s/stream: //;
$virus =~ s/ FOUND//;


print $cgi->header();

print $cgi->start_html(-title => $TITLE_VIRUS, -bgcolor => "#353535");
print qq{
    <style type="text/css">
    .visu {
    border:1px solid #C0C0C0;
    color:#FFFFFF;
      position: relative;
      min-width: 13em;
      max-width: 52em;
      margin: 4em auto;
      border: 1px solid ThreeDShadow;
      border-radius: 10px;
      padding: 3em;
      -moz-padding-start: 30px;
    background-color: #8b0000;
}
.visu h2, .visu h3, .visu h4 {
    font-size:130%;
    font-family:"verdana";
    font-style:normal;
    font-weight:bolder;
}
</style>    
    <div class="visu">
    <h2>$TITLE_VIRUS</h2>
    <hr>
    <p>
};
print qq{
    Adres URL $url $urlerror<br>
    $subtitle: $virus
};

print qq{
    <p>
    $errorreturn
    <p>
    Pochodzenie: $source / $user
    <p>
    <hr>
    <font color="blue"> Powered by <a href="http://squidclamav.darold.net/">SquidClamAv $VERSION</a>.</font>
    </div>
};

print $cgi->end_html();

exit 0;

 

Konfiguracja squidclamav Pobieramy plik error.tar.bz2 z informacją o błędzie, rozpakowujemy go i zapisujemy w np: /var/www do którego ustawimy przekierowanie..

sudo wget http://pl.terminal28.com/wp-content/uploads/2012/02/error.tar
sudo tar -xvf error.tar
sudo mv error /var/www/
sudo chmod 750 -R /var/www/error/

 

Edycja pliku konfiguracyjnego squidclamav.conf.

sudo nano /etc/squidclamav.conf

lub

sudo nano /usr/local/etc/squidclamav.conf

 

Przekierowanie adresu URL.

redirect http://twój_serwer/cgi-bin/clwarn-pl.cgi

 

Upewniamy się, że taki wpis istnieje.

clamd_local /var/run/clamav/clamd.ctl

 

6. Weryfikacja pliku konfiguracyjnego ClamAV.

Upweniamy się, że ClamAV posiada taki wpis:

sudo nano /etc/clamav/clamd.conf
LocalSocket /var/run/clamav/clamd.ctl

Restart ClamAV after changing.

sudo /etc/init.d/clamav-daemon restart

Jeżeli ClamAV jest skonfigurowany do nasłuchiwania na odpowiednim adresie IP i porcie, należy przekonfigurować squidclamav do nasłuchiwania na tych samym adresie IP i porcie.

7. Ponowna konfiguracja serwera Squid.

Konfiguracja Squid w wersji..3.1.20.

sudo nano /etc/squid3/squid.conf

 

Dodajemy..

icap_enable on
icap_send_client_ip on
icap_send_client_username on
icap_client_username_header X-Authenticated-User
icap_service service_req reqmod_precache bypass=1 icap://127.0.0.1:1344/squidclamav
adaptation_access service_req allow all
icap_service service_resp respmod_precache bypass=1 icap://127.0.0.1:1344/squidclamav
adaptation_access service_resp allow all

 

Konfiguracja Squid w wersji..3.1.6.

sudo nano /etc/squid3/squid.conf

 

Dodajemy..

icap_enable on
icap_send_client_ip on
icap_send_client_username on
icap_client_username_encode off
icap_client_username_header X-Client-Username
icap_preview_enable on
icap_preview_size 1024

adaptation_service_set service_req
icap_service service_req reqmod_precache bypass=1 icap://127.0.0.1:1344/request
adaptation_access service_req allow all

adaptation_service_set service_resp
icap_service service_resp respmod_precache bypass=0 icap://127.0.0.1:1344/response
adaptation_access service_resp allow all

 

Uruchamiamy serwer c-icap.
Powinniśmy zobaczyć wypis podobny do tego:

sudo /usr/local/bin/c-icap &

 

Powinniśmy zobaczyć wypis podobny do tego:

[1] 28936

 

8. Restart Squid’a.

sudo /etc/init.d/squid3 restart
Restarting Squid HTTP Proxy 3.x: squid3 Waiting.....................done.

 

9. Konfiguracja firewall’a – maskarada, prerouting.

Włączanie forwardowania.
Edytujemy plik sysctl.conf

sudo nano /etc/sysctl.conf

 

Usuwamy hash przy forwardowaniu IPv4 i IPv6 i zmieniamy 0 na 1:

Net.ipv4.ip_forward = 1
Net.ipv6.conf.all.forwarding = 1

 

Dodajemy regółki (zmieniamy adres IP i interfejs sieciowy na swój)

*nat
-A PREROUTING -p tcp -m tcp -i eth0 --dport 80 -j REDIRECT --to-ports 3128
-A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

 

10. Test.

Jeśli wszystko poszło pomyślnie, możemy przetestować nasze wypociny.
Wchodzimy na stronę: http://www.eicar.org/85-0-Download.html
i próbujemy ściągnąć plik:

eicar.com
68 Bytes

Wynik:
Powinniśmy zostać przekierowani na nasz adres URL:

  • http://twój_serwer/cgi-bin/clwarn-pl.cgi,
  • http://twój_serwer/error.html.

 

squidclamav-pl

 

1 komentarz

1 ping

    • Krystian on 22 kwietnia, 2013 at 19:44
    • Odpowiedz

    A gdybym chciał blokować porty HTTPS (ssl dla www) to gdzie wpis powinien się znajdować?

Dodaj komentarz

Twój adres email nie będzie publikowany.