Рубрики
squid

CentOS squid конфиг

squid:

----------------------------------------
ACL (Access Control List) - списки контроля доступа (основной инструмент SQUID) 
acl   Safe_ports   port            80
acl   имя          параметр        элементы_списка
добавляет в список Safe_ports, содержащий элементы типа “порт”, новое значение 80
acl localnet src 192.168.0.0/24 - добавляем сеть 192.168.0.0/24 в список localnet
----------------------------------------
http_access - директива. определяет правила работы с элементами указанного acl
http_access deny !Safe_ports - блокирует все порты, не входящие в список Safe_ports
http_access allow localhost - разрешает доступ с localhost
http_access allow localnet - разрешаем доступ списку localnet
http_access deny all - запрещает все подключения 
----------------------------------------
http_port 192.168.0.1:3128 - обычный режим работы прокси 
http_port 192.168.0.1:3128 intercept  -  прозрачный режим
http_port 3128 transparent - прозрачный прокси 
----------------------------------------
Параметр src позволяет регулировать доступ для клиентов со статичными ip-адресами:
acl  User_Group   src    192.168.0.2-192.168.0.9 - группа пользователей
acl  Single_User  src    192.168.0.10 - отдельный пользователь
http_access  allow  UserGroup  - разрешаем доступ для группы
http_access  allow  SingleUser - для отдельного пользователя
http_access  deny   all  - запрещаем всем остальным
----------------------------------------
Параметр dst позволяет указать список ip-адресов назначения, к которым клиент желает получить доступ:
acl  Net194   dst    194.67.0.0/16  - описываем некую подсеть 194.67.0.0/16
http_access   deny   SingleUser   Net194 - запрещаем пользователю доступ к ней
----------------------------------------
Параметр dstdomain даёт возможность указывать домен, к которому выполняется запрос:
acl  SitesBlocked  dstdomain  .example.ru  .sample.ru - указываем несколько доменных имён
http_access   deny   UserGroup  SitesBlocked -  запрещаем к ним доступ группе пользователей
----------------------------------------
Если необходимо указать домен источника, используется параметр srcdomain:
acl  aSitesBlocked srcdomain  .example.ru  .sample.ru - указываем несколько доменных имён
http_access   deny   UserGroup  aSitesBlocked -  запрещаем к ним доступ группе пользователей
----------------------------------------
Параметры srcdom_regex и dstdom_regex позволяют использовать в ACL регулярные выражения:
acl  SitesRegexFree     dstdom_regex    free - сайты, содержащие в доменном имени слово “free”
acl  SitesRegexComOrg  dstdom_regex  \.com$ \.org $ - сайты доменных зон .com и .org
http_access   deny   SingleUser   SitesRegexFree
http_access   deny   SingleUser  SitesRegexComOrg
----------------------------------------
С помощью параметра url_regex возможно указать шаблон регулярного выражения для URL.
Ключ -i необходим для игнорирования регистра символов в регулярных выражениях.
acl  имя  [-i]  url_regex  элементы_списка
acl  MusicMP3  url_regex  -i  \.mp3$  - охватывает музыкальные файлы .mp3
----------------------------------------
Время:
acl   имя   time  дни   чч:мм-ЧЧ:ММ
Важно отметить что время начала промежутка должно быть всегда меньше времени конца. 
Например, возможно указать вариант 00:00-23:59, 
но промежуток 20:00-09:00 придётся разбить на 20:00-23:59 и 00:00-09:00. 
----------------------------------------
День: 
M - Понедельник
T - Вторник
W - Среда
H - Четверг
F - Пятница
A - Суббота
S - Воскресенье
----------------------------------------
acl  WeekendTime  time  AS 10:00-15:00 - обозначим некоторый временной промежуток для выходных дней
http_access  allow  SingleUser  WeekendTime  MusicMP3 - разрешим пользователю доступ к файлам формата mp3 в выбранный промежуток времени
http_access  deny   SingleUser  MusicMP3 - запретим в любое другое время
----------------------------------------
Параметр port используется для указания списка портов.
----------------------------------------
Параметр proto позволяет указывать протокол передачи информации.
Используя его можно запретить пересылку файлов по протоколу ftp.
acl имя_acl proto список
acl   proto_ftp   proto   ftp
http_access   deny   SingleUser  proto_ftp
----------------------------------------
Ограничения по скорости:
delay_pools  - количество_объявленных_пулов
delay_class  - номер_пула  класс_пула
delay_parameters - номер_пула  параметры
delay_access  номер_пула  действие   имя_acl - действия для пула
----------------------------------------
delay_pools 2 - создать два пула
delay_class  1  1 - пул №1 ограничит скорость для всех клиентов, для которых он будет применен
delay_parameters 1 64000/64000 - 512 Кбит = 64 Кбайта = 64000 байт
delay_parameters 1 -1  - неограниченная скорость доступа для пула №1 
delay_access 1 deny UserGroup - не применять к User_Group
delay_access 1  allow   SingleUser - применит к SingleUser
----------------------------------------
Кэширование:
cache_mem 1024 MB - объем доступной для кэширования памяти (сбрасывается при перезагрузке)
maximum_object_size_in_memory 512 KB - максимальный размер объекта в кэше 
cache_dir тип_хранилища путь_к_хранилищу размер L1 L2
cache_dir ufs /var/squid_cache 1024 16 256 - использование HDD кэша
maximum_object_size 2 MB - максимальный размер объекта в дисковом кэше
----------------------------------------
Логирование:
access.log - содержит записи о запросах клиентов
store.log - содержит записи, относящиеся к действиям с кэшем
cache.log - содержит сообщения об ошибках, возникающих при работе Squid
access_log daemon:/etc/squid3/logs/access.log squid
cache_log daemon:/etc/squid3/logs/cache.log 
cache_store_log daemon:/etc/squid3/logs/store.log 
debug_options ALL,1 - секция “ALL”, глубина отладки 1
logfile_rotate 31 - ротация логов (расширение файлов логов 0-30)
squid -k rotate - выполнить ротацию логов
----------------------------------------
squid3 -k check - проверка конфигурации
squid -k parse - проверка конфигурации
squid -k reconfigure  - применить настройки без перезагрузки
service squid3 reload - применить настройки без перезагрузки
----------------------------------------

Аутентификация пользователей прокси-сервера Squid:

----------------------------------------
Очень важно помнить, что аутентификация невозможна в прозрачном режиме работы прокси-сервера (transparent proxy). 
Это ограничение вызвано исключительно особенностями работы протокола TCP/IP, а не недостатками функционала Squid.
Одновременно могут быть сконфигурированы несколько схем аутентификации.
Прокси-сервер будет пытаться использовать разные схемы аутентификации в зависимости от порядка их указания в squid.conf
В качестве хелперов, проверяющих корректность связки логин-пароль, можно использовать любые внешние модули,
а не только хелперы входящие в состав пакета Squid, даже самописные скрипты.
----------------------------------------
Создание файла с паролями:
htpasswd [-c] /файл_паролей имя_пользователя
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
----------------------------------------
Атентификация с использованием NCSA:
/usr/lib64/squid/ - в CentOS7 хелперы тут
auth_param basic program /usr/lib64/squid3/basic_ncsa_auth /etc/squid3/squidusers 
autch_param basic program /путь_к_самому_хелперу  /файлу_содержит_логины_пароли
acl lan proxy_auth REQUIRED - создание списка доступа, в который включены все прошедшие аутентификацию пользователи
http_access allow lan - теперь пользователям списка lan разрешен доступ к интернету
----------------------------------------
Аутентификация с использованием базы данных MySQL:
mssql>
------создать базу данных
create database squid;  
------создать таблицу passwd с полями user,password,enabled,fullname и comment
CREATE TABLE 'passwd' (
'user' varchar(32) NOT NULL default '',
'password' varchar(35) NOT NULL default '',
'enabled' tinyint(1) NOT NULL default '1',
'fullname' varchar(60) default NULL,
'comment' varchar(60) default NULL,
PRIMARY KEY ('id')); 
-----внесли в таблицу тестовую запись
insert into passwd values('test','pass',1,'Test User','for test'); 
-----вышли
exit;
----- nano /etc/squid/squid.conf
auth_param basic program /usr/lib64/squid/basic_db_auth --user user --password password --md5 --persist
acl db-auth proxy_auth REQUIRED
http_access allow db-auth
---------------------------------------
--user  - имя пользователя БД;
--password - пароль доступа к БД;
--table - таблица в БД, по умолчанию "passwd";
--usercol - столбец с именами пользователей, по умолчанию "user";
--passwdcol  - столбец с паролями, по умолчанию"password";
--plaintext - означает, что пароли в базе хранятся в открытом виде;
--md5  - означает, что пароли зашифрованы в md5 без добавления “соли”;
--salt  - “соль”, используемая для шифрования пароля;
--persist - оставляет соединение с БД открытым в промежутке между запросами.
----------------------------------------
Общие настройки аутентификации пользователей:
auth_param basic realm "This is corparete proxy" - приветствие при аутентификации пользователей
auth_param basic credentialsttl 2 hours -  срок хранения в кэше связки "username:password". 
auth_param basic casesensitive off - чувствительность имен пользователей к регистру.
auth_param basic blankpassword off - поддержку пустых паролей. по умолчанию аутентификация с пустым паролем возможна только при гостевом входе
authenticate_cache_garbage_interval 1 hour - как долго логин пользователя будет храниться в кэше
authenticate_ttl 1 hour - время, которое должно пройти с момента последнего запроса 
authenticate_ip_ttl 0 seconds -  сколько хранить данные об IP-адресе авторизованного пользователя
----------------------------------------