Блог butch

Регистрация

butch

нубский админинг линухов на коленке =) туплю над ALT Linux & Gentoo & Debian

<<< нафиг это было нужно?
продолжение прокси хауту>>>

Прокси хауту: squid sams clamav havp samba on gentoo

актуально на июль 2007 =)

Вторая часть хауту: http://butch.blog.ru/655921.html

конфиг, на котором все это крутится:
gate htdocs # uname -a
Linux gate 2.6.20-gentoo-r8 #1 Fri May 18 11:18:33 MSD 2007 i686 Intel(R) Celeron(R) CPU


2.53GHz GenuineIntel GNU/Linux
768 мв. ОЗУ
вполне себе обычный удма диск на 40гб.

Итак, не буду долго распинать по поводу того как я пришел именно к этой связке =) Просто

расскажу как заставить это работать и что какую роль выполняет.
Для начала необходимый софт:

squid - самый известный\мощный кеширующий http\ftp прокси
sams - система учета пользователей сквид
samba - нам нужен winbindd для реализации ntlm аутентификации
havp - антивирусный прокси. служит исключительно для проверки проходящего через него трафа на вири.
clamav - антивирусник.
mysql - база данных для хранения инфы о прошедшем через сквид трафе.
dante - соксы. для аськи =)

Все инстолится на gentoo, естественно с помощью emerge =)
==============================

итак, первым делом топаем на сайт sams http://sams.irc.perm.ru/ и читаем документацию. объем не очень большой, при этом в общих чертах думаю вам станет понятно зачем он нужен.
в кратце - самс читает логи сквида (через заданый интервал или непрерывно, я предпочел через заданый интервал) и заносит данные в мускул о посещенных страницах, объеме трафа и времени посещения. через веб морду самса мы добавляем пользователей, шаблоны для них и другие условия, можем настроить блокировку нежелательных страниц или баннеров, доступны несколько вариантов аутентификации, но в условиях предприятий актуальны два - ip и ntlm. возможности достаточно широки. управление сквидом происходит через добавление необходимых строк в его конфиг, не в ручную =) демон самса производит это по нажатию кнопки "Реконфигурировать" в веб-интерфейсе.
для реализации авторизации по ip фактически ничего не нужно =) для того чтобы работала ntlm авторизация в домене вин2000 необходимо завести линуховую тачку в домен. самбу нужно собрать с поддержкой winbindd.
начнем именно с этого.
==============================

gate ~ #emerge -s net-fs/samba
* net-fs/samba
Latest version available: 3.0.24-r3
Latest version installed: 3.0.24-r3
Size of files: 17,467 kB
Homepage: http://www.samba.org/ http://www.openantivirus.org/projects.php
Description: SAMBA is a suite of SMB and CIFS client/server programs for UNIX
License: GPL-2


вместо emerge -s вполне можно использовать eix. даж лучше =)
нашли. отлично =) теперь выясним какие use флаги нам нужны. доступны:

gate ~ # cat /usr/portage/net-fs/samba/samba-3.0.24-r3.ebuild | less
IUSE_LINGUAS="ja pl"
IUSE="acl async automount caps cups doc examples kerberos kernel_linux ldap fam
linguas_ja linguas_pl
oav pam python quotas readline selinux swat syslog winbind"


да. дибильный способ выяснить юз флаги =) согласен. в три раза удобнее:

gate ~ # eix net-fs/samba
[I] net-fs/samba
Available versions: 3.0.24-r3 {acl async automount caps cups doc examples fam kerberos kernel_linux ldap linguas_ja linguas_pl oav pam python quotas readline selinux swat syslog winbind}
Installed versions: 3.0.24-r3(12:06:16 06/04/07)(-acl -async -automount -caps -cups doc -examples -fam -kerberos kernel_linux ldap -linguas_ja -linguas_pl -oav pam python -quotas readline -selinux -swat -syslog winbind)
Homepage: http://www.samba.org/ http://www.openantivirus.org/projects.php
Description: SAMBA is a suite of SMB and CIFS client/server programs for UNIX


итак, убираем все лишнее типа купсов и кербероса и применяем необходимые юз флаги. это кстати можно сделать как минимум еще двумя способами ;)

gate ~ # cat /etc/portage/package.use | grep samba
net-fs/samba winbind -kerberos -cups doc


замечательно. далее собираем самбу. первоначально проверив, что будет собираться:

gate ~ #emerge -p net-fs/samba

и уже после собираем.

gate ~ #emerge net-fs/samba

после того как все успешно собралось ищем конфиги самбы и читаем. естествено прежде чем вносить изменения изучите что значит та или иная запись.

gate ~ # cat /etc/samba/smb.conf | grep --invert-match ^# | grep --invert-match ^;

[global]
workgroup = < имя вашего домена >
netbios name = < имя вашего компьютера >
server string = < необязательно >
log file = /var/log/samba/log.%m
max log size = 50
log level = 3
#указываем разрешенные хосты
hosts allow = 192.168.1. 192.168.0. 127.
map to guest = bad user
security = domain
password server = < указываем пассворд сервер >
encrypt passwords = yes
#разделитель для винбинда
winbind separator = +
#по умолчанию используем указанный домен
winbind use default domain = yes

template homedir = /home/%D/%U
winbind uid = 10000-20000
winbind gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes
template shell = /bin/bash

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
local master = no

#в хостс и лмхостс не забываем прописать свои контроллеры домена.
name resolve order = host lmhosts bcast

dns proxy = no


Надеюсь ничего лишнего не отсек =) вроде это тот минимум, что необходим для коректной работы нтлм авторизации.
далее стартуем сервис, читаем логи, если что не так - гуглим и читаем документацию.

gate ~ # /etc/init.d/samba start

если все ок - двигаемся дальше.
необходимо завести тачку в домен.

gate ~ # net join -u < логин админа домена >

вводим пароль учетки. читаем. я уж и не помню что должно вылезти тут =)
если вы скомпилировали самбу с керберосом то получите ряд ошибок. еще бы, ведь его мы не настраивали =) он и не нужен в нашем случае =)

далее стартуем винбиндд с дебаг левелом повыше. мы же желаем узнать все подробности =)

вполне возможно это нужно было сделать до пред.команды. сейчас уже не помню

gate ~ # winbindd -d9

далее проверяем, запущен ли он и нормально ли зашла тачка в домен:

gate ~ # wbinfo -p
Ping to winbindd succeeded on fd 4
gate ~ # wbinfo -t
checking the trust secret via RPC calls succeeded


можно теперь и группы посмотреть:

gate ~ # wbinfo -g
BUILTIN+administrators
BUILTIN+users
[..]


вообще wbinfo крайне полезная вещь. советую прочесть хотя бы wbinfo --help

Итак, необходимый приготовления сделаны.
==============================

теперь очередь сквида.

gate ~ # emerge -s squid
Searching...
[..]
* net-proxy/squid
Latest version available: 2.6.13-r1
Latest version installed: 2.6.13-r1
Size of files: 1,589 kB
Homepage: http://www.squid-cache.org/
Description: A full-featured web proxy cache
License: GPL-2
[..]


как уже говорил лучше юзать eix squid
какие юз флаги нам нужны:
доступные:

gate ~ # cat /usr/portage/net-proxy/squid/squid-2.6.13-r1.ebuild | less
IUSE="pam ldap samba sasl nis ssl snmp selinux logrotate qos zero-penalty-hit \
pf-transparent ipf-transparent \
elibc_uclibc kernel_linux"


уже описывал выше как с помощью eix это сделать удобнее ;)

необходимые:

gate ~ # cat /etc/portage/package.use | grep squid
net-proxy/squid samba pam -ldap


компилим, читаем доки. я буду писать только важные моменты настройки.

читаем теперь снова доки по самсе, а также двигаем на сайт havp http://www.server-side.de/ а также не пропускаем фак на форуме этого проекта, и читаем как возможно пропихнуть хавп между сквидом. зовут они это дело сендвичом. зачем это нужно: в цепочке пользователь--сквид1--хавп--сквид2--инет первый сквид отвечает за ограничения и аутентификацию, при этом кешированием он не занимается, второй сквид2 занимается исключительно кэшированием, дабы самое медленное звено цепочки не сильно тормозило. речь кнчно же о хавпе. дабы он каждый раз не качал самостоятельно ресурсы ставим перед ним кеширующий прокси.

итак. конфиг первого сквида в цепочке:

gate ~ # cat /etc/squid/squid.conf | grep --invert-match ^#
#лишние строки я убрал, как и строки, внесенные самсом.
#пояснения будут только к строкам явно этого неуждающимся
http_port 3128

#итак, описание парент прокси. первая строка - хавп, вторая - второй скивд. зачем нужно указывать здесь второй сквид - далее
#так же не забываем параметр proxy-only
cache_peer 127.0.0.1 parent 8080 0 no-query no-digest no-netdb-exchange proxy-only default
cache_peer 127.0.0.2 parent 8081 0 no-query no-digest no-netdb-exchange proxy-only

hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
cache_mem 8 MB
maximum_object_size 4000 KB
minimum_object_size 0 KB
maximum_object_size_in_memory 8 KB

#изначально этот прокси был кеширующим. но после решения
#поднять второй сквид для кеша на этой тачке решено было отрубить кэш
#cache_dir aufs /var/cache/squid 1000 32 256
cache_dir null /dev/null

access_log /var/log/squid/access.log squid
cache_log /var/log/squid/cache.log
cache_store_log none
pid_filename /var/run/squid.pid
debug_options ALL,1
ftp_passive off
check_hostnames off
dns_defnames off
hosts_file /etc/hosts

acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443

#наконец то указываем хелпер, идущий в комплекте с самбой, ибо идущий
#со сквидом вместе нифига не работает с самбой версии 3.хх
#первым указываем нтлм авторизацию. она срабатывает соответсвенно первой
#при этом замечательно аворизуется автоматом ИЕ. это наверное одна из
#вкусных фишек
#второй идет бэйсик авторизация - все остальные клиенты должны предоставить
#имя пользователя и пароль доменного юзера
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 6
auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic children 6
auth_param basic realm Please, enter your user name and password
auth_param basic credentialsttl 2 hours

refresh_pattern . 0 20% 4320
peer_connect_timeout 30 seconds
read_timeout 5 minutes
request_timeout 5 minutes
persistent_request_timeout 1 minute
client_lifetime 30 minutes
half_closed_clients off
shutdown_lifetime 10 seconds

acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl to_localhost dst 127.0.0.0/8
acl thishost src 127.0.0.1/32
#этот лист необходим чтобы не кешировать отданный хавпом контент.
#зачем? чтобы вдруг не прокешировать пропущенный кламав вирь.
acl HAVP_PORT myport 8081
acl purge method PURGE
acl CONNECT method CONNECT
#этот лист содержит список того, что проверять на вири не нужно.
#с джпегами отдельный разговор. лучше их сканить, но тачка думаю тормозить будет
acl noscan urlpath_regex -i \.(jpe?g|gif|png|ico|swf|flv|pdf|bmp|mov|avi)$
acl proto_HTTP proto HTTP
acl Proto_HTTPS proto HTTPS

http_access allow thishost
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny all

http_reply_access allow all
icp_access allow all

#пытаемся отправить мимо хавпа картинки и прочее, не требующее проверки.
cache_peer_access 127.0.0.2 allow proto_https noscan
cache_peer_access 127.0.0.2 deny all
#все остальное пускаем через хавп
cache_peer_access 127.0.0.1 allow all

memory_pools off
via off
forwarded_for off
buffered_logs on

no_cache deny QUERY
no_cache deny CONNECT
#как и говорил, не кешируем ответы хавпа
no_cache deny !HAVP_PORT
#запрещаем ходить мимо парент прокси
never_direct allow all

header_access Via deny all
header_access via deny all

error_directory /usr/share/squid/errors/Russian-1251
prefer_direct off
strip_query_terms off
coredump_dir /var/cache/squid
pipeline_prefetch off
relaxed_header_parser on



==========================
вроде ничего не потерял =) не забываем что нам нужны описания тегов в коментариях для самса. так что не торопитесь копипастить мой конфиг. кстати, сначало я пытался заставить работать хавп с одним сквидом. но к сожалению происходило зацикливание аутентификации. крайне неприятная вещь. особенно если учесть что несколько дней все проработало именно в конфигурации с одним сквидом.
как назло все случилось когда я наконец вышел в отпуск. пришлось потратить два дня на ковыряние документации и безконечные реконфигуривания сквида.
отписался о проблеме на оф.сайте хавпа. подождал минут 15 и решил нафиг разделить сквид. в итоге висят две копии сквида. второй использует свои пид файл, логи и свой кэш. стартуется просто:

gate ~ # cat /etc/init.d/squid2
echo Squid2 starting...
squid -f /etc/squid/squid2.conf


можно было кнчно более интелектуально все сделать =) в мыслях именно такой был план, но после того как все благополучно завелось я тупо на это забил =)

второй конфиг сквида приводить не буду. там ничего принципиального.
=========================

не забываем установить мускул.


продолжение следует...

обновлено: добавлины небольшие изменения в конфигурации в соответсвии с коментариями. текст хоть как то оформлен.


Вторая часть хауту: http://butch.blog.ru/655921.html

Теги: havp|clamav|sams|gentoo|samba|squid


  • butch
    1 августа 2007|01:18|ссылка
    пасиб =) не знал про eix. буду юзать %)

  • Анонимно
    31 июля 2007|09:57|ссылка
    Буду коментить по ходу чтения.

    1. Поиск по emerge -s долгий, а просмотр USE флагов через less извращенский =) emerge eix && update-eix && eix samba выдаст тебе очень быстро нужную инфу и по флагам в том числе

    • Анонимно
      10 октября 2008|13:13|ссылка

    • buhepguio
      13 октября 2008|06:22|ссылка

    • eugueefue
      14 октября 2008|04:47|ссылка

    • Анонимно
      31 июля 2007|10:11|ссылка
      2. про USE флаги не всегда всё очевидно. их описание стоит почитать командой euse -i <имя флага> перед тем как включать
      3. grep --invert-match \# удалит тебе строку, даже если в ней есть коментарий уже после нее. правильнее было б вместо # писать ^#, что означает "# в самом начале строки" (возможно понадобятся еще какие ключи, что б включить расширенные regexp'ы, не проверял)
      4. В описании все

      • butch
        1 августа 2007|01:28|ссылка
        насчет ^ - эт я знаю =) слава богу, хоть чтото %)
        по поводу юз флагов - согласен %)

    • Анонимно
      31 июля 2007|10:22|ссылка
      4. В описании всей установки ты сказал что squid1 не занимается кешированием, но кеширование не отключил.Во всех cache_peer указажи proxy-only параметр

      • butch
        1 августа 2007|01:24|ссылка
        он всеравно не кеширует ответы от хавпа, фактически ответы приходят только от него =) но наверное всетаки отключу кеширование =)
        про прокси-онли тож пасибо =)

    • Анонимно
      19 октября 2007|11:07|ссылка
      смысл из-за аськи пускать на шлюзе отдельную софтину? я у себя асечников через сквиду пустил...

      • butch
        24 октября 2007|09:59|ссылка
        я же сказал, что похоже изза цепочки из трех проксей аська нестабильно держит конект.
        и потом не только аську пускаю через соксы. есть еще пара софтин, которые могут пахать только через сокс.