SEARCH

Введите поисковый запрос в поле выше ^, или воспользуйтесь поиском по форуму.

#1 2024-04-08 08:39

cOR
Администратор
Зарегистрирован: 2023-08-29
Сообщений: 85
Сайт

Конфигурация SQUID

Debian 12 Active Directory

Имя сервера: u1604
Имя сервера контроллера домена: SERV.DOMEN.MY
Имя домена: DOMEN.MY
Пользователь домена с правами на присоединение: supauser@DOMEN.MY
Папка для общего доступа с правами 777 : /home/virtual/Share

Обновляем сервер

sudo apt-get update && sudo apt-get dist-upgrade -y && sudo apt-get autoremove -y

Ставим samba и winbind

sudo apt-get install samba winbind

Ставим авторизацию kerberos

sudo apt-get install krb5-user

Ставим механизмы авторизации. Иначе не будет работать и будем при тестировании получать ошибку session setup failed: NT_STATUS_INVALID_PARAMETER

sudo apt-get install libpam-krb5 libpam-winbind libnss-winbind

Правим winbind

nano /etc/nsswitch.conf
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
 
passwd:         compat winbind
group:          compat winbind
shadow:         compat winbind
gshadow:        files
 
hosts:          files dns mdns4_minimal [NOTFOUND=return] mdns4
 
networks:       files dns
 
protocols:      db files
services:       db files
ethers:         db files
rpc:            db files
 
netgroup:       nis

Правим samba

nano /etc/samba/smb.conf
[global]
   netbios name = u1604
 
   workgroup = DOMEN
   realm = DOMEN.MY
 
   security = ADS
   encrypt passwords = yes
 
   dns proxy = no 
   panic action = /usr/share/samba/panic-action %d
 
   winbind enum groups = yes
   winbind enum users = yes
   winbind use default domain = yes
   template shell = /bin/bash
   winbind refresh tickets = yes
 
   idmap config *:backend = tdb
   idmap config *:range = 10000-80000
   idmap config DOMEN:backend = rid
   idmap config DOMEN:range = 10000-80000
 
   domain master = no
   local master = no
   preferred master = no
   os level = 0
   domain logons = no
 
   load printers = no
   show add printer wizard = no
   printcap name = /dev/null
   disable spoolss = yes
 
[share]
    path = /home/virtual/Share
    writeable = yes
    browseable = yes
    guest ok = no

Проверяем настройки samba

testparm -s

Правим ошибку количества соединений rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Добавляем в конец файл строку со значением 16384

nano /etc/security/limits.conf
............................
#@student        hard    nproc           20
#@faculty        soft    nproc           20
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#ftp             -       chroot          /ftp
#@student        -       maxlogins       4
 
*               -       nofile          16384
 
# End of file

Изменения лимитов будут приняты после перезагрузки

Правим настройки kerberos

nano /etc/krb5.conf
[libdefaults]
    default_realm = DOMEN.MY
    dns_lookup_realm = false
    dns_lookup_kdc = true
    ticket_lifetime = 24000
 
    krb4_config = /etc/krb.conf
    krb4_realms = /etc/krb.realms
    kdc_timesync = 1
    ccache_type = 4
    forwardable = true
    proxiable = true
 
    v4_instance_resolve = false
    v4_name_convert = {
        host = {
            rcmd = host
            ftp = ftp
        }
        plain = {
            something = something-else
        }
    }
    fcc-mit-ticketflags = true
 
[realms]
    DOMEN.MY = {
                kdc = SERV.DOMEN.MY
                admin_server = SERV.DOMEN.MY
                default_domain = DOMEN.MY
        }
 
 
[domain_realm]
    .domen.my = DOMEN.MY
    domen.my = DOMEN.MY
 
 
[login]
    krb4_convert = false
    krb4_get_tickets = false

Правим файл hosts
Именно обязательно в этом порядке. Иначе получим ошибку на этапе присоединения
No DNS domain configured for u1604. Unable to perform DNS Update.
DNS update failed: NT_STATUS_INVALID_PARAMETER

nano /etc/hosts
127.0.0.1   localhost
127.0.1.1   u1604.domen.my u1604
 
# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Присоединяем к домену используя учетную запись с правами администратора домена

net ads join -U supauser

Проверяем присоединение

net ads testjoin
Join is OK

Ставим клиент и библиотеки для проверки сетевых папок

sudo apt install samba cifs-utils smbclient

Проверяем работу winbind

wbinfo -t
wbinfo -u
wbinfo -g

Проверяем работу kerberos

kinit supauser@DOMEN.MY

Смотрим что мы получили

klist
Default principal: supauser@DOMEN.MY
Valid starting       Expires              Service principal
15.09.2016 12:59:59  15.09.2016 19:39:55  krbtgt/DOMEN.MY@DOMEN.MY

Проверяем работу папок. На этом моменте долго не мог понять почему не авторизуется. Если заходить из Windows то просит пароль. Оказалось как раз из за нехватки библиотек установленных выше.
session setup failed: NT_STATUS_INVALID_PARAMETER

smbclient -U supauser@DOMEN.MY -L localhost

Проверяем работу самбы

smbstatus
Samba version 4.3.9-Ubuntu
PID     Username      Group         Machine            Protocol Version       
------------------------------------------------------------------------------
1616      supauser      администраторы домена  10.10.10.5 (ipv4:10.10.10.5:52467) SMB3_00     
 
Service      pid     machine       Connected at
-------------------------------------------------------
share        1616   10.10.10.5  Thu Sep 15 12:42:27 2016
 
Locked files:
Pid          Uid        DenyMode   Access      R/W        Oplock           SharePath   Name   Time
--------------------------------------------------------------------------------------------------
1616         11424      DENY_NONE  0x100081    RDONLY     NONE             /home/virtual/Share   .   Thu Sep 15 12:42:26 2016
SQUID блокировка рекламы

Немного уменьшим количество рекламы отображаемой через squid
Будем делать это посредством файла hosts
Чтобы его использовать необходима чтобы в файле squid.conf была включена директива host

hosts_file /etc/hosts

Директива удобна так же если нам необходимо указать переадресацию по имени на сервер в локальной сети
Список блокировки рекламы будем брать с сайта http://winhelp2002.mvps.org/
На сайте есть инструкции как включить его в разные системы
Автоматизируем процесс его обновления
Напишем скрипт
Будем делать его сразу в папке bin чтобы при необходимости вызывать его просто по имени

sudo -su
nano /usr/bin/ad_hosts_renew
#!/bin/bash
#
# Имя прокси squid и локальные имена
#==========================================
echo "127.0.1.1     proxy.domain.lol    proxy"  >  /etc/hosts
echo "192.168.1.250 proxy.domain.lol    proxy"  >> /etc/hosts
echo "" >> /etc/hosts
echo "192.168.1.8   dc.domain.lol       dc" >> /etc/hosts
echo "192.168.1.5   wopasite.domain.lol wopasite    www.wopasite.domain.lol www.wopasite"   >> /etc/hosts
#
# Список рекламы
#==========================================
echo "" >> /etc/hosts
echo "AD Block" >> /etc/hosts
echo "========" >> /etc/hosts
curl http://winhelp2002.mvps.org/hosts.txt  >> /etc/hosts 2>/dev/null
#
# Обновим конфигурацию
#==========================================
squid3 -k reconfigure

Сделаем его исполняемым

chmod +x /usr/bin/ad_hosts_renew

Проверим работу

ad_hosts_renew

Так как скрипт лежит в папке bin, то его можно вызывать просто по имени без указания путей
Если все хорошо, то можно проверить стало ли меньше рекламы. Открыть замусоренную страницу напрямую и в другом браузере через squid и сравнить.
Так как список не охватывает всего, то можно отдельно устанавливать расширения для браузеров для блокировки рекламы.
Просто у некоторых пользователей расширение может быть не установлено.
Теперь автоматизируем процесс обновления списка. Делать часто этого нет необходимости. Я установил раз в неделю.

cd /etc/cron.weekly/
ln -s /usr/bin/ad_hosts_renew

Проверим что задание появилось

run-parts --test /etc/cron.weekly/
/etc/cron.weekly//ad_hosts_renew
/etc/cron.weekly//apt-xapian-index
/etc/cron.weekly//man-db

Так как в скрипте есть реконфигурация squid, то желательно это делать в нерабочее время. Время работы cron.weekly можно посмотреть:

nano /etc/crontab

Строчка запуска еженедельного cron в 3:47

47 3    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )

Думай дважды, кодь однажды. (c) cOR

Offline

Copyright © 2023 TDM ltd.
Created by cOR.

TDM Logo