Dormestmass: Админ — это состояние души

Делайте бекапы

Вчера измывался над своим ноутбуком, на котором живут FreeBSD и WindowsXP. В результате издевательств слетел бутовый загрузчик и первый раздел диска с вындой. Для начала я переустановил Windows.

Следующий шаг — восстановление бутового менеджера. Я использую стандартный менеджер загрузки boot0. Копия MBR с менеджером расположена в /boot/boot0.

Загружаюсь с livecd (под рукой была свежевышедшая TrueBSD 0.1), монтирую слайс FreeBSD и восстанавливаю MBR.

root@truebsd:~# mkdir /mnt/disk
root@truebsd:~# mount -t ufs /dev/ad0s3 /mnt/disk
root@truebsd:~# fdisk -B -b /mnt/disk/boot/boot0 /dev/ad0

Соглашаюсь с fdisk-ом, что действительно хочу заменить таблицу разделов…

root@truebsd:~# umount /mnt/disk
root@truebsd:~# reboot

Как ни странно, вся операция заняла несколько минут. FreeBSD Handbook рулит :)

Но! При включении ноутбука запускаеться до боли знакомый менеджер загрузки. Жму F1 — Windows загружаться нормально. Перезагружаюсь снова и пытаюсь загрузить FreeBSD. Вот тут-то меня и ждал подвох, на экране выдаеться сообщение:

NTLDR is missing
Press any key to restart

Видимо это результат вчерашних игр с виндозными fixboot и fixmbr :) .

Снова загружаюсь с livecd, монтирую слайс. Подозреваю, что дело в таблице разделов слайса. bsdlabel показывает, что они слетели:

root@truebsd:~# bsdlabel /dev/ad0s3
bsdlabel: /dev/ad0s3: no valid label found

Поскольку копии таблицы разделов у меня нет, то можно со спокойной душой попрощаться с моей копией FreeBSD. К счастью никаких серьёзных данных у меня там не было.

Господа, делайте резервные копии!

Популярность: 1%

Аутентификация в Apache из LDAP

Продолжая тему LDAP-аутентификации...

Подключив squid к ActiveDirectory, захотелось использовать подобную аутентификацию в апаче.
Сам apache (я использую Apache 2.0) должен быть собран с поддержкой LDAP. Для аутентификации служит модуль mod_auth_ldap.

Немного теории из документации.

Процесс предоставления доступа пользователю к ресурсу включает в себя две фазы.
Первая фаза — аутентификация, при которой mod_auth_ldap проверяет пару имя_пользователя/пароль на правильность. Она называеться search/bind фаза.

Вторая фаза — авторизация. Модуль проверяет, разрешен ли аутентифицированному пользователю доступ к запрошенному ресурсу. Эта фаза называеться compare.

Фаза аутентификации.

Во время этой фазы mod_auth_ldap ищет в каталоге запись, соответствующую имени пользователя, которое передал HTTP клиент. Если найдено уникальное единичное соответствие, модуль пытаеться прибиндиться к серверку каталога, используя DN вхождения и пароль, переданный HTTP клиентом.
Если привязка не удалась, то доступ запрещается или отклоняется.

Фаза авторизации.

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

Далее »

Популярность: 4%

Squid и LDAP-аутентификация из Active Directory

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

Сразу оговорюсь, строил basic аутентификацию, т.к. посмотрев на танцы с бубнами вокруг ntlm-authentication & kerberos & AD, решил что овчинка не стоит выделки.

Подобную схему аутентификации при минимальных переделках можно применить к любому дереву каталогов, например к Novell eDirectory или Netscape Directory Server...

В системе должены быть установлены библиотеки openldap для последующей сборки squid.
Сам squid должен быть собран с поддержкой basic аутентификации и внешних групп в LDAP. Ключи для конфигурации при ручной сборке:

... --enable-basic-auth-helpers=LDAP --enable-external-acl-helpers=ldap_group ...

Наш домен в Active Directory называеться domain.com.

Для начала заведём в дерево несколько групп, пользователи которых могут ходить в интернет. Почему несколько — вхождение в ту или иную группу определяет delay pool в squid. Скажем inet_64k, inet_128k и inet_1024k. Для отладки делаем тестового пользователя test_inet c паролем 123456, и включаем его в группу inet_64k.

Для работы с каталогом нам необходим пользователь, в нём зарегистрированный и умеющий читать оттуда хэши с паролями. Применительнительно к Active Directory нам нужен обыкновенный юзер без особых привилегий :) . В Novell eDirectory или Netscape Directory такая шутка уже не прокатит и пользователю нужно будет присвоить некие привилегии для чтения паролей. Обозвём этого пользователя для примера squidreader.

Теперь проверяем на доступность каталога под вышеуказанным пользователем.

ldapsearch -D "squidreader@domain.com" -x -W -b "dc=domain,dc=com" -h 192.168.1.1

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

Далее »

Популярность: 51%

Заметки по мультидоменной связке exim+courier-imapd+dspam+mysql

Настроил сабж на сервере. Всё ставил из портов. До сегодняшнего дня ни с одним из этих софтин не сталкивался, вот и описываю впечатления.

Опции сборки exim:

WITHOUT_IPV6=yes WITHOUT_NIS=yes WITH_MYSQL=yes  WITH_CONTENT_SCAN=yes WITH_TCP_WRAPPERS=yes.

Возникло несколько траблов.

Во-первых, почтовые клиенты напрочь отказывались создавать дополнительные папки. Оутлук ругался, говоря «Invalid mailbox name». Mozilla вообще молчала как партизан.

После поиска на форумах нашёл решение. Как оказалось, для работы с courier-imapd требуется указания префикса в настройках почтового клиента, как показано на картинке.

Следующая проблема возникла через пяток-десяток минут неактивности.

Оутглюк отказался синхронизировать папки, говоря, что соединение с сервером было разорвано, код ошибки — 0x800CCC0F. Причина возникновения этой проблемы в следующем. Почтовый клиент открывает отдельную сессию с имап-сервером на каждую папку. А на сервере в настройках по умолчанию разрешено всего 4 соединения с одного адреса. Причём, как я понял, при попытке синхронизации, оутлук пытаеться открыть ещё отдельную сессию. Вообщем лимит коннектов исчерпываеться и имап-сервер отбивает клиента. Решение — увеличить количество одновременных сессий с одного адреса.

Далее »

Популярность: 2%

IPX и Linux

Для начала нужна поддержка IPX в ядре и установленный пакет ipxutils.

Поднятие IPX в Fedora Core можно выполнить через стандартные конфигурационные файлы системы.
В файле /etc/sysconfig/network добавляем строку:

IPX=yes

Далее прописываем IPX на нужном нам интерфейсе. Например для eth1 добавляем в файл
/etc/sysconfig/network-scripts/ifcfg-eth1 строки:

IPX=yes
IPXACTIVE_ETHERII=yes
IPXPRIMARY_ETHERII=yes
IPXNETNUM=2001

Возможный тип фрэйма: ETHERII, 802_2, 802_3, SNAP. Номер сети IPX естественно должен совпадать с номером, использующемся на сервере Novell Netware.

Также можно поднимать IPX вручную, создав скрипт приблизительно следующего содержания:

ipx_configure --auto_interface=on --auto_primary=on

Ключ --auto_interface=on команды указывает на то, что ядро определит номер IPX сети автоматически.
Если же сеть настроена криворуким администратором, например в одном и том же широковещательном сегменте сети используються различные типы фрэймов, то автоопределение номера сети не получиться. В результате команда выведет что-то подобное:

IPX: Network number collision 0x3901ab00
eth0 etherII and eth0 802.3

В данном случае нужно выключить автоопределение сети и сконфигурировать интерфейс вручную:

ipx_interface add -p eth0 etherII 0x00002001

Популярность: 1%

sendmail и копирование почты

Переношу почтовый сервер на новое железо.

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

На старом сервере использовал milter-bcc. Решил поставить его-же на новый.

Да вот незадача, компилятор в новой системе (Fedora Core 5) — gcc 4.1. Под ним ентот мильтер-бцц напрочь отказался собираться, ставить другой компилер из-за такой фигни неохота.

Для начала решил обновить версию milter-bcc. Полез к ним на сайт и с прискорбием
узнал, что разработчики хотят 60 euro !!! :( за новую версию.

Решил пойти другим путём.

После непродолжительного рытья в гугле откопал вот такую статейку. За что её автору огромный thanks!

Подкорректировал /etc/init.d/sendmail и вуаля — всё заработало.

Популярность: 2%

Защита служб, которые не поддерживают работу с SSL

Сегодня довелось поднять Pop3S. Не мудрствуя лукаво с перекомпиляцией POP3 сервера для включения поддержки SSL, сделал это при помощи stunnel.

Для работы нужен собственно сам stunnel и сертификат. Сертификат создал самым простым образом:

# cat myconfig
[req]
default_bits=2048
default_keyfile=key.pem
distinguished_name=req_distinguished_name
prompt=no
[req_distinguished_name]
C=UA
ST=Zaporozhskaya
L=Zaporozhye
O=My Organization
OU=IT
CN=mail.domain.zp.ua
emailAddress=netmaster@domain.zp.ua
host# openssl genrsa -out key.pem -rand /var/log/messages 2048
host# openssl req -x509 -new -key key.pem -config myconf -out cert.pem

Конфигурационный файл для stunnel:

# cat stunnel.conf
client=no
cert=/root/keys/pop3s/cert.pem
key=/root/keys/pop3s/key.pem
pid=
[pop3s]
accept = 995
connect = 110

Запускаю stunnel:

# stunnel stunnel.conf

И вуаля:

# netstat -anlp | grep 995
tcp 0     0 0.0.0.0:995    0.0.0.0:*   LISTEN     31301/stunnel

Популярность: 2%