Как подружить Squid и Active directory в Gentoo??

Для начала давайте уясним, что это пост для меня. Чтобы Я не забыл, как ЭТО было незабываемо. Я знаю про TrafficInspector, Kerio Connect, pfSense и прочее всякое.
С этим разобрались.
В это теме: Как настроить Squid на авторизацию в ActiveDirectory. Я использовал NTLM. Заодно (чтобы два раза не вставать) настроил авторизацию в ssh через тот же ActiveDirectory (Kerberos) а также sudo с поддержкой групп AD.
Итак. Начнём.
Вначале было http://it.icmp.ru/post/view/7750
От себя замечу, что я стараюсь собирать с весёлым USE флагом: "-*". Через это возникают некоторые проблемы, но я настырный =))
При начальной сборке я использовал:
/etc/portage/make.conf:
### CPU Flags
CHOST="x86_64-pc-linux-gnu"
CXXFLAGS="${CFLAGS}"
CFLAGS="-O2 -pipe -march=тутмогбытьвашпроцессор"
MAKEOPTS="-j9"
CPU_FLAGS_X86="тут могли быть флаги вашего процессора"

### Dirs and urls
PORTDIR="/usr/portage"
DISTDIR="/usr/portage/distfiles"
PKGDIR="/usr/portage/packages"
GENTOO_MIRRORS="http://mirror.yandex.ru/gentoo-distfiles/ ftp://mirror.yandex.ru/gentoo-distfiles/"

### Lang options
LC_MESSAGES=C
LINGUAS="eu eu_US ru ru_RU"
L10N="en en-US ru"

### Use flags
USE="-* acl addc addns ads bash-completion berkdb bzip2 caps cron gmp gnutls gzip
icu ipv6 kerberos ldap libev linguas_en linguas_en_GB linguas_ru
linguas_ru_RU logrotate modules multilib nettle nls pam python rpc samba
snmp ssl syslog tcpd threads unicode winbind xattr xml zlib"

### Python
PYTHON_SINGLE_TARGET="python3_4"
PYTHON_TARGETS="python3_4 python2_7"

### Curl
CURL_SSL="gnutls"

Чтобы было всё кошерно и net-tools не амнизировал при упоминании об имени машины и для разделения точечных use флагов:
# echo "sys-apps/net-tools hostname" > /etc/portage/package.use/net-tools

Вроде, всё... Если gentoo была собрана с иными флагами, то
# emerge -avuDN --with-bdeps=y @world
# emerge --depclean
# revdep-rebuild.sh

Это займёт ооочень много времени....
Так.
Теперь для основной вечеринки нам нужны samba и squid (какая вечеринка без танцев и закуски к пиву?)
Добавляем use флаги к ним:
# echo "net-fs/samba client" > /etc/portage/package.use/samba
# echo "net-proxy/squid qos tproxy wccp wccp2" > /etc/portage/package.use/squid
# echo "net-dns/bind-tools gssapi" > /etc/portage/package.use/bind-tools

Да, там кое-кто прибвается по пути =)))
Собираем.
# emerge -av net-fs/samba net-proxy/squid

На этом подготовительные упражнения закончились. Отсюда начинается магия...
http://it.icmp.ru/postimages/8426/8038/thumb/spongebob-squarepants-8855-1920x1200-1050x656.jpg

1) Правим конфиги Kerberos (/etc/krb5.conf). Приводим к виду
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log

[libdefaults]
default_realm = MYDOMAIN.CRY
dns_lookup_realm = true
dns_lookup_kdc = true
clockskew = 300
ticket_lifetime = 1d
forwardable = true
proxiable = true

[realms]
MYDOMAIN.CRY = {
kdc = pdc.mydomain.cry:88
admin_server = pdc.mydomain.cry:749
default_domain = mydomain.cry
}

[domain_realm]
.mydomain.cry = MYDOMAIN.CRY
mydomain.cry = MYDOMAIN.CRY

[kdc]
profile = /var/lib/krb5kdc/kdc.conf

[appdefaults]
pam = {
debug = false
ticket_lifetime = 1d
renew_lifetime = 1d
forwardable = true
proxiable = false
retain_after_close = false
minimum_uid = 0
debug = false
krb4_convert = false
}

Также правим /var/lib/krb5kdc/kdc.conf:
[kdcdefaults]
kdc_listen = 88
kdc_tcp_listen = 88

[realms]
MYDOMAIN.CRY = {
database_name = /usr/local/var/krb5kdc/principal
acl_file = /usr/local/var/krb5kdc/kadm5.acl
key_stash_file = /usr/local/var/krb5kdc/.k5.MYDOMAIN.CRY
kdc_listen = 88
kdc_tcp_listen = 88
max_life = 10h 0m 0s
max_renewable_life = 7d 0h 0m 0s
}

Так. "Цербер" накормлен.
2) Самба...
http://it.icmp.ru/postimages/8426/8038/thumb/glrce0.jpg

Приводим /etc/samba/smb.conf к следующему виду
[global]
netbios name = BIGBRO
server string = Squid Server
log file = /var/log/samba/log.%m
security = ads
server string = %h Big Brother eye

workgroup = MYDOMAIN
realm = MYDOMAIN.CRY
password server = PDC.MYDOMAIN.CRY
encrypt passwords = yes

client signing = auto
server signing = auto

idmap config * : backend = tdb
idmap config * : range = 10000-20000

winbind use default domain = yes
winbind enum users = yes
winbind enum groups = yes
winbind nested groups = yes
winbind separator = +
winbind refresh tickets = yes
winbind offline logon = yes
winbind cache time = 300

template shell = /bin/bash
template homedir = /home/%D/%U

preferred master = no
dns proxy = no
wins server = pdc.mydomain.cry
wins proxy = no

inherit acls = yes
map acl inherit = yes
acl group control = yes

load printers = no
debug level = 3
use sendfile = no

Убедимся, что winbind будет стартовать с самбой. Правим /etc/conf.d/samba
...
daemon_list="smbd nmbd winbind"
...

3) Сквидвард. Добавляем в конфит требования представиться (/etc/squid/squid.conf:
#NTLM
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 30

# warning: basic authentication sends passwords plaintext
# a network sniffer can and will discover passwords
auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours

acl AuthorizedUsers proxy_auth REQUIRED

# Example rule allowing access from your local networks.
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed

http_access allow all AuthorizedUsers

С конфигами всё.
4) Вводим в домен
# kinit AdminLogin

Вводим свой пароль. Домен можно не указывать - магия непреклонно сработает.
# rc-update add samba default
# rc-service samba start
# net ads join -U AdminLogin

Ещё раз вводим пароль. Тут должна выскочить ошибка ообновления DNS записей. Сделаем вид, что её нет =))
Проверяем, что всё в ажуре:
# klist должен вернуть валидный тикет
# wbinfo -u должен вывести ВСЕХ пользователей. Доменных тоже
# wbinfo -g должен отобразить все пароли пользователей. Щутка. Это группы =)))
5) Я побоялся заранее влиять на механизмы авторизации. Мог получить попаболь от невозможности войти =)) Пора это всё исправить!
Правим /etc/nsswitch.conf
passwd:      compat files winbind
shadow: compat files winbind
group: compat files winbind

hosts: files dns winbind
networks: files dns winbind

services: db files winbind
protocols: db files winbind
rpc: db files winbind
ethers: db files winbind
netmasks: files winbind
netgroup: files winbind
bootparams: files winbind

automount: files winbind
aliases: files winbind

Также не забываем про /etc/pam.d/system-auth (нужно для авторизации sshd):
auth            required                        pam_env.so
#auth required pam_unix.so try_first_pass likeauth
auth optional pam_permit.so
auth [success=1 default=ignore] pam_localuser.so
auth [success=2 default=die] pam_winbind.so
auth [success=1 default=die] pam_unix.so nullok
auth requisite pam_deny.so

account required pam_unix.so
account [success=1 default=ignore] pam_localuser.so
account required pam_winbind.so
account optional pam_permit.so

#password required pam_unix.so try_first_pass md5 shadow
password [success=1 default=ignore] pam_localuser.so
password [success=2 default=die] pam_winbind.so
password [success=1 default=die] pam_unix.so sha512 shadow
password requisite pam_deny.so
password optional pam_permit.so

session required pam_limits.so
session required pam_env.so
session required pam_unix.so
session required pam_mkhomedir.so umask=0022 skel=/etc/skel
session [success=1 default=ignore] pam_localuser.so
session required pam_winbind.so
session optional pam_permit.so

Разрешаем авторизовываться всяким яким из=под контроллера по ssh (/etc/ssh/sshd_config):
KerberosAuthentication yes

6) Всё. Готовим сквид и правим группы:
# rc-update add squid default

Сквидику нужен доступ к папке winbind_privileged. Иначе он не будет работать =((. Так как в gentoo права на эту папку полностью под контролем root, а я не люблю давать кому не попадя жузл власти, то я создам отдельную группу для доступа к этой папке. Вот!
# groupadd -g 300  winbindd_priv 
# usermod -g winbindd_priv squid
# usermod -g winbindd_priv root
# chown -R :winbindd_priv /var/lib/samba/winbindd_privileged

На всякий можно перезагрузиться =)))
Всё. По-хорошему, у нас всё должно работать!
7) Осталось только поправить sudo:
# visudo
...
%wheel ALL=(ALL) ALL
%администраторы\ домена ALL=(ALL) ALL
...

Для того, чтобы пользоваться sudo в домене основной группой должна быть группа "Администраторы домена"!!!
Какбы всё =)))
  • просмотров: ~1072
  • рейтинг: ?

Комментарии (1)

Вы - anonymous, войти ?

можно использовать bbcode-теги
[b]жирный текст[/b]
[i]курсив[/i]
[u]underline[/u]
[s]зачеркнутый текст[/s]
[size=20px]размер шрифта[/size]
всякие изменения текста
[left][/left]
[right][/right]
[center][/center]
позиционирование элементов: картинки, текст и т.д
[url][/url]
[email][/email]
внутри тега [url] помещайте ссылки, а внутри [email] адрес электронной почты;
так же [url] можно использовать в виде:
[url=http://example.com]пример[/url],
[url=http://test.ru][img]http://flickr.com/givemeimg.png[/img][/url]
[code][/code]
[quote][/quote]
внутри тега [code] можно помещать программный код (подстветка попытается включиться автоматически); для выделения цитат используйте [quote]
также можно напрямую указать язык [code=cpp]int i;[/code]
[list][/list]
создаем списки, каждый элемент пишется после [*].

Можно указывать маркер - [list=marker].
возможные маркеры 1(decimal), i(lower-roman), I(upper-roman), a(lower-alpha), A(upper-alpha). Примеры:

[list][*]1 элемент[*]2 элемент[*]3 элемент[/list]
[list=1][*]1 элемент[*]2 элемент[*]3 элемент[/list]
[list=A][*]1 элемент[*]2 элемент[*]3 элемент[/list]
[table][/table]
оформляем таблицу, используя внутренние теги [tr] и [td].
[tr] - строка, [td] - поле в строке,
[table=100%] - можно задавать ширину в процентах, по-умолчанию ширина 100%
[td=2] - можно задавать сколько столбцов входит в это поле. Пример:

[table=50%][tr][td]столбец 1[/td][td]столбец 2[/td][/tr][tr][td]значение 1[/td][td]значение 2[/td][/tr][tr][td=2]сразу 2 столбца[/td][/tr][/table]
[img][/img]
тег для вставки фото или картинок, мы любим картинки. Примеры использования:

[img]http://ya.ru/logo.png[/img],
[img=100x100px]http://ya.ru/logo.png[/img]
[img=fullimg.url]thumbimg.url[/img],
Пожалуйста загружайте картинки на наш сайт, либо вставляйте с бекбоновских ресурсов.
[video][/video]
Проигрывает видео, внутрь вставляем ссылки на видео, поддерживается Play.Ykt.Ru(нужно вставить ссылку на страницу с видео) и tv.ykt.ru(нужно вставить ссылку на адрес файла)