SambaDC/Squid

Материал из ALT Linux Wiki

Установка и настройка контроллера домена и прокси-сервера с авторизацией по учётным записям Active Directory

Постановка вопроса

Операционная система: Alt linux server starterkit p8 x32

dc - имя хоста
dc.altserver.main - полное имя хоста
ALTSERVER.MAIN - домен
IP-адрес - 192.168.0.98/24
Samba и squid предполагается разместить на одном сервере.

Настройка Samba-DC

Установка Samba-DC

# apt-get install task-samba-dc

Настройка контроллер домена

# rm -f /etc/samba/smb.conf
# rm -rf /var/lib/samba
# mkdir -p /var/lib/samba/sysvol


В файле /etc/sysconfig/network

HOSTNAME=dc.altserver.main

Создание домена

Создаём домен:

# samba-tool domain provision
Realm [ALTSERVER.MAIN]: Жмём Enter
 Domain [ALRSERVER]: Жмём Enter
 Server Role (dc, member, standalone) [dc]: Жмём Enter 
 DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: Жмём Enter 
 DNS forwarder IP address (write 'none' to disable forwarding) [127.0.0.1]: Указать DNS-сервер провайдера
Administrator password: (Создаётся учётная записть администратора домена: Administrator, необходимо задать сложный пароль не менее 8 знаков)
Retype password:

Добавление samba в автостарт

Добавить samba в автостарт и запустить:

# chkconfig samba on
# service samba start

Настраиваем DNS

В /etc/resolv.conf меняем:

nameserver 127.0.0.1


Далее необходим компьюер с Windows, в данном случае использовалась ОС Windows 7 Професиональная, на Ultimate не заработала оснастка RSAT Необходимо установить RSAT по инструкции: [[1]]

В настройках сетевого подключения указать DNS: 192.168.0.98

Ввод компьютера в домен

Ввести компьютер с ОС Windows 7 в домен: ALTSERVER.MAIN используя права администратора домена(Administrator) Войти в систему под администратором домена (Administrator)

В RSAT создать пользователя: squid_admin (нужен для совместной работы контроллера домена и squid)


Имя: squid_admin
Имя входа пользователя: HTTP/dc.altserver.main
Имя входа пользователя (пред-Windows 2000): squid_admin
Срок действия пароля: Не ограничен

Создать две группы:

squid_full
squid_other

Добавить Administrator в squid_full

В RSAT DNS создать зону обратного просмотра:

Добавить новую зону

Следовать указанию мастера и в конце прописать идиентификатор сети 192.168.0

В зоне создать указатель:

IP-адрес: 192.168.0.98
Имя узла: dc.altserver.main

Далее на сервере

Установка squid и необходимых компонентов

Установить squid и необходимые компоненты:

apt-get install squid squid-helpers squid-kerberos-ldap-helper cyrus-sasl2 libsasl2 libkrb5user libsasl2-plugin-gssapi

Создать keytab:

samba-tool spn add HTTP/dc.altserver.main proxy_admin
samba-tool domain exportkeytab /etc/squid/squid.keytab --principal=HTTP/dc.altserver.main@ALTSERVER.MAIN

На всякий случай дать полный доступ к файлу keytab (не безопасно, изменим позже):

chmod 777 /etc/squid/squid.keytab

В файле /etc/krb5.conf в разделе [libdefaults] добавить:

default_keytab_name = /etc/squid/squid.keytab

Создать файл /etc/squid/blacklist.url В котором будут содержатся регулярные выражения доменов запрещённых к посещению:

Файл /etc/squid/squid.conf привести к виду:

auth_param negotiate program /usr/lib/squid/negotiate_kerberos_auth -r -s GSS_C_NO_NAME
auth_param negotiate children 20
auth_param negotiate keep_alive off
external_acl_type fullgroup_krb children-max=100 children-startup=50 cache=10 grace=15 %LOGIN /usr/lib/squid/ext_kerberos_ldap_group_acl -a -g squid_full@ALTSERVER.MAIN -D ALTSERVER.MAIN -S dc.ALTSERVER.MAIN
external_acl_type othergroup_krb children-max=100 children-startup=50 cache=10 grace=15 %LOGIN /usr/lib/squid/ext_kerberos_ldap_group_acl -a -g squid_other@ALTSERVER.MAIN -D ALTSERVER.MAIN -S dc.ALTSERVER.MAIN
acl localnet src 192.168.0.0/24 # RFC1918 possible internal network
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
acl AD_users proxy_auth REQUIRED
acl AD_FullInet external fullgroup_krb
acl AD_OtherInet external othergroup_krb
acl blacklist url_regex -i «/etc/squid/blacklist.url»
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny AD_OtherInet blacklist
http_access allow AD_FullInet
http_access allow AD_OtherInet
http_access deny AD_users
http_access deny all
http_port 3128
dns_v4_first on
via off
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 в автостарт

Добавить squid в автостарт:

# service squid on

Перазагрузить сервер

# reboot

На рабочих станциях в настройках браузера указал прокси-сервер: dc.altserver.main (айпишник нельзя, только имя) и порт 3128 Если пользователь состоит в группе squid_full то он получит полный доступ на все ресурсы Если пользователь состоит в группе squid_other то он получит полный доступ на все ресурсы кроме тех что в файле /etc/squid/blacklist.url Всем остальным доступ в интернет будет закрыт! Теперь когда всё работает можно изменить права на файл /etc/squid/squid.keytab

# chmod 600 /etc/squid/squid.keytab
# chown squid:squid /etc/squid/squid.keytab

И проверить ещё раз доступ в интернет.

Ссылки

Squid/AD-auth