Различия между версиями 4 и 7 (по 3 версиям)
Версия 4 от 2008-07-08 22:54:04
Размер: 6343
Редактор: MaximByshevskiKonopko
Комментарий:
Версия 7 от 2008-07-08 23:43:03
Размер: 7334
Редактор: MaximByshevskiKonopko
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 3: Строка 3:
Вот мы понастраивали фаервол ручным образом. Очевидно, что если есть много правил, в разное время появившихся, то достаточно неудобно писать их все вручную. Первый способ это полуавтоматизировать: /etc/sysconfig/iptables (осталось от Mandrake). Туда можно написать все правила кучей, и они будут добавляться при запуске iptables. Вот мы понастраивали фаервол ручным образом. Очевидно, что если есть много правил, в разное время появившихся, то достаточно неудобно писать их все вручную. Первый способ это полуавтоматизировать: {{{/etc/sysconfig/iptables}}} (осталось от Mandrake). Туда можно написать все правила кучей, и они будут добавляться при запуске iptables.
Строка 5: Строка 5:
Второй способ --- вписать нужные настройки в соответствующий подкаталог /etc/net/. Второй способ --- вписать нужные настройки в соответствующий подкаталог {{{/etc/net/}}}.
Строка 7: Строка 7:
Посмотрим в /usr/share/doc/etcnet-<version>/examples/firewall-hiddenman/ifaces/default/fw/iptables/nat и сделаем cat POSTROUTING Посмотрим в {{{/usr/share/doc/etcnet-<version>/examples/firewall-hiddenman/ifaces/default/fw/iptables/nat}}} и сделаем {{{cat POSTROUTING}}}
Строка 17: Строка 17:
Для примера, настроим для второй машины, подключенной по eth1, NAT, и заблокируем для неё соединения с некоторым адресом. Для примера, настроим для второй машины, подключенной по eth1, NAT, и заблокируем для неё соединения с некоторым адресом. Настройки eth0 на второй машине и соединённого с ним eth1 на первой не приводятся по причине рассмотренности ранее (ссылка на настройку сети через {{{/etc/net}}}). Для того, чтобы серверная машина смогла-таки маршрутизировать пакеты, включаем в /etc/net/sysctl.conf опцию net.ipv4.ip_forward:
{{{
# grep fo^GrESC[Kward sysctl.conf
# IPv4 packet forwarding.
  = 0
# sed -i 'sESC[ESC[K/net.ipv4.ip_forward = 0ESC[KsESC[ESC[K/s/0/1/' sysctl.conf
# grep forward sysctl.conf
# IPv4 packet forwarding.
net.ipv4.ip_forward = 1
}}}
Строка 19: Строка 28:
Создаём каталоги fw/iptables/nat в /etc/net/ifaces/eth0: Создаём каталоги {{{fw/iptables/nat}}} в {{{/etc/net/ifaces/eth0}}}:
Строка 27: Строка 36:
Проблема вот какая: существует два синтаксиса управления iptables в etc-net. Один с синтаксисом iptables, другой human-readable. Есть в документации файл, который описывает взаимооднозначное соответствие этих форматов: /etc/net/ifaces/default/fw/iptables/syntax Проблема вот какая: существует два синтаксиса управления iptables в etc-net. Один с синтаксисом iptables, другой human-readable. Есть в документации файл, который описывает взаимооднозначное соответствие этих форматов: {{{/etc/net/ifaces/default/fw/iptables/syntax}}}
Строка 38: Строка 47:
Чего мы добились? Включение и выключение iptables через /etc/net. При этом iptables вообще может быть выключен по умолчанию (например, в Lite), и как вы не редактируете /etc/net, пока вы не включите, оно бы не заработало. Тем не менее, iptables неявно включился.

##У нас настрйка уестуе вручную в правильном порядке уже была, такие ручные поделки делат не рекомендуется, и делать это надо либо центром управления, либо правкой /etc/net
Чего мы добились? Включение и выключение iptables через /etc/net. При этом iptables вообще может быть выключен по умолчанию (например, в Lite), и как вы не редактируете /etc/net, пока вы не включите, оно бы не заработало.
Строка 52: Строка 59:
на demo на demo (серверной машине)
Строка 55: Строка 62:
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>
Строка 58: Строка 83:
на localhost на localhost (клиентской)
Строка 78: Строка 103:
|| 15 || 1 || 1 || 1 || || 1 || MaximByshevskiKonopko, BorisTsema || || || || 19 || 1 || 1 || 1 || || 1 || MaximByshevskiKonopko, BorisTsema || || ||

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

Вот мы понастраивали фаервол ручным образом. Очевидно, что если есть много правил, в разное время появившихся, то достаточно неудобно писать их все вручную. Первый способ это полуавтоматизировать: /etc/sysconfig/iptables (осталось от Mandrake). Туда можно написать все правила кучей, и они будут добавляться при запуске iptables.

Второй способ --- вписать нужные настройки в соответствующий подкаталог /etc/net/.

Посмотрим в /usr/share/doc/etcnet-<version>/examples/firewall-hiddenman/ifaces/default/fw/iptables/nat и сделаем cat POSTROUTING

# cat POSTROUTING 
snat-to 5.6.7.8 if marked as 1

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

# grep fo^GrESC[Kward sysctl.conf 
# IPv4 packet forwarding.
  = 0
# sed -i 'sESC[ESC[K/net.ipv4.ip_forward = 0ESC[KsESC[ESC[K/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. Один с синтаксисом iptables, другой human-readable. Есть в документации файл, который описывает взаимооднозначное соответствие этих форматов: /etc/net/ifaces/default/fw/iptables/syntax

Чтобы было совсем правильно, заменить ip-адрес на ${IPV4ADDRESS}:

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

В задачу этой лекции не входило рассказать про весь iptables и etcnet, лектор только хотел показать примеры работы с ними.

Чего мы добились? Включение и выключение iptables через /etc/net. При этом iptables вообще может быть выключен по умолчанию (например, в Lite), и как вы не редактируете /etc/net, пока вы не включите, оно бы не заработало.

Теперь забаним lor. Добавим правило (по умолчанию используется таблица 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 (серверной машине)

# 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>

всё работает.

на localhost (клиентской)

# 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

19

1

1

1

1

MaximByshevskiKonopko, BorisTsema


CategoryLectures CategoryPspo CategoryMpgu CategoryUneex

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