Archive for the ‘ BSD ’ Category

Proftpd Bruteforce — Достойный ответ для подбирателей паролей

Бредовое вступление.
Давно я чтото не делился с вами своими простенькими поделиями на bash. Не от того что перестал их писать, просто лень описывать 🙂 Но вот чтото захотелось …. Ловите!

Последнее время розвелось много ботов-подбирателей паролей ко всему чему угодно. Рано или поздно это надоедает! Да и ничего хорошего от ботов ждать не приходится, только создают никому ненужную сетевую активность, засоряют логи и грузят сервис непотребными действиями. Решил дать достойный отпор, ибо задолбало!
Потихоньку-неспеша накропал такой вот скриптец, который брутфорсеров отправляет в некую таблицу фаервола, где им имитируется 99% потерь в канале 🙂
Читать полностью

Настройка nginx + GeoIP на FreeBSD

Зачем это надо? Да много чего можно наворотить! Например разным странам выдавать разный контент, проксировать трафик на разные сервера и тд. Мне, например, для ограничения нежелательного трафика на некий тестовый web-сервер. Хочу дать туда доступ только из Украины, остальных — в баню!
У меня уже был установлен и настроен nginx, поэтому тут упомяну только о включении в его сборку необходимого модуля.
Для начала я установил GeoIP из портов:

root@gw:~# cd /usr/ports/net/GeoIP
root@gw:/usr/ports/net/GeoIP# make install clean

После этого проверил стоит ли в собранном ранее nginx необходимый флаг HTTP_GEOIP:

root@gw:/usr/ports/net/GeoIP# cd /usr/ports/www/nginx
root@gw:/usr/ports/www/nginx# make config

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

FreeBSD — настройка bacula с SSL шифрованием трафика

Сначала чуть данных из wiki
Bacula — кроссплатформенное клиент-серверное программное обеспечение, позволяющее управлять резервным копированием, восстановлением, и проверкой данных по сети для компьютеров и операционных систем различных типов.
Итак, это то что мне нужно! Более подробно рассмотрим из чего состоит bacula, это даст больше понимания о том как она работает.
Director (DIR) — осуществляет централизованный контроль и администрирование всего комплекса задач. Планирование и управление заданиями на резервное копирование (Job). Обслуживание Каталога (Catalog) — центральной БД для хранения метаданных.
File Daemon (FD) — сервис, выполняющий непосредственное копирование, восстановление и проверку данных по запросу Director. File Daemon должен быть установлен на каждой клиентской машине. File Daemon обменивается информацией с Director и Storage Daemon.
Storage Daemon (SD) — читает и пишет данные на физический носитель: диск, ленту, DVD, USB.
Console — управляющая консоль оператора или администратора. Поддерживаются ACL для разных пользователей консоли. Типы консолей: TTY, wxWidgets (GUI) для Linux, Unix, Win32, GNOME (GUI), несколько веб-интерфейсов, Qt4.
Catalog database — база данных SQL : MySQL, PostgreSQL, или SQLite для хранения метаданных.
Tray Monitor — апплет GNOME/KDE/Win32 GUI для показа активности Director, File daemons, Storage daemon в реальном времени.
Читать полностью

Mysql server на FreeBSD

Очень часто в различных проэктах используется БД mysql. Я хочу показать как я инсталлирую ее на примере своего домашнего сервера под FreeBSD 9.2
Установку я делал из портов:

root@gw:~# cd /usr/ports/databases/mysql56-server
root@gw:~# make install clean

Автозапуск при старте системы нужно прописать в rc.conf

root@gw:~# echo 'mysql_enable="YES"' >> /etc/rc.conf

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

FreeBSD 9.x — обновление perl5.12 или perl5.14 до 5.16 … 5.18

Увидел при очередном обновлении портов что версия Perl5.14 уже считается старой и рекомендацию обновиться.
Как любой порядочный фряшник, полез читать что пишут по этому поводу в /usr/ports/UPDATING и вот что нашел:

20131120:
  AFFECTS: users of lang/perl5.12 lang/perl5.14 lang/perl5.16 and lang/perl5.18
  AUTHOR: mat@FreeBSD.org

  The THREADS option has been enabled by default in all Perl. If you're using
  binary packages you need to do :

    # pkg install -Rf perl5

  If you'
re not using binary packages, and want to switch from non threaded
  Perl to threaded Perl, you need to recompile and reinstall most ports
  depending on Perl. Supposing you have Perl 5.16, you would do:

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

    1) Change the option in lang/perl5.16:
        make -C /usr/ports/lang/perl5.16 config

    2) Reinstall everything that depends on Perl:
        portupgrade -fr lang/perl5.16

  Portmaster users:
    1) Change the option in lang/perl5.16:
        make -C /usr/ports/lang/perl5.16 config

    2) Reinstall everything that depends on Perl:
        portmaster -r perl5-

  Note: The installed Perl package was named perl and is now named perl5, if
        you have not updated your installation in a long time, you may need to
        use "perl-" here.

Но проделав все пункты для portupgrade ничего в результате не обновилось, вообще ничего толкового не произошло. Версия Perl осталась прежней — 5.14. Читать полностью

apache-itk-mpm и виртуальный хостинг

Итак, рано или поздно возникает задача в духе: «А как бы нам организовать хостинг нескольких клиентов с их сайтами так чтобы они не имели друг к другу доступа и не было проблем с доступом к файлам через web/ftp/ssh?». Тут уже обычный стандартный apache не справляется и нужно городить некую более сложную конфигурацию. К счастью, задача эта не уникальна и поэтому давным давно есть готовые решения. Одним из них есть модификация apache2 под названием apache-itk-mpm. Он позволяет запускать от имени определенного в конфигах системного пользователя некий виртуалхост апача. Тоесть получаем чтото в духе некоего изолированного контейнера для нужного пользователя или ряда оных. Туманно объяснил, но по конфигам это более понятно. Итак, поехали! Читать полностью

Ejabberd на FreeBSD с авторизацией в Active Directory

Установка ничем особенным не отличается, как обычно, собрал из портов.
А вот конфигурация весьма интересная и отличается крайней невменяемостью, которую ejabberd унаследовал от языка программирования, на котором он написан — erlang. Многие админы сломали голову в попытках настроить данный софт, и часто совсем отказываются от его использования в пользу jabberd2 или openfire. Я считаю что напрасно, но это только мое ИМХО.
Итак, для настройки достаточно создать пару конфигурационных файлов и прописать автостарт в rc.conf. Также необходимо создать учетку в AD которая имеет права на чтение LDAP базы домена my.domain.local, в моем случае это — CN=for_jabber,OU=it,DC=my,DC=domain,DC=local
Также нужен pem файл который содержит сертификат и ключ для шифрования сетевой деятельности между клиентами и сервером. Ничего особенного в нем нету, стандартное содержимое формата:

-----BEGIN CERTIFICATE-----
....cert here....
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
....key here....
-----END RSA PRIVATE KEY-----

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

FreeBSD — exim + rspamd

Идея о том чтобы выкинуть нафик непомерно прожорливый spamassassin из почтовой связки exim + dovecot давно мучила мне мозг. В особенности если учесть что поток почты единицы писем в сутки 🙂 Но вот случайно набрел на просторах инета инфо про замечательную альтернативу SA — rspamd. Заинтриговала невероятная легковесность решения при сохранении функциональности. Ну чтож … гоним метлой из системы жирного spammassassina и пробуем настроить rspamd. Вроде бы все должно быть просто, вот и документация есть — дел на пару минут, ан нет — установить с полпинка не получилось 🙂
Итак, как я говорил выше, на сервере установлен и работает exim + sa, для начала нужно отучить exim проверять письма spamassasin-ом, для этого уберите из конфига exim-а все что вяжет его с SA. Это просто, справится любой.
Дальше тоже просто — установить из портов rspamd. Тут и писать нечего, идем в порты и устанавливаем привычным способом.
А вот следующий шаг оказался для меня тяжеловат — нужно пересобрать exim с поддержкой rspamd, для этого есть patch patch-exim-src_spam.c.diff который можно скачать вот тут. Читать полностью

MySQL — Could not execute Write_rows_v1 event on table my_wp.wp_options; Duplicate entry

На мастере была проблема с одной из БД, в результате slave тоже ругается ошибкой

Last_SQL_Error: Could not execute Write_rows_v1 event on table my_wp.wp_options; Duplicate entry '_transient_doing_cron' for key 'option_name', Error_code: 1062; handler error
HA_ERR_FOUND_DUPP_KEY; the event's master log mysql-bin.000014, end_log_pos 337

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

mysql> stop slave;
mysql> SET GLOBAL sql_slave_skip_counter = 2;
mysql> start slave;

Enjoy!

MySQL — ‘wp_options’ is marked as crashed and should be repaired

Както раз у меня завалился mysql, после перезапуска в логах увидел такую срань. Причем блог на wordpress при этом нормально работал,

131112  9:37:52 [Note] /usr/local/libexec/mysqld: ready for connections.
Version: '5.5.34-log'  socket: '/tmp/mysql.sock'  port: 3306  Source distribution
131112 09:37:53 mysqld_safe A mysqld process already exists
131112  9:40:44 [ERROR] /usr/local/libexec/mysqld: Table './diff_wp/wp_options' is marked as crashed and should be repaired
131112  9:40:44 [Warning] Checking table:   './my_wp/wp_options'
131112  9:40:45 [ERROR] /usr/local/libexec/mysqld: Table './diff_wp/wp_usermeta' is marked as crashed and should be repaired
131112  9:40:45 [Warning] Checking table:   './my_wp/wp_usermeta'
131112  9:40:46 [ERROR] /usr/local/libexec/mysqld: Table './diff_wp/wp_posts' is marked as crashed and should be repaired
131112  9:40:46 [Warning] Checking table:   './my_wp/wp_posts'
131112  9:40:47 [ERROR] /usr/local/libexec/mysqld: Table './diff_wp/wp_postmeta' is marked as crashed and should be repaired
131112  9:40:47 [Warning] Checking table:   './my_wp/wp_postmeta'
131112  9:40:47 [ERROR] /usr/local/libexec/mysqld: Table './diff_wp/wp_comments' is marked as crashed and should be repaired
131112  9:40:47 [Warning] Checking table:   './my_wp/wp_comments'

На официальном сайте mysql рекомендуют в таком случае восстановить таблицы специальной утилитой — myisamchk Читать полностью