Блог Андрея Боровкова

О СЕБЕ И О ТОМ ЧТО ИНТЕРЕСНО

Настраиваем Squid для авторизации в AD version 1.0

by Андрей Боровоков on 04.09.2013, no comments

squidВ этой статье описана моя первая конфигурация Squid с авторизацией в Microsoft Active Directory, c использованием Samba.
Эту же конфигурацию Samba можно применить для авторизации пользователей на VPN Server PPTPD (см.п. 5)

 

NTLM AUTH + SAMBA + SQUID + AD 2003

1) Исходники:
uname -a = RH9 2.4.20-8
heimdal-0.7.1
openldap-2.3.9 (требуется bdb 4)
samba-3.0.22
squid-2.5.STABLE11

2) Установка:
#cd heimdal-0.7.1
#./configure —prefix=usr
#make && make install
#ldconfig

#cd openldap-2.3.9
#./configure —prefix=/usr —without-cyrus-sasl
#make depend && make && make install

#cd samba-3.0.22/source
#./configure —prefix=/usr/local/samba-3.0.22
—with-ldap
—with-ads
—with-krb5
—with-winbind
(если надо —with-pam)
#make && make install

#cd squid-2.5.STABLE11
#./configure —prefix=/usr/local/squid-2.5.11 —sysconfdir=/etc/squid
—enable-auth=’basic ntlm’ —enable-basic-auth-helpers=’winbind’ —enable-ntlm-auth-helpers=’winbind’
#make && make install

3) Конфигурация:
DNS:
resolv.conf:
—————————
search main.lan
domain main.lan
nameserver 192.168.0.2 #это контроллер домена
—————————

Керберос:
edit /etc/krb5.conf:
————————————-
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log

default_realm = MAIN.LAN

[realms]
SERVER-PDC.MAIN.LAN = {
kdc = server-pdc.main.lan
}

[domain_realms]
.main.lan = MAIN.LAN

#[libdefaults]
# default_etypes = des-cbc-crc des-cbc-md5
# default_etypes_des = des-cbc-crc des-cbc-md5
# default_tkt_enctypes = des-cbc-crc des-cbc-md5
# default_tgs_enctypes = des-cbc-crc

————————————-

test:
[root@marco etc]# kinit wizitadmin@MAIN.LAN
wizitadmin@MAIN.LAN’s Password:
[root@marco etc]#
При успешной кофигурации результат должен быть такой, обязательно домен большими буквами.

Самба:
#touch /usr/local/samba-3.0.22/lib/smb.conf
———————————————————————
[global]
workgroup = MAIN
netbios name = SERVER-FW
server string = Firewall Servwer
hosts allow = 192.168.0.
log file = /var/log/samba/.log.%m
max log size = 500
security = ADS
realm = MAIN.LAN
password server = server-pdc.main.lan
encrypt passwords = yes
socket options = TCP_NODELAY
local master = no
dns proxy = no
dos charset = CP866
display charset = CP866
delete readonly = yes
auth methods = winbind
name resolve order = hosts wins bcast lmhosts
case sensitive = no

#username map=/usr/local/samba/lib/smbusers

idmap uid=10000-20000
idmap gid=10000-20000
winbind enum users=yes
winbind enum groups=yes

dos charset = 866
unix charset = UTF-8
max log size = 50
os level = 0
wins server = 192.168.0.2

[files]
path = /opt/samba
valid users = MAIN\samba_users
writeable = yes
read only = No
public = yes
create mask = 0650
———————————————————————

#/usr/local/samba-3.0.22/bin/net ads join -U administrator
JOINED DOMAIN MAIN

Копируем файлы:
#cp samba-3.0.22/source/nsswitch/libnss_winbind.so /usr/lib
#cp samba-3.0.22/source/nsswitch/libnss_wins.so /usr/lib
#ldconfig

edit /etc/nsswitch.conf
—————————————————————
passwd: files winbind
shadow: files winbind
group: files winbind

hosts: files dns wins
networks: files dns

services: files winbind
protocols: files winbind
rpc: files
ethers: files
netmasks: files
netgroup: files winbind
publickey: files

bootparams: files
automount: files
aliases: files
—————————————————————

#/usr/local/samba/sbin/nmbd -D
#/usr/local/samba/sbin/smbd -D
#/usr/local/samba/sbin/winbindd -B

Проверка:
#/usr/local/samba/bin/wbinfo -t
#/usr/local/samba/bin/wbinfo -g — должен отдать на экран список групп
#/usr/local/samba/bin/wbinfo -u — должен отдать на экран список пользователей

Проверка на стстемном уровне:
#getent passwd — должен отдать на экран список пользователей, в том числе из домена
#getent group — должен отдать на экран список групп, в том числе из домена

Если всё успешно, устанавливаем права на шару
#chgrp -R ‘MAIN\samba_group’ /opt/samba
#chmod -R 770 /opt/samba

Проверяем из под винды шару, если что смотрим логи самбы, вездеищущий google нам поможет.

Заводим пользователя и группу для squid и раздаём права:
#groupadd squid
#useradd squid -g squid -s /sbin/nologin -d /var/spool/squid
#mkdir /var/log/squid
#chown -R squid.squid /var/log/squid
#chown -R squid.squid /var/spool/squid
#chgrp -R squid /usr/local/samba-3.0.22/var/locks/winbindd_privileged

squid.conf:
———————————————————————————————
auth_param ntlm program /usr/local/samba/bin/ntlm_auth —helper-protocol=squid-2.5-ntlmssp —require-membership-of=MAIN\Inet_Users
auth_param ntlm children 10
auth_param ntlm max_challenge_reuses 0
auth_param ntlm max_challenge_lifetime 2 minutes
auth_param ntlm use_ntlm_negotiate off

auth_param basic program /usr/local/samba/bin/ntlm_auth —helper-protocol=squid-2.5-basic —require-membership-of=MAIN\Inet_Users
auth_param basic children 10
auth_param basic realm PROXY SERVER
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
———————————————————————————————-

#/usr/local/squid-2.5.11/sbin/squid -z
#/usr/local/squid-2.5.11/sbin/squid
#ps ax:

21043 ? S 0:00 /usr/local/squid/sbin/squid
21045 ? S 0:00 [squid]
21066 ? S 0:00 (unlinkd)
21181 ? S 0:00 (ntlm_auth) —helper-protocol=squid-2.5-ntlmssp —require-membership-of=MAINInet_Users
21182 ? S 0:00 (ntlm_auth) —helper-protocol=squid-2.5-ntlmssp —require-membership-of=MAINInet_Users
21183 ? S 0:00 (ntlm_auth) —helper-protocol=squid-2.5-ntlmssp —require-membership-of=MAINInet_Users
21184 ? S 0:00 (ntlm_auth) —helper-protocol=squid-2.5-ntlmssp —require-membership-of=MAINInet_Users
21185 ? S 0:00 (ntlm_auth) —helper-protocol=squid-2.5-ntlmssp —require-membership-of=MAINInet_Users
21186 ? S 0:00 (ntlm_auth) —helper-protocol=squid-2.5-ntlmssp —require-membership-of=MAINInet_Users
21187 ? S 0:00 (ntlm_auth) —helper-protocol=squid-2.5-ntlmssp —require-membership-of=MAINInet_Users
21188 ? S 0:00 (ntlm_auth) —helper-protocol=squid-2.5-ntlmssp —require-membership-of=MAINInet_Users
21189 ? S 0:00 (ntlm_auth) —helper-protocol=squid-2.5-ntlmssp —require-membership-of=MAINInet_Users
21190 ? S 0:00 (ntlm_auth) —helper-protocol=squid-2.5-ntlmssp —require-membership-of=MAINInet_Users
21191 ? S 0:00 (ntlm_auth) —helper-protocol=squid-2.5-basic —require-membership-of=MAINInet_Users
21192 ? S 0:00 (ntlm_auth) —helper-protocol=squid-2.5-basic —require-membership-of=MAINInet_Users
21193 ? S 0:00 (ntlm_auth) —helper-protocol=squid-2.5-basic —require-membership-of=MAINInet_Users
21194 ? S 0:00 (ntlm_auth) —helper-protocol=squid-2.5-basic —require-membership-of=MAINInet_Users
21195 ? S 0:00 (ntlm_auth) —helper-protocol=squid-2.5-basic —require-membership-of=MAINInet_Users
21196 ? S 0:00 (ntlm_auth) —helper-protocol=squid-2.5-basic —require-membership-of=MAINInet_Users
21197 ? S 0:00 (ntlm_auth) —helper-protocol=squid-2.5-basic —require-membership-of=MAINInet_Users
21198 ? S 0:00 (ntlm_auth) —helper-protocol=squid-2.5-basic —require-membership-of=MAINInet_Users
21199 ? S 0:00 (ntlm_auth) —helper-protocol=squid-2.5-basic —require-membership-of=MAINInet_Users
21200 ? S 0:00 (ntlm_auth) —helper-protocol=squid-2.5-basic —require-membership-of=MAINInet_Users

4) Указываем в браузере прокси и работаем!!!

5) Для PPTPD указываем в /etc/ppp/options.pptpd:
plugin winbind.so
ntlm_auth-helper «/usr/local/samba/bin/ntlm_auth —helper-protocol=ntlm-server-1 —require-membership-of=’MAIN\VPN_Users'»

Добавить комментарий