<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Записки сисадмина</title>
	<atom:link href="http://www.pentarh.com/wp/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.pentarh.com/wp</link>
	<description>Или помойное ведро идей</description>
	<lastBuildDate>Fri, 13 Nov 2009 13:07:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Восстановление сбойного загрузочного диска в Linux RAID 1</title>
		<link>http://www.pentarh.com/wp/2009/11/13/failed-boot-disk-replace-linux-raid/</link>
		<comments>http://www.pentarh.com/wp/2009/11/13/failed-boot-disk-replace-linux-raid/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 13:07:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[FixIT]]></category>
		<category><![CDATA[HOWTO]]></category>

		<guid isPermaLink="false">http://www.pentarh.com/wp/?p=186</guid>
		<description><![CDATA[Наткнулся на хорошую статью по замене загрузочного диска в софтверном RAID Linux.
Если кратко, то на второй уцелевший диск надо засетапать grub )
]]></description>
			<content:encoded><![CDATA[<p>Наткнулся на <a href="http://www.anchor.com.au/hosting/support/Linux_Software_RAID_Repair" target="_blank">хорошую статью</a> по замене загрузочного диска в софтверном RAID Linux.</p>
<p>Если кратко, то на второй уцелевший диск надо засетапать grub )</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pentarh.com/wp/2009/11/13/failed-boot-disk-replace-linux-raid/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Skype &#8211; скрытая угроза</title>
		<link>http://www.pentarh.com/wp/2009/07/28/skype/</link>
		<comments>http://www.pentarh.com/wp/2009/07/28/skype/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 09:09:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Безопасность]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[skype]]></category>

		<guid isPermaLink="false">http://www.pentarh.com/wp/?p=181</guid>
		<description><![CDATA[Встретил очень интересный боян с попыткой препарировать Skype-клиент и разъяснения что там к чему.
http://www.insidepro.com/kk/176/176r.shtml
]]></description>
			<content:encoded><![CDATA[<p>Встретил очень интересный боян с попыткой препарировать Skype-клиент и разъяснения что там к чему.</p>
<p>http://www.insidepro.com/kk/176/176r.shtml</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pentarh.com/wp/2009/07/28/skype/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Удаленный мониторинг хардварного RAID DELL Perc 6/i (LSI) с помощью Nagios и SNMPd</title>
		<link>http://www.pentarh.com/wp/2009/07/22/hardware-raid-dell-perc-6-lsi-nagios-monitoring/</link>
		<comments>http://www.pentarh.com/wp/2009/07/22/hardware-raid-dell-perc-6-lsi-nagios-monitoring/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 12:10:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[HOWTO]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[lsi]]></category>
		<category><![CDATA[megacli]]></category>
		<category><![CDATA[megasas]]></category>
		<category><![CDATA[nagios]]></category>
		<category><![CDATA[raid]]></category>
		<category><![CDATA[snmpd]]></category>

		<guid isPermaLink="false">http://www.pentarh.com/wp/?p=173</guid>
		<description><![CDATA[Здесь можно узнать, как мониторить удаленно хардварный RAID DELL Perc 6/i (чип LSI) с помощью утилиты MegaCLI, самописных скриптов, SNMPd и Nagios в Linux (CentOS).
О том, как подготовить Nagios и SNMPd, рассказано в статье о мониторинге софтварного RAID. Туда добавить мне нечего, можно скопипастить инфу оттуда.
А вот скрипт raid_status.pl несколько изменился. Для его корректной работы [...]]]></description>
			<content:encoded><![CDATA[<p>Здесь можно узнать, как мониторить удаленно хардварный RAID <strong>DELL Perc 6/i</strong> (чип <strong>LSI</strong>) с помощью утилиты <strong>MegaCLI</strong>, самописных скриптов, <strong>SNMPd</strong> и <strong>Nagios</strong> в Linux (CentOS).</p>
<p>О том, как подготовить Nagios и SNMPd, рассказано в статье о <a href="http://www.pentarh.com/wp/2009/07/22/software-raid-linux-monitoring-nagios/" target="_blank">мониторинге софтварного RAID</a>. Туда добавить мне нечего, можно скопипастить инфу оттуда.</p>
<p>А вот скрипт <strong>raid_status.pl</strong> несколько изменился. Для его корректной работы нужно скачать утилитку <a href="http://www.lsi.com/storage_home/products_home/internal_raid/megaraid_sas/megaraid_sas_8480e/index.html?remote=1&amp;locale" target="_blank">LSI MegaCLI for Linux</a>. Так же я ставил симлинк /opt/MegaRAID/MegaCli/MegaCli64 -&gt; /usr/sbin/MegaCLI:</p>
<p style="padding-left: 30px;"># ln -s /opt/MegaRAID/MegaCli/MegaCli64 /usr/sbin/MegaCli</p>
<p>Теперь надо подготовить два скрипта.</p>
<p><span id="more-173"></span></p>
<h2>1. Скрипт AWK для приведения выдачи утилиты MegaCLI в удобочитаемый формат.</h2>
<p>(С)одрал не помню откуда. Положить его в <strong>/root/scripts/analysis.awk</strong>:</p>
<p style="padding-left: 30px;"># This is a little AWK program that interprets MegaCLI output</p>
<p style="padding-left: 30px;">/Device Id/ { counter += 1; device[counter] = $3 }<br />
/Firmware state/ { state_drive[counter] = $3 }<br />
/Inquiry/ { name_drive[counter] = $3 &#8221; &#8221; $4 &#8221; &#8221; $5 &#8221; &#8221; $6 }<br />
END {<br />
for (i=1; i&lt;=counter; i+=1) printf ( &#8220;Device %02d (%s) status is: %s &lt;br/&gt;\n&#8221;, device[i], name_drive[i], state_drive[i]); }</p>
<h2>2. Скрипт парсинга вывода предыдущего скрипта <img src='http://www.pentarh.com/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </h2>
<p>Это уже писано лично ) Положить в <strong>/root/scripts/raid_status.pl</strong></p>
<p style="padding-left: 30px;">#!/usr/bin/perl</p>
<p style="padding-left: 30px;">open $f,&#8217;/usr/sbin/MegaCli -PDList -aALL | /bin/awk -f /root/scripts/analysis.awk |&#8217;;<br />
$numraid=0;<br />
$ok=1;<br />
%dev=();</p>
<p style="padding-left: 30px;">while (&lt;$f&gt;) {<br />
if (/^Device\s+(\d+)\s+\(([^)]+)\)\s+status is: (\w+)/) {<br />
($d,$m,$s)=($1,$2,$3);<br />
if ($s !~ /Online/i) {<br />
$ok=0;<br />
$dev{$d}=$s;<br />
}<br />
$numraid++;<br />
}<br />
}</p>
<p style="padding-left: 30px;">close $f;</p>
<p style="padding-left: 30px;">if ($numraid != 6) {<br />
print &#8220;FAILURE: numraid !=6&#8243;;<br />
exit;<br />
}</p>
<p style="padding-left: 30px;">if ($ok!=1) {<br />
$s=&#8221;;<br />
foreach (keys(%dev)) {<br />
$s.=&#8221;$_ : &#8220;.$dev{$_}.&#8217;; &#8216;;<br />
}<br />
print &#8220;FAILURE: $s&#8221;;<br />
exit;<br />
}</p>
<p style="padding-left: 30px;">print &#8220;OK&#8221;;</p>
<p>Убедиться что скрипт выдает ОК. Настроить nagios как указано в начале статьи.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pentarh.com/wp/2009/07/22/hardware-raid-dell-perc-6-lsi-nagios-monitoring/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Мониторинг Software RAID в Linux с помощью Nagios</title>
		<link>http://www.pentarh.com/wp/2009/07/22/software-raid-linux-monitoring-nagios/</link>
		<comments>http://www.pentarh.com/wp/2009/07/22/software-raid-linux-monitoring-nagios/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 11:56:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[HOWTO]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[nagios]]></category>
		<category><![CDATA[raid]]></category>
		<category><![CDATA[snmpd]]></category>

		<guid isPermaLink="false">http://www.pentarh.com/wp/?p=167</guid>
		<description><![CDATA[Небольшой ликбез по удаленному мониторингу софтварного рейда в Linux с помощью Nagios и SNMPd.
1. Мониторинговый скрипт
[ДАННЫЙ СКРИПТ НЕПРАВИЛЬНЫЙ, НО НЕТ ВРЕМЕНИ ПОФИКСИТЬ]
Для начала подготовим перловый скрипт на машине, которую требуется мониторить. Скрипт  будет проверять рейд и выдавать &#8220;OK&#8221; или &#8220;FAILED: описание&#8221; в зависимости от статуса RAID.

#!/usr/bin/perl
open $f,&#8217;/proc/mdstat&#8217;;
$numraid=0;
$raids=5;
$ok=1;
%dev=();
while (&#60;$f&#62;) {
if (/^(md[0-9])\s*:\s*([a-zA-Z]+)/) {
($d,$s)=($1,$2);
if ($s !~ /active/i) {
$ok=0;
$dev{$d}=$s;
}
$numraid++;
}
}
close [...]]]></description>
			<content:encoded><![CDATA[<p>Небольшой ликбез по удаленному мониторингу софтварного рейда в Linux с помощью <strong>Nagios</strong> и <strong>SNMPd</strong>.</p>
<h2>1. Мониторинговый скрипт</h2>
<p><em><strong>[ДАННЫЙ СКРИПТ НЕПРАВИЛЬНЫЙ, НО НЕТ ВРЕМЕНИ ПОФИКСИТЬ]</strong></em></p>
<p>Для начала подготовим перловый скрипт на машине, которую требуется мониторить. Скрипт  будет проверять рейд и выдавать &#8220;OK&#8221; или &#8220;FAILED: описание&#8221; в зависимости от статуса RAID.</p>
<p><span id="more-167"></span></p>
<p style="padding-left: 30px;">#!/usr/bin/perl<br />
open $f,&#8217;/proc/mdstat&#8217;;<br />
$numraid=0;<br />
$raids=5;<br />
$ok=1;</p>
<p style="padding-left: 30px;">%dev=();</p>
<p style="padding-left: 30px;">while (&lt;$f&gt;) {<br />
if (/^(md[0-9])\s*:\s*([a-zA-Z]+)/) {<br />
($d,$s)=($1,$2);<br />
if ($s !~ /active/i) {<br />
$ok=0;<br />
$dev{$d}=$s;<br />
}<br />
$numraid++;<br />
}<br />
}</p>
<p style="padding-left: 30px;">close $f;</p>
<p style="padding-left: 30px;">if ($numraid != $raids) {<br />
print &#8220;FAILURE: numraid !=$raids&#8221;;<br />
exit;<br />
}</p>
<p style="padding-left: 30px;">if ($ok!=1) {<br />
$s=&#8221;;<br />
foreach (keys(%dev)) {<br />
$s.=&#8221;$_ : &#8220;.$dev{$_}.&#8217;; &#8216;;<br />
}<br />
print &#8220;FAILURE: $s&#8221;;<br />
exit;<br />
}</p>
<p style="padding-left: 30px;">print &#8220;OK&#8221;;</p>
<p>В данном скрипте следует установить переменную $raids в значение общего числа софтварных рейд-массивов в вашей системе. Узнать сколько у вас рейдов можно командой &#8220;cat /proc/mdstat&#8221;.</p>
<p>Положите скрипт в /root/scripts/raid_status.pl</p>
<h2>2. Настраиваем SNMPd</h2>
<p><strong>/etc/snmp/snmpd.conf</strong>:</p>
<p style="padding-left: 30px;">syslocation  &#8220;Cool datacenter&#8221;<br />
syscontact  cool@admin.su<br />
sysservices 72</p>
<p style="padding-left: 30px;"># Здесь нужно перечислить айпишники, с которых позволено обращаться к SNMPd<br />
# secret_pass &#8211; пароль комунити</p>
<p style="padding-left: 30px;">com2sec nagios 1.2.3.4/32 secret_pass<br />
com2sec nagios 127.0.0.1 secret_pass</p>
<p style="padding-left: 30px;">group pgroup v2c nagios<br />
view all included  .1<br />
access pgroup &#8220;&#8221;      any       noauth    exact  all all  none</p>
<p style="padding-left: 30px;"># для мониторинга какого то процесса поставить &#8220;proc имя_процесса&#8221;<br />
# proc httpd<br />
# proc vsftpd<br />
# для мониторинга партишена поставить disk /partition<br />
# disk /<br />
# disk /var<br />
# Для мониторинга ЛА поставить load 15 10 10<br />
# load 15 10 10<br />
# Для мониторинга свапа поставить swap минимальное_своб_место_свапа_кб<br />
# swap 1500000</p>
<p style="padding-left: 30px;"># Собственно, наш скрипт мониторинга RAID<br />
exec raid_status /root/scripts/raid_status.pl</p>
<p style="padding-left: 30px;">master agentx<br />
AgentXSocket tcp:localhost:705</p>
<p><strong>/etc/sysconfig/snmpd.options</strong>:</p>
<p style="padding-left: 30px;">OPTIONS=&#8221;-Lf /var/log/snmpd.log&#8221;</p>
<p>Далее, стартуем snmpd и добавляем его в стартап:</p>
<p style="padding-left: 30px;"># /etc/init.d/snmpd start<br />
# chkconfig &#8211;level 3 snmpd on</p>
<h2>3. Конфигурация удаленного Nagios&#8217;a</h2>
<p>Задаем команду проверки RAID в commands.cfg:</p>
<p style="padding-left: 30px;">define command{<br />
command_name check_snmp_raid<br />
command_line $USER1$/check_snmp -H $HOSTADDRESS$ -P 2c -o .1.3.6.1.4.1.2021.<br />
8.1.101.$ARG1$ -C $ARG2$ -r &#8220;OK&#8221;<br />
}</p>
<p>В конфигурации хоста ourhost.cfg:</p>
<p style="padding-left: 30px;"># Определяем удаленный хост; 1.1.1.1 &#8211; айпи удаленного хоста<br />
define host{<br />
use             server<br />
host_name       our_host<br />
alias           Remote Host with software RAID<br />
address         1.1.1.1<br />
check_command   check-host-alive<br />
}</p>
<p style="padding-left: 30px;">#&#8230; здесь всякие другие проверки ЛА, свапа, свободного места, процессов и пр.</p>
<p style="padding-left: 30px;"># Собсно мониторинг RAID, secret_pass &#8211; пароль комунити удаленного сервера</p>
<p style="padding-left: 30px;">define service{<br />
use             remote-service<br />
host_name       our_host<br />
service_description RAID status<br />
check_command   check_snmp_raid!1!secret_pass<br />
normal_check_interval       20<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pentarh.com/wp/2009/07/22/software-raid-linux-monitoring-nagios/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Патч pure-ftpd для корректной обработки докачки</title>
		<link>http://www.pentarh.com/wp/2009/06/02/pure-ftpd-resume-patch/</link>
		<comments>http://www.pentarh.com/wp/2009/06/02/pure-ftpd-resume-patch/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 16:14:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[FixIT]]></category>
		<category><![CDATA[Виртуализация]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[patch]]></category>
		<category><![CDATA[pure-ftpd]]></category>
		<category><![CDATA[докачка]]></category>
		<category><![CDATA[обрыв связи]]></category>

		<guid isPermaLink="false">http://www.pentarh.com/wp/?p=161</guid>
		<description><![CDATA[Наверно многим известна проблема, когда с pure-ftpd при обрыве соединения невозможно сделать докачку файла.
По этому поводу было много разговоров в mailing list, но чето дела не нашел.
На суд общественности предлагаю патч:  http://www.pentarh.com/files/patch-correct-resume.txt
Патч добавляет опцию -7 к демону pure-ftpd, благодаря которой демон пишет контент передаваемого файла ПРЯМО в файл назначения, а не во временный файл типа [...]]]></description>
			<content:encoded><![CDATA[<p>Наверно многим известна проблема, когда с pure-ftpd при обрыве соединения невозможно сделать докачку файла.</p>
<p>По этому поводу было много разговоров в mailing list, но чето дела не нашел.</p>
<p>На суд общественности предлагаю патч:  <a href="http://www.pentarh.com/files/patch-correct-resume.txt" target="_blank">http://www.pentarh.com/files/patch-correct-resume.txt</a></p>
<p><span>Патч добавляет опцию -7 к демону pure-ftpd, благодаря которой демон пишет контент передаваемого файла ПРЯМО в файл назначения, а не во временный файл типа &#8220;.pureftpd-upload.XXX.YYY.ZZZ&#8221;. Так же он сохраняет обработку команды APPE.</span></p>
<p><span>Соответственно, в конфиге добавилась аналогичная опция:</span></p>
<p style="padding-left: 30px;"><span><strong>NoAtomicFile yes</strong><br />
</span></p>
<p>Благодаря этому становится возможным докачка файла после обрыва связи.</p>
<p>Интрукции при сборке из исходников:</p>
<p>1. Положить патч в корневой каталог исходников pure-ftpd 1.0.22<br />
2. patch -p0 &lt; patch-correct-resume.txt<br />
3. ./configure и все такое</p>
<p>Инструкции FreeBSD:</p>
<p>1. Положить файл в /usr/ports/ftp/pure-ftpd/files/<br />
2. make config, make install</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pentarh.com/wp/2009/06/02/pure-ftpd-resume-patch/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Отбил небольшой DDOS ;)</title>
		<link>http://www.pentarh.com/wp/2009/05/02/%d0%9e%d1%82%d0%b1%d0%b8%d0%bb-%d0%bd%d0%b5%d0%b1%d0%be%d0%bb%d1%8c%d1%88%d0%be%d0%b9-ddos/</link>
		<comments>http://www.pentarh.com/wp/2009/05/02/%d0%9e%d1%82%d0%b1%d0%b8%d0%bb-%d0%bd%d0%b5%d0%b1%d0%be%d0%bb%d1%8c%d1%88%d0%be%d0%b9-ddos/#comments</comments>
		<pubDate>Fri, 01 May 2009 21:28:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Безопасность]]></category>
		<category><![CDATA[Происшествия]]></category>
		<category><![CDATA[ddos]]></category>
		<category><![CDATA[httpd]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[атака]]></category>
		<category><![CDATA[защита от ddos]]></category>
		<category><![CDATA[хакеры]]></category>

		<guid isPermaLink="false">http://www.pentarh.com/wp/?p=155</guid>
		<description><![CDATA[DDOS на HTTP 20 Мбит входящего. Отбито софтварным костылем  
Конфигурация машины: Quad Core Xeon / 4G RAM, CentOS 5.3 x86_64
Сервисы: apache(back) + nginx(front)
Sysctl:
kernel.shmall = 4294967296
vm.min_free_kbytes=70000
net.core.somaxconn=65536
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_tw_recycle=1
net.ipv4.ip_local_port_range = 2000 61000
net.ipv4.tcp_fin_timeout = 25
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_window_scaling = 0
net.ipv4.tcp_timestamps = 0
net.core.rmem_max=8388608
net.core.wmem_max=16777216
net.ipv4.tcp_no_metrics_save=0
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 87380 16777216
net.core.netdev_max_backlog=65536
net.ipv4.tcp_max_syn_backlog=4096
net.ipv4.ip_conntrack_max=300000
nginx:
worker_rlimit_nofile 80000;
events {
worker_connections  65536;
use epoll;
}
http {
gzip off; # 
keepalive_timeout  0;
server_tokens off;
reset_timedout_connection [...]]]></description>
			<content:encoded><![CDATA[<p><strong>DDOS </strong>на <strong>HTTP </strong>20 Мбит входящего. Отбито софтварным костылем <img src='http://www.pentarh.com/wp/wp-includes/images/smilies/icon_cool.gif' alt='8-)' class='wp-smiley' /> </p>
<p>Конфигурация машины: Quad Core Xeon / 4G RAM, CentOS 5.3 x86_64</p>
<p>Сервисы: apache(back) + nginx(front)</p>
<p><span id="more-155"></span><strong>Sysctl</strong>:</p>
<p style="padding-left: 30px;">kernel.shmall = 4294967296<br />
vm.min_free_kbytes=70000<br />
net.core.somaxconn=65536<br />
net.ipv4.tcp_tw_reuse=1<br />
net.ipv4.tcp_tw_recycle=1<br />
net.ipv4.ip_local_port_range = 2000 61000<br />
net.ipv4.tcp_fin_timeout = 25<br />
net.ipv4.tcp_keepalive_time = 600<br />
net.ipv4.tcp_window_scaling = 0<br />
net.ipv4.tcp_timestamps = 0<br />
net.core.rmem_max=8388608<br />
net.core.wmem_max=16777216<br />
net.ipv4.tcp_no_metrics_save=0<br />
net.ipv4.tcp_rmem = 4096 87380 16777216<br />
net.ipv4.tcp_wmem = 4096 87380 16777216<br />
net.core.netdev_max_backlog=65536<br />
net.ipv4.tcp_max_syn_backlog=4096<br />
net.ipv4.ip_conntrack_max=300000</p>
<p><strong>nginx</strong>:</p>
<p style="padding-left: 30px;">worker_rlimit_nofile 80000;<br />
events {<br />
worker_connections  65536;<br />
use epoll;<br />
}</p>
<p style="padding-left: 30px;">http {<br />
gzip off; # <img src='http://www.pentarh.com/wp/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
keepalive_timeout  0;<br />
server_tokens off;<br />
reset_timedout_connection on;</p>
<p>server {<br />
listen x.x.x.x default deferred;<br />
log_format IP $remote_addr;<br />
location / {<br />
proxy_pass http://127.0.0.1/;<br />
&#8230;.<br />
<strong> access_log /var/log/nginx/ipban IP;</strong></p>
<p><strong>apache</strong>: ServerLimit и MaxClients установить так, чтобы не засрало более чем 80% памяти. (В top&#8217;е можно глянуть сколько памяти потребляет каждый процесс).</p>
<p>Собсно скрипт. Запускается по крону раз в минуту и банит нах айпи, которые за эту минуту обратились к скриптовой части более 20 раз.</p>
<p style="padding-left: 30px;">#!/usr/bin/perl</p>
<p>system(&#8217;mv /var/log/nginx/ipban /var/log/nginx/ipban.proc&#8217;);<br />
system(&#8217;touch /var/log/nginx/ipban&#8217;);<br />
system(&#8221;/etc/init.d/nginx reload&#8221;);</p>
<p>open $f,&#8217;/var/log/nginx/ipban.proc&#8217;;</p>
<p>%h=();</p>
<p>while(&lt;$f&gt;) {<br />
chomp;<br />
if (/\d+\.\d+\.\d+\.\d+/) {<br />
unless ($h{$_}) {<br />
$h{$_}=1;<br />
} else {<br />
$h{$_}++;<br />
}<br />
}<br />
}</p>
<p>close $f;</p>
<p>foreach $k (keys(%h)) {<br />
if ($h{$k} &gt; 20) {<br />
system(&#8221;iptables -I INPUT -s $k -j DROP&#8221;);<br />
print &#8220;$k banned\n&#8221;;<br />
}<br />
}</p>
<p>20 -число вычисленное в ходе проб и ошибок применительно к этому серверу и location&#8217;у nginx. После того как скрипт беспощадно побанил 2к хостов, сервер начал подавать внешние признаки жизни, после 3к забаненых зомби начала грузицца морда.</p>
<p>В процессе работы мой рабочий комп был дважды забанен в ходе экспериментов ))</p>
<p>Более серъезный DDOS конечно будет трудно отбивать тупой банилкой.</p>
<p><strong>АПДЕЙТ</strong>. Время шло, таблица бана росла, ддосеры не унимались.</p>
<p>Поставил вот эту хрень <a href="http://www.configserver.com/cp/csf.html">http://www.configserver.com/cp/csf.html</a></p>
<p>Софтина умеет вообще много чего. Но практически все что она умеет бесполезно. Кроме temporary ban ip address.</p>
<p>В конфигах отключил практически все, ибо оно (все) мешало. Мне надо было от этой проги только то, чтобы она банила айпи с TTL. Т.е. на время. И крон стал пускать раз в 5 минут.</p>
<p>Соответственно, в кроновом скрипте поменял</p>
<p style="padding-left: 30px;">if ($h{$k} &gt; 20) {<br />
system(&#8221;iptables -I INPUT -s $k -j DROP&#8221;);</p>
<p>На</p>
<p style="padding-left: 30px;">if ($h{$k} &gt; 60) {<br />
system(&#8221;/usr/sbin/csf &#8211;tempdeny $k 28800&#8243;);</p>
<p>Так же цель атаки &#8211; страницу, сделал статичной.  ДДОС просел, сайт ожил.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pentarh.com/wp/2009/05/02/%d0%9e%d1%82%d0%b1%d0%b8%d0%bb-%d0%bd%d0%b5%d0%b1%d0%be%d0%bb%d1%8c%d1%88%d0%be%d0%b9-ddos/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>База сообщений ICQ Lite</title>
		<link>http://www.pentarh.com/wp/2009/04/21/icq-lite-base/</link>
		<comments>http://www.pentarh.com/wp/2009/04/21/icq-lite-base/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 14:22:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[Безопасность]]></category>
		<category><![CDATA[Очумелые ручки]]></category>
		<category><![CDATA[icq]]></category>
		<category><![CDATA[icq lite]]></category>
		<category><![CDATA[sqlite]]></category>
		<category><![CDATA[хак]]></category>

		<guid isPermaLink="false">http://www.pentarh.com/wp/?p=152</guid>
		<description><![CDATA[Потребовалось мне вытянуть сообщения из базы ICQ Lite. К моему удивлению это оказалось довольно просто, ибо база имеет формат SQLite3.
База лежит в C:\Documents and Settings\Username\Application Data\ICQ\UIN\Messages.qdb
Где Username &#8211; имя пользователя винды, UIN &#8211; числовой ICQ идентификатор.

Качаем бинарник sqlite3.exe и копируем его в C:\Windows
Пуск -&#62; Выполнить: cmd.exe
Делаем CD в директорию базы, выполняем &#8220;sqlite3 Messages.qdb&#8221;.  Смотрим &#8220;.schema&#8221;. [...]]]></description>
			<content:encoded><![CDATA[<p>Потребовалось мне вытянуть сообщения из базы ICQ Lite. К моему удивлению это оказалось довольно просто, ибо база имеет формат SQLite3.</p>
<p>База лежит в C:\Documents and Settings\Username\Application Data\ICQ\UIN\Messages.qdb</p>
<p>Где Username &#8211; имя пользователя винды, UIN &#8211; числовой ICQ идентификатор.</p>
<p><span id="more-152"></span></p>
<p><a href="http://www.sqlite.org/download.html" target="_blank">Качаем бинарник sqlite3.exe</a> и копируем его в C:\Windows</p>
<p>Пуск -&gt; Выполнить: cmd.exe</p>
<p>Делаем CD в директорию базы, выполняем &#8220;sqlite3 Messages.qdb&#8221;.  Смотрим &#8220;.schema&#8221;. Все месаги содержатся в таблице Messages. Поле &#8220;fromUser&#8221; пустое если сообщение от вас и содержит идентификатор корреспондента, если сообщение шло к вам, то это поле содержит кто писал сообщение. Поле participantsHash это Foreighn Key на таблицу Participants, откуда джойном можно вытянуть к кому было направлено сообщение.</p>
<p>Поскольку сообщение может быть отправлено к нескольким людям, тут связь бесконечность-к-одному.</p>
<p>По этому следующий запрос вытянет все сообщения из БД</p>
<p style="padding-left: 30px;">sqlite&gt; select p.userId,m.* from Messages m inner join Participants p on m.participantsHash=p.participantsHash;</p>
<p>Можно вытянуть конкретную свою переписку с идентификатором 11111:</p>
<p style="padding-left: 30px;">sqlite&gt; select p.userId,m.* from Messages m inner join Participants p on m.participantsHash=p.participantsHash WHERE m.fromUser=111111 OR p.UserId=111111;</p>
<p>Однако база вообще в UTF-8 формате, по этому в командной строке вы увидите кучу говна. Советую экспортировать это в файл, а потом уже его читать редактором, понимающим UTF:</p>
<p style="padding-left: 30px;">C:\blah&gt; sqlite3 -html Messages.qdb &#8220;select p.userId,m.* from Messages m inner join Participants p on m.pa<br />
rticipantsHash=p.participantsHash WHERE m.fromUser=111111 OR p.UserId=111111&#8243; &gt; perepiska.html</p>
<p>Отредактируем perepiska.html, вставим в начало:</p>
<p style="padding-left: 30px;">&lt;html&gt;&lt;head&gt;&lt;META http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=utf-8&#8243;&gt;&lt;/head&gt;<br />
&lt;body&gt;&lt;table&gt;</p>
<p>И в конец:</p>
<p style="padding-left: 30px;">&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</p>
<p>Все. Читайте вашу переписку в деталях, охуевайте и сносите побыстрее ICQ Lite.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pentarh.com/wp/2009/04/21/icq-lite-base/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Установка X/KDE на удаленный CentOS сервер/VDS</title>
		<link>http://www.pentarh.com/wp/2009/04/03/x-kde-install-remote/</link>
		<comments>http://www.pentarh.com/wp/2009/04/03/x-kde-install-remote/#comments</comments>
		<pubDate>Fri, 03 Apr 2009 15:28:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[HOWTO]]></category>
		<category><![CDATA[Очумелые ручки]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[remote]]></category>
		<category><![CDATA[vnc]]></category>
		<category><![CDATA[vnc server]]></category>

		<guid isPermaLink="false">http://www.pentarh.com/wp/?p=147</guid>
		<description><![CDATA[Написано по материалам HowTo VNC Server. В качестве операционной системы удаленного сервера возьмем CentOS.
Поскольку у нас отсутствует доступ к консоли сервера, установим KDE на http://www.softpedia.com/get/Internet/Remote-Utils/VNC-for-Windows.shtml.
На сервере понадобится 512М оперативы чтобы все это нормально работало.
Все нижеописанное работает на VDS/VPS на основе Virtuozzo/OpenVZ.

1. Устанавливаем иксы и KDE:
# yum -y groupinstall &#8220;X Window System&#8221;
# yum -y groupinstall &#8220;KDE [...]]]></description>
			<content:encoded><![CDATA[<p>Написано по материалам <a href="http://wiki.centos.org/HowTos/VNC-Server" target="_blank">HowTo VNC Server</a>. В качестве операционной системы удаленного сервера возьмем <strong>CentOS</strong>.</p>
<p>Поскольку у нас отсутствует доступ к консоли сервера, установим <strong>KDE </strong>на http://www.softpedia.com/get/Internet/Remote-Utils/VNC-for-Windows.shtml.</p>
<p>На сервере понадобится 512М оперативы чтобы все это нормально работало.</p>
<p>Все нижеописанное работает на <strong>VDS</strong>/<strong>VPS </strong>на основе <strong>Virtuozzo</strong>/<strong>OpenVZ</strong>.</p>
<p><span id="more-147"></span></p>
<p>1. Устанавливаем иксы и <strong>KDE</strong>:</p>
<p style="padding-left: 30px;"># yum -y groupinstall &#8220;X Window System&#8221;<br />
# yum -y groupinstall &#8220;KDE (K Desktop Environment)&#8221;</p>
<p>2. Добавляем некоего юзера <strong>user1</strong>, под которым будут запускаться кеды:</p>
<p style="padding-left: 30px;"># useradd user1<br />
# passwd user1</p>
<p>3. Конфигурируем <strong>VNC Server</strong> (должен был поставиться с вышеописанными пакетами):</p>
<p style="padding-left: 30px;">файл /etc/sysconfig/vncservers:<br />
VNCSERVERS=&#8221;1:<strong>user1</strong>&#8221;<br />
VNCSERVERARGS[1]=&#8221;-geometry 1024&#215;768&#8243;</p>
<p>4. Устанавливаем пароль на VNC для нашего юзера:</p>
<p style="padding-left: 30px;"># su user1<br />
# vncpasswd</p>
<p>5.  Редактируем /home/<strong>user1</strong>/.vnc/xstartup:</p>
<p style="padding-left: 30px;">Убираем камменты со следующих строк:</p>
<p style="padding-left: 30px;">unset SESSION_MANAGER<br />
exec /etc/X11/xinit/xinitrc</p>
<p style="padding-left: 30px;">Должно получиться примерно следующее:</p>
<p style="padding-left: 30px;">unset SESSION_MANAGER<br />
exec /etc/X11/xinit/xinitrc</p>
<p style="padding-left: 30px;">[ -x /etc/vnc/xstartup ] &amp;&amp; exec /etc/vnc/xstartup<br />
[ -r $HOME/.Xresources ] &amp;&amp; xrdb $HOME/.Xresources<br />
xsetroot -solid grey<br />
vncconfig -iconic &amp;<br />
xterm -geometry 80&#215;24+10+10 -ls -title &#8220;$VNCDESKTOP Desktop&#8221; &amp;<br />
twm &amp;</p>
<p>6. Стартуем <strong>VNC Server</strong>, добавляем в автозагрузку:</p>
<p style="padding-left: 30px;"># /etc/init.d/vncserver start<br />
# chkconfig &#8211;level 3 vncserver on</p>
<p>7. Качаем <strong>VNC Client</strong>, например <a href="http://www.softpedia.com/get/Internet/Remote-Utils/VNC-for-Windows.shtml" target="_blank">отсюда</a></p>
<p>8.  Выбираем параметры коннекта, глубину цвета и т.п. Коннектимся на SERVER_IP:1, вводим пароль с шага 4</p>
<p>9. Опционально, yum install firefox <img src='http://www.pentarh.com/wp/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>10. Enjoy</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pentarh.com/wp/2009/04/03/x-kde-install-remote/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Уменьшение потребления памяти MySQL</title>
		<link>http://www.pentarh.com/wp/2009/03/27/mysql-memory-decrease/</link>
		<comments>http://www.pentarh.com/wp/2009/03/27/mysql-memory-decrease/#comments</comments>
		<pubDate>Fri, 27 Mar 2009 11:47:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[FixIT]]></category>
		<category><![CDATA[HOWTO]]></category>
		<category><![CDATA[Базы Данных]]></category>
		<category><![CDATA[Виртуализация]]></category>
		<category><![CDATA[Очумелые ручки]]></category>
		<category><![CDATA[Тюнинг]]></category>
		<category><![CDATA[berkeleydb]]></category>
		<category><![CDATA[innodb]]></category>
		<category><![CDATA[memory]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[vds]]></category>
		<category><![CDATA[vps]]></category>

		<guid isPermaLink="false">http://www.pentarh.com/wp/?p=143</guid>
		<description><![CDATA[В основном это касается Virtual Dedicated Server (VDS/VPS), т.к. дефолтная установка MySQL на CeontOS/Fedora/RHEL с дефолтным my.cnf делает malloc на сотню с лишним мегабайт.
Конечно на потребляемую память MySQL влияют такие параметры как key_buffer, query_cache_size и т.п. Но они по дефолту идут минимальные, а кеш запросов вообще по моему отключен по дефолту.
Так вот все очень просто. [...]]]></description>
			<content:encoded><![CDATA[<p>В основном это касается Virtual Dedicated Server (VDS/VPS), т.к. дефолтная установка MySQL на CeontOS/Fedora/RHEL с дефолтным my.cnf делает malloc на сотню с лишним мегабайт.</p>
<p>Конечно на потребляемую память MySQL влияют такие параметры как key_buffer, query_cache_size и т.п. Но они по дефолту идут минимальные, а кеш запросов вообще по моему отключен по дефолту.</p>
<p>Так вот все очень просто. Добавляем в my.cnf:</p>
<p style="padding-left: 30px;">skip-innodb<br />
skip-bdb</p>
<p>Это выключит хандлеры InnoDB и BerkeleyDB и всю потребляемую ими память. Ну конечно делать это нужно если вы не используете вышеприведенные типы таблиц.</p>
<p>Далее рестартуем мускуль и видим в топе что он занимает десяток-другой мегабайт.</p>
<p>PS: в большинстве случаев не помешает опция и skip-networking. А вот thread_cache_size я советую поставить в значение 5-15 (в зависимости от нагрузки) <img src='http://www.pentarh.com/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.pentarh.com/wp/2009/03/27/mysql-memory-decrease/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Статья: Что такое VDS хостинг?</title>
		<link>http://www.pentarh.com/wp/2009/03/19/what-is-vds-hosting-article/</link>
		<comments>http://www.pentarh.com/wp/2009/03/19/what-is-vds-hosting-article/#comments</comments>
		<pubDate>Thu, 19 Mar 2009 18:01:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[openvz]]></category>
		<category><![CDATA[vds]]></category>
		<category><![CDATA[virtuozzo]]></category>
		<category><![CDATA[vps]]></category>

		<guid isPermaLink="false">http://www.pentarh.com/wp/?p=140</guid>
		<description><![CDATA[Вышла моя статья на ресурсе Master-X на тему VDS хостинга и его преимуществах.
Статья доступна здесь: http://www.master-x.com/articles/article/438/
]]></description>
			<content:encoded><![CDATA[<p>Вышла моя статья на ресурсе <a href="http://www.master-x.com/" target="_blank">Master-X</a> на тему VDS хостинга и его преимуществах.</p>
<p>Статья доступна здесь: <a href="http://www.master-x.com/articles/article/438/" target="_blank">http://www.master-x.com/articles/article/438/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.pentarh.com/wp/2009/03/19/what-is-vds-hosting-article/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
