squid:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
---------------------------------------- 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
---------------------------------------- Очень важно помнить, что аутентификация невозможна в прозрачном режиме работы прокси-сервера (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-адресе авторизованного пользователя ---------------------------------------- |