Различия между версиями 16 и 19 (по 3 версиям)
Версия 16 от 2008-07-11 18:15:00
Размер: 7541
Редактор: BorisTsema
Комментарий:
Версия 19 от 2008-07-12 16:27:57
Размер: 7727
Редактор: BorisTsema
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 3: Строка 3:
Ранее мы настроили фаерволл ручным образом. Но писать большое количество правил достаточно неудобно и желание полуавтоматизировать каким-нибудь образом этот процесс вполне естесственно. Существует два способа сделать это. Первый достался по наследству от дистрибутива Mandrake и позволяет записать все правила кучей в {{{/etc/sysconfig/iptables}}}. Теперь они будут добавляться при запуске iptables. Второй способ -- вписать нужные настройки в соответствующий подкаталог {{{/etc/net/}}}.

''Не
очень понятно, к чему относится следующий абзац. Ничего не пропущено в лекциях? '' [[BorisTsema]]
Посмотрим
в {{{/usr/share/doc/etcnet-<version>/examples/firewall-hiddenman/ifaces/default/fw/iptables/nat}}} и сделаем {{{cat POSTROUTING}}}
Ранее мы вручную настроили фаерволл, но писать большое количество правил неудобно и желание полуавтоматизировать процесс вполне естесственно. Существует два способа сделать это. Первый достался по наследству от дистрибутива Mandrake и позволяет записать все правила кучей в {{{/etc/sysconfig/iptables}}}. Теперь они будут добавляться при запуске iptables. Второй способ -- вписать нужные настройки в подкаталог {{{/etc/net/}}}. Полную информацию о том, как это делать можно прочитать в {{{/usr/share/doc/etcnet-<version>/examples/firewall-hiddenman/ifaces/default/fw/iptables/nat}}}:
Строка 16: Строка 12:
Для примера настроим NAT для второй машины на интерфейсе eth1, и заблокируем соединения с некоторым адресом. Настройки eth0 на второй машине и соединённого с ним eth1 на первой не приводятся по причине рассмотренности ранее [[http://uneex.lorien.cs.msu.su/PspoClasses/080703/04EtcNetAndDHCP|Автоматическая настройка сетевых подключений]]. Для того, чтобы серверная машина смогла маршрутизировать пакеты необходимо включить в {{{/etc/net/sysctl.conf}}} опцию {{{net.ipv4.ip_forward}}}: Для примера настроим NAT для второй машины на интерфейсе eth1 и заблокируем соединения с некоторым адресом. Настройки интерфейса eth0 на второй машине и соединённого с ним eth1 на первой не приводятся по причине рассмотренности ранее [[http://uneex.lorien.cs.msu.su/PspoClasses/080703/04EtcNetAndDHCP|Автоматическая настройка сетевых подключений]]. Для того, чтобы серверная машина смогла маршрутизировать пакеты необходимо включить в {{{/etc/net/sysctl.conf}}} опцию {{{net.ipv4.ip_forward}}}:
Строка 42: Строка 38:
Итак, мы добились включения и выключения iptables через /etc/net. При этом iptables может быть выключен по умолчанию (например, в Lite), в таком случае редактирование /etc/net не приведёт к его работе -- фаерволл следует сначала включить. Итак, мы добились включения и выключения iptables через /etc/net. При этом iptables может быть выключен по умолчанию (например, в версии дистрибутива Lite), в таком случае редактирование /etc/net не приведёт к его работе -- фаерволл следует сначала включить.
Строка 52: Строка 48:
Обратите внимание, что мы написали правила для перенаправляемых пакетов, следовательно к пакетам, отправленным с маршрутизатора, эти правила не применяются. Проверка: Обратите внимание, что мы написали правила для перенаправляемых пакетов, следовательно к пакетам, отправленным с маршрутизатора, эти правила не применяются. Проверим, что получилось.
Строка 54: Строка 50:
на demo (серверной машине) На demo (серверной машине) попробуем соединиться с 80 портом:
Строка 76: Строка 72:
всё работает. Соединение проходит, пакеты идут в обе стороны.
Строка 78: Строка 74:
на localhost (клиентской) Попробуем соединиться с linux.org.ru с клиентской машины localhost, использующей demo в качестве роутера:
Строка 82: Строка 78:
не работает.

на demo
Соединения обрываются роутером, и в логах на demo появляется запись:
Строка 98: Строка 92:
|| 45 || 1 || 1 || 1 || || 1 || MaximByshevskiKonopko, BorisTsema || || || || 50 || 1 || 1 || 1 || || 1 || MaximByshevskiKonopko, BorisTsema || || ||

Практика использования iptables: продолжение

Ранее мы вручную настроили фаерволл, но писать большое количество правил неудобно и желание полуавтоматизировать процесс вполне естесственно. Существует два способа сделать это. Первый достался по наследству от дистрибутива Mandrake и позволяет записать все правила кучей в /etc/sysconfig/iptables. Теперь они будут добавляться при запуске iptables. Второй способ -- вписать нужные настройки в подкаталог /etc/net/. Полную информацию о том, как это делать можно прочитать в /usr/share/doc/etcnet-<version>/examples/firewall-hiddenman/ifaces/default/fw/iptables/nat:

# cat POSTROUTING 
snat-to 5.6.7.8 if marked as 1

Для примера настроим NAT для второй машины на интерфейсе eth1 и заблокируем соединения с некоторым адресом. Настройки интерфейса eth0 на второй машине и соединённого с ним eth1 на первой не приводятся по причине рассмотренности ранее Автоматическая настройка сетевых подключений. Для того, чтобы серверная машина смогла маршрутизировать пакеты необходимо включить в /etc/net/sysctl.conf опцию net.ipv4.ip_forward:

# grep forward sysctl.conf 
# IPv4 packet forwarding.
net.ipv4.ip_forward = 0
# sed -i '/net.ipv4.ip_forward = 0/s/0/1/' sysctl.conf 
# grep forward sysctl.conf 
# IPv4 packet forwarding.
net.ipv4.ip_forward = 1

Создадим каталог fw/iptables/nat в /etc/net/ifaces/eth0:

# cd /etc/net/ifaces/eth0
# mkdir -p fw/iptables/nat
# cp fw/iptables/nat
# echo 'snat-to 10.0.2.15' > POSTROUTING

Существует проблема управления iptables в etc-net, связанная с различными форматами синтаксиса. В файле документации /etc/net/ifaces/default/fw/iptables/syntax описано их взаимооднозначное соответствие. В связи с этим правильно заменить ip-адрес на ${IPV4ADDRESS}:

# echo '-j SNAT --to-source ${IPV4ADDRESS}' > POSTROUTING

Итак, мы добились включения и выключения iptables через /etc/net. При этом iptables может быть выключен по умолчанию (например, в версии дистрибутива Lite), в таком случае редактирование /etc/net не приведёт к его работе -- фаерволл следует сначала включить.

Для примера попробуем забанить сайт linux.org.ru. Добавим правило (по умолчанию используется таблица filter, но мы это традиционно укажем явно)

iptables -t filter -A FORWARD -d linux.org.ru -j LOG --log-level warning
iptables -t filter -A FORWARD -d linux.org.ru -j DROP

Первой строчкой мы добавили в syslog предупреждение о попытке посещения неким пользователем указанного сайта, а второй оборвали связь.

Обратите внимание, что мы написали правила для перенаправляемых пакетов, следовательно к пакетам, отправленным с маршрутизатора, эти правила не применяются. Проверим, что получилось.

На demo (серверной машине) попробуем соединиться с 80 портом:

# cal | netcat linux.org.ru 80
HTTP/1.1 400 Bad Request
Date: Tue, 08 Jul 2008 15:19:53 GMT
Server: Apache/2.2.8 (Fedora)
Content-Length: 352
Connection: close
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
Request header field is missing ':' separator.<br />
<pre>
Su Mo Tu We Th Fr Sa       1  2  3  4  5 6  7  8  9 10 11 12</pre>
</p>
</body></html>

Соединение проходит, пакеты идут в обе стороны.

Попробуем соединиться с linux.org.ru с клиентской машины localhost, использующей demo в качестве роутера:

# cal | netcat linux.org.ru 80

Соединения обрываются роутером, и в логах на demo появляется запись:

# tail -2 /var/log/syslog/messages
Jul  8 19:19:13 demo kernel: IN=eth1 OUT=eth0 SRC=172.16.0.2 DST=217.76.32.61 LEN=52 TOS=0x00 PREC=0x00 TTL=63 ID=16897 DF PROTO=TCP SPT=1395 DPT=80 WINDOW=5840 RES=0x00 SYN URGP=0 
Jul  8 19:19:16 demo kernel: IN=eth1 OUT=eth0 SRC=172.16.0.2 DST=217.76.32.61 LEN=52 TOS=0x00 PREC=0x00 TTL=63 ID=16898 DF PROTO=TCP SPT=1395 DPT=80 WINDOW=5840 RES=0x00 SYN URGP=0


Сведения о ресурсах

Готовность (%)

Продолжительность (ак. ч.)

Подготовка (календ. ч.)

Полный текст (раб. д.)

Предварительные знания

Level

Maintainer

Start date

End date

50

1

1

1

1

MaximByshevskiKonopko, BorisTsema


CategoryLectures CategoryPspo CategoryMpgu CategoryUneex

PspoClasses/080708/03IptablesPractice (последним исправлял пользователь MaximByshevskiKonopko 2008-10-09 21:33:04)