Рубрики
squid

CentOS7+squid+https+sams2+Screen_Squid_ v.1.11

0. Устанавливаем httpd:

 
yum -y install httpd-tools - ставим 
yum -y install httpd - ставим веб сервер
systemctl enable httpd.service - вкл автозапуск
systemctl start httpd.service - запустить 
htpasswd -c /etc/squid/auth_users user1 - создать пользователя user1 с паролям

1. Устанавливаем php + mysql:

yum -y install php
yum -y install php-mysql php-common php-mbstring php-gd php-ldap php-odbc php-pear php-xml php-soap php-xmlrpc php-snmp php-mcrypt php-devel php-xml curl curl-devel 

2. Устанавливаем mariadb (MySQL) :

------------------------------------------------------
yum -y install mariadb-server mariadb mariadb-devel- установка
systemctl enable mariadb.service - вкл автозапуск
systemctl start mariadb.service - запустить 
------------------------------------------------------
nano /etc/my.cnf -файл основных настроек
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
#add
bind-address=127.0.0.1
character-set-server=utf8
------------------------------------------------------
mysql_secure_installation - команда начальной настройки (пароль для рута) 
Set root password? [Y/n] y - ставим пароль
Remove anonymous users? [Y/n] y - убрать анонимусов
Disallow root login remotely? [Y/n] y - отключить вход рутом из сети
Remove test database and access to it? [Y/n] y - удалить тест базу
Reload privilege tables now? [Y/n] y - обновить привилегии

3. Установка phpMyAdmin:

yum -y install epel-release - ставим репозиторий EPEL
yum -y install phpmyadmin - установка phpMyAdmin
------------------------------------------------------
nano /etc/httpd/conf.d/phpMyAdmin.conf
-----------------------CUT---------------------------- 

   AddDefaultCharset UTF-8
   
     # Apache 2.4
     
       Require ip 127.0.0.1 - разрешаем подключения с IP
       Require ip 10.0.0.0/24 - разрешаем подключения с IP
     
   
   
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1 - разрешаем подключения с IP
     Allow from 10.0.0.0/24 - разрешаем подключения с IP
    


   
     # Apache 2.4
     
       Require ip 127.0.0.1 - разрешаем подключения с IP
       Require ip 10.0.0.0/24 - разрешаем подключения с IP
     
   
   
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1 - разрешаем подключения с IP
     Allow from 10.0.0.0/24 - разрешаем подключения с IP
     

-----------------------CUT---------------------------- 
------------------------------------------------------
systemctl reload httpd - перезагружаем веб сервер
------------------------------------------------------

4. Установка squid:

yum -y install squid  - установка squid 
systemctl start squid - запустить 
systemctl enable  squid - вкл авто запуск
squid -z - создаем структуру папок под кэш следующей командой
tail /var/log/squid/access.log - логи 
tail /var/log/squid/cache.log - логи 
tail -n 30 /var/log/squid/access.log  - логи 

5. Настраиваем squid конфиг для работы с SAMS2:

vi /etc/squid/squid.conf
-----------------------------------
# TAG: acl - необходим для работы sams2
# TAG: url_rewrite_access - необходим для работы sams2
# TAG: url_rewrite_program - необходим для работы sams2
# TAG: url_rewrite_children - необходим для работы sams2
# TAG: delay_pools - необходим для работы sams2
# TAG: delay_class - необходим для работы sams2
# TAG: delay_access - необходим для работы sams2
# TAG: delay_parameters - необходим для работы sams2
# TAG: http_access - необходим для работы sams2
# TAG: http_access2 - необходим для работы sams2
# TAG: icp_access - необходим для работы sams2
acl localnet src 217.66.157.0/24 - сеть клиентских компьютеров
http_access allow all - разрешить весь трафик
cache_dir ufs /var/spool/squid 4096 32 256 - настраиваем директорию для кэша
http_port 3128 - настройка порта 
http_port 3128 transparent - настройка порта и вкл transparent 
-----------------------------------

7. Установка screen-squid:

https://sourceforge.net/projects/screen-squid/files/stable/ - стабильные версии sreen-squid
cd /usr/src/ - перейдем в каталог
wget https://sourceforge.net/projects/screen-squid/files/stable/v1_11/screensquid_v1_11.tar.gz - скачаем sreensquid
tar -xf screensquid_v1_11.tar.gz - распакуем
ls -la - посмотрим что там распаковалось 
mv html /var/www/html/screen-squid - переместим распакованный каталог в папку веб сервера
cd /var/www/html/screen-squid - перейдем в каталог установки screen-squid
-----------------------
создадим базу squidreport любым способом
-----------------------
nano /var/www/html/screen-squid/config.php - редактируем настройки screen-squid
-----------------------
mysql -u root -p -f squidreport < /var/www/html/screen-squid/createdb/createdb.sql - зальем в базу squidreport
-----------------------
crontab -e - добавим редактируем задание
00 23 * * * perl /var/www/html/screen-squid/fetch.pl
-----------------------
perl /var/www/html/screen-squid/fetch.pl
-----------------------

8. Устанавливаем дополнительные пакеты для установки SAMS2:

yum install glib2 glib2-devel glibc make geoip - установим
yum -y install autoconf automake libtool pcre-devel libstdc++-devel gcc-c++ - установим

7. Устанавливаем sams2:

-----------------------------------
yum -y install epel-release - добавим репозиторий 
yum -y install glib2 glib2-devel glibc make geoip autoconf automake libtool pcre-devel libstdc++-devel gcc-c++  - ставим пакеты для сборки самс2 
cd /usr/src/ - перейдем в каталог 
wget https://github.com/PavelVinogradov/sams2/archive/master.zip - скачаем sams2
unzip master.zip - распакуем
ls -l - посмотрим каталоги 
cd /usr/src/sams2-master/ - перейдем в распакованный каталог 
-----------------------------------
nano /usr/src/sams2-master/src/proxy.h - редактируем файл proxy.h (без этого sams2daemon работать не будет)
enum TrafficType >   enum TrafficType: long
enum usrAuthType >   enum usrAuthType: long
enum RedirType   >   enum RedirType: long
enum ParserType  >   enum ParserType: long
enum CharCase    >   enum CharCase: long
-----------------------------------
make -f Makefile.cvs - готовим к сборке 
-----------------------------------
sh ./configure - готовим к сборке
----вывод ./configure----
Use MySQL API:      yes - важный параметр 
Use PostgreSQL API: no
Use unixODBC API:   no
Use LDAP API:       no
Using pcre:         pcre - важный параметр
Use dynamic plugin: yes
Locations:
config file:        /usr/local/etc/sams2.conf
daemons:            /usr/local/bin
web interface:      /usr/local/share/sams2 - каталог установки
documentation:      /usr/local/share/doc/sams2-2.0.0
-----------------------------------
make install - устанавливаем, но у нас ничего не выйдет :( (ошибка  cannot access '//usr/local/share/sams2/data': No such file or directory)
mkdir -p /usr/local/share/sams2/data - содзаем каталог (его почему то не создает инсталлятор)
make install - устанавливаем, теперь все установилось :)
-----------------------------------
Удаляем сгенерированные файлы установщика
rm /etc/httpd/conf.modules.d/doc4sams2.conf
rm /etc/httpd/conf.modules.d/sams2.conf
-----------------------------------
nano /etc/httpd/conf.d/sams2.conf - создадим свой конфиг apache2 для sams2
Alias /sams2 /usr/local/share/sams2

 AddDefaultCharset UTF-8
 
  
   Require ip 10.1.3.0/24 10.1.4.0/24 - разрешим вход 10.1.3.0/24 10.1.4.0/24
  
 

-----------------------------------
Редактируем конфиг sams
nano /usr/local/etc/sams2.conf
----вывод sams2.conf----
DB_USER=root - интересуют эта строка, временно вводим учетные данные root
DB_PASSWORD=rootpass - интересуют эта строка, временно вводим учетные данные root
-----------------------------------
systemctl restart httpd - ребутаем apache
-----------------------------------
http://IP_FQDN/sams2 - входим
Название базы данных:	MySQL
Имя базы данных:	sams2db
Хост базы данных:       localhost
Имя пользователя БД:    root - используем root
Пароль к базе данных:	пароль_рута
Создать пользователя SAMS для доступа к базе данных 
имя пользователя SAMS: Имя_пользователя_для_базы_данных
пароль:	пароль
-----------------------------------
nano /usr/local/etc/sams2.conf - редактируем конфиг
DB_USER=root - меняем логин на который создали
DB_PASSWORD=rootpass - меняем пароль  на который создали
-----------------------------------
http://IP_FQDN/sams2 - входим
admin, пароль — qwerty
-----------------------------------
cd /usr/src/sams2-master/redhat/ - переходим в каталог
cp /usr/src/sams2-master/redhat/init.d /usr/src/sams2-master/redhat/init.d.b - делаем копию на всякий
nano /usr/src/sams2-master/redhat/init.d - редактируем файл init.d
---edit init.d---
[ -f __CONFDIR/sams2.conf ] || exit 0 >>>меняем на>>>  [ -f /usr/local/etc/sams2.conf ] || exit 0
DAEMON=__PREFIX/sams2daemon  >>>меняем на>>>  DAEMON=/usr/local/bin/sams2daemon
-----------------
cp /usr/src/sams2-master/redhat/init.d /etc/init.d/sams2 - копируем скрипт запуска sams2daemon
/etc/init.d/sams2 start - запускаем 
systemctl start sams2 - или так  запускаем 
systemctl enable sams2 - добавляем в автозагрузку

Чистка кеша squid:

systemctl stop squid - останавливаем squid
/etc/init.d/sams2 stop - останавливаем sams
grep cache_dir /etc/squid/squid.conf - узнаем расположение кеша
rm -rf /var/spool/squid/* - удаляем кеш
squid -z - создаем структуру для нового кеша
systemctl start squid - запускаем squid
/etc/init.d/sams2 start - запускаем sams
/etc/init.d/sams2 restart - пере запускаем sams

sams перестал считать трафик:

1. отключил самс. 
2. squid -k rotate
3. запустить самс 
4. sams -d начал считать трафик... 

wpad:

для dhcp сервера
dhcp-option=252,http://10.0.0.1/wpad.dat
файл wpad.dat
function FindProxyForURL(url, host)
{
if(isInNet(host, "10.0.0.0", "255.255.255.0")) { return "DIRECT"; }
if (shExpMatch(host, "127.0.0.1" )) {return "DIRECT";}
if (shExpMatch(host, "*/localhost*" )) {return "DIRECT";}
if (shExpMatch(url, "https:*")) {return "DIRECT";}
return "PROXY 10.0.0.1:3128";
}

Логи squid:

1034456544.292    295 1.1.1.1 TCP_CLIENT_REFRESH_MISS/200 535 GET http://www......   
расшифровывается так:  
когда_был_запрос сколько_длился_запрос удаленный_хост код_запроса/статут_запроса размер_запроса метод_HTTP URL_запроса 
А поля эти значат такие вещи: 

1. Время, когда был обслужен запрос. Это стандартное Epoch time. 
Чтобы перевести в понятные циферки, делай что-нибудь такое (это на Перле):  
$time=1034456544.292; 
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime($time); 

2. Время обслуживания запроса - т.е. сколько милисекунд твой Squid получал страничку и отдавал ее клиенту 

3. IP удаленного хоста, откуда читался запрос 

4. Код выполнения запроса. По нему можно увидеть, был ли запрошенный объект уже в кеше, 
или его пришлось получать заново. Или он был, но его пришлось обновить. 
В твоем случае, объекта в кеше был, но когда Squid спросил по URL'у, 
менялся ли запрашиваемый объект, ему ответили, что менялся, и прислали новую версию. 
 
5. Статус выполнения запроса. число 200 это успешное завершение,  403 это редирект, 500 это ошибка сервера. Кодов куча.
 
6. Количество байт в транзакции, сколько занимал скачанный и переданный клиенту запрос. 
 
7. Метод HTTP запроса для скачивания объекта. Это GET, POST, HEAD. 
 
8. Собственно URL того что запрашивал клиент 

доп материалы:

https://b14esh.com/nix/centos/centos-7-tools.html - команды начальной настройки
https://b14esh.com/nix/centos/centos-setup-net.html - настройки сети
http://libreportal.net/advice/squid-IP-autorization.html
http://sams.perm.ru/doc/ru/squid.html
https://serveradmin.ru/nastroyka-proksi-servera-na-centos-7-squid-ad-sams2/
http://v-alexeev.ru/sams-squid-ubuntu-12-04/
https://habrahabr.ru/post/205460/
https://www.dmosk.ru/instruktions.php?object=squid-install
https://habrahabr.ru/company/mailru/blog/259521/ - wpad
https://interface31.ru/tech_it/2010/12/ubuntu-server-nastraivaem-avtorizaciyu-cherez-squid.html - wpad