SambaDC/Squid
Установка и настройка контроллера домена и прокси-сервера с авторизацией по учётным записям 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
И проверить ещё раз доступ в интернет.