00m.Ru
28Май/150

Установка корневых центров сертификации

Иногда на серверах FreeBSD/Linux возникает ошибка из-за отсутствия корневых сертификатов
Например:

[root@srv /tmp]# fetch https://example.com/file.tar.gz
Certificate verification failed for /C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA
52886:error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed:/usr/src/secure/lib/libssl/../../../crypto/openssl/ssl/s3_clnt.c:998:
fetch: https://example.com/file.tar.gz: Authentication error
Метки записи: , Читать полностью
16Фев/140

Защищаем Joomla от брутфорса при помощи bruteblock’a

Заметил на сервере в логах Jooml'ы неудачные авторизации в файле error.php, Joomla сама рапортует о неудачных попытках в этот файл в моем случае конфигурация сервера была FreeBSD 10 + Nginx+PHP-FPM+MySQL+chroot. Файл error.php лежал по пути /usr/local/www/example.org/log/error.php, на сервере так же установлен bruteblock который служил стражем против брутфорса sshd демона о его настройке говорить не буду статей на просторах инета достаточно, предположим что у Вас он установлен и настроен...

Bruteblock работает с syslog'ом и берет все неудачные попытки авторизации из него же, встал вопрос о перенаправлении вывода из файла error.php в syslog и попалась мне утилитка входящая в состав UNIX систем под названием logger с ее помощью мы перенаправим файл error.php в syslog для этого добавим строчку в cron запускаем "crontab -e" и прописываем:

* * * * * /usr/bin/logger -f /usr/local/www/example.org/log/error.php -t joomla -p auth.info && /bin/cat /dev/null > /usr/local/www/example.org/log/error.php

после этого наш файл error.php будет каждую минуту скидываться в syslog с тегом joomla приоритетом auth.info и обнулятся что бы в следующий раз не импортировать уже существующие записи, теперь в логе /var/log/auth.log должны появляться записи:

Feb 16 18:12:42 example joomla: 2014-02-16 14:11:44 INFO 1.2.3.4 Joomla FAILURE: Username and password do not match or you do not have an account yet. ("admin")
Feb 16 18:12:42 example joomla: 2014-02-16 14:12:26 INFO 1.2.3.4 Joomla FAILURE: Username and password do not match or you do not have an account yet. ("aaaa")
Feb 16 18:12:42 example joomla: 2014-02-16 14:12:29 INFO 1.2.3.4 Joomla FAILURE: Username and password do not match or you do not have an account yet. ("aaaa")
Feb 16 18:12:42 example joomla: 2014-02-16 14:12:32 INFO 1.2.3.4 Joomla FAILURE: Username and password do not match or you do not have an account yet. ("aaaa")
Feb 16 18:12:42 example joomla: 2014-02-16 14:12:34 INFO 1.2.3.4 Joomla FAILURE: Empty password not allowed ("aaaaa")
Feb 16 18:12:42 example joomla: 2014-02-16 14:12:37 INFO 1.2.3.4 Joomla FAILURE: Username and password do not match or you do not have an account yet. ("aaaaaa")
Feb 16 18:12:42 example joomla: 2014-02-16 14:12:40 INFO 1.2.3.4 Joomla FAILURE: Username and password do not match or you do not have an account yet. ("aaaa")

OK, идем дальше

теперь создаем конфиг для bruteblock'а  /usr/local/etc/bruteblock/joomla.conf с содержимым:

regexp = joomla.*INFO.(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}).Joomla FAILURE.*
max_count = 4
within_time = 600
reset_ip = 3600
ipfw2_table_no = 1

и добавим в файл /etc/syslog.conf обработчик

auth.info;authpriv.info | exec /usr/local/sbin/bruteblock -f /usr/local/etc/bruteblock/joomla.conf

перезапускаем syslog

# /etc/rc.d/syslogd restart
Stopping syslogd.
Waiting for PIDS: 3855.
Starting syslogd.

и наслаждаемся результатом... теперь если кто то попытается ввести неверный логин и пароль 4 раза в течение 10 минут, то он будет полностью отрезан от сервера на один час... посмотреть заблокированные IP адреса можно командой:

# ipfw table 1 list
1.2.3.4/32 1392563442
4.3.2.1/32 1392563562
1.2.4.3/32 1392564766

очистить список заблокированных:

# ipfw table 1 flush

По аналогии можно реализовать и на других CMS системах

2Фев/140

FreeBSD PHP-FPM chroot — iconv(): Wrong charset, conversion from UTF-8 to cp1251 is not allowed

Заметил в логах сервера ошибку

PHP message: PHP Notice:  iconv(): Wrong charset, conversion from `UTF-8' to `cp1251' is not allowed in /public/iconv/file.php on line 22
PHP message: PHP Notice:  iconv(): Wrong charset, conversion from `UTF-8' to `cp1251' is not allowed in /public/iconv/file.php on line 22
PHP message: PHP Notice:  iconv(): Wrong charset, conversion from `UTF-8' to `cp1251' is not allowed in /public/iconv/file.php on line 22
...

Связка: PHP-FPM, Nginx, chroot
Как выяснилось, не хватает каких то файлов для правильной работы iconv, гугление не помогло, на помощь пришла стандартная утилита truss (аналог strace в Linux):

# truss iconv -f utf-8 -t cp1251 file.txt                                
...
open("/usr/lib/i18n/libmapper_std.so.4",O_CLOEXEC,041) = 4 (0x4)
...
open("/usr/share/i18n/csmapper/CP/UCS%CP1251.mps",O_CLOEXEC,037777703140) = 4 (0x4)
...

В выхлопе комманды я увидел, что iconv берет файлы *.mps - это карты кодировок:

open("/usr/lib/i18n/libmapper_std.so.4",O_CLOEXEC,041) = 4 (0x4)
open("/usr/share/i18n/csmapper/CP/UCS%CP1251.mps",O_CLOEXEC,037777703140) = 4 (0x4)

После этого я скопировал директории /usr/lib/i18n/ и /usr/share/i18n/ в chroot окружение и iconv перестал выдавать ошибки, решение не изящное, зато работает 🙂

10Мар/133

FreeBSD — Диски и файловые системы

Диски и файловые системы

Важность управления файловыми системами и дисками трудно переоценить. (Попробуйте переоценить их важность, а я подожду.) Для операционной системы надежность и гибкость работы с дисками должны быть первостепенно важны, потому что на дисках хранятся ваши данные. Операционная система FreeBSD предоставляет выбор файловых систем и различных вариантов их обслуживания. В этой главе мы рассмотрим типичные компоненты, с которыми имеет дело системный администратор.

Жесткие диски

Большинство воспринимают жесткий диск как «черный ящик». При неаккуратном обращении можно добиться того, что жесткий диск будет визжать и греметь, а при очень плохом обращении из него может пойти дымок и он просто выйдет из строя. Чтобы по-настоящему понимать, что такое файловые системы, вам необходимо немножко понимать, что происходит внутри привода. Если у вас есть старый жесткий диск, который вам больше не нужен, вскройте его корпус и читайте дальше.

Внутри корпуса накопителя на жестких магнитных дисках находится стопка круглых алюминиевых или пластиковых дисков, которые обычно называют пластинами. Во время работы привода эти пластины вращаются со скоростью несколько тысяч оборотов в минуту. Число RPM (revolutions per minute), которое приводится на корпусе жесткого диска, – это и есть скорость вращения пластин. Пластины покрыты тонким слоем магнитного материала. Этот магнитный материал распределен по тысячам концентрических колец, которые называются дорожками (tracks). Они располагаются как годичные кольца в стволе дерева, от сердцевины к внешнему краю. На этих дорожках и хранятся данные в виде последовательностей нулей и единиц. Каждая дорожка делится на секторы. Сектора на внешних дорожках вмещают больше данных, чем на внутренних, и скорость чтения данных, записанных не внешних дорожках, также выше, потому что каждая точка на внешней дорожке имеет более высокую линейную скорость.

10Мар/130

FreeBSD — Организация защиты системы

Организация защиты системы

В защищенной системе доступ к ресурсам компьютера открыт лишь авторизованным пользователям в дозволенных целях. Даже если в системе нет важных данных, большое значение имеют время процессора, память и полоса пропускания. Вообще многие администраторы, считавшие свои системы маловажными и не заботившиеся об их защите, обнаруживали, что их машины невольно стали ретрансляторами (relays) – плацдармом для атак, наносящих урон целым корпорациям. Кому хочется проснуться утром от восхитительных звуков, сопровождающих появление в вашем доме сотрудников правоохранительных органов, потому что ваш незащищенный компьютер был использован для проникновения в банк.

Конечно, есть вещи похуже, чем подростки, захватившие власть над серверами, – скажем, перелом обеих ног. Однако вторая по значимости неприятность – однажды прийти на работу и обнаружить, что веб-страница компании теперь сообщает: «Ха-ха, здесь был Вася!» Еще более масштабные вторжения вызывают куда больше головной боли. Большинство вторжений, с которыми мне приходилось иметь дело (не в качестве злоумышленника, а в качестве консультанта, нанятого пострадавшей стороной), исходили из стран, где доступ к Интернету находится под цензурой правительства, а анализ трафика показал, что злоумышленники лишь искали неограниченный доступ к новостным сайтам. Хотя я и сочувствую этим людям, но когда речь заходит о стабильности работы моих серверов, подобные вторжения я считаю недопустимыми.