Рубрики
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
Рубрики
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
Рубрики
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-адресе авторизованного пользователя
----------------------------------------
Рубрики
squid

squid \ proxy \ bind9 \ iptables-persistent \ iptables \ ubuntu \ manual

0) Упер отсюда  https://github.com/ksemaev/manuals/blob/master/Proxy%20and%20firewall%20on%20Ubuntu.md

1) Ставим нужные пакеты:
sudo apt-get install bind9 squid3
 
2) Разрешаем проброс пакетов между сетевыми интерфейсами указанием в файле /etc/sysctl.conf ключа net.ipv4.ip_forward=1

 
3) Для упрощения отключаем родной firewall (позже по желанию включим):

sudo ufw disable

 
4) Проверяем что по умолчанию в iptables все разрешено и нет никаких правил: 

sudo iptables -L

 
5) Включаем политику блокировки по умолчанию всех входящих и проходящих пакетов (исходящие можем оставить в разрешенных):

sudo iptables -P INPUT DROP

sudo iptables -P FORWARD DROP

 
6) Можем разрешить входящий пинг и проверить его из локалки:

sudo iptables -A INPUT -p icmp -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT


 
7) Можем создать промежуточную резервную копию правил iptables:

sudo iptables-save > iptables.backup

 
8) Разрешаем входящие и проходящие пакеты в рамках уже существующих соединений:

sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

sudo iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

 
9) Разрешаем пинг наружу, через хост firewall:

sudo iptables -A FORWARD  -p icmp -j ACCEPT

 
10) Для того чтобы заработали пакеты, проходящие из локалки (у меня это 192.168.0.0/24) наружу нужно включить SNAT или, 
что проще в данном случае, правило маскарада (замена адреса источника пакетов из локальной сети на внешний адрес хоста firewall):

sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

 
11) Можем попробовать сохранить правила iptables:

sudo apt install iptables-persistent 

sudo service iptables-persistent save

 
12) Можно, для того чтобы можно было разрешать DNS –запросы, разрешить проходящий DNS трафик (он работает по TCP и UDP). 
Если хочется использовать свой DNS сервер на этой же машине, то вместо это шага выполняется шаг № 17.

sudo iptables –A FORWARD –p tcp –m multiport --ports 53 –s 192.168.0.0/24 –j ACCEPT

sudo iptables –A FORWARD –p udp –m multiport --ports 53 –s 192.168.0.0/24 –j ACCEPT

 
13) Но чтобы два раза не вставать, лучше сделать сразу правило для всех необходимых протоколов. 
Поэтому я удаляю правило с DNS для tcp 
и создаю правило сразу для многих нужных протоколов (номера портов нужных протоколов можно легко нагуглить):

sudo iptables –D FORWARD –p tcp –m multiport --ports 53 –s 192.168.0.0/24 –j ACCEPT

sudo iptables –A FORWARD –p tcp –m multiport --ports 80,8080,110,5190,25,21,443 –s 192.168.0.0/24 –j ACCEPT

 
14) В качестве возможного варианта рассматриваем проброс портов вовнутрь сети, а именно: 
если мы хотим из интернета (то есть стучась во внешнюю сетевую карту firewall, в моем случае это enp0s3) попадать на какой-то веб-сервер, 
который находится в локальной сети по адресy 192.168.0.101 и прослушивает запросы по порту 80, 
то нам нужно создать правило DNAT (проброс порта) и разрешить проходящие пакеты по порту 80:

sudo iptables –t nat -A PREROUTING -i enp0s3 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.0.101

sudo iptables -A FORWARD -i enp0s3 -p tcp --dport 80 -j ACCEPT

 
15)  Если у нас есть еще один веб-сервер в локалке (у меня 192.168.0.102), который использует тот же 80 порт, 
то нам нужно на firewall открыть какой-нибудь другой порт (у меня в примере 81) 
и соединения к нему пробрасывать на нужный веб сервер по порту 80:

sudo iptables –t nat -A PREROUTING -i enp0s3 -p tcp -m tcp --dport 81 -j DNAT --to-destination 192.168.0.102:80

 
16) Можем попробовать сохранить правила командой:

sudo dpkg-reconfigure iptables-persistent

 
17) Для того чтобы самим разрешать DNS запросы на нашем сервере, нужно ему разрешить эти запросы прослушивать в iptables:
sudo iptables -A INPUT -p tcp -m multiport --ports 53 -s 192.168.0.0/24 -j ACCEPT
sudo iptables -A INPUT -p tcp -m multiport --ports 53 -s 192.168.0.0/24 -j ACCEPT

18) Также необходимо разрешить весь петлевой траффик, так как есть программы его использующие 
(т.е. трафик не выходящий за пределы нашего сервера, но проходящий через сетевые интерфейсы):
sudo iptables -A INPUT -i lo -j ACCEPT

19) Сервер bind в данной конфигурации будет тупо перенаправлять все DNS-запросы через себя на указанный ему DNS-сервер. 
Для этого в его конфиге нужно указать куда передавать трафик, по какому порту и сетевой карте слеушать запросы, 
и (если мы не хотим чтоб он сам пытался разрешить запрос) указать ему сразу делать перенаправление запроса. 
Все это осуществляется редактированием файла /etc/bind/named.conf.options:
forwarders { dns_server_ip; };
forward first;
Listen-on port 53 { lan_ipl; };
//dnssec-validation auto;

20) В текущей версии Ubuntu 16.04 управлять демоном bind пытается rndc, а ей для этого нужны ключи. Их можно создать командой:
sudo rndc-confgen -r /dev/urandom
Не закомментированную часть вывода следует отправить в файл /etc/bind/rndc.conf, а закомментированную в /etc/bind/named.conf

22) Теперь можно перезагрузить демон bind и проверить как сам сервер (и машины у которых он указан в качестве DNS) разрешают DNS запросы:
sudo service bind9 restart
nslookup ya.ru

-----------------
23) Проверяю версию squid командой /usr/sbin/squid -v и делаю резервную копию файла конфигурации: 
sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.backup

24) Файл конфигурации /etc/squid/squid.conf сильно отличается от версии к версии, но параметры в нем неизменны. В частности нам нужно указать:
локальную сеть: 
acl localnet src 192.168.0.0/24
разрешить из нее доступ: 
http_access allow localnet
http_access allow localhost
указать адрес локальной сетевой карты, порт и опцию прозрачности (в старых версиях она называется не intercept а transparent):
http_port 192.168.0.10:3128 intercept

25) Для применения настроек squid следует перезапустить:
sudo service squid restart

26) Теперь следует убрать из правил iptables страрое правило проброса http и https портов, например:
sudo iptables -D  FORWARD -s 192.168.0.0/24 -p tcp -m multiport --ports 80,8080,443,110,25,21 -j ACCEPT
sudo iptables -A FORWARD -s 192.168.0.0/24 -p tcp -m multiport --ports 110,25,21 -j ACCEPT

26) Затем создать правило приема трафика по порту прослушки squid и правила переадресации входящих http запросов на этот порт:
sudo iptables -A INPUT -s 192.168.0.0/24 -p tcp -m multiport --ports 3128 -j ACCEPT
sudo iptables -t nat -A PREROUTING -s 192.168.0.0/24 -p tcp -m multiport --dports 80,8080 -j REDIRECT --to-ports 3128
-----

Для работы с https squid придется пересобрать: https://imbicile.pp.ru/ubuntu-16-04-prozrachnyj-squid-https/

27) Включаем в репозитории те, который начинаются с src: /etc/apt/sources.list

28) Обновляем информацию о репозиториях и ставим нужные для сборки пакеты:
apt-get update
apt-get install openssl devscripts build-essential dpkg-dev libssl-dev

29) Создаем директорию для сборки, переходим в нее (mkdir, cd) и качаем все что нужно:
apt-get build-dep squid3
chmod 777 squid3_3.5.12-1ubuntu7.2.dsc
apt-get source squid3

30) Настраиваем параметры сборки:
cd squid3-3.5.12
vim debian/rules
Дописываем опции:
--enable-ssl \
--enable-ssl-crtd \
--with-openssl \

31) Собираем пакет, ставим его устанавливая неразрешенные зависимости:
dpkg-buildpackage -d
cd ../
dpkg -i *.deb
apt-get install –f  
dpkg -i *.deb
squid –v

32) Создаем необходимые сертификаты:
cd /etc/squid/
openssl req -new -newkey rsa:1024 -days 365 -nodes -x509 -keyout squidCA.pem -out squidCA.pem

33) Создаем конфиг:
cp squid.conf squid.conf.bak
cat squid.conf.bak | grep -v "^#" | grep -v "^$" > squid.conf
Вписываем:
acl localnet src 192.168.0.0/24
http_access allow localnet
http_port 192.168.20.1:3128 intercept
https_port 192.168.20.1:3129 intercept ssl-bump cert=/etc/squid/squidCA.pem
ssl_bump peek all
ssl_bump splice all
sslcrtd_program /usr/lib/squid/ssl_crtd -s /var/lib/ssl_db -M 4MB

34) Перезапускаем сквид:
squid -k parse
squid -k reconfigure

35) Перехватываем пакеты и разрешаем их:
sudo iptables -A INPUT -s 192.168.0.0/24 -p tcp -m multiport --ports 3129 -j ACCEPT
sudo iptables -t nat -A PREROUTING -s 192.168.0.0/24 -p tcp -m multiport --dports 443 -j REDIRECT --to-ports 3128

Рубрики
squid

dante

Прокси серверы:

Преодоление текториальных ограничений 
Защита компьютера клиента от атак с наружи
Позволяет сохранить анонимность клиента путем подмены IP
Проксирование на уровне протоков HTTP, HTTPS
Проксирование на уровне L4 UDP, TCP  SOCKS4 и SOCKS5

SOCKS5 - допускает возможность UDP, есть аутентификация

Самый распространённый  SOCKS5 прокси сервер это Dante
apt search Dante
apt install dante-client - научит любое приложение ходить в прокси
apt install dante-serve - прокси сервер

Пока вырубим его 
systemctl disable danted
systemctl stop danted

Простой конфиг без авторизации 
vim /etc/danted.conf
--------------------
logoutput: stderr
internal: eth0 port = 1080
external: eth0 
socksmethod: none
user.privileged: proxy
user.unprivileged: nobody
user.libwrap: nobody
client pass {
       from: 0/0 to: 0/0
       log: connect error
}
socks pass {
      from: 0/0 to: 0/0
      log: connect error
}
--------------------
тут:
internal - входящий интерфейс
external - исходящий 
port - порт прокси
socksmethod - собственно нету авторизации 

Для авторизации изменить конфиг так:
socksmethod: username 
socks pass {
      from: 0/0 to: 0/0
      log: connect disconnect error ioop
      group: proxy
}

и создать пользователя
useradd --shell /usr/sbin/nologin proxy_user_01
passwd proxy_user_01
usermod -a -G proxy proxy_user_01

Рубрики
squid

Простой squid

Прокси squid

#Debian 12 install squid

Устанавливаем:
apt install squid

Сохраняем оригинальный конфиг squid:
cp /etc/squid/squid.conf /etc/squid/squid.conf.backup
( можно вот так вот обработать  cat squid.conf.bak | grep -v "^#" | grep -v "^$" > squid.conf  тем самым убрав комментарии) 

Приводим конфиг к такому виду:
cat > /etc/squid/squid.conf << "EOF"
acl localnet src 0.0.0.1-0.255.255.255  # RFC 1122 "this" network (LAN)
acl localnet src 10.0.0.0/8             # RFC 1918 local private network (LAN)
acl localnet src 100.64.0.0/10          # RFC 6598 shared address space (CGN)
acl localnet src 169.254.0.0/16         # RFC 3927 link-local (directly plugged) machines
acl localnet src 172.16.0.0/12          # RFC 1918 local private network (LAN)
acl localnet src 192.168.0.0/16         # RFC 1918 local private network (LAN)
acl localnet src fc00::/7               # RFC 4193 local private network range
acl localnet src fe80::/10              # RFC 4291 link-local (directly plugged) machines
acl SSL_ports port 443
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
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
include /etc/squid/conf.d/*
http_access allow localhost
http_access deny all
http_port 3128
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
EOF

И этот конфиг приводим к такому виду:
cat > /etc/squid/conf.d/debian.conf << EOF
#
# Squid configuration settings for Debian
#

# Logs are managed by logrotate on Debian
logfile_rotate 0

# For extra security Debian packages only allow
# localhost to use the proxy on new installs
#
http_access allow localnet
EOF

Запускаем в зависимости от статуса: 
systemctl status squid
systemctl restart squid
systemctl start squid
systemctl enable squid



Рубрики
squid

Установка прокси сервера SQUID + SAMS2 в Ubuntu 10.10

Одной из задач системного администратора есть обеспечение сетевой безопасности организации. 
Сетевая безопасность включает в себя целый комплекс действий, куда входит и контроль сетевого трафика 
и раздача прав на использование локальных ресурсов и доступа к интернет. 
Для раздачи прав на пользование ресурсами интернета используют прокси сервер. 
В Ubuntu эту роль выполняет прокси сервер SQUID.
В ранних версиях Ubuntu настройка SQUID выполнялась в консоли, в последних версиях Ubuntu разработан Web интерфейс SAMS. 
О том как установить и настроить связку SQUID + SAMS2 на ubuntu 10.10 и пойдет речь.

Итак посетив множество форумов и перечитав очень много инструкций, составил для вас и для себя инструкцию:
1. Устанавливаем собственно прокси сервер SQUID:
# sudo apt-get install squid

2. Устанавливаем apache:
Автоматически установятся все необходимые пакеты.
# sudo apt-get install apache2


3. Устанавливаем php5:
# sudo apt-get install php5 libapache2-mod-php5 php5-cli php5-common php5- mysql php5-gd

4. Устанавливаем mysql:
# sudo apt-get install mysql-server-5.1 mysql-client-5.1 libmysqlclient15off

Если libmysqlclient15off не установился, скачиваем:
libmysqlclient15off_i386.deb
libmysqlclient15off_amd64.deb

5. Устанавливаем libpcre3:
# sudo apt-get install libpcre3

6. Ставим sams2, sams2web и sams2doc:
sams2_2.0.0-b2_i386.deb
sams2_2.0.0-b2_amd64.deb
sams2-web_2.0.0-b2_all.deb
sams2-doc_2.0.0-b2_all.deb
Дополнительно выбираем установку squidguard.

7. Создаем БД:
# mysql -u root -p
# GRANT ALL ON squidctrl.* TO sams@localhost IDENTIFIED BY "yourpassword";
# GRANT ALL ON squidlog.* TO sams@localhost IDENTIFIED BY "yourpassword";
# exit
Где: yourpassword - пароль

После этого имя пользователя и пароль надо вписать в файл конфигурации SAMS - /etc/sams2.conf
# sudo gedit /etc/sams2.conf

; Username for database connection
DB_USER=root  - Имя пользователя MySQL, от имени которого будет работать SAMS.    
; Password for database connection
DB_PASSWORD="yourpassword" - Пароль пользователя в MySQL.

8. Включаем sams2:
# sudo gedit /etc/init.d/sams2
Изменяем значение параметра SAMS_ENABLE = FALSE на SAMS_ENABLE = TRUE

9. Настраиваем php.ini:
# sudo gedit /etc/php5/apache2/php.ini
В текущей версии SAMS научился работать с PHP в режиме safe_mode=On.
Но это требует дополнительной настройки конфигурации.Для этого редактируем файл конфигурации php.ini  и включаем режим safe mode.
Для этого выставляем параметр safe_mode = On (Однако если вы работаете с CMS например с Joomla, то включение этого параметра запретит вм устанавливать обновления в Joomla. 
Будьте внимательны!)

SAMS для некоторых функций WEB интерфейса использует системные команды, например wbinfo. 
В режиме safe_mode php блокирует доступ к системным командам. 
Php позволяет выполнять системные команды, расположенные в каталоге, заданном параметром safe_mode_exec_dir.

Изменяем этот параметр:
safe_mode_exec_dir = "/usr/share/sams2/bin".

Далее разрешаем исполнение системных скриптов из кода php. Ищем в файле конфигурации параметр и убираем из него запрет вызова функций phpinfo system shell_exec exec:
disable_functions = "chdir,dl,ini_get_all,popen,proc_open,passthru,pcntl_exec"
Все. PHP готов к работе.

10. Перезагружаемся

11. Открываем права на запись в папку /usr/share/sams2:
Под рутом выполняем команду:
# chmod -R 777 /usr/share/sams2


12. Запускаем Web интерфейс:
Идем в браузер и пишем localhost/sams2 — мы должны увидеть примерно такое окно:
Web окно управления SAMS прокси-сервером Squid 
Далее в настройках можно поставить Русский язык и приступить к настройке Прокси сервера.

Рубрики
squid

dante-server \ socks5 \ debian \ ubuntu

0. Разрешаем подключаться к порту сервера:
sudo ufw allow proto tcp from any to any port 99800

1. Ставим сервер:
aptitude install dante-server

2. Сервер попытается запуститься и упадет, так и задумано, меняем конфиг:
sudo vim /etc/danted.conf
logoutput: stdout
internal: eth0 port = 99800
external: eth0

socksmethod: username 

user.privileged: root
user.unprivileged: nobody
user.libwrap: nobody

client pass {
        from: 0.0.0.0/0 to: 0.0.0.0/0
        log: connect disconnect error
}

socks pass {
        from: 0.0.0.0/0 to: 0.0.0.0/0
        log: connect disconnect error
}

3. Интерфейс можно подсмотреть через ip addr

4. Далее создаем пользователя без оболочки (нельзя подключиться через ssh).
Вместо имени использовать можно парольную фразу, только без спецсимволов.
adduser --shell=/sbin/nologin bob
Используя логин и пароль этого пользователя можно подключаться к серверу.

5. Тестируем:
curl -v -x 'socks5://bob:password@99.99.99.99:99800' http://www.google.com/

Пример создания демона systemd:

[Unit]
Description=ss5
After=network.target

[Service]
Type=notify
ExecStart=/usr/bin/bash -c '/opt/ss5/ss5-3.8.9/src/ss5 -u ss5 -b 0.0.0.0:1080'
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process


[Install]
WantedBy=multi-user.target


added 2022.01.21
Dante docker

docker pull dijedodol/simple-socks5-server
docker run -it --rm -p 1080:1080 -e 'SSS_USERNAME=your_username' -e 'SSS_PASSWORD=your_password' dijedodol/simple-socks5-server

Dante свой велосипед на debian \ ubuntu

0. Ставим пакеты:
apt-get update
apt-get upgrade
apt-get install build-essential libwrap0-dev libpam0g-dev libkrb5-dev libsasl2-dev
apt-get install libwrap0 libwrap0-dev
apt-get install gcc make
apt-get install cron

1. Качаем dante
cd /opt
wget https://www.inet.no/dante/files/dante-1.4.1.tar.gz
tar -xvf dante-1.4.1.tar.gz
cd dante-1.4.1

2. Ставим
mkdir /home/dante
./configure --prefix=/home/dante
make
make install

3. Создаем конфиг
vim  /home/dante/danted.conf
----------------------------
logoutput: syslog /var/log/danted.log
internal: eth0 port = 1080
external: eth0
 
socksmethod: username
user.privileged: root
user.unprivileged: nobody
 
client pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    log: error
}
 
socks pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    command: connect
    log: error
    method: username
}
----------------------------

4. Пример настройки автозапуска (Лучше рассмотреть запуск через systemd)
# нам нужно удостовериться, что сервис запустится при перезагрузке
crontab -e
# вставьте в crontab
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=your_email@some_mail.com
# запуск сервера как демона
/home/dante/sbin/sockd -f /home/dante/danted.conf -D

5.  Создаем пользователя для socks proxy
sudo useradd --shell /usr/sbin/nologin -m sockduser && sudo passwd sockduser


6. Пример простого firewall ufw на ubuntu (В принципе можно настроить iptables)
# - Инструкция - # https://wiki.dieg.info/socks
sudo apt install ufw
sudo ufw status
sudo ufw allow ssh
sudo ufw allow proto tcp from any to any port 1080
sudo ufw status numbered
sudo ufw enable
Рубрики
squid

SQUID + Mikrotik + SARG (Прозрачный прокси)

Настройка:


192.168.13.31 GW internet
10.10.15.10 GW LAN 
10.10.15.50 SQUID proxy
10.10.15.0/24 LAN

Создать на Микротик
ip firewall address-list add address=10.10.15.10-10.10.15.40 list=Proxy_Clients
ip firewall mangle add action=mark-routing chain=prerouting dst-port=80 new-routing-mark=to_proxy protocol=tcp src-address-list=Proxy_Clients
ip firewall nat add action=src-nat chain=srcnat comment=nat out-interface=wan routing-mark=!to_proxy to-addresses=192.168.13.31
ip route add distance=1 gateway=10.10.15.50 routing-mark=to_proxy

Создать на машине где SQUID
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 10.10.15.50:3128  

Минимальная настройка SQUID
nano /etc/squid/squid.conf
http_port 3128 transparent
acl all src all
acl lan src 10.10.15.0/24 127.0.0.0/8
http_access allow lan

Минимальная настройка SARG
nano /etc/sarg/sarg.conf
найти и отредактировать
graphs yes
graph_days_bytes_bar_color orange
output_dir /var/www/squid-reports
charset UTF-8

Рубрики
squid

SQUID SARG reports

Sarg (Squid Analysis Report Generator – Генератор Аналитических Отчётов Squid)
доступен на нескольких языках, а на русском аж в трёх кодировках: koi-8, UTF-8, windows-1251


0. apt-get install sarg

1.nano /etc/sarg/sarg.conf
access_log /var/log/squid/access.log
graphs yes
graph_days_bytes_bar_color orange
title "Squid User Access Reports"
font_face Tahoma,Verdana,Arial
header_color darkblue
header_bgcolor blanchedalmond
font_size 9px
background_color white
text_color #000000
text_bgcolor lavender
title_color green
temporary_dir /tmp
output_dir /var/www/squid-reports
resolve_ip
user_ip no
topuser_sort_field BYTES reverse
user_sort_field BYTES reverse
exclude_users /etc/sarg/exclude_users
exclude_hosts /etc/sarg/exclude_hosts
date_format u
lastlog 0
remove_temp_files yes
index yes
index_tree file
overwrite_report yes
records_without_userid ip
use_comma yes
mail_utility mailx
topsites_num 100
topsites_sort_order CONNECT D
index_sort_order D
exclude_codes /etc/sarg/exclude_codes
max_elapsed 28800000
report_type topusers topsites sites_users users_sites date_time denied auth_failures site_user_time_date downloads
usertab /etc/sarg/usertab
long_url no
date_time_by bytes
charset UTF-8
show_read_statistics no
topuser_fields NUM DATE_TIME USERID CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE
user_report_fields CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE
topuser_num 0
download_suffix "zip,arj,bzip,gz,ace,doc,iso,adt,bin,cab,com,dot,drv$,lha,lzh,mdb,mso,ppt,rtf,src,shs,sys,exe,dll,mp3,avi,mpg,mpeg"

2. crontab -e 
*/5 * * * * /usr/bin/sarg каждые 5 минут запускать sarg

3. http://you_ip/squid-reports
Рубрики
squid

SQUID Минимальная настройка

Минимальная настройка SQUID
nano /etc/squid/squid.conf
http_port 3128 transparent
acl all src all
acl lan src 10.10.15.0/24 127.0.0.0/8
http_access allow lan