Когда речь заходит об анализе логов веб-сервера первое что приходит на ум это Webalizer но вот беда, этот софт из палеолита последний раз обновлялся в далёком 2013 году. Его неизменный конкурент и со-товарищ AWStats. Последний релиз был в 2020 году, но выглядит он не лучше своего напарника.
К счастью, аналог этих доисторических динозавров есть. Встречайте, Goaccess!
Читать далее Анализируем логи
Метка: centos
Пока разбираюсь с тем что творится в жизни и душе, оставлю несколько заметок по поднятию (и удержанию) сервера node.js на centos. Благо тема лично для меня интересная и несколько познавательная.
Читать далее Ноду народу(нет)
DKIM-filter — данный пакет служит для подписывания писем и работает в связке с postfix. Данный пост основан на статье с хабра, но дополнен информацией специально для centos.
Установка:
Прежде всего, хоть он и называется dkim-filter, в centos данный пакет назван dkim-milter и устанавливать надо именно его. Репозиторий epel вам в помощь, ну или любой другой где вы найдете данный пакет (:
yum install dkim-milter
Настройка:
Тут опять нас ждет сюрприз, потому как файла /etc/dkim-filter.conf после установки нет. Вся конфигурация находится в /etc/mail/dkim-milter/ ^_~
В файле /etc/mail/dkim-milter/dkim-filter.conf изменяем следующие параметры
BodyLengths Yes
Canonicalization relaxed/relaxed
Domain mail.example.com
KeyList /etc/mail/dkim-milter/keys/keylist
Selector default
Socket inet:8891@localhost
Syslog Yes
SyslogSuccess Yes
X-Header Yes
Далее генерируем ключи для вашего домена
dkim-genkey -d example.com -s mail -r
Сейчас в mail.txt у нас лежит TXT запись, которую нужно добавить, а в mail.private лежит приватный ключ, который и будет использоваться для подписи писем. Запись, которую нужно добавить в DNS, будет вида:
mail._domainkey IN TXT «v=DKIM1; g=*; k=rsa; p=…»
Теперь обязательно нужно удалить расширение у файла с ключом, потому что в описываемой схеме dkim-filter берёт имя сервера из имени файла с ключом:
mv mail.private mail
В файл /etc/mail/dkim-milter/keys/keylist записываем какие домены каким ключом нужно подписывать:
*@example.com:example.com:/etc/mail/dkim-milter/keys/mail
*:example.com:/etc/mail/dkim-milter/keys/mail
Аналогично можно добавить свои отдельные ключи для других доменов или даже для отдельных адресов. Если не нужно, чтобы dkim-filter подписывал письма для всех других доменов, не указанных явно, последнюю строчку можно удалить.
Наконец, добавим в конец /etc/postfix/main.cf следующие строки:
milter_default_action = accept
milter_protocol = 2
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
Не забываем добавить DNS TXT запись и проверить, что она на месте:
dig txt mail._domainkey.example.com
Если проверка прошла успешно то стоит формально запретить другим серверам принимать письма с вашим доменом, но без подписи, добавив ADSP запись:
_adsp._domainkey IN TXT «dkim=all»
На этом можно сказать практически всё, но на всякий случай стоит проверить что вы включили автозагрузку сервиса, иначе вас ждет «приятный» сюрприз после перезагрузки.
chkconfig —levels 345 dkim-milter on
Ня.
Порой даже элементарная задача приносит кучу новых знаний и требует индивидуального подхода.
На просторах интернетов есть очень много гайдов на тему установки и настройки mod_fastcgi, всё сводится к паре команд и добавлению стандартного конфига. Но не всегда всё обстоит так просто.
Итак, мы имеем связку Apache 2 (бэкенд), nginx (фронтенд), и PHP 5.3.x в режиме mod_php.
Задача: перевести PHP в режим FastCGI
Очередная заметка про грабли, и болящую попу.
Допустим вы подключили новенький девственный hdd к своей шайтан-машине. Первым делом надо создать раздел:
fdisk /dev/sdx
n — создаем новый раздел
p — праймари
1 — номер раздела
t — тип файловой системы
83 — HEX код EXT3 (список кодов вы можете глянуть командой L)
w — сохранить изменения
проверьте всё ли верно создалось
fdisk -l
если да, двигаемся дальше и форматируем наш раздел
mkfs.ext3 /dev/sdx1
fsck -f -y /dev/sdx1
добавляем метку для диска иначе при загрузке будет попа (:
tune2fs -L /new-hdd /dev/sdx1
добавляем информацию в /etc/fstab
LABEL=/new-hdd /new-hdd ext3 defaults 1 2
пробуем смонтировать раздел
mount /new-hdd
df -h
если всё ок, то можно перезагружаться.
Если же во-время загрузки вы что-то напортачили и на горизонте маячит белый пушной зверёк, то вводим root пароль и переходим в режим Repair filesystem (: Но для того чтобы иметь возможность внести изменения в файл /etc/fstab надо сначала перемонтировать партицию с возможностью записи:
mount -w -o remount /
теперь открываем /etc/fstab и исправляем ошибки.
Сразу оговорюсь что велосипед не мой, но катается хорошо :D
Хостеры иногда предлагают клиентам так называймый burstable трафик, это когда можно на некоторое время зайти за лимит, скомпенсировав трафик во-время наименьшей нагрузки. Более подробно вы можете покурить педивикию, даже на русском!
Для того чтобы добавить сие решение к себе в munin придется немного попатчить RRD. Стоит отметить что пути от дистрибутива и версии могут отличаться, но смекалку никто не отменял ;)
Centos 5:
/usr/lib/perl5/vendor_perl/5.8.8/Munin/Master/GraphOld.pm
Centos 6:
/usr/share/perl5/vendor_perl/Munin/Master/GraphOld.pm
Я не буду приводить листинг кода тут, так как парсер может его погрызть. Поэтому ссылочка на патчноуты Munin 1.4.x 95 percentage RRD patch или на оригинальный аттач в trac.
Во второй версии dovecot’а есть возможность указывать разные сертификаты для разных доменов (IP адресов и протоколов).
Для этого создаем шаблон:
[ req ]
default_bits = 1024
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type
prompt = no[ req_dn ]
# country (2 letter code)
#C=FI# State or Province Name (full name)
#ST=# Locality Name (eg. city)
#L=Helsinki# Organization (eg. company)
#O=Dovecot# Organizational Unit Name (eg. section)
OU=IMAP server# Common Name (*.example.com is also possible)
CN=imap.example.com# E-mail contact
emailAddress=postmaster@example.com[ cert_type ]
nsCertType = server
и сертификат:
# openssl req -new -x509 -nodes -config cert.cnf -out dovecot-domain-crt.pem -keyout dovecot-domain-key.pem -days 365
перемещаем сертификат и ключ куда надо, задаем права на файлы и т.д.
# mv dovecot-crt.pem /etc/pki/dovecot/cert/dovecot-domain-crt.pem
# mv dovecot-key.pem /etc/pki/dovecot/private/dovecot-domain-key.pem
# chmod 0600 /etc/pki/dovecot/cert/dovecot-domain-crt.pem
# chmod 0600 /etc/pki/dovecot/private/dovecot-domain-key.pem
# openssl x509 -subject -fingerprint -noout -in /etc/pki/dovecot/certs/dovecot-domain-crt.pem
далее необходимо поправить конфигурацию ssl для dovecot /etc/dovecot/conf.d/10-ssl.conf находим
ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem
и НИЖЕ ДОБАВЛЯЕМ
local xx.xx.xx.xx {
protocol pop3 {
ssl_cert = </etc/pki/dovecot/certs/dovecot-domain-crt.pem
ssl_key = </etc/pki/dovecot/private/dovecot-domain-key.pem
}
}
Стандартную секцию необходимо оставить, иначе вы будете получать ошибку doveconf: Error: ssl enabled, but ssl_cert not set
вместо local <ваш IP> можно использовать local_name domain.tld, в этом случае секция с protocol pop3 не нужна, но вам понадобится поддержка TLS SNI (Server Name Indication)!
Настраивая что-нибудь в центоси вы обязательно огребете проблем если у вас включен SELinux.
Таким замечательным примером может служить настройка Postfix с SASL аутентификацией в Dovecot. Вы спокойно сделали конфиги, всё проверили, рестартанули сервисы, а в результате нижуя не работает! WTF? Это няши, SELinux.
Идем в лог /var/log/maillog и любуемся такой вот ошибкой:
localhost postfix/smtpd: warning: SASL: Connect to private/auth failed: Permission denied
Благодарим это чудо за чудесную ночь секаса или же берем клаву и ставив на место это безобразие (:
grep smtpd_t /var/log/audit/audit.log | audit2allow -M postfixsasl
коротко о команде — найти smtpd_t в логе аудита и создать на основе этого правило для selinux
semodule -i posfixsasl.pp
добавляем правило в проклятый selinux, перезапускаем сервис(ы) и всё няшно. Эх, если бы я нашла эту фичку год назад…
Дополнительно:
Иногда может случиться так, что вы вроде бы всё добавили (например, модули для munin), а что-то всё ещё не работает из-за SELinux’a. Причиной этому может быть то, что события блокировки попадают под donotaudit события. В этом случае можно временно включить donotaudit события командой:
semodule -DB
и потом вернуть обратно
semodule -B
Так же, помимо описанного выше способа поиска для создания правил. Можно воспользоваться командой:
ausearch -m avc -ts today | audit2allow -M myfix
Которая автоматически поищет все события и создаст правила для их разрешения.
p.s.
Вот тут: гайд как это работает + ещё примеры для тех кто любит и пожестче.
Вот думала что писала уже про это, а нет, заметки не оказалось. Между тем, для непосвященных няшек это может стать небольшой проблемой, так как стандартные мануалы не подразумевают наличия SELinux и других ништяков.
Итак, для того чтобы изменить стандартный порт доступа надо сделать 3 вещи:
1. открываем /etc/ssh/sshd_config и раскомментируем строку
Port 22
меняем 22 на выбранный вами порт. Если вы хотите чтобы ssh слушал только на IPv4, то раскомментируйте строку
ListenAddress 0.0.0.0
остальные настройки по вкусу (:
2. добавляем правило для iptables (вы можете изменить стандартное правило для 22-го порта)
iptables-save > /path/to/rules.list
добавляем строку
-A INPUT -p tcp -m state —state NEW -m tcp —dport 1234 -j ACCEPT
и сохранив файлик обновляем правила
iptables-restore < /path/to/rules.list
НО, данный вариант будет работать только до первой перезагрузки! Если вы хотите добавить постоянное правило, изменения следует вносить в /etc/sysconfig/iptables
И вот казалось бы всё, но в этом случае перезапустив sshd вы рискуете потерять доступ к серверу, так как включенный по-умолчанию SELinux будет считать что негоже использовать иной порт. Так что переходим к пункту…
3. для того чтобы selinux не возникал, необходимо добавить ваш порт как порт для ssh
semanage port -a -t ssh_port_t -p tcp 1234
проверяем
semanage -l | grep ssh
Так же, вы можете столкнуться с проблемой когда центось вам скажет что знать не знает такой команды, тогда выполняем
yum whatprovides /usr/sbin/semanage
и получив ответ, устанавливаем нужный пакет. в моём случае это
yum install policycoreutils-python
Вот теперь можно смело (перепроверив не забыли ли вы чего!) перезапускать sshd и ломиться на новый порт
service sshd restart
Парочка полезных команд:
чтобы глянуть какой бардак творится со свободным местом
df -h
добавление сервиса либо скрипта в автозагрузку
chkconfig —level 345 %scriptname% on
удаление из автозагрузки
chkconfig %scriptname% off
Wiki по run level (http://en.wikipedia.org/wiki/Runlevel)
0 — Halt (выключение)
1 — Single User mode
2 — Multi User mode (without networking)
3 — Multi-user mode (with networking, console logins only)
4 — User-definable
5 — Multi-user mode (with console, with display manager X11)
6 — reboot (перезагрузка)
Список сервисов
chkconfig —list