Подсчет занимаемого места на сервере

Чтобы вывести список каталогов, размер которых превышает 2G, можно использовать следующую команду:

du -hx --max-depth=8 /home | egrep "^[2-9]{1}\.[0-9]G|^[0-9]{2,3}G|^[1-9]{1}\.[0-9]T"

Вывод будет следующим:

2.5G /home/backups/mysql/dump/nagg_ru
3.5G /home/backups/mysql/dump
2.1G /home/backups/mysql/dumps
5.8G /home/backups/mysql
5.8G /home/backups

error while loading shared libraries: libssl.so.6: wrong ELF class: ELFCLASS32

Довольно нетривиальная ошибка может возникнуть, либо такая:

error while loading shared libraries: libssl.so.6: cannot open shared object file: No such file or directory

Причиной всему то, что Ваше ПО пытается использовать 32-х битные библиотеки SSL, а нужно использовать 64-х битные. Решается проблема одним и тем же способом:

cd /usr/lib64/
ln -s libcrypto.so.1.0.1e libcrypto.so.6
ln -s libssl.so.1.0.1e libssl.so.6

Проверка диска FSCK на LVM разделе

Часто бывает, что после аппаратного сбоя сервер не поднимается. Причиной зачастую является поломанная ФС, с обычными разделами все понятно, запускаем fsck -y /dev/sdX1, но что делать если у Вас раздел LVM?
В данной ситуации необходимо подключить сам LVM раздел, а потом уже начать его проверку. Если Вы точно знаете, что у Вас файловая система в ext3, то можно запускать fsck.ext3.

Скачиваем образ Ubuntu и грузимся с него в редиме восстановления (rescue):

rescue:~# lvm pvscan
rescue:~# lvm vgscan
rescue:~# lvm lvchange -ay /dev/VolGroup00/LogVol00
rescue:~# lvm lvscan
ACTIVE '/dev/VolGroup00/LogVol00' [133.85 GB] inherit
inactive '/dev/VolGroup00/LogVol01' [8.45 GB] inherit
rescue:~# fsck -yfv /dev/VolGroup00/LogVol00

После завершения проверки перезагружаем сервер.
Все!

pure-ftpd: symbol my_make_scrambled_password, version libmysqlclient_15 not defined in file libmysqlclient.so.15

Ошибка появляется при запуске FTP:

/etc/init.d/pure-ftpd start
Starting pure-ftpd: /usr/sbin/pure-ftpd: relocation error: /usr/sbin/pure-ftpd: symbol my_make_scrambled_password, version libmysqlclient_15 not defined in file libmysqlclient.so.15 with link time reference
                                                           [FAILED]

Быстрое решение:

cd /usr/local/src
wget -O pure-ftpd.tgz https://sites.google.com/site/sudosuin/pure-ftpd.tgz
tar -xzf pure-ftpd.tgz
cp /usr/sbin/pure-ftpd /tmp/
cp -f /usr/local/src/pure-ftpd /usr/sbin/pure-ftpd

Проверяем:

# /etc/init.d/pure-ftpd start
Starting pure-ftpd:                                        [  OK  ]

Мониторинг потерь пакетов на сервере с помощью mtr

Потери пакетов – довольно частое явление, особенно у ненадежных хостингов, но это сетевых проблем никто не застрахован, а работа сервисов может быть нарушена, особенно если у Вас 2 и более серверов «общаются» друг с другом и локальной сети у Вас нет.

Скрипт мониторинга следующий (vi /srv/scripts/mtr.sh):

#!/bin/bash

SCRIPT=`basename $0`
#PS=`pidof /usr/sbin/mtr`
LOG=/var/log/mtr.log
LOCK=/tmp/mtr.lck
DT=`date +%F_%T`

if [ -f "/tmp/mtr.lck" ];then
    #DT=`date +%F_%T`
    #echo "### $DT `basename $0` is running ###" >> $LOG
    exit
fi

touch $LOCK

    DT=`date +%F_%T`
    echo "### start ping $DT ###" >> $LOG
    /usr/sbin/mtr -r -c 1000 X.X.X.X >> $LOG
    DT=`date +%F_%T`
    echo "### stop ping  $DT ###" >> $LOG
    echo "" >> $LOG

rm -f $LOCK

Exim + DKIM на примере CentOS

Exim поддерживает DKIM, начиная с версии 4.71. В данный момент в репозитарии CentOS доступна версия 4.72, она нам отлично подходит, устанавливаем:

yum install -y exim exim-mysql exim-sa

Для начала формируем связку Private + Public ключей. Генерируем секретный ключ с помощью openssl:

openssl genrsa -out /etc/exim/dkim/example.com.key 1024

Generating RSA private key, 1024 bit long modulus
.............++++++
............................................++++++
e is 65537 (0x10001)

Следующим шагом генерируем публичный ключ на основе секретного:

openssl rsa -in /etc/exim/dkim/example.com.key -pubout

writing RSA key
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5AsOOA2+NNqh9h3IvFPwJVH9b
NNvo7MHbGk7oMsjIErEjBpd5J4gqMKgNX9RWMvXVUUiGyS43iQ79I1suxVzP4PNc
JFq494bQoCxJzmj33rLaeFnVZMMB+Yzzn0JuCmE7Pr6M7tIPKrFdEcVnlAYP3+kT
zuAo7WB97RqfgpEbNwIDAQAB
-----END PUBLIC KEY-----

Dovecot: This binary should probably be called with process group set to XXX instead of XXX

Подобная ошибка иногда возникает на серверах, причины могут быть различными, чтобы решить ее, нужно выставить права на dovecot-lda. Группа, в данном случае mgrsecure обычно фигурирует в строке ошибки, поэтому у Вас она может отличаться, но проверить ее наличие можно в файле /etc/group

Ошибка выглядит следующим образом:

Feb 17 12:43:24 srv dovecot: lda(admin@nagg.ru): Fatal: setgid(501(mail)) failed with euid=97(dovecot), gid=500(mgrsecure), egid=500(mgrsecure): Operation not permitted (This binary should probably be called with process group set to 501(mail) instead of 500(mgrsecure))

Решаем проблему:

chown root:mgrsecure /usr/libexec/dovecot/dovecot-lda
chmod 04750 /usr/libexec/dovecot/dovecot-lda

Выглядеть должен следующим образом:

-rwsr-x--- 1 root mgrsecure 19K Янв  5 09:55 /usr/libexec/dovecot/dovecot-lda

Теперь все будет работать!

Nginx: принудительное кэширование сайта

Резкие всплески посещаемости всегда дают о себе знать высокой нагрузкой, и, чаще всего, недоступностью ресурса. К подобным проблемам можно подготовиться, даже если Ваш сайт часто обновляется и время появления статей на сайте критично. Наплыв посетителей происходит всплеском и обычно не длится долгое время, если это конечно не DDoS-атака :)

Включаем кэширование в nginx:

proxy_cache_path  /var/lib/nginx/cache  levels=1:2   keys_zone=pagecache:180m  max_size=500m inactive=7d;
proxy_cache_key "$scheme$request_method$host$request_uri";
proxy_cache_use_stale error timeout invalid_header http_500;

server {

Freeswitch установка на Ubuntu 14.04

В данной статье рассматривается процесс установки Freeswitch из исходников, с подключением необходимых модулей. Приступим к установке:

Не обязательно, правим локаль:

locale-gen en_US.UTF-8
dpkg-reconfigure locales

Обязательно требуется выполнить обновление системы:

apt-get update
apt-get upgrade

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

apt-get install autoconf automake devscripts gawk g++ git-core libjpeg-dev libncurses5-dev libtool make python-dev gawk pkg-config libtiff5-dev libperl-dev libgdbm-dev libdb-dev gettext libssl-dev libcurl4-openssl-dev libpcre3-dev libspeex-dev libspeexdsp-dev libsqlite3-dev libedit-dev libldns-dev libpq-dev

Собираем Freeswitch (используем сборку из исходников, чтобы подключить необходимые модули):

cd /usr/src
git clone -b v1.4 https://freeswitch.org/stash/scm/fs/freeswitch.git
cd /usr/src/freeswitch
./bootstrap.sh –j

Уязвимость CVE-2015-0235

Уязвимость была найдена в библиотеке GNU C Library (glibc) и срабатывает в результате переполнения буфера, при вызове функций gethostbyname() и gethostbyname2(), название GHOST не кажется странным.

Для проверки уязвимости Вашего сервера существует скрипт:

wget https://gist.githubusercontent.com/koelling/ef9b2b9d0be6d6dbab63/raw/de1730049198c64eaf8f8ab015a3c8b23b63fd34/gistfile1.c
gcc gistfile1.c -o CVE-2015-0235
./CVE-2015-0235

Либо можно одной строкой:

curl -o ghost-test.sh https://gist.githubusercontent.com/adamenger/1cd5a8bb462f1c824f21/raw/8a19de2e4b9d56c4daf35d5f4d30200444d8725d/gistfile1.sh && sh ghost-test.sh

Результатом работы скрипта должне быть вывод: not vulnerable или vulnerable.
Обращаю внимание, что скрипт производит компиляцию, поэтому потребуется установить gcc: yum install gcc

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

yum update glibc  -y

Желательно перезагрузить сервер, но после обновления скрипт проверки выдает что уязвимость закрыта.
Версия glibc-2.12-1.149 и выше не подвержена уязвимости.