Posts Tagged ‘ FreeBSD

FreeBSD + IPFW: Блокируем SMTP Bruteforce

На предыдущей работе досталось в подчинение пара почтовых серваков с оооочень древними доменами, огромным количеством ящиков и не менее огромным количеством бесконечных брутфорсов. Не знаю что было причиной бесконечных атак на эти серваки, но то что он был в like list у всевозможных ботов — это уж точно! Почта была критичным сервисом, но ближайшие планы включали миграцию на MS Exchange, поэтому позиция руководства была примерно такой «Ну онож работает? Да! Вот и не трогаем пока … нам бы побыстрее мигронуть на эксчендж да вырубить их нафик!» Но один раз случился инцидент который заставил изменить позицию неприкосновения. Несмотря на рендомные пароли, один ящик был сбрутен, и как результат — отправка через наш сервак порядка 40.000 спам писем со ссылками на различные ресурсы интимного направления 🙂
Короче было дано задание «Чтото с этим сделать!» Читать полностью

Перестраиваем apache22 + mod_php5 -> nginx + apache22 + mod_php5

На одном из серверов понадобилось добавить чуть больше гибкости web-серверу. Система FreeBSD, web-сервер настроен по олдскульной классике: Apache22 -> mod_php5 -> MySQL. Поскольку ковырять старичка апача особо желания нет, решил просто «накрыть» его nginx-ом и докрутить в нем все свои хотелки (GeoIP, bandwidth limit, различные варианты отдачи в зависимости и User Agent и тд.) Тоесть нужна вот такая схема: Nginx -> Apache22 -> mod_php5 -> MySQL
Основная задача — свести к минимуму Downtime.
Итак, поехали … Читать полностью

FreeBSD 9.3 — portsnap error «Empty error message»

Последнее время только то и делаю что натыкаюсь на досадные баги, которые отнимают время и не дают работать 🙁 В этот раз бага из розряда «тупее не придумаешь!»
Свежеустановленная FreeBSD 9.3 не хочет обновлять порты командой portsnap. Сразу скажу что в процессе инстала порты были установлены.
Вот такой прикол …

root@fr1:~ # portsnap fetch update
Looking up portsnap.FreeBSD.org mirrors... 7 mirrors found.
Fetching public key from ec2-eu-west-1.portsnap.freebsd.org... done.
Fetching snapshot tag from ec2-eu-west-1.portsnap.freebsd.org... done.
Fetching snapshot metadata... done.
Fetching snapshot generated at Tue Feb 10 02:01:06 EET 2015:
9528fd262c49a418579faa6f58bfc3c4040fe96c58d92d100% of   56 MB  601 kBps 01m36s
Extracting snapshot... snap/8bd2f2d1e85bb98a760022703eac8ff47d51700559cfedcb0b158e4eca2fc992.gz: (Empty error message)
tar: Error exit delayed from previous errors.
root@fr1:~ #

Решение этой досадной проблемы нашлось тут. Читать полностью

Bye-bye SSH/FTP Bruteforce

Сегодня утром был злой. Задолбал брутфорс ssh и ftp. Освоил новый инструмент бана. Не секрет что бан фаерволом дороже чем blackhole/nullroute. Опробовал в FreeBSD, забанил пару сеток:

root@black:~# route add -net 46.151.48.0/21 127.0.0.1 -blackhole
add net 46.151.48.0: gateway 127.0.0.1
root@black:~# route add -net 62.201.212.0/22 127.0.0.1 -blackhole
add net 62.201.212.0: gateway 127.0.0.1
root@black:~# route add -net 222.161.0.0/16 127.0.0.1 -blackhole
add net 222.161.0.0: gateway 127.0.0.1

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

FreeBSD and portupgrade — «HASH: Out of overflow pages. Increase page size error»

Последнее время только то и делаю что разгребаю какието досадные баги разных ОС … То CentOS на ровном месте взбрыкнет, то FreeBSD …. Но фряху на этом поле не переплюнуть, эта система заточена под одну статичную конфигурацию и полную заморозку в вакууме после настройки и проверки. Динамика, обновления системы, обновление пакетов и их зависимостей — нет … не слышали про такое 🙂 Но то вопрос отдельной статьи, которую я обязательно напишу чуть позже, после миграции на Debian последнего сервера с фрёй в моем подчинении …. а пока продолжаем жрать кактус. Ой, ну тоесть админить фряху!
Казалось бы, банальнейшая вещь — обновить пакетик vim-lite, но не тут то было!

root@gw:~# portupgrade vim-lite
[Reading data from pkg(8) ... - 314 packages found - done]
[Updating the portsdb <format:dbm_hash> in /usr/ports ... - 24506 port entries found .........1000.........2000.........3000.........4000.........5000.........6000.........7000.........8000.........9000.........10000.........11000.........12000.........13000.........14000.........15000.........16000.........17000.........18000.........19000.........20000.........21000.........22000.........23000.........24000..... ....HASH: Out of overflow pages.  Increase page size
 error] Remove and try again.
[Updating the portsdb </format:dbm_hash><format:dbm_hash> in /usr/ports ... - 24506 port entries found .........1000.........2000.........3000.........4000.........5000.........6000.........7000.........8000.........9000.........10000.........11000.........12000.........13000.........14000.........15000.........16000.........17000.........18000.........19000.........20000.........21000.........22000.........23000.........24000..... ....HASH: Out of overflow pages.  Increase page size
 error] Remove and try again.
[Updating the portsdb </format:dbm_hash><format:dbm_hash> in /usr/ports ... - 24506 port entries found .........1000.........2000.........3000.........4000.........5000.........6000.........7000.........8000.........9000.........10000.........11000.........12000.........13000.........14000.........15000.........16000.........17000.........18000.........19000.........20000.........21000.........22000.........23000.........24000..... ....HASH: Out of overflow pages.  Increase page size
 error] Remove and try again.
[Updating the portsdb </format:dbm_hash><format:dbm_hash> in /usr/ports ... - 24506 port entries found .........1000.........2000.........3000.........4000.........5000.........6000.........7000.........8000.........9000.........10000.........11000.........12000...^C
Interrupted.
^C
Interrupted.
root@gw:~#

После поверхностного гугления стало ясно что проблема в том что ruby версии 2 не всегда корректно работает с ruby19-bdb5, а именно эта версия ruby-bdb у меня установлена:

root@gw:~#
pkg version -v |grep ruby
ruby-2.0.0.598,1                   < needs updating (index has 2.0.0.598_1,1)
ruby19-bdb5-0.6.6_4                =   up-to-date with index
root@gw:~#

Давайте исправим руками то что с легкостью должен был сделать нормальный пакетный менеджер … Читать полностью

PHP Warning — /usr/local/lib/php/20100525/memcache.so: Undefined symbol «php_session_create_id»

Все время забываю как в FreeBSD лечится вот такая проблема:

root@web5:~# php -v
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/20100525/memcache.so' - /usr/local/lib/php/20100525/memcache.so: Undefined symbol "php_session_create_id" in Unknown on line 0
PHP 5.4.35 (cli) (built: Nov 22 2014 21:51:24)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
root@web5:~#

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

Dovecot2 + zlib = сжатие сообщений на сервере

При обновлении порта dovecot2 заметил в меню «Config» опцию Zlib, может она уже 100 лет там была … но только сейчас заметил. Сразу подумалось — фишка интересная, надо опробовать. Оказалось настраивается крайне просто, так я сделал в FreeBSD … но думаю конфигурация для Linux ничем не отличается.
Сразу перед настройкой решил отправить себе тестовое письмо для наглядности эффективности сжатия, в google-mail быстренько создал письмецо, влил туда какойто первый попавшийся лог … для иммитации текста и пульнул на свой сервак. Замысел в том чтобы после настройки сжатия кинуть такоеже письмецо и сравнить простое и сжатое 🙂
Настройка проще не придумаешь!
В конфиге /usr/local/etc/dovecot/conf.d/15-lda.conf сделал так:

protocol lda {
  # Space separated list of plugins (default is global mail_plugins).
  mail_plugins = $mail_plugins zlib
}

И в конфиге плагинов /usr/local/etc/dovecot/conf.d/90-plugin.conf сделал вот так:

plugin {
  #setting_name = value
  zlib_save_level = 7 # 1..9
  zlib_save = bz2     # or bz2, xz or lz4
}

После этого перегрузил сервис:

root@mx1:~# service dovecot restart

И повторил отправку тестового письма Читать полностью

MySQL — master/slave replication error «Duplicate entry»

Не так давно в очередной раз отвалилась MySQL реплика!
Казалось бы репликация в mysql за многие годы должна быть вылизана до идеала, но почемуто на практике это не так. Очень часто репликация master/slave в MySQL отваливается с ошибкой:

2014-09-26 08:57:14 42399 [ERROR] Slave SQL: Could not execute Write_rows_v1 event on table diff_wp.wp_options; Duplicate entry '_transient_is_multi_author' for key 'option_name', Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event's master log mysql-bin.000051, end_log_pos 128112, Error_code: 1062
2014-09-26 08:57:14 42399 [ERROR] Error running query, slave SQL thread aborted. Fix the problem, and restart the slave SQL thread with "SLAVE START". We stopped at log 'mysql-bin.000051' position 127907

У меня уже такое было, и я писал что на тот момент нашел временное решение. Но почему временное? Просто не было времени разбираться, а разобравшись … понял что тот вариант не совсем мне подходил. Итак, вариантов решения много — выбирай что нравится! Читать полностью

FreeBSD 9.x — Настройка Master/Slave named (Bind9)

Хорошо когда чтолибо работает автоматически и так как хочется! Меньше рутины — больше времени для веселья!
Есть 2 сервера с FreeBSD, на них установлен Bind9 (во FreeBSD он зовется named) и задача — настроить на них Bind в режиме Master/Slave, для того чтобы любые изменения зон на Master автоматически транслировались на Slave. Согласитесь, негоже одни и те же настройки повторять на разных серверах, когда они могу синкаться автоматически 🙂
Читать полностью

FreeBSD 9.2 — Upgrade to 9.3 by SVN

Моя любимая ОС FreeBSD снова поменяла технологию обновления между релизами. На этот раз на мусорку истории попал простой и давно освоенный мной инструмент csup и уже начиная с релиза 9.2 вместо csup при сорцовом апгрейде предлагают использовать svn. Ну чтож, когдато освоили csup, освоим и svn. Итак, обновлялся с 9.2 до 9.3 уже по новомодному:
Сначала удалил старые сорцы/сборки:

root@srv1:~# rm -rf /usr/obj
root@srv1:~# rm -rf /usr/src
root@srv1:~# mkdir /usr/obj
root@srv1:~# mkdir /usr/src

До этого момента думаю все и так ясно, а вот тут финт ушами … svn вместо csup:

root@srv1:~# svn co https://svn0.eu.freebsd.org/base/release/9.3.0/ /usr/src
(this results in Revision: 256108)
root@srv1:~#

Ну и дальше идет все также как я описывал ранее …. с момента настройки /etc/src.conf и далее.
Читать полностью