Рубрики
squid

CentOS + squid + kerberos + screen-squid

Лучшая связка squid + kerberos + screen-squid
squid:

yum -y install squid  - установка squid 
systemctl start squid - запустить 
systemctl enable  squid - вкл авто запуск
squid -z - создаем структуру папок под кэш следующей командой
----------------------------------------
простой конфиг:


####для банка
acl ibank_dst dst 195.95.218.21
acl ibank_dst dst 23.43.139.27
acl ibank_dst dst 172.16.155.58
http_access allow ibank_dst

####Интернет для пользователей без домена 
acl no_kerb_auth src 10.17.0.102
http_access allow no_kerb_auth

#### Для авторизации через kerberos 
#### Генерировать на контролере домена 
####ktpass -princ HTTP/имя_прокси_сервера.домен.windows@ДОМЕН.WINDOWS -mapuser домен\Имя_пользователя_в_домене -pass "password*" -ptype KRB5_NT_SRV_HST -out HTTP7.keytab
#auth_param negotiate program /usr/lib64/squid/negotiate_kerberos_auth -d -s HTTP/proxy.domain.ru@DOMAIN.RU
#auth_param negotiate children 10
#auth_param negotiate keep_alive on
#acl kerb_auth proxy_auth REQUIRED

#### Для авторизации по паролю
#### htpasswd -c /etc/squid/squidusers user1 - создание файла для паролей и добавление в него пользователя user1
#### htpasswd /etc/squid/squidusers user2 - добавление нового пользователя user2 в файл с паролями
#### chmod 440 /etc/squid/squidusers - выставляем права 440 для файла /etc/squid/squidusers 
#### chown proxy:proxy /etc/squid/squidusers - задаем пользователя и группу proxy
#auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/squidusers 
#acl password_auth proxy_auth REQUIRED


#### Список доступа  по времени 
acl Work_Time time MTWHFAS 00:00-23:59
http_access allow Work_Time      # разрешаем Work_Time

#### Список доступа для  адреса
acl Users_Allow src 10.10.0.101
acl Users_Allow src 10.10.0.109
acl Users_Allow src 10.10.0.110
http_access allow Users_Allow    # разрешаем Users_Allow

#### Список доступа сети
acl localnet src 192.168.15.0/24 # для сети 192.168.15.0/24
acl localnet src 10.10.0.0/24    # для сети 10.10.0.0/24
http_access allow localnet       # разрешаем localnet                                  

####  Список доступа порты
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 deny !Safe_ports    # запретить все не(!) Safe_ports 

#### Запрет сайтов 
acl Site_Deny dstdom_regex vk.com ya.ru
http_access deny Site_Deny      # запрещаем сайты 

##### запрещаем все остальное
http_access deny all            # запрещаем все остальное 


#### Порт proxy 
http_port 3128

#### Кеш proxy
cache_dir ufs /var/spool/squid 4096 32 256
coredump_dir /var/spool/squid


#### Дополнительные параметры оптимизации кэширования
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320

#### это кол-во дескрипторов которые может использовать squid
max_filedesc 4096

----------------------------------------

kerberos:

----------------------------------------
!!!У прокси сервера должно быть имя FQDN!!!
!!!Прокси за именем DC лезит в файл /etc/hosts
!!!За DNS /etc/resolv.conf
Создаем пользователя в домене.
Заходим на домен windows и создаем файл HTTP7.keytab с помощью ktpass.
!!!! что пишется после @ обязательно писать ЗАГЛАВНЫМИ буквами!
ktpass -princ HTTP/proxy_squid.domain.loc@DOMAIN.LOC -mapuser nbtname\proxy_squid -pass "password*" -ptype KRB5_NT_SRV_HST -out HTTP7.keytab
ktpass -princ HTTP/имя_прокси_сервера.домен.windows@ДОМЕН.WINDOWS -mapuser домен\Имя_пользователя_в_домене -pass "password*" -ptype KRB5_NT_SRV_HST -out HTTP7.keytab
----------------------------------------
yum install cyrus-sasl-gssapi krb5-workstation krb5-devel - ставим пакеты для керберос
----------------------------------------
Файл HTTP7.keytab доставляем на сервер со сквидом в папку /etc/squid
cd /etc/squid  - переходим в каталог сквида
chown squid:squid HTTP7.keytab - меняем пользователя и группу на squid
chmod u+rwx,g+rx HTTP7.keytab - выставляем право на файл
cp /etc/squid/HTTP7.keytab /etc/krb5.keytab - копируем HTTP7.keytab и меняем имя на krb5.keytab (!!! в логах была ошибка хелпер искал файл тут /etc/krb5.keytab) 
----------------------------------------
Тестирование: 
kinit -V -k -t /etc/krb5.keytab HTTP/proxy.domain.inc@DOMAIN.INC - получим билет
kinit user_name - получим билеты для пользователя user_name
klist - посмотрим полученные билеты
kdestroy - уничтожить полученные билеты
----------------------------------------
nano /etc/krb5.conf - дополнительное конфигурирование
Минимальный конфиг:
[libdefaults]
        default_realm =  DOMAIN.RU
[realms]
         DOMAIN.RU  = {
                kdc = dc.domain.ru
                kdc = 1.2.3.4
        }

[appdefaults]
pam = {
debug = true
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
validate = true
}

----------------------------------------
Проверяем логи
tail /var/log/messages
tail /var/log/squid/cache.log
----------------------------------------

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
-----------------------

Источники:

https://veesp.com/ru/blog/how-to-setup-squid-on-ubuntu
https://wiki.squid-cache.org/Features/Authentication#How_does_Proxy_Authentication_work_in_Squid.3F
http://xgu.ru/wiki/Squid,_Kerberos_%D0%B8_LDAP