Если iptables флудит в консоли

Часто бывает что на серверах с Centos + cPanel iptables начинает флудить в активную консоль. Что бы это избежать и сохранить нервы делаем следующее, настроим rsyslog:

cat << EOF > /etc/rsyslog.d/iptables.conf 
:msg, contains, "nf_ct_ftp:" -/var/log/iptables.log
& ~
EOF

Затем добавляем в /etc/sysctl.conf

kernel.printk = 4 4 1 7

и применяем параметр:

sysctl -p

После этого нужно перезапустить демон rsyslog и протестировать всё ли у нас получилось:

service rsyslog restart
logger -p kern.emerg -t kernel "nf_ct_ftp: dropping packet test"

 

Будет не лишним настроить ротацию для всего флуда, что теперь складывается в отдельный лог:

cat << EOF > /etc/logrotate.d/iptables 
/var/log/iptables.log
{
	rotate 7
	daily
	missingok
	notifempty
	delaycompress
	compress
	postrotate
		invoke-rc.d rsyslog rotate > /dev/null
	endscript
}
EOF

Вот и всё 🙂

Установка FFMPEG на сервер с Centos 6 + ISPmanager

В принципе этот способ рабочий и на CentOS 5 и без ISPmanager

yum remove libvpx libogg libvorbis libtheora libx264 x264 ffmpeg
rpm --import http://packages.atrpms.net/RPM-GPG-KEY.atrpms
nano -w /etc/yum.repos.d/atrpms.repo

И вставьте туда следующий код:

[atrpms]
name=Fedora Core $releasever - $basearch - ATrpms
baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/stable
gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms
gpgcheck=1
enabled=0

Далее установка пакетов:

yum --enablerepo=atrpms* install ffmpeg ffmpeg-devel

И после этого ставим расширение к PHP:

yum install git
git clone https://github.com/tony2001/ffmpeg-php.git
cd ffmpeg-php
phpize
./configure
make
make install

И добавить модуль в php.ini

nano -w /etc/php.d/ffmpeg.ini
Добавить и сохранить:
extension="ffmpeg.so"

Как установить APC и Memcached на Centos 6

yum install php-pear
yum install pcre-devel httpd-devel
yum install php-devel
yum install gcc
php -i | grep php.ini
pear config-set php_ini /etc/php.ini
pecl config-set php_ini /etc/php.ini
pear install pecl/apc

rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm (64 bit)
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-7.noarch.rpm (32 bit)

yum install memcached libmemcached-devel zlib-devel
pecl install memcache
service httpd restart

Быстрый способ защиты серверов от использования их в DDoS аттаках

Предисловие: Об этом стоило бы написать ещё в прошлом году…
Описание проблемы: Сервера под управлением cPanel, как правило со старой ОС (CentOS 3, CentOS 4, реже CentOS 5) с DNS сервером bind9, включенной опцией recursion в /etc/named.conf
Такие сервера часто используют для DDoS аттак, поскольку рекурсивные запросы не отключены (DNS сервер открыт для всех), то на сервер отсылают DNS запросы с целью обратиться к другим DNS-серверам. Иными словами, ваш сервер становится участником ботнета, который учавствует в заваливании другого сервер UDP пакетами.
Как определить?:
 

tcpdump -n

показывает что-то около того:

10:14:30.453075 192.198.107.125.23969 > 64.202.116.23.domain:  4930+ [1au] ANY? saveroads.ru. OPT  UDPsize=9000 (41)
10:14:30.453080 192.198.107.125.3419 > 64.202.116.22.domain:  4930+ [1au] ANY? saveroads.ru. OPT  UDPsize=9000 (41)
10:14:30.453355 64.202.116.22.domain > 192.198.107.125.3419:  4930 243/2/1 SOA[|domain] (frag 32410:1480@0+)
10:14:30.453368 64.202.116.22 > 192.198.107.125: (frag 32410:1480@1480+)
10:14:30.453373 64.202.116.22 > 192.198.107.125: (frag 32410:1044@2960)
10:14:30.453491 64.202.116.23.domain > 192.198.107.125.23969:  4930 243/2/1 SOA[|domain] (frag 32411:1480@0+)
10:14:30.453507 64.202.116.23 > 192.198.107.125: (frag 32411:1480@1480+)
10:14:30.453515 64.202.116.23 > 192.198.107.125: (frag 32411:1044@2960)
10:14:30.584583 109.210.53.85.63023 > 64.202.116.21.chargen:  udp 1
10:14:30.584624 64.202.116.21 > 109.210.53.85: icmp: 64.202.116.21 udp port chargen unreachable [tos 0xc0]
10:14:30.587049 109.210.53.85.63023 > 64.202.116.23.chargen:  udp 1
10:14:30.587082 64.202.116.23 > 109.210.53.85: icmp: 64.202.116.23 udp port chargen unreachable [tos 0xc0]
10:14:30.587054 109.210.53.85.63023 > 64.202.116.22.chargen:  udp 1
10:14:30.587103 64.202.116.22 > 109.210.53.85: icmp: 64.202.116.22 udp port chargen unreachable [tos 0xc0]
10:14:30.676159 81.89.14.146.26455 > 64.202.116.23.domain:  37074+ [1au] ANY? saveroads.ru. OPT  UDPsize=9000 (41)
10:14:30.676165 81.89.14.146.49760 > 64.202.116.22.domain:  37074+ [1au] ANY? saveroads.ru. OPT  UDPsize=9000 (41)
10:14:30.676506 64.202.116.22.domain > 81.89.14.146.49760:  37074 243/2/1 SOA[|domain] (frag 65001:1480@0+)
10:14:30.676522 64.202.116.22 > 81.89.14.146: (frag 65001:1480@1480+)
10:14:30.676527 64.202.116.22 > 81.89.14.146: (frag 65001:1044@2960)
10:14:30.676618 64.202.116.23.domain > 81.89.14.146.26455:  37074 243/2/1 SOA[|domain] (frag 65002:1480@0+)
10:14:30.676637 64.202.116.23 > 81.89.14.146: (frag 65002:1480@1480+)
10:14:30.676645 64.202.116.23 > 81.89.14.146: (frag 65002:1044@2960)
10:14:30.681701 192.198.107.125.52762 > 64.202.116.22.domain:  4930+ [1au] ANY? saveroads.ru. OPT  UDPsize=9000 (41)
10:14:30.682013 64.202.116.22.domain > 192.198.107.125.52762:  4930 243/2/1 SOA[|domain] (frag 32412:1480@0+)
10:14:30.682027 64.202.116.22 > 192.198.107.125: (frag 32412:1480@1480+)
10:14:30.682033 64.202.116.22 > 192.198.107.125: (frag 32412:1044@2960)
10:14:30.684119 192.198.107.125.34948 > 64.202.116.23.domain:  4930+ [1au] ANY? saveroads.ru. OPT  UDPsize=9000 (41)
10:14:30.684510 64.202.116.23.domain > 192.198.107.125.34948:  4930 243/2/1 SOA[|domain] (frag 32413:1480@0+)
10:14:30.684527 64.202.116.23 > 192.198.107.125: (frag 32413:1480@1480+)
10:14:30.684538 64.202.116.23 > 192.198.107.125: (frag 32413:1044@2960)
10:14:30.898893 81.89.14.146.34651 > 64.202.116.22.domain:  37074+ [1au] ANY? saveroads.ru. OPT  UDPsize=9000 (41)
10:14:30.899352 64.202.116.22.domain > 81.89.14.146.34651:  37074 243/2/1 SOA[|domain] (frag 65003:1480@0+)

Правильным шагом будет отредактировать конфиг /etc/named.conf, добавив туда правило что рекурсией могут пользоваться только локальные IP сервера…Но когда у Вас таких серверов сотни? Можно конечно сварганить скрипт на bash, но я считаю что варганить скрит который пригодится только единожды — нет смысла. Так как я уже говорил, проблема в 99% случаев только на старых серверах, старых сетапах (CentOS 3-5 + cPanel).
И так:
Всё что нам нужно, это переключить DNS сервер с bind9 на NSD. Полная совместимость при обратном переключении. Все Ваши DNS зоны без проблем подхватятся NSD.

/scripts/setupnameserver --force nsd

Затем проверим, удачно ли прошло всё:

bash-2.05a# lsof -i :53
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
nsd 9834 root 3u IPv4 511559448 UDP localhost:domain
nsd 9834 root 4u IPv4 511559449 UDP unknown.*****.net:domain
nsd 9834 root 5u IPv4 511559450 UDP unknown.*****.net:domain
nsd 9834 root 6u IPv4 511559451 UDP server.*****.com:domain
nsd 9834 root 7u IPv4 511559452 TCP localhost:domain (LISTEN)
Всё, NSD слушает 53 порт.
Сам NSD не умеет ни кешировать DNS запросы и не имеет рекурсии.
Смотрим что с теперь с пакетами:
tcpdump -n :
10:52:15.368098 64.202.116.22.domain > 81.164.157.144.25644: 26072 ServFail- 0/0/1 (28)
10:52:15.369863 81.164.157.144.47968 > 64.202.116.21.domain: 26072+ [1au] ANY? . OPT UDPsize=9000 (33)
10:52:15.369867 81.164.157.144.47968 > 64.202.116.21.domain: 26072+ [1au] ANY? . OPT UDPsize=9000 (33)
10:52:15.369872 81.164.157.144.47968 > 64.202.116.21.domain: 26072+ [1au] ANY? . OPT UDPsize=9000 (33)
10:52:15.369877 81.164.157.144.47968 > 64.202.116.21.domain: 26072+ [1au] ANY? . OPT UDPsize=9000 (33)
10:52:15.369958 64.202.116.21.domain > 81.164.157.144.47968: 26072 ServFail- 0/0/1 (28)
10:52:15.369995 64.202.116.21.domain > 81.164.157.144.47968: 26072 ServFail- 0/0/1 (28)
10:52:15.370034 64.202.116.21.domain > 81.164.157.144.47968: 26072 ServFail- 0/0/1 (28)
10:52:15.370069 64.202.116.21.domain > 81.164.157.144.47968: 26072 ServFail- 0/0/1 (28)
10:52:15.370102 81.164.157.144.47968 > 64.202.116.21.domain: 26072+ [1au] ANY? . OPT UDPsize=9000 (33)
10:52:15.370217 64.202.116.21.domain > 81.164.157.144.47968: 26072 ServFail- 0/0/1 (28)
10:52:15.420891 198.27.66.157.21746 > 64.202.116.23.domain: 16536+ [1au] ANY? saveroads.ru. OPT UDPsize=9000 (41)
10:52:15.420895 198.27.66.157.9222 > 64.202.116.22.domain: 16536+ [1au] ANY? saveroads.ru. OPT UDPsize=9000 (41)
10:52:15.420973 64.202.116.22.domain > 198.27.66.157.9222: 16536 ServFail- 0/0/1 (41)
10:52:15.421009 64.202.116.23.domain > 198.27.66.157.21746: 16536 ServFail- 0/0/1 (41)
10:52:15.742860 81.89.14.146.17130 > 64.202.116.23.domain: 64028+ [1au] ANY? saveroads.ru. OPT UDPsize=9000 (41)
10:52:15.742955 64.202.116.23.domain > 81.89.14.146.17130: 64028 ServFail- 0/0/1 (41)
10:52:15.743171 81.89.14.146.65089 > 64.202.116.22.domain: 64028+ [1au] ANY? saveroads.ru. OPT UDPsize=9000 (41)
10:52:15.743225 64.202.116.22.domain > 81.89.14.146.65089: 64028 ServFail- 0/0/1 (41)
10:52:15.837516 66.87.117.216.3867 > 64.202.116.22.domain: 12338+ [1au] ANY? saveroads.ru. OPT UDPsize=9000 (41)
10:52:15.837609 64.202.116.22.domain > 66.87.117.216.3867: 12338 ServFail- 0/0/1 (41)
10:52:15.837877 174.138.53.197.53094 > 64.202.116.23.domain: 29390+ [1au] ANY? saveroads.ru. OPT UDPsize=9000 (41)
10:52:15.837943 64.202.116.23.domain > 174.138.53.197.53094: 29390 ServFail- 0/0/1 (41)
10:52:15.839863 66.87.117.216.37309 > 64.202.116.23.domain: 12338+ [1au] ANY? saveroads.ru. OPT UDPsize=9000 (41)
10:52:15.839900 64.202.116.23.domain > 66.87.117.216.37309: 12338 ServFail- 0/0/1 (41)
10:52:15.840243 174.138.53.197.52592 > 64.202.116.22.domain: 29390+ [1au] ANY? saveroads.ru. OPT UDPsize=9000 (41)
10:52:15.840283 64.202.116.22.domain > 174.138.53.197.52592: 29390 ServFail- 0/0/1 (41)
10:52:15.842625 69.31.111.211 > 64.202.116.22: icmp: net 174.138.53.197 unreachable
10:52:15.910313 66.87.117.216.45391 > 64.202.116.23.domain: 3550+ [1au] ANY? saveroads.ru. OPT UDPsize=9000 (41)
10:52:15.910317 66.87.117.216.17762 > 64.202.116.22.domain: 3550+ [1au] ANY? saveroads.ru. OPT UDPsize=9000 (41)
10:52:15.910443 64.202.116.22.domain > 66.87.117.216.17762: 3550 ServFail- 0/0/1 (41)
10:52:15.910476 64.202.116.23.domain > 66.87.117.216.45391: 3550 ServFail- 0/0/1 (41)

ServFail — Okay, сервер отвечает что запрос не может быть выполнен. То что нам нужно. Теперь на Вас не придёт абуз и трафика будет поменьше…:)

Хочется добавить, бывает что не происходит установка NSD по команде выше, решается это обычно так:
Открываете файл /var/cpanel/sysinfo.config на сервере вашим любимым редактором, и меняете rpm_dist_ver=unknown на версию дистрибутива. Тоесть например, если это сервер с CentOS 4.9, то строчка должна выглядеть так:

rpm_dist_ver=4

Или запустить:

/usr/local/cpanel/scripts/gensysinfo

Сохранить, и вновь запустить:

/scripts/setupnameserver --force nsd

На этом всё. Чистого трафика!

 

Для сервера без контрольной панели, в начало named.conf добавить:

controls {
inet 127.0.0.1 allow { localhost; } keys { "rndc-key"; };
};
acl "trusted" {
127.0.0.1;
INT_IP_1;
INT_IP_2;
INT_IP_3;
};
options {
version "Not available";
allow-recursion { trusted; };
allow-notify { trusted; };
allow-transfer { trusted; };
forwarders { 127.0.0.1; };
};

Где INT_IP_x внешние IP адреса сервера на которых весит named. (все выделенные IP)

Чистка eximstats

Часто на web сервере с cPanel можно встретить такое при просмотре состояния процессов MySQL:

root@s20 [~]# mysqladmin pr
+----------+------------------+-----------+----------------+----------------+------+--------------------+-----------------------------------------------------------------------------+
| Id       | User             | Host      | db             | Command        | Time | State              | Info                                                                        |
+----------+------------------+-----------+----------------+----------------+------+--------------------+-----------------------------------------------------------------------------+
| 9360254  | DELAYED          | localhost | eximstats      | Delayed insert | 0    | Waiting for INSERT |                                                                             |
| 9365523  | DELAYED          | localhost | eximstats      | Delayed insert | 0    | Waiting for INSERT |                                                                             |
| 9717343  | DELAYED          | localhost | eximstats      | Delayed insert | 2    | Waiting for INSERT |                                                                             |
| 10217907 | eximstats        | localhost | eximstats      | Sleep          | 0    |                    |                                                                             |
| 10413487 | DELAYED          | localhost | eximstats      | Delayed insert | 207  | Waiting for INSERT |                                                                             |
| 10415263 | iramaxru_diamond | localhost | iramaxru_shop  | Sleep          | 3    |                    |                                                                             |
| 10415279 | elneedr_gas      | localhost | elneedr_elneed | Query          | 0    | Sorting result     | SELECT * FROM price WHERE company=79 ORDER BY price2, tovar LIMIT 91950, 50 |
| 10415282 | root             | localhost |                | Query          | 0    |                    | show processlist                                                            |
+----------+------------------+-----------+----------------+----------------+------+--------------------+-----------------------------------------------------------------------------+

При этом база eximstats имеет просто чудовищный размер:

root@s20 [~]# du -sh /var/lib/mysql/eximstats/
17G     /var/lib/mysql/eximstats/

Делаем следующее:
Открывает мускул и пишем:

mysql> use eximstats
mysql> delete from sends;
Query OK, 6072716 rows affected (17.74 sec)

mysql> delete from smtp;
Query OK, 848896 rows affected (2.17 sec)

mysql> delete from failures;
Query OK, 6168452 rows affected (18.63 sec)

mysql> delete from defers;
Query OK, 300965 rows affected (0.57 sec)

mysql> \q
Bye

Затем в WHM:
Main >> Server Configuration >> Tweak Settings >> Stats and Logs >> The interval, in days, to retain Exim stats in the database — 7
Недели я думаю достаточно 🙂

P.S.
Заметку отформатирую позже

Драйвера Uni для аудиокарты Asus Xonar STX

Официальные драйвера для аудиокарты Asus Xonar essnce STX обновляются крайне редко, последнее обновление драйверов на момент написание статьи были датированы 06.2011. Поэтому нашлись умельцы которые решили обновлять драйвера самостоятельно. Одни из таких драйверов можно найти тут

Единственная проблема с этим драйвером — установка. Но можно поискать на сайте автора возможности и инструкцию по подготовке к установке.

Последняя версия на данный момент UNi Xonar 1796 1.50 за 20 ноября 2011 года.

MySQL в tmpfs и настройка master -> slave [Редактировать]

Оптимизация сервера для моментального отклика работы БД, сокращение дисковых операций путём отправки БД в RAM диск (tmpfs).  Это существенно снизит нагрузку на жесткие диски, увеличит срок их службы и существенно снимет нагрузку с сервера в целом.

Читать далее

SuPHP И локальный php.ini

Для того что бы клиент мог пользоваться своими личными настройками PHP на cPanel сервере с включенным по умолчанию режимом suphp, нужно проделать следующее.

Читать далее