Archive for the ‘ BSD ’ Category

FreeBSD — S.M.A.R.T. на сервере HP

Захотелось вот смарты по винтам просмотреть, ато есть уже опыт с битым веником … Система FreeBSD 8.2, сервак HP
Для начала поставим тулзу для чтения S.M.A.R.T.

[root@mail ~]# cd /usr/ports/sysutils/smartmontools

Собираем

[root@mail /usr/ports/sysutils/smartmontools]# make install clean

Пользуем так:

[root@mail ~]# smartctl -d sat+cciss,0 -a /dev/ciss0

Это для первого винта, вот так для второго:

[root@mail ~]# smartctl -d sat+cciss,1 -a /dev/ciss0

Ну и тд и тп.
На основании данных полученных со смарта можно примерно представить сколько еще прослужит винчестер. Также рекомендую сделать скрипт для розпарсивания основных параметров и отсылки информации админу о проблеме любым доступным на сервере способом (SMS, Mail, SNMP)
Удачи!

Мониторинг загрузки CPU сервера под FreeBSD в Zabbix

Интересная петрушка, но для меня было неожиданностью что нету простого и однозначного рецепта по мониторингу загрузки CPU сервера под FreeBSD через SNMP. Максимум что удалось найти — догадки как это можно делать в принципе, но вот будет работать или нет — никто не гарантирует. Мдяяяяя……
Ну чтоже, очень неуверенно, но всеже заявляю что удалось настроить, в моем конкретном случае «вроде бы как» показывает более-менее честно.
Есть вот такая дока по zabbix, которая описывает принцип вычисления загрузки CPU в Linux/Solaris/AIX/HP-UX системах. Некоторые товарищи в инете утверждают что для FreeBSD подходит формула вычисления множителя для Linux. Поверим на слово и попробуем настроить, дальше посмотрим, совпадет ли с реальной нагрузкой или нет. Читать полностью

Удаленное обновление по SSH FreeBSD 8.4-STABLE до FreeBSD 9.1-RELEASE

В продолжение темы обновления серваков под управлением FreeBSD решил черконуть и про обновление с 8-ки до 9-ки.
Тут все оказалось намного проще чем с 7-ки до 8-ки.
Практически все точно так же как в предыдущем посте, но есть пара отличий. Ну во первых это настройка в файле supfile

/root/>cp /usr/share/examples/cvsup/standard-supfile /root/supfile.9

В данном файле я поправил 2 строчки:

*default host=cvsup5.ua.FreeBSD.org
*default release=cvs tag=RELENG_9_1_0_RELEASE

После этого запускам закачку сорс-файлов:

/root/>csup -L 2 /root/supfile.9

Читать полностью

Bacula — обновляем самоподписные ssl сертификаты

После обновления openssl отвалились бекапы в бакуле, поглядев что там в логах, увидел что матерится на TLS, что мол неверные сертификаты и прочее … прочее. И еще чтото про то что простроченные. Не долго думая, решил просто перегенерить и не разбираться. Тем более что дело то пяти минут.
Итак, как это делается? Просто!
Создадим папку где будут храниться сертификаты:

root@gw:~# mkdir /usr/local/etc/bacula-ssl

Перейдем в нее:

root@gw:~# cd /usr/local/etc/bacula-ssl

Создадим необходимые для генерации сертификатов файлы:

root@gw:/usr/local/etc/bacula-ssl# touch ./index.txt && echo "01" > ./serial

Скопируем дефолтный конфиг openssl:

root@gw:/usr/local/etc/bacula-ssl# cp /etc/ssl/openssl.cnf .

Для упрощения создания сертификатов я заполнил своей инфой в конфиге все строчки с суффиксом _default. В принципе это не обязательно, но если этого не сделать то придется вручную много одинаковой инфы вводить, что лениво 🙂 Читать полностью

FreeBSD — Ошибка при обновлении nginx

После бинарного обновления с FreeBSD 8.3 до FreeBSD 8.4 решил обновить portupgrade-ом порты и нарвался на вот такую ошибку при сборке nginx

........
gd_webp.lo gd_tiff.lo gd_tga.lo gd_bmp.lo gd_xbm.lo  gd_color_match.lo  -ljpeg -lz -lm  -L/usr/local/lib -lpng15   -L/usr/local/lib -lfreetype   -L/usr/local/lib -ltiff
grep: /usr/local/lib/liblzma.la: No such file or directory
sed: /usr/local/lib/liblzma.la: No such file or directory
libtool: link: `/usr/local/lib/liblzma.la' is not a valid libtool archive
*** Error code 1
1 error
*** Error code 2
1 error
*** Error code 1
1 error
===> Compilation failed unexpectedly.
Try to set MAKE_JOBS_UNSAFE=yes and rebuild before reporting the failure to
the maintainer.
*** Error code 1

Stop in /usr/ports/graphics/gd.
*** Error code 1

Stop in /usr/ports/graphics/gd.
*** Error code 1

Stop in /usr/ports/www/nginx.
*** Error code 1

Stop in /usr/ports/www/nginx.

Проблема была в отсутствии файлика /usr/local/lib/liblzma.la который требовался для сборки порта graphics/gd и еще нескольких портов по зависимостям nginx. Как гласит /usr/ports/UPDATING порт archivers/lzmautils удален и вместо него рекомендуют использовать обычный lzma, но то было давно и я давным давно сделал все как просили в UPDATING но вот неожиданно нарвался на такой бок. Читать полностью

Мониторинг Postfix в Zabbix через SNMP

Нашел забавный скриптик для мониторинга MTA, в моем случае postfix, через SNMP.
Заинтересовался, решил попробовать, но скрипт адаптирован под Cacti, а у меня Zabbix. Но это не беда — понимая суть прикрутить к заббиксу пара пустяков.
Для работы необходим snmp, установите самостоятельно, ничего сложного нету.
Скачать скрипт можно на форуме о Cacti.
Правим основной конфиг SNMPD /ust/local/etc/snmpd.conf
Кроме всякой ерунды, типа задание коммюнити и прочее, важно добавить вот такую строчку:

pass .1.3.6.1.4.1.2021.255 /usr/local/bin/fetch_mail_statistics.pl /var/log/maillog /var/log/mailstats.db .1.3.6.1.4.1.2021.255

После чего перегрузить snmpd

service snmpd restart

После этого на сервере с zabbix проверяем:

snmpwalk -Oav -v 2c -c public my.server.com.ua .1.3.6.1.4.1.2021.255
INTEGER: 13
INTEGER: 19
INTEGER: 0
INTEGER: 0
INTEGER: 2
INTEGER: 0
INTEGER: 0
INTEGER: 0
INTEGER: 0
INTEGER: 0
INTEGER: 0

Гуд! Теперь важно понять легенду тех данных что мы получили, если бегло глянуть в код скрипта, то становится ясно, что:
1. Received
2. Sent
3. Deferred
4. Bounced
5. Rejected
6. Clean
7. Pspam (Greylisting)
8. Spam (RBL and spammassassin Blocked)
9. Infected (ClamAV)
10. Bad Header
11. Banned
Если вам ненужно так много, можно некоторые записи поудалять прямо со скрипта, или оставить но не использовать их … можно переписать на то что больше вам подходит, хорошо что скрипт на perl — вобщем дерзайте!
Удачи!

Проверить корректность отработки SSL в postfix/dovecot/courier

Както давненько был куплен сертификат для mail сервера, я его закинул на сервак, прописал путь к нему и к CA что предоставил центр сертификации где покупали, и усе. При этом outlook при первом обращении на него всетаки ругнулся, но достаточно было один раз ткнуть чтото типа «Доверяю и не спрашивать больше» и все прекрасно заработало. Времени копать дальше не было, как обычно, проехали-забыли. Но осадок остался … вот выдалось время разобраться в этом деле поглубже, для начала пара полезных команд:

openssl s_client -CApath /etc/ssl/certs/ -connect mail.nixcraft.net:443
openssl s_client -CApath /etc/ssl/certs/ -connect mail.somadomain.com.ua:995
openssl s_client -CApath /etc/ssl/certs/ -connect mail.somedomain.com.ua:587 -starttls smtp

А теперь по существу «моей проблемы». Чтобы все работало верно сертификат со стороны сервера должен состоять из сертификатов CA (очень желательно всех до корня) и сертификата выданого на данный сервер. Как проверить что у нас есть в данный момент? Просто!
Например:
Запускаем тест соединения с SMTP сервером с поддержкой TLS

openssl s_client -CApath /etc/ssl/certs/ -connect mail.somedomain.com.ua:995

Читать полностью

FreeBSD — exim4 в режиме smarthost

Итак, задача, на неком хосте настроить чтобы почта локального root и на внешние адреса работала через учетку на другом почтовом сервере, который для отправки требует авторизацию и TLS шифрование
Поскольку мне лично среди различный MTA более всего нравится exim, сначала собрал его из портов, потом чуток подправил конфиг:

В Main Configuration

primary_hostname = srv1.somedomain.com.ua
local_interfaces = 127.0.0.1

Тут же заремил:

#never_users = root

Читать полностью

postfixadmin — ошибка «Cannot redeclare hex2bin()»

После обновления портов на сервере с FreeBSD 8.2 появилась ошибка в postfixadmin:

PHP Fatal error:  Cannot redeclare hex2bin() in /htdocs/www/pa.somedomain.com.ua/public_html/functions.inc.php on line 1338

Оказывается для решения достаточно переименовать функцию hex2bin в convertHex2bin в файле /htdocs/www/pa.encmail.com.ua/public_html/functions.inc.php строчка 1338

#function hex2bin ($str)
function convertHex2bin ($str)

Баг известный, обещали починить еще за Царя Гороха, но чтото видать не сложилось 🙂

Удаленное обновление по SSH FreeBSD 7 до FreeBSD 8

Сделал для себя, как для новичка, небольшую заметку чтобы пользоваться в будущем и не искать по инету рецепты по теме поста. Для гуру во FreeBSD ничего нового в этой заметке нету, можете не читать и не тратить свое время.
Процедура обновления выбрана именно через сборку мира, так как freebsd-update у меня завалил 3 или 4 раза систему при имитации такого же обновления на тестовой виртуалке. А вот сборка мира по описанной ниже инструкции отработала на ура.

/root/>cp /usr/share/examples/cvsup/standard-supfile /root/supfile.8

Правим строчки:

*default host=cvsup5.ua.FreeBSD.org
*default release=cvs tag=RELENG_8

Запускаем скачку исходников 8-го релиза

/root/>csup -L 2 /root/supfile.8

Чтобы упростить сборку можно выключить ненужные для сервера плюшки, в моем случае так:

/root/>cat /etc/src.conf
WITHOUT_ATM=yes
WITHOUT_CALENDAR=yes
WITHOUT_GAMES=yes
WITHOUT_I4B=yes
WITHOUT_IPFILTER=yes
WITHOUT_IPX=yes
WITHOUT_LPR=yes
WITHOUT_NETCAT=yes
WITHOUT_NIS=yes
WITHOUT_RCMDS=yes
WITHOUT_WPA_SUPPLICANT_EAPOL=yes
WITHOUT_BLUETOOTH=yes
/root/>

Чистим «остатки» от предыдущих сборок:

/root/>cd /usr/src/
/usr/src/>make cleanworld && make cleandir

Собираем мир:

/usr/src/>make buildworld

Собираем ядро, в моем случае GENERIC, и устанавливаем его:

/usr/src/>make buildkernel
/usr/src/>make installkernel

Перезагрузка в новое ядро:

/usr/src/>reboot

Запускаем мастер, который поможет нам ознакомиться с изменениями в конфигах нового релиза (по сравнению с тем что есть у нас):

/root/>mergemaster -p

предлагают посмотреть изменения в /etc/group и /etc/master.passwd. На оба вопроса ответил «d» — удалить новый файл
Устанавливаем собранный ранее мир:

/root/>cd /usr/src
/usr/src/>make installworld
/root/>mergemaster -i

Проверить sshd_config!!!
На вопросы про изменения в /etc/group и /etc/master.passwd я опять ответил «Удалить новый конфиг». Потом вручную добавил тех пользователей и группу что предлагалось в новых конфигах.
Собственно, вот:

/root/>pw groupadd hast -g 845
/root/>pw useradd hast -u 845 -d /var/empty -g hast -s /usr/sbin/nologin
/root/>pw useradd auditdistd -u 78 -d /var/empty -g audit -s /usr/sbin/nologin

Перезагрузка в новую систему:

/root/>shutdown -r now

После перезагрузки перепроверить основные конфиги в /etc, сверить с бекапом старых конфигов, где что нужно — подправить.
Дальше обновить порты:

portsnap fetch update

Обновление autoconf и automake лучше сделать по официальной доке:

/root/>cd /usr/ports/devel
/root/>portupgrade -r autoconf
/root/>portupgrade -r automake

/root/>portupgrade -r autoconf-wrapper
/root/>portupgrade -r automake-wrapper

Perl тоже обновляем по официальной доке до 5.12

20100715:
  AFFECTS: users of lang/perl*
  AUTHOR: skv@FreeBSD.org

  lang/perl5.12 is out. If you want to switch to it from, for example
  lang/perl5.10, that is:

  Portupgrade users:
    0) Fix pkgdb.db (for safety):
        pkgdb -Ff

    1) Reinstall new version of Perl (5.12):
        env DISABLE_CONFLICTS=1 portupgrade -o lang/perl5.12 -f perl-5.10.\*

    2) Reinstall everything that depends on Perl:
        portupgrade -fr perl

После этого весь остальной софт:

/root/>portupgrade -f ruby
/root/>rm /var/db/pkg/pkgdb.db
/root/>portupgrade -f ruby19-bdb
/root/>rm /var/db/pkg/pkgdb.db /usr/ports/INDEX-*.db
/root/>portupgrade -af

Ну вот и все! Наслаждаемся новой системой 🙂
Enjoy.