среда, 4 мая 2011 г.

Microsoft Forefront Client Security, как было хорошо и как стало плохо

Вылью чуток разочарования в блог!

Уже почти год, как у нас работает Microsoft forefront client security. Антивирус от Майкрософт. Не сильно популярный у нас (судя по тому, как реагируют на вопросы о нем менеджеры контор, торгующих софтом). Достаточно тяжелый в развертывании и поддержке продукт, но эффективный в борьбе с вирусами и, что немаловажно, дешевый! В сравнении с тем же Касперским он выигрывает в 2-2.5 раза в цене. А вот и ложка дегтя в эту бочку меда: антивирус требовал наличия такой компоненты, как MS SQL 2005, причем не ниже standart ed. (нужны ему reporting services). Так что если вы уже использовали MS SQL 2005, то Forefront Client Security обошелся бы вам очень дешево.

И вот спустя год использования сабжа пришло время думать о следующем годе. Forefront client security эволюционировал и теперь называется Forefront Endpoint Protection (надеюсь, не ошибся, пишу по памяти). И что мы видим? Если раньше в качестве управляющей части в нем работал MOM2005 и поставлялся с ним бесплатно, то теперь он требует MS System Center, который лицензируется отдельно! Халява кончилась. Хотите антивирус от MS - покупайте к нему SQL Server 2008 и MS System Center.

И вот он уже не так привлекателен, привет, Касперский...

P.S. ДА! Если у вас дома лицензионная ОС от MS, то вы можете использовать бесплатный антивирус от Майкрософт для Home Users - Microsoft Security Essentials. Собственно, это и есть Forefront Client Security, только для дома, без серверной части. Я уже год пользуюсь - полет нормальный!

вторник, 3 мая 2011 г.

Все тот-же Likewise-open, проблемы с авторизацией после обновления Ubuntu

Недавно моя Ubuntu предложила обновиться до нового релиза, на что я и согласился. Обновился до 11.04 и не смог зайти под доменным пользователем, словил сообщение об ошибке авторизации. В логах примерно следующее:
в auth.log
May  3 16:13:16 hostname gdm-session-worker[1651]: pam_succeed_if(gdm:auth): requirement "user ingroup nopasswdlogin" not met by user "DOMAIN.LOCAL\username"


в syslog поконкретнее:

May  3 19:21:11 hostname lsassd[1103]: 0xac5eeb70:Failed to group memberships of SID=S-1-5-21-3057491736-813469400-7584658-1616. [error code:40067]
May  3 19:21:11 hostname lsassd[1103]: 0xac5eeb70:Failed to find memberships for user 'DOMAIN\username' (error = 40067)
May  3 19:21:15 hostname lsassd[1103]: 0xaa5eab70:Failed to group memberships of SID=S-1-5-21-3057491736-813469400-7584658-1616. [error code:40067]
May  3 19:21:15 hostname lsassd[1103]: 0xaa5eab70:Failed to authenticate user (name = 'username') -> error = 40067, symbol = LW_ERROR_STRING_CONV_FAILED, client pid = 2228
May  3 19:21:15 hostname gdm-session-worker[2228]: [module:pam_lsass]pam_sm_authenticate error [login:username][error code:40067]
May  3 19:21:18 hostname gdm-session-worker[2247]: GLib-GObject-CRITICAL: g_value_get_boolean: assertion `G_VALUE_HOLDS_BOOLEAN (value)' failed
May  3 19:21:22 hostname lsassd[1103]: 0xa95e8b70:Failed to group memberships of SID=S-1-5-21-3057491736-813469400-7584658-1616. [error code:40067]
May  3 19:21:22 hostname lsassd[1103]: 0xa95e8b70:Failed to find memberships for user 'DAMAIN\username' (error = 40067)
May  3 19:21:25 hostname lsassd[1103]: 0xaadebb70:Failed to group memberships of SID=S-1-5-21-3057491736-813469400-7584658-1616. [error code:40067]
May  3 19:21:25 hostname lsassd[1103]: 0xaadebb70:Failed to authenticate user (name = 'username') -> error = 40067, symbol = LW_ERROR_STRING_CONV_FAILED, client pid = 2247
May  3 19:21:25 hostname gdm-session-worker[2247]: [module:pam_lsass]pam_sm_authenticate error [login:username][error code:40067]
May  3 19:21:28 hostname gdm-session-worker[2247]: GLib-GObject-CRITICAL: g_value_get_boolean: assertion `G_VALUE_HOLDS_BOOLEAN (value)' failed

Диагностика likewise не выявила никаких проблем: домен есть, к домену присоединены, контроллер домена видим, пользователей находим.
Решение нашлось вскорости (google в помощь). Необходимо в /usr/lib/likewise-open/init-base.sh добавить нечто вроде:

LC_ALL=ru_RU.UTF8
LC_CTYPE=ru_RU.UTF8
export LC_ALL
export LC_CTYPE

Вот вам и очередной нюанс Likewise-open!

вторник, 12 апреля 2011 г.

Почта на Debian с доменными пользователими, или как мы подружили postfix, dovecot и Active Directory: Часть 2 - нюансы настройки dovecot для авторизации в LDAP

Продолжим разговор про волшебную почту на Linux с пользователями из AD (Active Directory).

В прошлом посте мы рассмотрели настройки postfix и разобрались, как он принимает и фильтрует входящие сообщения в соответствии с нашими пользователями и группами в AD. Сегодня я расскажу, как почта доставляется по папкам пользователей.

За доставку почты в ящики  нас отвечает dovecot lda.
В main.cf указан транспорт
virtual_transport = dovecot

И описываем этот транспорт в master.cf:
dovecot unix - n n - - pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${mailbox}

Так как пользователи у нас виртуальный, то фактически почта складывается в ящики от имени пользователя vmail.
Куда же падают наши письма? Смотрим в конфиг dovecot (у меня он тут - /etc/dovecot/dovecot.conf):
mail_location = maildir:/home/DOMAIN.RU/%Lu/Maildir

где %Lu тут - имя пользователя.

Почта в ящике! Осталось ее забрать :-)
Править конфиг по-умолчанию практически не приходится. Существенный момент - позаботимся об авторизации. Будем использовать запросы к LDAP. В разделе auth default (все в том же dovecot.conf) добавим:
passdb ldap { args = /etc/dovecot/dovecot-ldap.conf }

И сам dovecot-ldap.conf (напоминает нам конфиги postfix):
hosts = ldap-server-ip:3268 //наш LDAP-сервер
dn = CN=ldap-user,OU=some_ou,DC=domain,DC=local //путь к учеткам в AD
dnpass = P@$$word
auth_bind = yes
ldap_version = 3
base = dc=domain,dc=ru
deref = searching
scope = subtree
user_filter = (&(ObjectClass=person)(sAMAccountName=%u))
pass_filter = (&(ObjectClass=person)(sAMAccountName=%u))

Таким образом, dovecot складывает почту по папкам виртуальных пользователей и авторизует в LDAP.

вторник, 29 марта 2011 г.

Почта на Debian с доменными пользователими, или как мы подружили postfix, dovecot и Active Directory: Часть 1 - postfix

Доброе время суток, уважаемый Читатель!

Сегодня я расскажу, как мы подружили почту на Linux с Active Directory.

Собственно, как и все в Linux, делать это можно по-разному. В нашем же случае принимает и отправляет, а так же фильтрует почту postfix, по папкам пользователей ее раскладывает dovecot lda, а собственно пользователи забирают ее с сервера по imap, доступ по которому любезно предоставляет нам уже упомянутый dovecot.

А теперь обо всем по порядку:
Начнем с Postfix, но не будем переписывать уже стопицоттысячраз описанный мануал по установке и настройке. Скажу лишь, что postfix фильтрует входящую почту как своими средствами (проверка на различные аспекты соответствия письма и сервера отправителя rfc), а так же прогоняет ее через amavisd, который в свою очередь использует spamassassin для категоризации писем на хорошие и спамные, и проверяет на вирусы. Подробнее тонкости фильтрации писем я опишу в одном из следующих постов.

В этом пункте стоит обратить внимание Читателя на то, как postfix связан c Active Directory, и, главное, зачем.

Как зачем? Конечно же, для доставки почты конечному получателю! В нашей системе есть обычные пользователи, алиасы почтовых ящиков и списки рассылки. И всем этим добром мы командуем через оснастку управления Active Directory Users and computers. А Postfix, использую LDAP, проверяет, есть ли пользователь, которому написано письмо, или же письмо надо отправить кому-то другому, на чей алиас пришла писулька, а может и вовсе эта писулька пришла целой группе юзеров?

Заглянем в наш /etc/postfix/main.cf:
virtual_mailbox_maps = ldap:/etc/postfix/ldap/local_recipients.cf
virtual_alias_maps = ldap:/etc/postfix/ldap/redirect.cf,ldap:/etc/postfix/ldap/aliases.cf,ldap:/etc/postfix/ldap/mailgroups.cf,
 

Вон оно что, Михалыч! А что в этих файлах? В /etc/postfix/ldap/local_recipients.cf postfix смотрит, какому пользователю отправить письмо, в /etc/postfix/ldap/redirect.cf, как можно догадаться, адрес получателя проверяется на соответствие редиректам, в /etc/postfix/ldap/aliases.cf - алиасам, а в /etc/postfix/ldap/mailgroups.cf спискам рассылки.

mail:/etc/postfix/ldap# cat local_recipients.cf
debuglevel = 0
version = 3
server_host = ldap://ldap_server_ip
search_base = ou=Users,dc=domain,dc=local
query_filter = (userPrincipalName=%s)
result_attribute = sAMAccountName
result_format = %u/
bind_dn = ldap-bind@domain.local
bind_pw = p@$$word
cache = no

mail:/etc/postfix/ldap# cat aliases.cf
debuglevel = 0
version = 3
server_host = ldap://ldap_server_ip
search_base = ou=Users,dc=domain,dc=local
timeout = 3
query_filter = (otherMailbox=%s)
result_filter = %s
result_attribute = userPrincipalName
special_result_attribute = member
scope = sub
bind = yes
bind_dn = ldap-bind@domain.local
bind_pw = p@$$word

mail:/etc/postfix/ldap# cat redirect.cf
debuglevel = 0
version = 3
server_host = ldap://ldap_server_ip
search_base = ou=Users,dc=domain,dc=local
timeout = 3
query_filter = (&(userPrincipalName=%s)(sAMAccountType=805306368))
result_filter = %s
result_attribute = mail
special_result_attribute = member
scope = sub
bind = yes
bind_dn = ldap-bind@domain.local
bind_pw = p@$$word

Ну и mail:/etc/postfix/ldap# cat ./mailgroups.cf
debuglevel = 0
version = 3
server_host = ldap://ldap_server_ip
search_base = ou=Users,dc=domain,dc=local
timeout = 3
query_filter = (&(mail=%s)(sAMAccountType=268435457))
result_filter = %s
result_attribute = userPrincipalName
special_result_attribute = member
scope = sub
bind = yes
bind_dn = ldap-bind@domain.local
bind_pw = p@$$word

Как видно, юзеров мы ищем по заполненному атрибуту mail, алиас по списку адресов в атрибуте otherMailboxes, для редиректа используем userPrincipalName, ну а список рассылки у нас не что иное, как группа распространения в AD, а список получателей - члены данной группы.


Таким образом, если мы для юзера хотим другой е-мейл, в атрибуте mail пишем требуемый адрес. Получается редирект. Если у юзера будет несколько адресов (алиасов), то в otherMailboxes добавляем их все (ADSIedit в помощ), а если нам нужен ящик для группы рассылки, завоним группу распространения, в атрибуте mail для нее пишем адрес группы и включаем необходимых участников. Вуа-ля! Все красиво и управляемо.


Длинный пост получился, прервемся на рекламу ;) В смысле, продолжение в следующем посте! Я расскажу, как я доставляю почту по папкам юзверей.

Нюансы LikeWise Open

Приветствую тебя, уважаемый Читатель!

В одном из постов я рассказал про то, как мы сделали рекламный стенд на Linux и крутили на нем ролики. А для удобства управления мы ввели его в домен при помощи Likewise.

Нет, я не буду подробно описывать, как же мы ставили LikeWise. Хорошо, подробно и в картинках об этом написано тут, да и нехитрое это дело буквально в пару кликов. Но у нас все же возникли некоторые вопросы и ответы на них я и решил изложить.

1. Сразу после введения машинки в домен, возник вопрос, а почему в DNS не появилась соответствующая A-запись? Нехитрый поиск по докам сабжа подсказал, что надо сделать так:
  user@host:PATH$sudo lw-update-dns
2. Доменные пользователи могут включаться в локальные группы прямо посредством правки /etc/group. Добавлять их можно в виде NETBIOSDOMAINNAME\username либо FQDNDOMAINNAME\username, например:
    admin:x:119:DOMAIN.LOCAL\megacooluser

В остальном продукт замечательно простой, а если что будет добавить - вернемся к этому разговору позже ;)

Рекламный стенд своими руками, или как мы включали Linux в домен Active Directory и крутили на нем рекламные ролики

LikeWise open + Active Directory = любовь и счастье ленивому сисадмину :-)
Добрый день, уважаемый Читатель!

Придумало как-то раз наше начальство повесить в зоне приемки посетителей нашего авто-салона (а мы - оф.дилер GM и продаем разные хорошие автомобили) большой телевизор и крутить там всякие полезности.


Поначалу мы выгружали из 1С список посетителей, записавшихся к нам "на прием" со своими приболевшими машинками, и показывали его простеньким php-скриптом в браузере, раскинутом на весь экран (F11 рулит!). Но в итоге решили, что главный двигатель торговли никто не отменял, и надо крутить там видео-ролики.


"Компьютер к телевизору для видео - бред!" - скажете вы, и будете отчасти правы. Маленький дешевый медиа-плеер способен на многое и прост в эксплуатации, но... Начальство - они такие выдумщики! ;-)

Очевидное решение легко и безболезненно научить маркетолога запускать видео на удаленной Linux-машине - это доступ по VNC, домен, ролик из сети. Ну и поехали:

Мы выбрали Ubuntu, потому что очень любим Debian (у нас и почта на debian крутится уже не первый год, но это совсем другая история). Почти все, что нам надо, там уже есть вплоть до проприетарных видео-кодеков. Установка тривиальна, synaptic позволяет легко найти и поставить все, что нужно. А вот как включить машинку в домен, чтобы не придумывать море пользователей, заставлять запоминать второй пароль маркетолога и при этом получить нормальный серфинг в локальной сети? Sabma, winbind, kerberos, LDAP - вариантов куча, а курить маны, вспоминая, как это делается, было лень. В итоге пришло на ум простое в несколько кликов решение - LikeWise Open. Есть GUI для включения в домен в windows way. Несколько кликов и вуа-ля - мы в домене! Перезагрузка, входим под доменным пользователем, легко попадаем в шары на соседних компах, запускаем, крутим ролики. Все счастливы :-)

Не обошлось без нюансов. Подробнее о процессе установки Likewise и подводных камнях в следующем посте!

понедельник, 28 марта 2011 г.

Мое отношение к бэкапам, или как резервное копирование сбережет ваши нервы и время

Доброго здоровья, уважаемый Читатель!

Данный пост вовсе не о бэкапах на предприятии. И козе понятно, что вовремя забэкапленная производственная база данных (от той же 1С, к примеру) в случае краха сервера сбережет нервы сисадмину, его начальнику, начальнику начальника сисадмина, огромному количеству клиентов и владельцу бизнеса, который не потеряет ну пусть 1 миллион рублей в результате однодневного (а то и больше?) простоя в работе. И это надо понимать и повторять как Отче наш. Но что делать с домашними компьютерами?

Вот ярчайший пример того, что и в домашних условиях неплохо периодически убирать ваши ценные данные "подальше". Тут я перефразирую известную поговорку: "Подальше скопируешь, поближе возьмешь".

Хороший человек работает на судне. И вся его жизнь - это долгие плавания в перемешку с перерывами на отдых на суше, т.е. дома. И самый верный его друг по жизни - его ноутбук с 3G модемом со всеми вытекающими (памятные фото, видео и прочее). И если соц.сети (куда без них современному матросу?) от нас в случае краха никуда не денутся, то вот наши фотки, фильмы и музло мы легко можем потерять, просто стукнув или перегрев ноутбук. А если вирус? А если шаловливые ручки? Причин много, а исход всегда один - либо мы теряем данные безвозвратно, либо за огромные деньги отдаем наш винчестер умельцам без гарантий на жизнь после краха.

И лишь банальная неграмотность помешала нашему современному соц-матросу потратить сущщщщие копейки - 2 т.р. на USB жесткий диск и хотя бы раз в недельку свое барахлишко туда перекидывать. А диски сейчас такие большие и современные, что порой на них даже кнопочка есть. Нажал - и файло забэкапилось.

Мораль сей басни такова: даже матросу не мешало бы иметь хотя бы внешний HDD, ибо от сбоев никто не застрахован!