FreeBSD 9: борьба с коллизиями при работе на XenServer

FreeBSD работает как виртуальная машина на сервере XenServer (а точнее XCP, но не суть). Суть в том, что FreeBSD пытается задействовать функции сетевого адаптера, которые не реализованы в виртуальной сетевой карте Realtec, при этом возникает куча коллизий, которые снижают скорость сети. Добавляем -rxcsum -txcsum к настройкам сети:

ifconfig_re0="inet 1.2.3.4 netmask 255.255.255.192 -rxcsum -txcsum"


Больше коллизий не будет.

manage.rootbsd.net/knowledgebase/48/Collisions-on-network-interface-re0.html

FreeBSD 9: поддержка таблиц в PF

Понадбилась мне тут поддержка таблиц в межсетевого экрана PF, т.к. попытка просмотреть таблицу командой:

pfctl -t badhosts -T show


Заканчивалась вот таким сообщением:

No ALTQ support in kernel
ALTQ related functions disabled
No ALTQ support in kernel


Будем пересобирать ядро. Это кстати намного проще и удобнее, чем в Linux. Делаем вот что:

( Читать дальше )

gevent на FreeBSD

В этом топике соберем gevent — сетевую библиотеку для Python, использующая libevent. В состав библиотеки входит быстрейший WSGI сервер. Соберем gevent и запустим один из примеров — простенький чат, использующий django и gevent.

Для начала нам не помешает поддержка sqlite и imaging для нашего Python:

cd /usr/ports/databases/py-sqlite3
make install
cd /usr/ports/graphics/py-imaging
make install


Также естественно нужна libevent:

( Читать дальше )

FreeBSD 9 + Cherokee / uWSGI + PINAX

В данном топике рассмотрим такую интересную вещь, как Pinax — заготовку для создания сайтов на базе фреймворка Django (шаблонизатор, основные функции, web-сервер для тестировния), работающего в свою очередь на Python. Особенность Pinax в том, что нам предлагается не готовая CMS, а заготовки для разных типов проектов. Тут и регистрация пользователей с поддержкой openid и топики и комментарии и блоги, сообщества, твиты, галереи, теги и прочее. Для всего этого уже готова структура базы данных.

Начнем со сборки Cherokee из портов:

cd /usr/ports/www/cherokee
make install


Не забываем отметить галку uWSGI:

( Читать дальше )

FreeBSD: простая замена sendmail'у

Иногда функции sendmail бывают избыточными, особенно когда сервер должен только отправлять сообщения. В FreeBSD можно sendmail заменить на упрощенный ssmtp (кстати, TLS им поддерживается) и настроить его на отправку писем через аккаунт на Google Mail.

Устанавливаем ssmtp из портов:

cd /usr/ports/mail/ssmtp/ && make install clean


Правим файл настроек /usr/local/etc/ssmtp/ssmtp.conf:

UseSTARTTLS=YES
[email protected]
mailhub=smtp.gmail.com:587
[email protected]
AuthPass=пароль


Т.е. письма будут приходить с ящика [email protected], при авторизации используется учетка [email protected] + пароль. На 587 порту работает TLS шифрование. Параметр root — адрес почты администратора, на который будут приходить сообщения системы.

Меняем стандартный sendmail на ssmtp:

mv /usr/sbin/sendmail /usr/sbin/sendmail.org
ln -s /usr/local/sbin/ssmtp /usr/sbin/sendmail


Теперь отправим письмо, например, на [email protected], для этого запускаем команду:

mail -v -s "TestSubject" [email protected]


… вводим текст сообщения, enter, точку и enter.

Сообщение будет отправлено, а мы также увидем подробные логи того, что происходит.

По мотивам вот этого.

FreeBSD: блокируем bruteforce перебор паролей с помощью pam_af

Думаю любой, кто администрирует *nix сервера обращал внимание на множество ботов, пытающихся подобрать пароль к ssh. Достаточно взглянуть на auth.log:

Sep  5 16:25:56  sshd[10571]: Invalid user nagios from 196.46.242.38
Sep  5 16:28:07  sshd[10573]: Invalid user nagios from 196.46.242.38
Sep  5 16:30:15  sshd[10803]: Invalid user nagios from 196.46.242.38
Sep  5 16:32:24  sshd[10805]: Invalid user nagios from 196.46.242.38
Sep  5 16:34:40  sshd[10831]: Invalid user oracle from 196.46.242.38
Sep  5 16:36:53  sshd[11061]: Invalid user oracle from 196.46.242.38
Sep  5 16:39:12  sshd[11063]: Invalid user oracle from 196.46.242.38


Конечно, чтобы обезопасить себя необходимо прописать пользователей, которым разрешен доступ через ssh в /etc/ssh/sshd_config:

AllowUsers user1


Кроме того, нам поможет pam модуль pam_af. Он отслеживает число неудачных попыток и блокирует доступ на заданное время, кроме того, можно прописать команды, которые будут выполняться при блокировании и при разблокировании. Это более естественный способ, чем парсить лог файл (как, например, в fail2ban).

Устанавливаем:

pkg_add -r pam_af


Главное перед тем как начать — будьте осторожны, не заблокируйте себе доступ! Чтобы заблокировать себе доступ достаточно ошибиться в настройке pam!



Редактируем настройки pam /etc/pam.d/sshd, добавив наш модуль в секцию auth сверху:

( Читать дальше )

FreeBSD: запуск PostgreSQL в jail топик-ссылка

Руководство по запуску PostgreSQL в jail FreeBSD. Рекомендуется к прочтению!

FreeBSD: тотальное обновление всего и вся

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

freebsd-update upgrade -r 8.2-RELEASE


Далее будет установлено новое ядро:

( Читать дальше )

FreeBSD: устраняем коллизии при работе под KVM

При работе FreeBSD 8 под KVM возникает такое неприятное являние, как коллизии (при использовании виртуального драйвера realtek):



netstat -i


Обращаем внимание на Coll:

Name    Mtu Network       Address              Ipkts Ierrs Idrop    Opkts Oerrs  Coll
re0    1500 <Link#1>      00:00:00:00:00:00  6457729     0     0  9688018     0 9670665


Для решения данной проблемы можно сменить виртуальный драйвер realtek на e1000:



Теперь:

netstat -i


Name    Mtu Network       Address              Ipkts Ierrs Idrop    Opkts Oerrs  Coll
em0    1500 <Link#1>      00:00:00:00:00:00    70563     0     0    98448     0     0


Информация к размышлению:

blather.michaelwlucas.com/?p=268

UPD: методом научного тыка установлено, что лучше использовать драйвер pcnet для хостинга Hetzner.

FreeBSD: сборка Openfire 3.7.0

В FreeBSD на самом деле проще самому собрать Openfire, чем использовать сборку из портов.

Устанавливаем JDK согласно данному топику.

Скачиваем архив с исходниками openfire_src_3_7_0 отсюда.

Распаковываем. Переходим в директорию build. Выполняем:

( Читать дальше )