установка squid с доступом по группам в AD, squidGuard, lighttpd+lightsquid, sams2 в centos часть2

установка и настройка
https://unixwall.000webhostapp.com/настраиваем-squid-sams-для-работы-в-ad/
https://www.dmosk.ru/miniinstruktions.php?mini=sams2-squid
yum update
yum install mc htop ncdu wget curl nano nmap
yum install openssh-server
chkconfig --level 2345 sshd on
systemctl reload sshd.service
nano /etc/yum.conf
yum install epel-release
yum update
yum repolist
yum install yum-utils
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
curl -O http://rpms.remirepo.net/enterprise/remi-release-7.rpm
rpm -Uvh remi-release-7.rpm

nano /etc/squid/squid.conf
squid -k parse
squid -k reconfigure
service squid restart

yum install php php-mysql php-mbstring php-devel php-xml php-gd php-mcrypt
yum install -y mariadb mariadb-server mariadb-devel
yum install zip unzip

cd /root
wget https://github.com/PavelVinogradov/sams2/archive/master.zip
unzip master.zip
cd /root/sams2-master
make -f Makefile.cvs
sh ./configure
make
make install



find / -name httpd.conf

chown apache:apache /var/www
chown -R apache:apache /usr/local/share/sams2/
chown -R apache:apache /usr/local/etc/sams2.conf
chmod -R 777 /usr/local/share/sams2/
systemctl restart httpd
Web-интерфейс SAMS требует права на запись в каталог ./data
setenforce 0
установка dokuwiki centos php nginx

посмотреть конфиг без комментариев
sudo grep -v «^#» /etc/squid/squid.conf | sed -e ‘/^$/d’

nano /etc/squid/squid.conf
squid -k check
squid -k parse
squid -k reconfigure
systemctl restart squid

failed to open /var/run/squid.pid: (2) No such file or directory
sudo killall -9 squid
systemctl start squid

Explicit Proxy c авторизацией по AD Group + Interception Proxy с авторизацией по MAC
Удалим полученный ticket, который мы получили от сервера Kerberos
kdestroy

«Авторизация администратора SAMS » и ввести учетные данные по-умолчанию: пользователь admin , пароль qwerty


https://meliorem.ru/category/backend/mysql/
https://tproger.ru/translations/sql-recap/

mysql -usams2user -psams2password
SHOW DATABASES;
USE sams2db;
SHOW TABLES;
SELECT * FROM sgroup;
DELETE FROM sgroup WHERE s_group_id IN (8,9,10,11,12);
DELETE FROM sgroup WHERE s_group_id BETWEEN 10 and 248;
DELETE FROM shablon WHERE s_shablon_id BETWEEN 4 AND 246 AND s_shablon_id <> 8;
show processlist;


элементы и опции squid
http://www.bog.pp.ru/work/squid.html
http://rus-linux.net/MyLDP/FAQ/SQUID-FAQ/FAQ-10.html
Установка и настройка SQUID
Элементы ACL

  • src: IP-адрес источника (клиент)

  • dst: IP-адрес назначения (сервер)

  • myip: локальный IP-адрес клиентского соединения

  • srcdomain: имя домена источника (клиент)

  • dstdomain: имя домена назначения (сервер)

  • srcdom_regex: шаблон регулярного выражения источника (клиент)

  • dstdom_regex: шаблон регулярного выражения назначения (сервер)

  • time: время дня и день недели

  • url_regex: шаблон регулярного выражения для URL

  • urlpath_regex: шаблон регулярного выражения для части URL, исключая протокол и имя хоста

  • port: номер порта назначения (сервер)

  • myport: номер локального порта, куда подключается клиент

  • proto: тип протокола передачи (http, ftp, etc)

  • method: метод HTTP-запроса (get, post, etc)

  • browser: шаблон регулярного выражения, совпадающего с заголовком user-agent из запроса

  • ident: строка совпадения с именем пользователя

  • ident_regex: шаблон регулярного выражения имени пользователя

  • src_as: номер Автономной Системы источника (клиент)

  • dst_as: номер Автономной Системы назначения (сервер)

  • proxy_auth: аутентификация пользователя через внешний процесс

  • proxy_auth_regex: регулярное выражение аутентификации пользователя через внешний процесс

  • snmp_community: строка SNMP-сообщества

  • maxconn: ограничение максимального кол-ва соединений с одного клиентского IP-адреса

  • req_mime_type: шаблон регулярного выражения для заголовка content-type запроса

  • arp: Ethernet (MAC)-адрес



Списки доступа
Существуют следующие типы списков доступа:

  • http_access: разрешает доступ HTTP-клиентам (броузерам) к порту HTTP. Это основной тип списка контроля доступа.

  • icp_access: разрешает братским кешам опрашивать ваш кеш по ICP.

  • miss_access: разрешает определенным клиентам передавать cache misses через ваш кеш.

  • no_cache: объявляет ответы, которые не должны кешироваться.

  • redirector_access: контролирует, какие запросы должны пройти через процесс редиректора.

  • ident_lookup_access: контролирует, какие запросы требуют Ident lookup.

  • always_direct: контролирует, какие запросы всегда должны посылаться напрямую к серверу назначения.

  • never_direct: контролирует, какие запросы никогда не должны посылаться напрямую к серверу назначения.

  • snmp_access: контролирует доступ клиентов к кешу по SNMP.

  • broken_posts: определяет запросы, для которых squid добавляет дополнительный CRLF после тел сообщений POST как того требуют некоторые неверно работающие сервера.

  • cache_peer_access: контролирует, какие запросы должны быть переданы соседскому кешу (peer).



https://wiki.yola.ru/squid/squid
Выпуск трафика с разных IP-адресов

acl net1 src 10.1.1.0/24
acl net2 src 10.1.2.0/24
acl net3 src 10.1.3.1/32
tcp_outgoing_address ВНЕШНИЙ_IP_1 net1
tcp_outgoing_address ВНЕШНИЙ_IP_2 net2
tcp_outgoing_address ВНЕШНИЙ_IP_3 net3
tcp_outgoing_address ВНЕШНИЙ_IP_4



firewall-cmd
Создание мультизональных конфигураций межсетевого экрана с помощью Firewalld
Firewalld, установка и настройка, зоны, NAT, проброс портов
Использование ipset во встроенном брандмауэре CentOS 7
vpn pptp centos7

netstat -tulpn

firewall-cmd --zone=public --remove-port=443/tcp --permanent
firewall-cmd --zone=public --remove-port=80/tcp --permanent
firewall-cmd --zone=public --remove-port=22/tcp --permanent
firewall-cmd --zone=public --remove-service=dhcpv6-client --permanent

firewall-cmd --zone=public --add-service=ssh --permanent
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --zone=public --add-service=https --permanent
firewall-cmd --zone=public --add-port=3128/tcp --permanent

firewall-cmd --reload
firewall-cmd --zone=public --list-ports
firewall-cmd --zone=public --list-services

firewall-cmd --zone=external --list-ports
firewall-cmd --zone=external --list-services

firewall-cmd --zone=external --change-interface=enp3s0 --permanent
firewall-cmd --zone=external --remove-service=ssh --permanent
firewall-cmd --get-active-zones

firewall-cmd --zone=external --list-services
firewall-cmd --list-all
firewall-cmd --get-services
systemctl restart firewalld

http://fliplinux.com/ip-cen.html
«белый список»
firewall-cmd --permanent --zone=public --add-source=192.168.100.0/24
firewall-cmd --permanent --zone=public --add-source=192.168.222.123/32


firewall-cmd --permanent --new-ipset=IP-users --type=hash:net
firewall-cmd --ipset=IP-servers --add-entry=192.168.0.0/24 --permanent
firewall-cmd --ipset=IP-servers --add-entry=192.168.200.12 --permanent
firewall-cmd --ipset=IP-servers --add-entry=192.168.200.200 --permanent

firewall-cmd --ipset=IP-servers --remove-entry=192.168.20.0/24 --permanent

firewall-cmd --ipset=IP-servers --get-entries
firewall-cmd --permanent --zone=public --add-rich-rule='rule source ipset="IP-servers" service name="ssh" accept'

firewall-cmd --remove-rich-rule='rule source ipset=IP-users service name="http" drop' --permanent

firewall-cmd --permanent --zone=public --list-rich-rules

чтобы все пользователи (список ipset IP-users) ходили через squid несмотря на net.ipv4.ip_forward=1
firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i enp3s0 -o enp1s0 -m set --match-set IP-servers src -j ACCEPT
firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i enp1s0 -o enp3s0 -m set --match-set IP-servers src -j ACCEPT

firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i enp3s0 -o enp1s0 -j DROP
firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i enp1s0 -o enp3s0 -j DROP

открыть Google Play
firewall-cmd --zone=public --add-port=5228/tcp --permanent
firewall-cmd --zone=external --add-port=5228/tcp --permanent

firewall-cmd --reload
systemctl restart firewalld

iptables -S

cat /etc/firewalld/direct.xml

рабочий вариант
https://wiki.archlinux.org/index.php/Active_Directory_Integration_(Русский)

/etc/sysconfig/network-scripts/
во внутренней сетевой карте не указываем GATEWAY (шлюзом будет внешняя карта)

nano /etc/NetworkManager/NetworkManager.conf
[main]
dns=none
#plugins=ifcfg-rh,ibft

nano /etc/resolv.conf
# Generated by NetworkManager
search domain.office.local
nameserver 172.16.0.1 # (dns внутренней карты)
nameserver 172.16.0.3
nameserver xxx.xxx.xxx.xxx (dns с внешней сетевой карты напр с enp3s0)

systemctl restart NetworkManager.service
nslookup serv1.domain.office.local

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

/etc/krb5.conf



ещё вариант krb5.conf
http://xgu.ru/wiki/Squid,_Kerberos_и_LDAP






realm discover domain.office.local
Получаем тикет пользователя, имеющего права администратора домена.
kinit -V Administrator@DOMAIN.OFFICE.LOCAL
вводим в домен
realm join -U adminuser domain.office.local # adminuser - администратор в AD



в командной строке на контроллере домена создаём файл ключа
ktpass -princ HTTP/myproxy123.domain.office.local@DOMAIN.OFFICE.LOCAL -mapuser DOMAIN\squid -pass "password123" -ptype KRB5_NT_SRV_HST -out C:\myproxy123.keytab

https://docs.microsoft.com/ru-ru/windows-server/administration/windows-commands/ktpass
- KRB5_NT_PRINCIPAL является общим типом участника (рекомендуется).
- KRB5_NT_SRV_INST является экземпляром службы пользователя.
- KRB5_NT_SRV_HST является экземпляром службы узла


net ads keytab flush - очистить кейтаб
net ads keytab create - создать кейтаб
net ads keytab add HTTP - добавим принципал HTTP для прокси или веб сервера
net ads keytab list - посмотрим что получилось


kdestroy - очистим все прошлые попытки логона.
kinit -V -k -t /etc/krb5.keytab HTTP/sq.mydomain.name@MYDOMAIN.NAME

копируем в /etc/myproxy123.keytab и проверяем
kinit -V -k -t /etc/myproxy123 HTTP/myproxy123.domain.office.local@DOMAIN.OFFICE.LOCAL

выставляем права
chown squid:squid /etc/myproxy123.keytab
chmod u+rwx,g+rx /etc/myproxy123.keytab

если забыл пароль пользователя, то можно проверить так:
Есть ли аналог SU для Windows

Для локального аккаунта
runas /profile /user:computernamehere\username cmd
Для учетной записи домена
runas /profile /user:domainname\username cmd
runas /profile /user:username@domainname cmd

проверка

wbinfo -t
wbinfo -g
wbinfo -u

/usr/lib64/squid/basic_ldap_auth -b 'dc=domain,dc=office,dc=local'

getent passwd
getent group
net ads info
net ads lookup
net ads status -U administrator | less
klist -k /etc/krb5.keytab


Удалим полученный билет командой:
kdestroy

echo test1234 inet-users | /usr/lib64/squid/ext_wbinfo_group_acl
OK
id test1234
uid=16777893(test1234) gid=16777216(пользователи домена) группы=16777216(пользователи домена),...,16777248(inet-users),...

/usr/bin/ntlm_auth --username=test1234
Password:
NT_STATUS_OK: The operation completed successfully. (0x0)

проверка ext_kerberos_ldap_group_acl
/usr/lib64/squid/ext_kerberos_ldap_group_acl -a -d -i -g InetUsers -D DOMAIN.OFFICE.LOCAL
/usr/lib64/squid/ext_kerberos_ldap_group_acl -d -a -i -g InetUsers@DOMAIN.OFFICE.LOCAL -D DOMAIN.OFFICE.LOCAL

ошибка
kerberos_ldap_group: ERROR: Error while starting keytab scan : Key table file '/etc/krb5.keytab' not found
лечение
ln -s /etc/myproxy123.keytab /etc/krb5.keytab

Для автоматической аутентификации через Squid, необходимо внести следующие изменения - добавляем в файл /etc/sysconfig/squid строки
KRB5_KTNAME=/etc/myproxy123.keytab
export KRB5_KTNAME
и отключаем replay-кэш (для снижения нагрузок)
KRB5RCACHETYPE=none
export KRB5RCACHETYPE

/etc/sysconfig/squid






добавить в /etc/squid/squid.conf




ext_kerberos_ldap_group_acl тоже работает, но нужно поставить параметр ipv4




Настройка squid или как не купить платное решение
children — максимальное количество процессов доступные для запуска, startup количество процессов которые запущены всегда, idle максимальная очередь к помощнику при превышении указанного числа будет запускаться новый процесс помощника.

squid -k check
squid -k parse
squid -k reconfigure
systemctl restart squid

failed to open /var/run/squid.pid: (2) No such file or directory
sudo killall -9 squid
systemctl start squid

ошибки и логи
1. access.log - для записи запросов клиентов;
2. store.log - для записи действий с кэшем;
3. cache.log - для записи ошибок возникающих при работе с Squid.

tail -f /var/log/squid/cache.log
tail -f /var/log/squid/access.log

Чистим кэш Squid
grep cache_dir /etc/squid/squid.conf
service squid stop
rm -r /var/spool/squid/*
squid -z
service squid start

/etc/sysctl.conf



net.ipv4.ip_forward=0 - иначе можно будет ходить мимо squid (прописать роутинг и выставить "без прокси")

sudo sysctl -p
sudo sysctl --system

На клиентских машинах адрес прокси сервера должен быть указан в FQDN-формате (myproxy123.domain.office.local)

squidGuard
http://squidguard.mesd.k12.or.us/
https://itzx.ru/linux/install-squidguard-db4-from-source

/etc/squid/squid.conf




проверка работы прокси на admin server и kassa
curl --proxy 172.16.0.123:3128 check-host.net/ip

$ export http_proxy="http://ЛОГИН:ПАРОЛЬ@ПРОКСИ_СЕРВЕР:ПОРТ"
$ export https_proxy="https://ЛОГИН:ПАРОЛЬ@ПРОКСИ_СЕРВЕР:ПОРТ"
$ export ftp_proxy="http://ЛОГИН:ПАРОЛЬ@ПРОКСИ_СЕРВЕР:ПОРТ"
Если прокси без авторизации, то строки должны быть вида:
$ export <бла-бла>_proxy="http://ПРОКСИ_СЕРВЕР:ПОРТ"

$ export {http,https,ftp}_proxy="http://ПРОКСИ_СЕРВЕР:ПОРТ"
$ unset {http,https,ftp}_proxy

для отключения прокси:
$ unset http_proxy
$ unset https_proxy
$ unset ftp_proxy

nano /etc/environment
https_proxy="https://user:pass@proxy:port/"
http_proxy="http://user:pass@proxy:port/"
ftp_proxy="ftp://user:pass@proxy:port/"
socks_proxy="socks://user:pass@proxy:port/"
no_proxy="localhost,127.0.0.1,::1,*.my.lan
Если прокси без авторизации, то строки должны быть вида:
<бла-бла>_proxy="https://proxy:port/"

yum install squidGuard

nano /etc/squid/squidGuard.conf




https://github.com/StevenBlack/hosts
https://someonewhocares.org/hosts/hosts
https://adaway.org/hosts.txt
http://www.squidguard.org/blacklists.html
http://squidguard.mesd.k12.or.us/blacklists.tgz
http://www.shallalist.de/
http://www.shallalist.de/Downloads/shallalist.tar.gz
https://raw.githubusercontent.com/zapret-info/z-i/master/nxdomain.txt

wget http://www.shallalist.de/Downloads/shallalist.tar.gz
tar -xvf shallalist.tar.gz
mkdir -p /var/squidGuard/BL/manual/
nano /var/squidGuard/BL/manual/domains
nano /var/squidGuard/BL/manual/urls

из blacklists.tgz скопировать каталог suspect в каталог BL (иначе при преобразовании в БД выдаст ошибку)

squidGuard -b -d -C all

chown -R squid:squid /var/squidGuard
chown root:squid /etc/squid/squidGuard.conf
chmod 0640 /etc/squid/squidGuard.conf
chown -R squid:squid /var/log/squidGuard

протестируем SquidGuard, прежде, чем объединять его со Squid:
# echo "http://www.porno.com / - - GET" | squidGuard -d

в /etc/squid/squid.conf Добавляем:
url_rewrite_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf

squid -k reconfigure
systemctl restart squid

логи
tail -f /var/log/messages
tail -f /var/log/squidGuard/squidGuard.log

squid -k rotate # очистить логи

если не применяет правила, то отключить Selinux ()
sestatus
временно
setenforce 0
постоянно
nano /etc/selinux/config
#SELINUX=enforcing
SELINUX=disabled
reboot



Изменение записей в списках доменов и URL
Пример. Рядом с файлом domains.db в папке /var/lib/squiguard/db/webmail создаём файл domains.diff. В него заносим строку или несколько строк, по одной на каждую запись:
-google.com (что означает вычеркнуть этот домен из базы)
или +google.com (что означает добавить этот домен в базу)
Даём команды:
$ squidGuard -u (обновить базы db из файлов diff. В логах squidguard'а можно посмотреть сколько добавилось/убылось.)
$ squid -k reconfigure (перечитать настройки без перезапуска.)
Файл domains.diff удалять, или стирать из него записи, не надо. При глобальном обновлении баз этот файл ещё пригодится. И при многократном обновлении не происходит дублирования записей в БД.


Webmin



sudo rpm --import http://www.webmin.com/jcameron-key.asc
sudo yum install webmin
sudo chkconfig webmin on
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

uzverss: (Default)
uzverss

December 2024

S M T W T F S
12345 67
891011121314
15161718192021
22232425262728
293031    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 22nd, 2026 01:09 am
Powered by Dreamwidth Studios