Уязвимость 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 и выше не подвержена уязвимости.

Проксирование запросов с помощью Nginx

Например стоит задача спроксировать через свой домен (mydomain.ru) ссылки вида:

https://proxy.domain.com/v1/button?label=pocket&count=horizontal&align=center&v=1&url=*custom link*

На адрес типа http://mydomain.ru/pocket/?url=*custom link*

Для решения данной задачи, опишем локейшен /pocket следующим образом:


location /pocket {
	set $args ?label=pocket&count=horizontal&align=center&v=1&$args;
        proxy_pass https://proxy.domain.com/v1/button;
        proxy_redirect off;
        proxy_set_header Host proxy.domain.com;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_read_timeout 1800;
        proxy_buffer_size 16k;
        proxy_buffers 32 16k;

    }

PHP:PEAR Non-static method Mail::factory() should not be called statically

Нечасто встретишь, но многие до сих пор пользуются отправкой почты с помощью PHP:PEAR, а как результат, иногда получают вот такие ошибки (например после обновления версии PHP):

Strict Standards: Non-static method Mail::factory() should not be called statically in /path/XXXXX.php on line 111

Все можно поправить, пускай руками, но зато метод рабочий. Приступаем:

vi /usr/share/pear/Mail.php + 74

- function &factory($driver, $params = array())
+ static function &factory($driver, $params = array())

vi /usr/share/pear/Mail.php +253

- $addresses = Mail_RFC822::parseAddressList($recipients, 'localhost', false);
+ $Mail_RFC822 = new Mail_RFC822();
+ $addresses = $Mail_RFC822->parseAddressList($recipients, 'localhost', false);

vi /usr/share/pear/PEAR.php +250

- function isError($data, $code = null)
+ static function isError($data, $code = null)

Проверяем и теперь все работает как нужно.
Удачи Вам и используйте функцию PHP mail.

Mac OS error: git-credential-osxkeychain died of signal 11

Установка клиента git под MacOS описывалась в смежной статье: http://nagg.ru/2014/08/ustanovka-git-klienta-mac-os-x-lion/
В данной статье я хочу разобрать ошибки при работе git-клиента:

$ git pull
error: git-credential-osxkeychain died of signal 11
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.

Для решения ошибки, нам потребуется внести следующие правки:

curl http://github-media-downloads.s3.amazonaws.com/osx/git-credential-osxkeychain -o git-credential-osxkeychain
sudo mv git-credential-osxkeychain /usr/local/bin
sudo chmod u+x /usr/local/bin/git-credential-osxkeychain
git config --global credential.helper osxkeychain

Теперь проверяем и видим что ошибка исчезла:

$ git pull
Already up-to-date.

Nginx защита от DDoS атак – продолжение

Обычно атака ботов происходит на любой участок сайта, обычно это сотни и тысячи различных IP.
Как уже рассказывалось в первой части статьи, защититься можно ограничив подключение к сайту для пустых реферер, это самый простой способ.
Что если реферер у ботов оформлен корректно? Вида: «http://mgg23.ru», «http://trew5un.com» и т.п. Выход есть, напишем правило блокировки такий ботов по следующему принципу – в реферер присутствуют буквы и цифры, конечно, оставлять такое правило на постоянной основе нельзя, но на время атаки – это самых простой выход.

server {

    # DDoS Protect from bad referer
    if ($http_referer ~* (\d\w\d|\d\d|\w\w\d\w|\d\w\w|\w\d\.)) {
        return 403;
    }

Передача HTTPS приложению в связке Nginx Apache

Иногда при работе по защищенному HTTPS-соединению, приложение не может определить тип соединения.
Для исправления ошибки, нужно внести правки в конфигурацию Nginx и Apache:

Nginx:

location / {

        proxy_set_header X-Forwarded-Proto $scheme;

    }

Apache:

<VirtualHost *>

    SetEnvIf X-Forwarded-Proto https HTTPS=on

TCP: time wait bucket table overflow (CTXXX)

Если Вы используете виртуализацию OpenVZ и возникает данная ошибка, Вам нужно поправить параметр tcp_max_tw_buckets_ub.

Проверяем и сохраняем текущие значения:

# sysctl -a | grep tw

net.ipv4.tcp_max_tw_buckets = 720000
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_max_tw_kmem_fraction = 384
net.ipv4.tcp_max_tw_buckets_ub = 16536

Для решения проблемы увеличиваем tcp_max_tw_buckets_ub:

# echo 65536 > /proc/sys/net/ipv4/tcp_max_tw_buckets_ub

Проверяем что изменения применились:

# sysctl -a | grep tw

net.ipv4.tcp_max_tw_buckets = 720000
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_max_tw_kmem_fraction = 384
net.ipv4.tcp_max_tw_buckets_ub = 65536

Установка git-клиента Mac OS X Lion

Заходим на сайт гугла и скачиваем самую свежую версию:


http://code.google.com/p/git-osx-installer/downloads/list

После установки, открываем Терминал и правим переменные:

$ vi ~/.bash_profile
export PATH=$PATH:/usr/local/git/bin/

Применяем изменения:

$ source ~/.bash_profile

Проверяем:

$ git --version
git version 1.8.4.2

Supermicro IPMI – настройка и полезные команды

Для работы с IPMI Вы можете использовать на свое усмотрение утилиты: ipmicfg, ipmitool.
Сначала рекомендую установить ipmicfg, так как утилита может сбросить пароль к заводским установкам и менять многие параметры, используя nехнологию IPMI.

Дистрибутив утилиты для различных ОС можно скачать с оффициального сайта: ftp://ftp.supermicro.com/utility/IPMICFG/

Далее, установка под CentOS по шагам:

wget ftp://ftp.supermicro.com/utility/IPMICFG//ipmicfg_1.14.3_20130725.zip
unzip ipmicfg_1.14.3_20130725.zip

Asterisk – установка Fail2Ban

Очень часто мы сталкиваемся с атаками на SIP-серверы, особенно когда сервер виден их сети интернет, поэтому я написал статью-заметку, с целью создать первую линию в защите Вашей IP ATC.

Устанавливаем необходимые пакеты:

 yum install -y fail2ban iptables

Настраиваем конфигурационный файл /etc/fail2ban/fail2ban.conf:

[Definition]

loglevel = 3
logtarget = SYSLOG

socket = /var/run/fail2ban/fail2ban.sock
pidfile = /var/run/fail2ban/fail2ban.pid

Правим конфиг /etc/fail2ban/jail.conf (добавим правило для сервиса asterisk):

[DEFAULT]

ignoreip = 127.0.0.1/8

bantime  = 600
findtime = 600
maxretry = 3

backend = auto
usedns  = warn

# Monitoring settings
[asterisk-iptables]

enabled  = true
filter   = asterisk
action   = iptables-allports[name=ASTERISK, protocol=all]
logpath  = /var/log/asterisk/fail2ban
maxretry = 3
bantime  = 259200