eth
0
—source
192.168.1.0/24
—match state —state
NEW,ESTABLISHED -j ACCEPT
Надо также установить правило для цепочки
output
— оно разрешает шлюзу отве-
чать компьютерам нашей локальной сети:
sudo iptables -A OUTPUT -о
eth0
—destination
192.168.1.0/24
—match state —
state NEW,ESTABLISHED -j ACCEPT
Будьте внимательны при указании имен интерфейсов и IP-адресов. Очень легко
запутаться, а потом полчаса разбираться, почему шлюз не работает.
Нам осталось только запретить соединения из Интернета (компьютеры нашей сети
смогут устанавливать соединения с серверами Интернета, зато интернет-поль-
зователи не смогут установить соединения с компьютерами нашей сети):
490
Часть VI. Linux на сервере
sudo iptables -A FORWARD -i
eth0 --
destination
192.168.1.0/24 --
match state --
state ESTABLISHED -j ACCEPT
Итак, у нас получилась весьма простенькая конфигурация: компьютеры нашей сети
могут выступать инициаторами соединения, а интернет-узлы могут передавать
данные в нашу сеть только в том случае, если инициатором соединения выступил
локальный компьютер.
Но это еще не все. Как вы уже догадались, поскольку мы не сохранили правила
брандмауэра, при перезагрузке компьютера его придется настраивать заново. По-
скольку мне нет резона описывать настройку брандмауэра (сохранение и восста-
новление правил) для каждого дистрибутива (пусть это будет вашим домашним
заданием), рассмотрим универсальный способ. Он заключается в создании bash-
сценария, вызывающего необходимые нам команды настройки iptables. После на-
писания сценария вам останется вызвать его при загрузке системы — а для этого
придется изучить строение системы инициализации в вашем дистрибутиве (см.
гла
ву 22).
Вместо того, чтобы объяснять вам, как вызвать сценарий, загружающий правила
брандмауэра (с этим вы и сами разберетесь), я лучше приведу сценарий (понятно,
с комментариями), реализующий более сложную конфигурацию iptables. Этот сце-
нарий (листинг 31.4) будет не только выполнять все функции шлюза, но и защи-
щать сеть от разного рода атак. Следует обеспечить автоматическую загрузку этого
сценария, чтобы не запускать его каждый раз при старте системы.
# Путь к iptables
IPT="/sbin/iptables"
# Сетевой интерфейс, подключенный к Интернету
INET=
n
pppO"
# Номера непривилегированных портов
UPORTS="1024:65535"
# Включаем IPv4-forwarding (чтобы не думать, почему шлюз не работает)
echo 1 > /proc/sys/net/ipv4/ip_forward
# Удаляем все цепочки и правила
$IPT -F
$IРТ -X
# Действия по умолчанию.
$IPT -Р INPUT DROP
$IPT -Р FORWARD ACCEPT
$IPT -P OUTPUT DROP
Do'stlaringiz bilan baham: |