<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Dotane's Blog</title>
	<atom:link href="http://dotane.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://dotane.wordpress.com</link>
	<description>Just another WordPress.com weblog</description>
	<lastBuildDate>Sun, 08 Mar 2009 13:31:34 +0000</lastBuildDate>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='dotane.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Dotane's Blog</title>
		<link>http://dotane.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://dotane.wordpress.com/osd.xml" title="Dotane&#039;s Blog" />
	<atom:link rel='hub' href='http://dotane.wordpress.com/?pushpress=hub'/>
		<item>
		<title>ARP-spoofing</title>
		<link>http://dotane.wordpress.com/2009/03/07/arp-spoofing/</link>
		<comments>http://dotane.wordpress.com/2009/03/07/arp-spoofing/#comments</comments>
		<pubDate>Sat, 07 Mar 2009 21:24:39 +0000</pubDate>
		<dc:creator>dotane</dc:creator>
				<category><![CDATA[MS Windows]]></category>
		<category><![CDATA[arp spoofing]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[protocols]]></category>

		<guid isPermaLink="false">http://dotane.wordpress.com/?p=3</guid>
		<description><![CDATA[ARP-spoofing (ARP-poisoning) — техника сетевой атаки, применяемая преимущественно в Ethernet, но возможная и в других, использующих протокол ARP сетях, основанная на использовании недостатков протокола ARP и позволяющая перехватывать трафик между узлами, которые расположены в пределах одного широковещательного домена. Относится к числу spoofing-атак. В статье детально описана техника атаки ARP-spoofing, на примере атаки, выполненной с помощью [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dotane.wordpress.com&amp;blog=6867785&amp;post=3&amp;subd=dotane&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>ARP-spoofing</strong> (ARP-poisoning) — техника сетевой атаки, применяемая преимущественно в Ethernet, но возможная и в других, использующих протокол ARP сетях,  основанная на использовании недостатков протокола ARP и позволяющая перехватывать трафик между узлами,  которые расположены в пределах одного широковещательного домена. Относится к числу <a title="Spoofing" href="http://xgu.ru/wiki/Spoofing">spoofing</a>-атак.</p>
<p>В статье детально описана техника атаки ARP-spoofing, на примере атаки, выполненной с помощью программы <a title="Ettercap" href="http://xgu.ru/wiki/Ettercap">ettercap</a>; рассмотрены такие методы обнаружения и предотвращения ARP-атак, как слежение за ARP-активностью с помощью <a title="Arpwatch" href="http://xgu.ru/wiki/Arpwatch">arpwatch</a>, наложение специальных патчей для придания иммунитета системам, использование VLAN и PPPoE. Показано как решать имеющие непосредственное отношение к протоколу ARP задачи: поиск компьютеров по известному MAC-адресу и обнаружение новых компьютеров в сети.</p>
<p><span id="more-3"></span></p>
<h2><span class="mw-headline"> Протокол ARP и атаки с его использованием </span></h2>
<p><a name=".D0.A7.D1.82.D0.BE_.D1.82.D0.B0.D0.BA.D0.BE.D0.B5_.D0.B8_.D0.B4.D0.BB.D1.8F_.D1.87.D0.B5.D0.B3.D0.BE_.D0.BD.D1.83.D0.B6.D0.B5.D0.BD_ARP"></a></p>
<h3><span class="mw-headline"> Что такое и для чего нужен ARP </span></h3>
<p>Протокол ARP предназначен для преобразования IP-адресов в MAC-адреса. Чаще всего речь идёт преобразовании  в адреса Ethernet, но ARP  используется и в сетях других технологий: Token Ring, FDDI и других.<br />
Дополнительная информация:</p>
<ul>
<li> <a class="external text" title="http://en.wikipedia.org/wiki/Address_Resolution_Protocol" rel="nofollow" href="http://en.wikipedia.org/wiki/Address_Resolution_Protocol">Address Resolution Protocol</a> — страница в Wikipedia</li>
<li> <a class="external text" title="http://tools.ietf.org/html/rfc826" rel="nofollow" href="http://tools.ietf.org/html/rfc826">RFC 826</a> — описание стандарта ARP</li>
</ul>
<p><a name=".D0.90.D0.BB.D0.B3.D0.BE.D1.80.D0.B8.D1.82.D0.BC_.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D1.8B_ARP"></a></p>
<h3><span class="mw-headline"> Алгоритм работы ARP </span></h3>
<p>Протокол может использоваться в следующих случаях:</p>
<ol>
<li> <em>Хост A</em> хочет передать IP-пакет <em>узлу B</em>, находящемуся с ним в одной сети;</li>
<li> <em>Хост A</em> хочет передать IP-пакет <em>узлу B</em>, находящемуся с ним в разных сетях, и пользуется для этого услугами <em>маршрутизатора R</em>.</li>
</ol>
<p>В любом из этих случае <em>узлом A</em> будет использоваться  протокол ARP, только в первом случае для определения MAC-адреса <em>узла B</em>, а во втором — для определения MAC-адреса <em>маршрутизатора R</em>. В последнем случае пакет будет передан маршрутизатору для дальнейшей ретрансляции.</p>
<p>Далее для простоты рассматривается первый случай,  когда информацией обмениваются узлы, находящиеся непосредственном в одной сети. (Случай когда пакет адресован узлу находящемуся за маршрутизатором отличается только тем, что в пакетах передаваемых после того как ARP-преобразование завершено, используется IP-адрес получателя,  но MAC-адрес маршрутизатора, а не получателя.)</p>
<p><a name=".D0.9F.D1.80.D0.BE.D0.B1.D0.BB.D0.B5.D0.BC.D1.8B_ARP"></a></p>
<h3><span class="mw-headline"> Проблемы ARP </span></h3>
<p>Протокол ARP является абсолютно незащищённым. Он не обладает никакими способами  проверки подлинности пакетов: как запросов, так и ответов. Ситуация становится ещё более сложной, когда может использоваться самопроизвольный ARP (gratuitous ARP).</p>
<p><em>Самопроизвольный ARP</em> — такое поведение  ARP, когда ARP-ответ присылается, когда в этом (с точки зрения получателя) нет особой необходимости. <em>Самопроизвольный ARP-ответ это пакет-ответ ARP, присланный без запроса.</em> Он применяется для определения конфликтов IP-адресов в сети:  как только станция получает адрес по DHCP или адрес присваивается вручную, рассылается  ARP-ответ gratuitous ARP.</p>
<p>Самопроизвольный ARP может быть полезен  в следующих случаях:</p>
<ul>
<li> Обновление ARP-таблиц, в частности, в кластерных системах;</li>
<li> Информирование коммутаторов;</li>
<li> Извещение о включении сетевого интерфейса.</li>
</ul>
<p>Несмотря на эффективность самопроизвольного ARP, он является особенно небезопасным,  поскольку с его помощью можно уверить удалённый узел в том, что MAC-адрес какой-либо системы, находящейся с ней в одной сети,  изменился и указать, какой адрес используется теперь.</p>
<p>Подробнее:</p>
<ul>
<li> <a class="external text" title="http://wiki.wireshark.org/Gratuitous_ARP" rel="nofollow" href="http://wiki.wireshark.org/Gratuitous_ARP">Gratuitous_ARP</a> на wiki.wireshark.org</li>
</ul>
<p><a name="ARP-spoofing"></a></p>
<h2><span class="mw-headline"> ARP-spoofing </span></h2>
<div class="floatright"><span><a class="image" title="Arp-spoofing.png" href="http://xgu.ru/wiki/%D0%98%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5:Arp-spoofing.png"><img src="http://xgu.ru/w/images/thumb/e/e8/Arp-spoofing.png/300px-Arp-spoofing.png" border="0" alt="" width="300" height="332" /></a></span></div>
<p><em>До выполнения ARP-spoofing&#8217;а</em> в ARP-таблице узлов <em>A</em> и <em>B</em> существуют записи с IP- и MAC-адресами друг друга. Обмен информацией производится непосредственно между узлами A и B. <span style="color:green;">(зелёная стрелка)</span></p>
<p><em>В ходе выполнения ARP-spoofing&#8217;а</em> компьютер <strong>C</strong>,  выполняющий атаку,  отправляет ARP-ответы (без получения запросов):</p>
<ul>
<li> узлу <em>A</em>: с IP-адресом узла <em>B</em> и MAC-адресом узла <em>C</em>;</li>
<li> узлу <em>B</em>: с IP-адресом узла <em>A</em> и MAC-адресом узла <em>C</em>.</li>
</ul>
<p>В силу того что компьютеры поддерживают самопроизвольный  ARP (gratuitous ARP), они модифицируют собственные ARP-таблицы и помещают туда записи, где  вместо настоящих MAC-адресов компьютеров <em>A</em> и <em>B</em> стоит MAC-адрес компьютера <strong>C</strong>. <span style="color:red;">(красные стрелки)</span></p>
<p><em>После того как атака выполнена</em>, когда компьютер <em>A</em> хочет передать пакет компьютеру <strong>B</strong>, он находит в ARP-таблице запись (она соответствует компьютеру <em>C</em>) и определяет из неё MAC-адрес получателя. Отправленный по этому MAC-адресу пакет приходит компьютеру <em>C</em> вместо получателя. Компьютер <em>C</em> затем ретранслирует пакет тому, кому он действительно адресован — т.е. компьютеру <em>B</em>. <span style="color:blue;">(синие стрелки)</span></p>
<p><a name=".D0.98.D0.BD.D1.81.D1.82.D1.80.D1.83.D0.BC.D0.B5.D0.BD.D1.82.D1.8B_.D0.B4.D0.BB.D1.8F_.D0.B2.D1.8B.D0.BF.D0.BE.D0.BB.D0.BD.D0.B5.D0.BD.D0.B8.D1.8F_ARP-spoofing.27.D0.B0"></a></p>
<h3><span class="mw-headline"> Инструменты для выполнения ARP-spoofing&#8217;а </span></h3>
<p>В настоящее время существует несколько инструментов для выполнения ARP-spoofing&#8217;а, работающие как в ОС Linux, так и в ОС Windows.</p>
<p>Наиболее известные:</p>
<ul>
<li> <a class="external text" title="http://ettercap.sourceforge.net/" rel="nofollow" href="http://ettercap.sourceforge.net/">Ettercap</a></li>
<li> <a class="external text" title="http://www.oxid.it/cain.html" rel="nofollow" href="http://www.oxid.it/cain.html">Cain &amp; Abel</a></li>
<li> <a class="external text" title="http://monkey.org/~dugsong/dsniff/" rel="nofollow" href="http://monkey.org/%7Edugsong/dsniff/">dsniff</a></li>
<li> <a class="external text" title="http://sid.rstack.org/arp-sk/" rel="nofollow" href="http://sid.rstack.org/arp-sk/">arp-sk</a></li>
</ul>
<p>Все названные программы распространяются свободно.</p>
<p><a name=".D0.92.D1.8B.D0.BF.D0.BE.D0.BB.D0.BD.D0.B5.D0.BD.D0.B8.D0.B5_ARP-spoofing.27.D0.B0_c_.D0.BF.D0.BE.D0.BC.D0.BE.D1.89.D1.8C.D1.8E_ettercap"></a></p>
<h3><span class="mw-headline"> Выполнение ARP-spoofing&#8217;а c помощью ettercap </span></h3>
<p>[Пример выполнения атаки с помощью ettercap.] Рассмотрим как выполнить вышеописанную атаку с помощью ettercap.</p>
<ul>
<li> Что происходит на машине A.</li>
<li> Что происходит на машине B.</li>
<li> Что происходит на машине C.</li>
</ul>
<p>Детально рассмотрим как выполняется ARP-spoofing. В качестве инструмента будем использовать программу ettercap, однако другие инструменты для выполнения ARP-spoofing&#8217;а работают аналогичным образом.</p>
<ul>
<li> Машина A — hostA — 192.168.15.201 — 00:04:75:75:46:B1</li>
<li> Машина B — hostB — 192.168.15.254 — 00:0A:01:D4:D1:39</li>
<li> Машина C — hostC — 192.168.15.200 — 00:0A:01:D4:D1:E3</li>
</ul>
<p>Атаку выполняет <em>hostC</em> против узлов <em>hostA</em> и <em>hostB</em>.</p>
<p>Установить ettercap принятым в системе способом:</p>
<pre>hostC%# apt-get install ettercap</pre>
<p>Выполнить атаку против узлов hostA и hostB:</p>
<pre>%# ettercap -T -M arp -L log /192.168.15.201/ /192.168.15.254/</pre>
<p>Опции означают:</p>
<ul>
<li> <tt>-T</tt> — использовать текстовый (консольный) интерфейс;</li>
<li> <tt>-M arp</tt> — использовать модуль ARP-spoofing&#8217;а для выполнения атаки;</li>
<li> <tt>-L log</tt> — записывать журнал перехвата в файлы с именем log.*;</li>
</ul>
<p>В качестве аргументов указываются IP-адреса машин, против которых  нужно выполнять атаку ARP-spoofing.<br />
Пусть, например, в это время <em>узел A</em> обращается к <em>узлу B</em> по протоколу POP3, классическому примеру незащищённого,  но очень распространённого протокола — проверяет почту.</p>
<pre>hostA %# nc 192.168.15.254 110
USER user
+OK
PASS password
+OK
LIST
+OK
.</pre>
<p>Данные передающиеся между клиентом <em>hostA</em> и сервером <em>hostB</em> проходят через <em>узел C</em>. Они выводятся на экран и записываются в файлы.</p>
<p>После того как атака завершена для выхода из <strong>ettercap</strong> необходимо нажать <strong>q</strong>. Программа отсылает ARP-пакеты для восстановления старых записей в кэше ARP узлов, чтобы они общались друг с другом напрямую.</p>
<p>В текущем каталоге должны появиться два файла, начинающиеся словом, указанным после ключа <tt>-L</tt> при вызове <strong>ettercap</strong>:</p>
<pre>%# ls log.*
log.eci
log.ecp</pre>
<p>Просмотреть их содержимое можно с помощью программы <strong>etterlog</strong>, входящей в пакет <strong>ettercap</strong>:</p>
<pre>%# etterlog log.eci

etterlog NG-0.7.3 copyright 2001-2004 ALoR &amp; NaGA
Log file version    : NG-0.7.3
Timestamp           : Thu Jun 21 12:23:11 2007
Type                : LOG_INFO
1698 tcp OS fingerprint
7587 mac vendor fingerprint
2183 known services
==================================================
 IP address   : 192.168.15.201
 MAC address  : 00:04:75:75:46:B1
...
 MANUFACTURER : Sohoware
 DISTANCE     : 0
 TYPE         : LAN host
 FINGERPRINT      :
 OPERATING SYSTEM : UNKNOWN
   PORT     : TCP 110 | pop-3   []
      ACCOUNT : user
 / password
  (192.168.15.201)
==================================================</pre>
<p>Как видно, пароль был успешно перехвачен.<br />
Посмотрим как на узле <em>hostA</em> (атакуемом) меняется ARP-таблица</p>
<p><strong>До атаки.</strong></p>
<pre>hostA%# arp -an
? (192.168.15.254) at 00:0A:01:D4:D1:39 [ether] on eth0
? (192.168.15.200) at 00:0A:01:D4:D1:E3 [ether] on eth0</pre>
<p><strong>Во время атаки.</strong></p>
<pre>hostA%# arp -an
? (192.168.15.254) at 00:0A:01:D4:D1:E3 [ether] on eth0
? (192.168.15.200) at 00:0A:01:D4:D1:E3 [ether] on eth0</pre>
<p><strong>После атаки.</strong></p>
<pre>hostA%# arp -an
? (192.168.15.254) at 00:0A:01:D4:D1:39 [ether] on eth0
? (192.168.15.200) at 00:0A:01:D4:D1:E3 [ether] on eth0</pre>
<p>Если смотреть, что происходит на интерфейсе eth0 компьютера <em>hostA</em> (через который выполняется атака), можно увидеть, что как только начинается атака, на интерфейс поступают ARP-пакеты,  которые указывают, что MAC-адрес машины 192.168.15.254 изменился. Пакеты приходят постоянно.  Когда атака завершена, MAC-адрес в пакета внезапно меняется на другой. А потом они вообще перестают приходить.</p>
<pre>%# tcpdump -i eth0 arp
08:34:20.231680 arp reply 192.168.15.254 is-at 00:0a:01:d4:d1:e3 (oui Unknown)
08:34:21.259637 arp reply 192.168.15.254 is-at 00:0a:01:d4:d1:e3 (oui Unknown)
08:34:22.287591 arp reply 192.168.15.254 is-at 00:0a:01:d4:d1:e3 (oui Unknown)
08:34:23.315522 arp reply 192.168.15.254 is-at 00:0a:01:d4:d1:e3 (oui Unknown)
08:34:32.463255 arp reply 192.168.15.254 is-at 00:0a:01:d4:d1:39 (oui Unknown)
08:34:33.491040 arp reply 192.168.15.254 is-at 00:0a:01:d4:d1:39 (oui Unknown)
08:34:34.514988 arp reply 192.168.15.254 is-at 00:0a:01:d4:d1:39 (oui Unknown)</pre>
<p>Такая техника гарантирует, что таблица ARP на жертвах будет восстановлена и никто не заметит атаки.</p>
<p><a name=".D0.9C.D0.B5.D1.82.D0.BE.D0.B4.D1.8B_.D0.BE.D0.B1.D0.BD.D0.B0.D1.80.D1.83.D0.B6.D0.B5.D0.BD.D0.B8.D1.8F"></a></p>
<h2><span class="mw-headline"> Методы обнаружения </span></h2>
<p><a name="arpwatch"></a></p>
<h3><span class="mw-headline"> arpwatch </span></h3>
<p>Программа <strong>arpwatch</strong> отслеживает всю ARP-активность на указанных интерфейсах. Когда она замечает аномалии,  например, изменение MAC-адреса  при сохранении IP-адреса,  или наоборот,  она сообщает об этом в syslog.</p>
<p><a name=".D0.98.D0.BD.D1.81.D1.82.D0.B0.D0.BB.D0.BB.D1.8F.D1.86.D0.B8.D1.8F_.D0.B8_.D0.BA.D0.BE.D0.BD.D1.84.D0.B8.D0.B3.D1.83.D1.80.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_arpwatch"></a></p>
<h4><span class="mw-headline"> Инсталляция и конфигурирование arpwatch </span></h4>
<p>Процедуру инсталляции и конфигурирования <strong>arpwatch</strong> рассмотрим на примере системы Debian GNU/Linux.</p>
<p>Установка arpwatch выполняется традиционным для дистрибутива способом:</p>
<pre>%# apt-get install arpwatch

0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 124kB of archives.
After unpacking 389kB of additional disk space will be used.
Get:1 http://debian.ZLO.ZLO.ZLO etch/main arpwatch 2.1a13-2 [124kB]
Fetched 124kB in 0s (177kB/s)
Selecting previously deselected package arpwatch.
(Reading database ... 22406 files and directories currently installed.)
Unpacking arpwatch (from .../arpwatch_2.1a13-2_i386.deb) ...
Setting up arpwatch (2.1a13-2) ...
Starting Ethernet/FDDI station monitor daemon: (chown arpwatch /var/lib/arpwatch/arp.dat) arpwatch.</pre>
<p>После того как демон проинсталлирован,  он автоматически заускается. (в других системах его, возможно, нужно будет запускать вручную.)</p>
<pre>%# ps aux | grep arpwatch
arpwatch  4810  0.5  0.4   3448  2360 ?        S    08:36   0:00 /usr/sbin/arpwatch -u arpwatch -N -p
root      4827  0.0  0.1   2852   712 pts/6    R+   08:36   0:00 grep arpwatch</pre>
<p>Демон не имеет никаких конфигурационных файлов. Конфигурация arpwatch полностью определяется набором передаваемых ему ключей. В Debian GNU/Linux ключи указываются в конфигурационном файле <tt>/etc/default/arpwatch</tt> (в FreeBSD — в файле <tt>/etc/rc.conf</tt>).</p>
<p>При необходимости изменить конфигурацию arpwatch (в частности,  заставить его прослушивать другие интерфейсы), нужно править указанный файл:</p>
<pre>%# vi /etc/default/arpwatch
%# cat /etc/default/arpwatch

# Global options for arpwatch(8).
# Debian: don't report bogons, don't use PROMISC.
ARGS="-N -p"
# Debian: run as `arpwatch' user.  Empty this to run as root.
RUNAS="arpwatch"</pre>
<p>Если конфигурация была изменена,  демон должен быть перезапущен:</p>
<pre>%# /etc/init.d/arpwatch restart</pre>
<p>Когда демон запускается, он обнаруживает новые станции. Не выполняется никаких активных действий — просто прослушивается ARP-трафик. Обнаруженные узлы запоминаются; о том, что обнаружен новый узел  arpwatch сообщает в syslog.</p>
<p>Обо всех зафиксированных им аномалиях в работе протокола ARP демон также сообщает в syslog:</p>
<pre># tail -f /var/log/daemon.log
Jun 21 08:37:08 s_all@linux2 arpwatch: new station 192.168.15.200 0:a:1:d4:d1:e3 eth0
Jun 21 08:37:08 s_all@linux2 arpwatch: new station 192.168.15.201 0:4:75:75:46:b1 eth0
Jun 21 08:37:09 s_all@linux2 arpwatch: new station 192.168.15.254 0:a:1:d4:d1:39 eth0
Jun 21 08:37:09 s_all@linux2 arpwatch: changed ethernet address 192.168.15.254 0:a:1:d4:d1:e3 (0:a:1:d4:d1:39) eth0
Jun 21 08:37:11 s_all@linux2 arpwatch: ethernet mismatch 192.168.15.254 0:a:1:d4:d1:e3 (0:a:1:d4:d1:39) eth0
Jun 21 08:37:12 s_all@linux2 arpwatch: ethernet mismatch 192.168.15.254 0:a:1:d4:d1:e3 (0:a:1:d4:d1:39) eth0
Jun 21 08:37:13 s_all@linux2 arpwatch: ethernet mismatch 192.168.15.254 0:a:1:d4:d1:e3 (0:a:1:d4:d1:39) eth0</pre>
<p>Обратите внимание на строку</p>
<pre>Jun 21 08:37:09 s_all@linux2 arpwatch: changed ethernet address 192.168.15.254 0:a:1:d4:d1:e3 (0:a:1:d4:d1:39) eth0</pre>
<p>которая сообщает о том, что узел 192.168.15.254 изменил MAC-адрес.</p>
<p>Возможно, это означает, что против узла, на котором запущен arpwatch выполняется ARP-spoofing с целью перехвата трафика, которым он обменивается с узлом 192.168.15.254.</p>
<p><a name=".D0.94.D0.BE.D0.BF.D0.BE.D0.BB.D0.BD.D0.B8.D1.82.D0.B5.D0.BB.D1.8C.D0.BD.D0.B0.D1.8F_.D0.B8.D0.BD.D1.84.D0.BE.D1.80.D0.BC.D0.B0.D1.86.D0.B8.D1.8F"></a></p>
<h4><span class="mw-headline"> Дополнительная информация </span></h4>
<ul>
<li> <a class="external text" title="http://www-nrg.ee.lbl.gov/" rel="nofollow" href="http://www-nrg.ee.lbl.gov/">LBNL&#8217;s Network Research Group</a> — домашняя страница <strong>arpwatch</strong></li>
</ul>
<p><a name=".D0.9E.D0.B1.D0.BD.D0.B0.D1.80.D1.83.D0.B6.D0.B5.D0.BD.D0.B8.D0.B5_.D1.83.D0.B7.D0.BB.D0.B0.2C_.D0.B2.D1.8B.D0.BF.D0.BE.D0.BB.D0.BD.D1.8F.D1.8E.D1.89.D0.B5.D0.B3.D0.BE_ARP-spoofing"></a></p>
<h3><span class="mw-headline"> Обнаружение узла, выполняющего ARP-spoofing </span></h3>
<dl>
<dd> <em>Основная статья: <a title="Поиск хоста по MAC-адресу" href="http://xgu.ru/wiki/%D0%9F%D0%BE%D0%B8%D1%81%D0%BA_%D1%85%D0%BE%D1%81%D1%82%D0%B0_%D0%BF%D0%BE_MAC-%D0%B0%D0%B4%D1%80%D0%B5%D1%81%D1%83">Поиск хоста по MAC-адресу</a></em> </dd>
</dl>
<p>Если коммутатор управляемый,  можно определить,  на каком из его портов работает узел, имеющий определённый MAC-адрес.</p>
<p>Например, это можно сделать с помощью скрипта <a class="external text" title="http://xgu.ru/downloads/mac2port" rel="nofollow" href="http://xgu.ru/downloads/mac2port">mac2port</a>. Скрипт связывается с коммутатором по SNMP и опрашивает его таблицу соответствия MAC-адресов портам. Полученная информация выдаётся в удобном для поиска виде на стандартный поток вывода. Для упрощения использования скрипт выводит MAC-адреса в таком же формате, как это делает arpwatch.</p>
<p>Условия для использования скрипта:</p>
<ul>
<li> скрипт должен быть размещён в каталоге /usr/local/bin, или другом каталоге указанном в PATH;</li>
<li> скрипт должен быть исполняемым (chmod +x mac2port) или вызываться с интерпретатором perl;</li>
<li> в теле скрипта должен быть указан IP-адрес коммутатора и его SNMP RO community;</li>
<li> коммутатор должен поддерживать SNMP версии 2; поддержка должна быть включена (не сложно переписать скрипт на более безопасный протокол SNMPv3, но эта версия работает именно с SNMPv2).</li>
</ul>
<p>Пример использования скрипта:</p>
<pre>%# ./mac2port
0:4:76:a1:ef:bb -&gt;  1
0:a:1:d4:d1:e3 -&gt;  2
0:15:60:79:8e:c0 -&gt;  0
0:4:75:75:46:b1 -&gt;  3
0:a:1:d4:d1:39 -&gt;  44</pre>
<p>Если ранее с помощью arpwatch была зафиксирована атака:</p>
<pre>%# cat /var/log/daemon.log | grep 'changed ethernet address'
Jun 21 08:37:09 s_all@linux2/192.168.15.201 arpwatch: changed ethernet address 192.168.15.254 0:a:1:d4:d1:e3 (0:a:1:d4:d1:39) eth0</pre>
<p>можно воспользоваться скриптом, и определить с какого порта коммутатора она производилась  (при этом не имеет значения, истинный ли это MAC-адрес сетевой карты атакующего или он был изменён):</p>
<pre>%# mac=$(cat /var/log/daemon.log | grep 'changed ethernet address' | awk '{print $10}')
%# ./mac2port | grep $mac
0:a:1:d4:d1:e3 -&gt;  2</pre>
<p>Важно чтобы определение выполнялось быстро,  пока информация об атакующем ещё хранится в памяти коммутатора.</p>
<p>Для этого имеет смысл вызывать скрипт поиска автоматически при обнаружении соответствующей записи в системном журнале. Анализ журнала можно выполнять, например, такими средствами как <strong>swatch</strong> или <strong>syslog-ng</strong>.</p>
<p>Например, если используется syslog-ng.<br />
можно создать скрипт, выполняющий анализ:</p>
<p><strong>/usr/local/bin/syslog-ng-arpwatch </strong></p>
<pre><strong><span style="color:#5f9ea0;">#!/bin/sh
</span></strong>
<strong><span style="color:#a020f0;">PATH</span></strong>=$<strong><span style="color:#a020f0;">PATH</span></strong>:/usr/local/bin

<strong><span style="color:#a020f0;">while</span></strong> <strong><span style="color:#a020f0;">read</span></strong> line
<strong><span style="color:#a020f0;">do</span></strong>
mac=<strong><span style="color:#bc8f8f;">"$(echo $line | grep 'changed ethernet address' | awk '{print $10}')"</span></strong>
[ -z <strong><span style="color:#bc8f8f;">"$mac"</span></strong>] &amp;&amp; <strong><span style="color:#a020f0;">continue</span></strong>
( <strong><span style="color:#a020f0;">echo</span></strong> POSSIBLY ARP-SPOOFING FROM:; mac2port | grep <strong><span style="color:#bc8f8f;">"$mac"</span></strong> )| logger -t   arp-spoofing
<strong><span style="color:#a020f0;">done</span></strong></pre>
<p>и подключить его к syslog-ng.</p>
<p>Для этого нужно в конфигурационном файле syslog-ng.conf указать следующие строки:</p>
<pre class="file">destination dp_arpspoofing {
        program("/usr/local/bin/syslog-ng-arpwatch");
};
filter f_arpspoofing {
        match ("arpwatch");
};
log {
        source(s_all);
        filter (f_arpspoofing);
        destination(dp_arpspoofing);
};</pre>
<p>Строку</p>
<pre>       filter (f_arpspoofing);</pre>
<p>можно и не указывать, но на нагруженных системах,  она существенно снижает нагрузку.</p>
<p>В этом случае при выполнении arp-spoofing&#8217;а происходит следующее:  </p>
<p><img src="http://xgu.ru/w/images/graphviz/4fbbbe38c2995bb8d265985cd0b77667.png" alt="" /></p>
<ol>
<li> Демон <strong>arpwatch</strong> кидает информацию в syslog (через стандартный сокет <tt>/dev/log</tt> или <tt>/var/run/log</tt>);</li>
<li> В том случае, если в качестве syslog-сервера используется Syslog-NG, он обнаруживает сигнатуру сообщения и передаёт обнаруженную строку скрипту <strong>syslog-ng-arpwatch</strong>;</li>
<li> Скрипт <strong>syslog-ng-arpwatch</strong>, если видит, что проблема действительная связана с ARP-spoofing&#8217;ом, вызывает скрипт поиска порта по MAC-адресу;</li>
<li> Скрипт <strong>mac2port</strong> обращается к коммутатору по SNMP;</li>
<li> Коммутатор отвечает — передаёт таблицы содержащую информацию о соответствии MAC-адресов портам вызвавшему его скрипту;</li>
<li> Скрипт <strong>mac2port</strong> возвращает таблицу соответствия MAC-адресов портам коммутатора скрипту <strong>syslog-ng-arpwatch</strong>;</li>
<li> Скрипт <strong>syslog-ng-arpwatch</strong> находит интересующий порт и пишет сообщение в syslog;</li>
<li> Демон <strong>syslog-ng</strong> записыват сообщение с информацией о порте коммутатора в файл, а также может передать его по SMS или почте администратору или вызвать внешнюю программу (которая, например, после дополнительных проверок может заблокировать порт коммутатора);</li>
<li> Администратор читает об обнаруженной атаке в файле.</li>
</ol>
<p>Вот как это выглядит в файле:</p>
<pre>Jun 21 13:55:23 s_all@linux3 arp-spoofing: POSSIBLY ARP-SPOOFING FROM:
Jun 21 13:55:23 s_all@linux3 arp-spoofing: 0:a:1:d4:d1:e3 -&gt;  2</pre>
<p><a name=".D0.A2.D0.B5.D0.BA.D1.81.D1.82_.D1.81.D0.BA.D1.80.D0.B8.D0.BF.D1.82.D0.B0_mac2port"></a></p>
<h4><span class="mw-headline"> Текст скрипта mac2port </span></h4>
<pre><em><span style="color:#b22222;">#!/usr/bin/perl
</span></em>
our $community = <strong><span style="color:#bc8f8f;">"public"</span></strong>;
our $switch = <strong><span style="color:#bc8f8f;">"192.168.15.100"</span></strong>;

<strong><span style="color:#a020f0;">open</span></strong>(SNMP,<strong><span style="color:#bc8f8f;">"snmpwalk -On -OQ -v2c -c $community $switch .1.3.6.1.2.1.17.4.3.1.1|"</span></strong>)
 <strong><span style="color:#a020f0;">or</span></strong> <strong><span style="color:#a020f0;">die</span></strong> <strong><span style="color:#bc8f8f;">"Can't run snmpwalk"</span></strong>;
<strong><span style="color:#a020f0;">while</span></strong> (&lt;SNMP&gt;)
{
        <strong><span style="color:#a020f0;">chomp</span></strong>;
        <strong><span style="color:#a020f0;">s</span></strong>@.1.3.6.1.2.1.17.4.3.1.1@@;
        <strong><span style="color:#a020f0;">my</span></strong> ($oid, $mac) = <strong><span style="color:#a020f0;">split</span></strong> /=\<strong><span style="color:#a020f0;">s</span></strong>*/;

        $_=$mac;
        <strong><span style="color:#a020f0;">s</span></strong>@<strong><span style="color:#bc8f8f;">"@@g; s@\s*$@@; s@ @:@g; s@(.)@\l\1@g; s@^0@@; s@:0@:@g;
        $mac_table{$_}=$oid;
}
close(SNMP);

open(SNMP,"</span></strong>snmpwalk -On -OQ -v2c -c $community $switch .1.3.6.1.2.1.17.4.3.1.2|<strong><span style="color:#bc8f8f;">")
 or die "</span></strong>Can<strong><span style="color:#bc8f8f;">'t run snmpwalk";
while (&lt;SNMP&gt;)
{
        chomp;
        s@.1.3.6.1.2.1.17.4.3.1.2@@;
        my ($oid, $port) = split /=/;
        $ports_table{$oid}=$port;
}
close(SNMP);

for $oid (keys %mac_table) {
        print "$oid -&gt; ".$ports_table{$mac_table{$oid}}."\n";
}
</span></strong></pre>
<hr />
<address>Generated by <a href="http://www.iki.fi/%7Emtr/genscript/">GNU enscript 1.6.4</a>.</address>
<p><a name=".D0.94.D1.80.D1.83.D0.B3.D0.B8.D0.B5_.D1.81.D1.80.D0.B5.D0.B4.D1.81.D1.82.D0.B2.D0.B0_.D0.BE.D0.B1.D0.BD.D0.B0.D1.80.D1.83.D0.B6.D0.B5.D0.BD.D0.B8.D1.8F"></a></p>
<h3><span class="mw-headline"> Другие средства обнаружения </span></h3>
<ul>
<li> <a class="external text" title="http://www.chrismc.de/" rel="nofollow" href="http://www.chrismc.de/">XArp</a> — аналог arpwatch для Windows</li>
<li> <a class="external text" title="http://www.raccoon.kiev.ua/projects/remarp/" rel="nofollow" href="http://www.raccoon.kiev.ua/projects/remarp/">remarp</a> — аналог arpwatch, работающий через SNMP</li>
<li> * <a class="external text" title="http://arpstar.sourceforge.net/" rel="nofollow" href="http://arpstar.sourceforge.net/">ArpStar</a> — система автоматического обнаружения и предотвращения ARP-spoofing&#8217;a; возможно восстановление ARP-таблицы заражённых узлов</li>
</ul>
<p><a name=".D0.9C.D0.B5.D1.82.D0.BE.D0.B4.D1.8B_.D0.BF.D1.80.D0.B5.D0.B4.D0.BE.D1.82.D0.B2.D1.80.D0.B0.D1.89.D0.B5.D0.BD.D0.B8.D1.8F"></a></p>
<h2><span class="mw-headline"> Методы предотвращения </span></h2>
<div style="border:1px solid #b3ffb3;float:right;margin:2px;padding:3px;">
<table style="background:#e0ffe8 none repeat scroll 0 0;width:338px;" border="0" cellspacing="0">
<tbody>
<tr>
<td style="font-size:8pt;line-height:1.25em;padding:4pt;"><strong>Одностороняя атака</strong></p>
<p>Если нужно перехватить трафик, который уходит с какого-то узла  в сети во внешнюю сеть, атаковать нужно узел и шлюз сети.  Однако на шлюзе средство обнаружения ARP-spoofing&#8217;а может присутствовать с намного более высокой вероятностью, чем на узле. Поскольку нас интересует трафик, который узел <em>отправляет</em> в сеть, достаточно модифицировать ARP-таблицу только узла и не рисковать быть замеченным шлюзом. Данные, которые шлюз отправляет узлу будут проходить напрямую, а данные, которые узел отправляет шлюзу будут проходить через систему злоумышленника.</p>
<p>(как на шлюзе, так и на узле можно было бы отследить, что на пакетах приходящих от узла MAC-адреса отличаются от тех, что записаны у него в ARP-таблице,  т.е. что пакеты отправляются на один MAC-адрес,  а приходят с другого. Но вот какие системы это делают?)</td>
</tr>
</tbody>
</table>
</div>
<p>Борьба с ARP-spoofing&#8217;ом с помощью <strong>arpwatch</strong> и подобных инструментов оказывается хотя и очень простой,  но далеко не эффективной.</p>
<ul>
<li> Во-первых, для того чтобы зафиксировать атаку, на защищаемых узлах должна работать программа arpwatch (или аналогичная). В том случае если она запущена только на одном из двух узлов, подвергающихся ARP-spoofing&#8217;у, существует возможность незамеченной односторонней атаки.</li>
<li> Во-вторых, и это более важно, <strong>arpwatch</strong> позволяет только зафиксировать атаку, но он не в состоянии её предотвратить.</li>
</ul>
<p>Для предотвращения последствий атаки необходимо вмешательство администратора или внешней системы. В первом случае между обнаружением и реакцией администратора может пройти слишком много времени. Во втором вмешательство не требуется, реакция выполняется автоматически:  как только ARP-аномалия зафиксирована, определяется порт коммутатора,  к которому подключён источник аномалии,  и порт блокируется до выяcнения. Однако, такой подход имеет большой недостаток &#8212; он может быть использован  для выполнения DOS атаки: достаточно только узнать MAC адрес компьютера, который надо отключит от сети, и сымитировать атаку с этого компьютера. Дальше наша система обнаружения и предотвращения ARP-spoofing&#8217;а  все сделает сама.</p>
<p>В основе рассматриваемых способов противодействия ARP-атакам  лежат два совершенно раличных принципа,  каждый из которых обладает как достоинствами, так и недостатками.</p>
<p>Оба способа, помимо того что они надёжно защищают от ARP-spoofing&#8217;а имеют ещё то преимущество, что позволяют полностью контролировать  трафик &#8212; не только тот, что проходит через шлюз,  но и тот, который циркулирует между машинами (В случае использования PPPoE машины могут по взаимному согласию  обмениваться данными между собой напрямую. В случае использования VLAN такой возможности они лишены напрочь.)</p>
<p><a name=".D0.A1.D1.82.D0.B0.D1.82.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.B8.D0.B9_ARP"></a></p>
<h3><span class="mw-headline"> Статический ARP </span></h3>
<p>Можно бороться со слабостями протокола ARP кардинально &#8212; просто не использовать его. ARP-таблицу можно сформировать вручную, при этом она становится неуязвимой к ARP-атакам. Для этого нужно добавить необходимые MAC-адреса в таблицу.</p>
<p>Если при этом отключить использование ARP на сетевых интерфейсах,  то доступны будут только те системы, (1) MAC-адреса которых добавлены в ARP-таблицу нашего узла и (2) наш MAC-адрес добавлен в  ARP-таблицы узлов, с которыми производится обмен трафиком.</p>
<p>Если не отключать использование ARP на сетевых интерфейсах,  MAC-адрес заданный статически имеет приоритет. Если MAC-адрес для какого-то IP-адреса не задан, используется ARP-запрос.</p>
<p>Статическую ARP-таблицу можно получить на основе существующей ARP-таблицы маршрутизатора:</p>
<pre>%# arp -an | grep -v incom | awk '{print $2" "$4}' | tr -d '()'</pre>
<p>Если написать так:</p>
<pre>%# arp -an | grep -v incom | awk '{print $2" "$4}' | tr -d '()' &gt; /etc/ethers</pre>
<p>она запишется в файл /etc/ethers</p>
<p>Нужно чтобы в таблице было максимальное количество машин сети. Нужно или строить таблицу в момент пика сетевой активности или предварительно пройдясь по всему диапазону адресов пингами:</p>
<pre><strong><span style="color:#a020f0;">for</span></strong> i <strong><span style="color:#a020f0;">in</span></strong> `seq 1 255`
<strong><span style="color:#a020f0;">do</span></strong>
    ping -c 1 192.168.15.$i &gt;&amp; /dev/null &amp;
<strong><span style="color:#a020f0;">done</span></strong></pre>
<p>(здесь 192.168.15.0/24 — сеть, для которой выполняется сканирование).</p>
<p>После того как файл <tt>/etc/ethers</tt> создан, его можно загружать с помощью команды:</p>
<pre>%# arp -f /etc/ethers</pre>
<p>Дальше можно вообще отключить ARP на интерфейсе, и те кто не прописан в /etc/ethers, вообще не смогут пользоваться маршрутизатором.</p>
<pre>%# ifconfig eth1 -arp</pre>
<p><a name=".D0.9F.D1.80.D0.B5.D0.B8.D0.BC.D1.83.D1.89.D0.B5.D1.81.D1.82.D0.B2.D0.B0_.D0.B8_.D0.BD.D0.B5.D0.B4.D0.BE.D1.81.D1.82.D0.B0.D1.82.D0.BA.D0.B8"></a></p>
<h4><span class="mw-headline"> Преимущества и недостатки </span></h4>
<p>Метод ручного формирования ARP-таблиц имеет следующие недостатки:</p>
<ul>
<li> добавляется много рутинной работы, связанной с добавлением и модификацией MAC-адресов. Каждое изменение в сети, связанное с заменой или перестановкой сетевых карт, должно сопровождаться редактирование ARP-таблиц в файлах.</li>
<li> клиентские узлы остаются по-прежнему уязвимыми к ARP-spoofing&#8217;у.</li>
</ul>
<p><a name=".D0.9F.D0.B0.D1.82.D1.87.D0.B8_.D1.8F.D0.B4.D1.80.D0.B0_.D1.81.D0.B8.D1.81.D1.82.D0.B5.D0.BC.D1.8B"></a></p>
<h3><span class="mw-headline"> Патчи ядра системы </span></h3>
<p>Существует патч (предложенные buggzy) для ядер Linux/FreeBSD, который позволяет свести к минимуму опасность успешного выполнения атаки ARP-spoofing против пропатченных систем.</p>
<p>Суть метода состоит в следующем. При приеме ARP-ответа производится сравнение старого и нового MAC-адресов, и при обнаружении его изменения запускается процедура верификации.  Посылается ARP-запрос, требующий всем хозяевам IP-адреса сообщить свои MAC-адреса.</p>
<p>Если выполняется атака настоящая система, имеющая этот IP-адрес, ответит на запрос, и,  таким образом, атака будет распознана. Если же изменение MAC-адреса было связано не с атакой, а со стандартными ситуациями, ответа,  содержащего &laquo;старый&raquo; MAC-адрес, не будет, и по прошествию определенного таймаута система обновит запись в кеше.</p>
<p>При обнаружении подозрительной ситуации (&laquo;двойника&raquo;) ядро выводит сообщение: &laquo;ARP_ANTIDOTE: Possible MITM attempt!&raquo;, и не обновляет запись ARP-кеша, а наоборот,  прописывает старую запись как статическую.  После того как источник атаки выявлен и обезврежен,  статическую запись можно удалить.</p>
<p>Патчи, реализующие этот метод борьбы:</p>
<ul>
<li> <a class="external text" title="http://www.securitylab.ru/analytics/216229.php" rel="nofollow" href="http://www.securitylab.ru/analytics/216229.php">arp_antidote для Linux</a></li>
<li> <a class="external text" title="http://www.securitylab.ru/analytics/216230.php" rel="nofollow" href="http://www.securitylab.ru/analytics/216230.php">arp_antidote 2 для Linux</a></li>
<li> <a class="external text" title="http://www.securityfocus.com/archive/1/346330" rel="nofollow" href="http://www.securityfocus.com/archive/1/346330">Arp Poison patch для FreeBSD</a></li>
</ul>
<p>Патчи работают только с ядром серии 2.4.</p>
<p><a name=".D0.94.D1.80.D1.83.D0.B3.D0.B8.D0.B5_.D0.BC.D0.B5.D1.82.D0.BE.D0.B4.D1.8B_.D0.B1.D0.BE.D1.80.D1.8C.D0.B1.D1.8B_.D1.81_ARP-spoofing.27.D0.BE.D0.BC"></a></p>
<h3><span class="mw-headline"> Другие методы борьбы с ARP-spoofing&#8217;ом </span></h3>
<p>К сожалению, этот метод не применим к Windows-системам, и другим системам, работающим под управлением ОС, исходный код которых недоступен.</p>
<p>Необходимо решить проблему кардинально: нужно так построить сеть,  чтобы выполнение ARP-spoofing&#8217;а в ней было принципиально невозможно. А если возможным, то бесполезным.</p>
<p>Это можно сделать двумя способами:</p>
<ol>
<li> Ограничить для каждого узла широковещательный домен до уровня двух узлов: самого узла и ближайшего шлюза.  <strong>подробнее. Почему атаку невозможно выполнить в этом случае.</strong> Тогда атаку просто некому выполнять &#8212; нужен третий. А его нет.</li>
<li> Сделать так чтобы все, абсолютно все, передаваемые в сети данные были зашифрованы и прослушивание этих данных, ни к чему бы не привело. Любое же изменение данных, в случае возникновения, сразу же обнаружено. То есть, фактически сеть должна быть такой же и безопасной при использовании вместо коммутатора концентратора.</li>
</ol>
<p>Первый способ делается с помощью VLAN&#8217;ов и/или packet filtering на коммутаторах. Второй &#8212; с помощью PPPoE.</p>
<p><a name=".D0.98.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_VLAN"></a></p>
<h4><span class="mw-headline"> Использование VLAN </span></h4>
<dl>
<dd> <em>Основная статья: <a title="VLAN" href="http://xgu.ru/wiki/VLAN">VLAN</a></em> </dd>
</dl>
<p>Компьютер <strong>C</strong> может использовать ARP-spoofing против компьютера <strong>A</strong> только в том случае, если они находятся в одной сети канального уровня. В том случае, если они разделены маршрутизатором, атака невозможна (возможна атака на маршрутизатор, но это совсем другое дело).</p>
<p>VLAN&#8217;ы помогают сегментировать сеть &#8212; превратить  одну сеть в множество изолированных на канальном уровне фрагментов, которые соединены между собой маршрутизатором. Атака ARP-spoofing возможна только между компьютерами находящимися в одном VLAN&#8217;е. В наиболее крайнем случае, когда в каждом VLAN&#8217;е находится только два компьютера: собственно компьютер и маршрутизатор, атака ARP-spoofing становится невозможной в принципе. К сожалению, такая организация сети являются очень требовательной к ресурсам маршрутизатора и используется редко.</p>
<p><a name=".D0.9F.D1.80.D0.B5.D0.B8.D0.BC.D1.83.D1.89.D0.B5.D1.81.D1.82.D0.B2.D0.B0"></a></p>
<h5><span class="mw-headline"> Преимущества </span></h5>
<ol>
<li> От клиента ничего не требуется. Он работает, как и работал. Если IP-адрес задан статически, необходима смена IP-адреса и сетевой маски.</li>
<li> Данные не шифруются, и производительность не теряется. Малые потери на дополнительные поля в заголовке.</li>
<li> Нельзя организовать обмен данными в обход шлюза между узлами в разных VLAN&#8217;ах. Если каждый узел находится в собственном VLAN&#8217;е такой обмен невозможен вообще.</li>
</ol>
<p><a name=".D0.9D.D0.B5.D0.B4.D0.BE.D1.81.D1.82.D0.B0.D1.82.D0.BA.D0.B8"></a></p>
<h5><span class="mw-headline"> Недостатки </span></h5>
<ol>
<li> Необходима поддержка VLAN&#8217;ов коммутатором.</li>
<li> Необходимо потратить время на настройку VLAN&#8217;ов, дополнительную настройку DHCP&#8217;сервера.</li>
<li> Данные не шифруются. Если их прослушивание каким-то образом удастся, то они могут быть прочтены и/или модифицированы.</li>
</ol>
<table class="messagebox standard-talk" border="0">
<tbody>
<tr>
<td align="center"><a class="image" title="Icon-caution.gif" href="http://xgu.ru/wiki/%D0%98%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5:Icon-caution.gif"><img src="http://xgu.ru/w/images/2/2f/Icon-caution.gif" border="0" alt="" width="50" height="50" /></a></td>
<td align="left">Существует мнение, что некоторые коммутаторы позволяют пересылать трафик из одного VLAN&#8217;а напрямую в другой в обход запрета прямой пересылки кадров между VLAN&#8217;ами. Об одном из способов подробнее можно почитать  на странице <a class="external autonumber" title="http://www.askapache.com/security/bypassing-vlan.html" rel="nofollow" href="http://www.askapache.com/security/bypassing-vlan.html">[1]</a></td>
</tr>
</tbody>
</table>
<p><a name=".D0.98.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_packet_filtering_ACL_.D0.BD.D0.B0_.D0.BA.D0.BE.D0.BC.D0.BC.D1.83.D1.82.D0.B0.D1.82.D0.BE.D1.80.D0.B0.D1.85"></a></p>
<h4><span class="mw-headline"> Использование packet filtering ACL на коммутаторах </span></h4>
<p>Современные коммутаторы Dlink и Cisco поддерживают продвинутые инструменты анализа пакетов и фильтрацию по их параметрам. Существуют два направления фильтрации:</p>
<ol>
<li> Фильтрация всех ARP-пакетов на всех пользовательских портах, у которых в Sender protocol address (SPA) содержится IP-адрес шлюза. Тем самым защищаются от подмены адреса шлюза.</li>
<li> Фильтрация всех ARP-пакетов на каждом из пользовательских портов, у которых Sender hardware address (SHA) и Sender protocol address (SPA) не совпадают с известными заранее MAC и IP-адресами пользователя этого порта. Тем самым защищаются от всех arp-атак, то есть не только адреса шлюза, но и адреса другого пользователя.</li>
</ol>
<p>Настройку ACL для предотвращения ARP-spoofing&#8217;а зачастую увязывают в один комплекс с выдачей ip по <a class="external text" title="http://xgu.ru/wiki/Опция_82_DHCP" rel="nofollow" href="http://xgu.ru/wiki/%D0%9E%D0%BF%D1%86%D0%B8%D1%8F_82_DHCP">DHCP с использованием опции 82</a>, позволяющей выдавать ip по порту устройства и IP-Mac-Port binding, запрещающего подмены IP/MAC на третьем уровне.</p>
<p>Настройка коммутаторов Dlink описана в FAQ(<a class="external text" title="http://dlink.ru/technical/pdf/hub_switch/FAQ_IP_MAC_Port_Binding.pdf" rel="nofollow" href="http://dlink.ru/technical/pdf/hub_switch/FAQ_IP_MAC_Port_Binding.pdf">1</a>, <a class="external text" title="http://dlink.ru/technical/faq_hub_switch_94.php" rel="nofollow" href="http://dlink.ru/technical/faq_hub_switch_94.php">2</a>, <a class="external text" title="http://dlink.ru/technical/faq_hub_switch_90.php" rel="nofollow" href="http://dlink.ru/technical/faq_hub_switch_90.php">3</a>) и на форуме dlink.ru (<a class="external text" title="http://forum.dlink.ru/viewtopic.php?t=65137" rel="nofollow" href="http://forum.dlink.ru/viewtopic.php?t=65137">1</a>, <a class="external text" title="http://forum.dlink.ru/viewtopic.php?t=49495" rel="nofollow" href="http://forum.dlink.ru/viewtopic.php?t=49495">2</a>), настройка коммутаторов ProCurve в <a class="external text" title="http://xgu.ru/wiki/ProCurve_Security#Dynamic_ARP_Protection" rel="nofollow" href="http://xgu.ru/wiki/ProCurve_Security#Dynamic_ARP_Protection">этом wiki</a>.</p>
<p><a name=".D0.9F.D1.80.D0.B5.D0.B8.D0.BC.D1.83.D1.89.D0.B5.D1.81.D1.82.D0.B2.D0.B0_2"></a></p>
<h5><span class="mw-headline"> Преимущества </span></h5>
<ol>
<li> От клиента ничего не требуется. Он работает, как и работал.</li>
<li> Данные не шифруются, и производительность не теряется.</li>
</ol>
<p><a name=".D0.9D.D0.B5.D0.B4.D0.BE.D1.81.D1.82.D0.B0.D1.82.D0.BA.D0.B8_2"></a></p>
<h5><span class="mw-headline"> Недостатки </span></h5>
<ol>
<li> Необходимость приобретения достаточно &laquo;умного&raquo; оборудования на access-уровень</li>
<li> Необходим инструмент по автоматизации привязок и выдачи новых ip в случае легальной смены оборудования пользователем.</li>
<li> Packet filtering запрещает подмены без какого-бы то ни было уведомления в логи.</li>
</ol>
<p><a name=".D0.98.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_PPPoE"></a></p>
<h4><span class="mw-headline"> Использование PPPoE </span></h4>
<dl>
<dd> <em>Основная статья: <a title="PPPoE" href="http://xgu.ru/wiki/PPPoE">PPPoE</a></em> </dd>
</dl>
<p><a name=".D0.9F.D1.80.D0.B5.D0.B8.D0.BC.D1.83.D1.89.D0.B5.D1.81.D1.82.D0.B2.D0.B0_3"></a></p>
<h5><span class="mw-headline"> Преимущества </span></h5>
<ol>
<li> Данные шифруются</li>
<li> Нет никаких требований к железу. Даже не обязательно чтобы сеть была коммутируемой</li>
</ol>
<p><a name=".D0.9D.D0.B5.D0.B4.D0.BE.D1.81.D1.82.D0.B0.D1.82.D0.BA.D0.B8_3"></a></p>
<h5><span class="mw-headline"> Недостатки </span></h5>
<ol>
<li> На клиенте требуется настройка доступа по PPPoE. На некоторых системах требуется инсталляция специального клиентского программного обеспечения.</li>
<li> За счёт потерь на инкапсуляцию, снижается производительность сети. Если выполняется шифрование данных, то временные потери увеличиваются.</li>
<li> При взаимном согласии сторон можно организовать обмен данными между узлами в обход шлюза.</li>
<li> При большом количестве соединений PPPoE (&gt;200) возрастает нагрузка на центральный процессор сервера. Иногда, приходится жертвовать шифрованием данных.</li>
<li> Если будет большая нагрузка на сервер легче использовать PPTPd или IPsec</li>
</ol>
<p><a name=".D0.9C.D0.B8.D1.84.D1.8B_.D0.B8_.D0.B7.D0.B0.D0.B1.D0.BB.D1.83.D0.B6.D0.B4.D0.B5.D0.BD.D0.B8.D1.8F.2C_.D0.BA.D0.B0.D1.81.D0.B0.D1.8E.D1.89.D0.B8.D0.B5.D1.81.D1.8F_ARP-spoofing"></a></p>
<h2><span class="mw-headline"> Мифы и заблуждения, касающиеся ARP-spoofing </span></h2>
<ul>
<li> <strong>ARP-spoofing можно предотвратить с помощью функции port-security коммутаторов</strong></li>
</ul>
<p>Функция port-security коммутатора позволяет защититься от смены MAC-адреса на порту коммутатора. В том случае если компьютер, подключенный к порту коммутатора меняет MAC-адрес или если меняется компьютер, коммутатор замечает подмену и перестаёт передавать пакеты отправленные с новым обратным адресом. Кроме этого, могут выполняться другие действия: отсылка SNMP-трапа, запись в syslog и тому подобное.</p>
<p>При ARP-spoofing&#8217;е MAC-адрес отправителя (атакующего) не меняется и поэтому с точки зрения port-security никаких аномалий нет. Функция port-security никак не отвечает за соответствие IP-адресов и MAC-адресов, а атака ARP-spoofing построена именно на этом.-</p>
<p><a name=".D0.94.D0.BE.D0.BF.D0.BE.D0.BB.D0.BD.D0.B8.D1.82.D0.B5.D0.BB.D1.8C.D0.BD.D0.B0.D1.8F_.D0.B8.D0.BD.D1.84.D0.BE.D1.80.D0.BC.D0.B0.D1.86.D0.B8.D1.8F_2"></a></p>
<h2><span class="mw-headline"> Дополнительная информация </span></h2>
<ul>
<li> <a class="external text" title="http://node99.org/projects/arpspoof/arpspoof.pdf" rel="nofollow" href="http://node99.org/projects/arpspoof/arpspoof.pdf">An introduction to ARP spoofing, Sean Whalen</a> (англ.)</li>
<li> <a class="external text" title="http://ru.wikipedia.org/wiki/ARP-spoofing" rel="nofollow" href="http://ru.wikipedia.org/wiki/ARP-spoofing">ARP-spoofing</a> в русской Википедии</li>
<li> <a class="external text" title="http://en.wikipedia.org/wiki/ARP_spoofing" rel="nofollow" href="http://en.wikipedia.org/wiki/ARP_spoofing">ARP-spoofing</a> в Wikipedia (англ.)</li>
<li> <a class="external text" title="http://www.geocities.com/SiliconValley/Vista/8672/network/arp.html" rel="nofollow" href="http://www.geocities.com/SiliconValley/Vista/8672/network/arp.html">ARP: Questions &amp; Answers</a></li>
<li> <a class="external text" title="http://wiki.openvz.org/Multiple_Network_Interfaces_And_ARP_Flux" rel="nofollow" href="http://wiki.openvz.org/Multiple_Network_Interfaces_And_ARP_Flux">Multiple Network Interfaces And ARP Flux</a> — интересная страница про ARP на wiki-сайте OpenVZ</li>
<li> <a class="external text" title="http://people.debian.org/~terpstra/message/20061007.135106.8667124b.en.html" rel="nofollow" href="http://people.debian.org/%7Eterpstra/message/20061007.135106.8667124b.en.html">Когда появился arp_accept?</a> — обсуждение в списке рассылки debian-russian</li>
</ul>
<p>Заметки на форумах:</p>
<ul>
<li> <a class="external text" title="http://local.com.ua/forum/index.php?showtopic=8081&amp;st=15&amp;#entry54923" rel="nofollow" href="http://local.com.ua/forum/index.php?showtopic=8081&amp;st=15&amp;#entry54923">Про ARP-spoofing на пальцах</a> — заметка на форуме local.com.ua</li>
<li> <a class="external text" title="http://www.linux.org.ru/view-message.jsp?msgid=1985240" rel="nofollow" href="http://www.linux.org.ru/view-message.jsp?msgid=1985240">ARP-spoofing и методы борьбы с ним</a> — обсуждение статьи на форему Linux.org.ru</li>
</ul>
<p><a name=".D0.9C.D0.B0.D1.82.D0.B5.D1.80.D0.B8.D0.B0.D0.BB.D1.8B_.D0.BF.D0.BE_.D0.BA.D0.B0.D0.BD.D0.B0.D0.BB.D1.8C.D0.BD.D0.BE.D0.BC.D1.83_.D1.83.D1.80.D0.BE.D0.B2.D0.BD.D1.8E_.D1.81.D0.B5.D1.82.D0.B8_.D0.BD.D0.B0_xgu.ru"></a></p>
<h2><span class="mw-headline"> Материалы по канальному уровню сети на xgu.ru </span></h2>
<ul>
<li> <a title="ARP" href="http://xgu.ru/wiki/ARP">ARP</a>
<ul>
<li> <a title="Proxy ARP" href="http://xgu.ru/wiki/Proxy_ARP">Proxy ARP</a></li>
</ul>
</li>
<li> <a title="Linux Bridge" href="http://xgu.ru/wiki/Linux_Bridge">Linux Bridge</a>
<ul>
<li> <a title="Man:brctl" href="http://xgu.ru/wiki/Man:brctl">man:brctl</a></li>
</ul>
</li>
<li> <a title="Агрегирование каналов" href="http://xgu.ru/wiki/%D0%90%D0%B3%D1%80%D0%B5%D0%B3%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BA%D0%B0%D0%BD%D0%B0%D0%BB%D0%BE%D0%B2">Агрегирование каналов</a>
<ul>
<li> <a title="Linux Bonding" href="http://xgu.ru/wiki/Linux_Bonding">Linux Bonding</a></li>
</ul>
</li>
<li> <a title="OpenVPN Bridge" href="http://xgu.ru/wiki/OpenVPN_Bridge">OpenVPN Bridge</a>
<ul>
<li> <a title="OpenVPN Proxy ARP" href="http://xgu.ru/wiki/OpenVPN_Proxy_ARP">OpenVPN Proxy ARP</a></li>
</ul>
</li>
</ul>
<p><a title="Безопасность канального уровня" href="http://xgu.ru/wiki/%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%D0%BA%D0%B0%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D1%83%D1%80%D0%BE%D0%B2%D0%BD%D1%8F">Безопасность канального уровня</a>:</p>
<ul>
<li> <a title="Arpwatch" href="http://xgu.ru/wiki/Arpwatch">arpwatch</a>
<ul>
<li> <a title="Man:arpwatch" href="http://xgu.ru/wiki/Man:arpwatch">man:arpwatch</a></li>
</ul>
</li>
<li> <a title="MAC-spoofing" href="http://xgu.ru/wiki/MAC-spoofing">MAC-spoofing</a></li>
<li> <strong class="selflink">ARP-spoofing</strong></li>
<li> <a title="Поиск хоста по MAC-адресу" href="http://xgu.ru/wiki/%D0%9F%D0%BE%D0%B8%D1%81%D0%BA_%D1%85%D0%BE%D1%81%D1%82%D0%B0_%D0%BF%D0%BE_MAC-%D0%B0%D0%B4%D1%80%D0%B5%D1%81%D1%83">Поиск хоста по MAC-адресу</a></li>
<li> <a title="Port security" href="http://xgu.ru/wiki/Port_security">port security</a></li>
<li> <a title="Ebtables" href="http://xgu.ru/wiki/Ebtables">ebtables</a></li>
<li> <a title="Защита от подмены MAC-адреса в домене Xen" href="http://xgu.ru/wiki/%D0%97%D0%B0%D1%89%D0%B8%D1%82%D0%B0_%D0%BE%D1%82_%D0%BF%D0%BE%D0%B4%D0%BC%D0%B5%D0%BD%D1%8B_MAC-%D0%B0%D0%B4%D1%80%D0%B5%D1%81%D0%B0_%D0%B2_%D0%B4%D0%BE%D0%BC%D0%B5%D0%BD%D0%B5_Xen">Защита от подмены MAC-адреса в домене Xen</a></li>
<li> <a title="VLAN" href="http://xgu.ru/wiki/VLAN">VLAN</a></li>
</ul>
<p><a name=".D0.9C.D0.B0.D1.82.D0.B5.D1.80.D0.B8.D0.B0.D0.BB.D1.8B_.D0.BF.D0.BE_.D0.B1.D0.B5.D0.B7.D0.BE.D0.BF.D0.B0.D1.81.D0.BD.D0.BE.D1.81.D1.82.D0.B8_.D0.BD.D0.B0_Xgu.ru"></a></p>
<h2><span class="mw-headline"> Материалы по безопасности на Xgu.ru </span></h2>
<ul>
<li> <a title="Spoofing" href="http://xgu.ru/wiki/Spoofing">Spoofing</a>
<ul>
<li> <a title="MAC-spoofing" href="http://xgu.ru/wiki/MAC-spoofing">MAC-spoofing</a></li>
<li> <strong class="selflink">ARP-spoofing</strong></li>
<li> <a title="IP-spoofing" href="http://xgu.ru/wiki/IP-spoofing">IP-spoofing</a></li>
<li> <a title="DNS-spoofing" href="http://xgu.ru/wiki/DNS-spoofing">DNS-spoofing</a></li>
</ul>
</li>
<li> <a title="BGP Security" href="http://xgu.ru/wiki/BGP_Security">Безопасность BGP</a></li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dotane.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dotane.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dotane.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dotane.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dotane.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dotane.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dotane.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dotane.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dotane.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dotane.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dotane.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dotane.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dotane.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dotane.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dotane.wordpress.com&amp;blog=6867785&amp;post=3&amp;subd=dotane&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dotane.wordpress.com/2009/03/07/arp-spoofing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/569238b46cb71958bbe7e3b3d48c56c5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dotane</media:title>
		</media:content>

		<media:content url="http://xgu.ru/w/images/thumb/e/e8/Arp-spoofing.png/300px-Arp-spoofing.png" medium="image" />

		<media:content url="http://xgu.ru/w/images/graphviz/4fbbbe38c2995bb8d265985cd0b77667.png" medium="image" />

		<media:content url="http://xgu.ru/w/images/2/2f/Icon-caution.gif" medium="image" />
	</item>
		<item>
		<title>Hello world!</title>
		<link>http://dotane.wordpress.com/2009/03/07/hello-world/</link>
		<comments>http://dotane.wordpress.com/2009/03/07/hello-world/#comments</comments>
		<pubDate>Sat, 07 Mar 2009 21:13:18 +0000</pubDate>
		<dc:creator>dotane</dc:creator>
				<category><![CDATA[MS Windows]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dotane.wordpress.com&amp;blog=6867785&amp;post=1&amp;subd=dotane&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Welcome to <a href="http://wordpress.com/">WordPress.com</a>. This is your first post. Edit or delete it and start blogging!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dotane.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dotane.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dotane.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dotane.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dotane.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dotane.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dotane.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dotane.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dotane.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dotane.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dotane.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dotane.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dotane.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dotane.wordpress.com/1/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dotane.wordpress.com&amp;blog=6867785&amp;post=1&amp;subd=dotane&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dotane.wordpress.com/2009/03/07/hello-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/569238b46cb71958bbe7e3b3d48c56c5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dotane</media:title>
		</media:content>
	</item>
	</channel>
</rss>
