<?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>Купить сервер в Киеве. Cерверы и рабочие станции в Украине &#187; unix</title>
	<atom:link href="https://server-kiev.com/tag/unix/feed/" rel="self" type="application/rss+xml" />
	<link>https://server-kiev.com</link>
	<description>Продажа мощных серверов по низким ценам. Серверы Dell, HP, Supermicro. Мощные рабочие станции из США. В наличии новые и б/у за наличку и по безналу.</description>
	<lastBuildDate>Wed, 09 Feb 2022 05:27:51 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.1.1</generator>
	<item>
		<title>Полезные команды, которые могут пригодиться при DDoS и не только</title>
		<link>https://server-kiev.com/2015/04/ddos-unix-commands/</link>
		<comments>https://server-kiev.com/2015/04/ddos-unix-commands/#comments</comments>
		<pubDate>Wed, 15 Apr 2015 15:14:45 +0000</pubDate>
		<dc:creator><![CDATA[Алексей]]></dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Статьи]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[ddos]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://server-kiev.com/?p=372</guid>
		<description><![CDATA[В моем случае, в качестве frontend сервера, стоит nginx и формат access-лога имеет вид: log_format main &#8216;$remote_addr — $remote_user [$time_local] &#171;$host&#187; &#171;$request&#187; &#8216; &#8216;$status $body_bytes_sent &#171;$http_referer&#187; &#8216; &#8216;&#187;$http_user_agent&#187; &#171;$http_x_forwarded_for&#187; -&#62; $upstream_response_time'; Что на выходе дает что-то вроде такой строки: 188.142.8.61 — &#8212; [14/Sep/2014:22:51:03 +0400] «www.mysite.ru» «GET / HTTP/1.1» 200 519 «6wwro6rq35muk.ru/» «Mozilla/4.0 (compatible; MSIE 8.0; <a href="https://server-kiev.com/2015/04/ddos-unix-commands/"> читать дальше <span class="meta-nav"></span></a>]]></description>
				<content:encoded><![CDATA[<p>В моем случае, в качестве frontend сервера, стоит nginx и формат access-лога имеет вид:</p>
<p>log_format main &#8216;$remote_addr — $remote_user [$time_local] &#171;$host&#187; &#171;$request&#187; &#8216;<br />
&#8216;$status $body_bytes_sent &#171;$http_referer&#187; &#8216;<br />
&#8216;&#187;$http_user_agent&#187; &#171;$http_x_forwarded_for&#187; -&gt; $upstream_response_time';</p>
<p>Что на выходе дает что-то вроде такой строки:</p>
<p>188.142.8.61 — &#8212; [14/Sep/2014:22:51:03 +0400] «<a href="http://www.mysite.ru/">www.mysite.ru</a>» «GET / HTTP/1.1» 200 519 «<a href="http://6wwro6rq35muk.ru/">6wwro6rq35muk.ru/</a>» «Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.191602; .NET CLR 3.5.191602; .NET CLR 3.0.191602» &#171;-&#187; -&gt; 0.003</p>
<p>1. <b>tail -f /var/log/nginx/nginx.access.log | cut -d &#8216; &#8216; -f 1 | logtop</b></p>
<p>Позволяет получить общую картину: распределение уникальных IP, с которых идут запросы, кол-во запросов с одного IP и т.д.<br />
Самое ценное — что все это работает в режиме реального времени и можно мониторить ситуацию, внося какие-либо изменения в конфигурацию (например просто забанить ТОП 20 самых активных IP через iptables или временно ограничить географию запросов в nginx через GeoIP <a href="http://nginx.org/ru/docs/http/ngx_http_geoip_module.html">http://nginx.org/ru/docs/http/ngx_http_geoip_module.html</a>).<br />
<a name="habracut"></a><br />
Покажет (и будет обновляться в режиме реального времени) что-то вроде:</p>
<p><i>3199 elements in 27 seconds (118.48 elements/s)<br />
1 337 12.48/s 95.65.66.183<br />
2 308 11.41/s 122.29.177.10<br />
3 304 11.26/s 122.18.251.54<br />
4 284 10.52/s 92.98.80.164<br />
5 275 10.19/s 188.239.14.134<br />
6 275 10.19/s 201.87.32.17<br />
7 270 10.00/s 112.185.132.118<br />
8 230 8.52/s 200.77.195.44<br />
9 182 6.74/s 177.35.100.49<br />
10 172 6.37/s 177.34.181.245</i></p>
<p>Где в данном случае колонки означают:</p>
<ul>
<li>1 — порядковый номер</li>
<li>2 — количество запросов с данного IP</li>
<li>3 — количество запросов в секунду с данного IP</li>
<li>4 — собственно сам IP</li>
</ul>
<p>Вверху показывается суммарная статистика по всем запросам</p>
<p>В данном случае мы видим, что с IP 95.65.66.183 идет 12,48 запросов/секунду и за последние 27 секунд было сделано 337 запросов. По остальным строкам аналогично.</p>
<p>Разберем по частям:<br />
<b>tail -f /var/log/nginx/nginx.access.log</b> — в непрерывном режиме считываем конец лог-файла</p>
<p><b>cut -d &#8216; &#8216; -f 1 </b>— разделяем строку на «подстроки» разделителем, указанным в флаге -d. (в данном примере указан пробел).<br />
Флаг -f 1 — показываем только поле с порядковым номером «1» (в данном случае это поле будет содержать IP, с которого идет запрос)</p>
<p><b>logtop</b> — считает количество одинаковых строк (в данном случае IP), сортирует их в порядке убывания и выводит списком, попутно добавляя статистику (в Debian ставится через aptitude из стандартного репозитория).</p>
<p>2. <b>grep &#171;&amp;key=&#187; /var/log/nginx/nginx.access.log | cut -d &#8216; &#8216; -f 1 | sort | uniq -c | sort -n | tail -n 30</b> — покажет распределение какой-либо строки по IP в логе.</p>
<p>В моем случае мне нужно было собрать статистику как часто один IP использует в запросе параметр &amp;key=….</p>
<p>Покажет что-то вроде такого:</p>
<p><i>31 66.249.69.246<br />
47 66.249.69.15<br />
51 66.249.69.46<br />
53 66.249.69.30<br />
803 66.249.64.33<br />
822 66.249.64.25<br />
912 66.249.64.29<br />
1856 66.249.64.90<br />
1867 66.249.64.82<br />
1878 66.249.64.86</i></p>
<ul>
<li>1 — число вхождений строки (в данном случае IP)</li>
<li>2 — собственно сам IP</li>
</ul>
<p>В данном случае мы видим, что с IP 66.249.64.86 суммарно пришло 1878 запросов (и потом, если посмотрим в Whois — увидим что этот IP принадлежит Google и не является «зловредным»)</p>
<p>Разберем по частям:</p>
<p><b>grep &#171;&amp;key=&#187; /var/log/nginx/nginx.access.log</b> — находим все строки в логе, содержащие подстроку &#171;&amp;key=&#187; (не важно в какой части строки)<br />
<b>cut -d &#8216; &#8216; -f 1</b> — (см. предыдущий пример), выведем IP<br />
<b>sort</b> — отсортируем строки (нужно для корректной работы следующей команды)<br />
<b>uniq -c</b> — покажем уникальные строки + подсчитаем количествово вхождений этих строк (флаг -с)<br />
<b>sort -n</b> — отсортируем используя числовой режим сортировки (флаг -n)<br />
<b>tail -n 30</b> — выведем 30 строк с наибольшим количеством вхождений (флаг -n 30, можно указать произвольное число строк)</p>
<p>Все запросы выше приведены для Debian или Ubuntu, но думаю в других Linux дистрибутивах команды будут иметь похожий вид.</p>
<p>Моя подборка, лет 5 назад откуда-то скопировал, часто выручают и логи не требуются:</p>
<blockquote><p>Cколько коннектов на 80 порт: netstat -na | grep &#171;:80\ &#187; | wc -l<br />
На какой домен чаще всего идут запросы: tcpdump -npi eth0 port domain<br />
С какого ip сколько запросов netstat -ntu | awk &#8216;{print $5}&#8217;| cut -d: -f1 | sort | uniq -c | sort -nr | more<br />
Нагрузка на канал ftop -i eth0 -B</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>https://server-kiev.com/2015/04/ddos-unix-commands/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
