[Comm] Ошибки при настройке iptables

Kir =?iso-8859-1?q?forlin_=CE=C1_yandex=2Eru?=
Чт Мар 24 17:00:57 MSK 2005


Доброго всем времени суток!

> Понял, спасибо.
> Было бы еще хорошо ткнуть меня в какие-нибудь доки с описанием
> настроек iptables на машине с выходам в локальную сеть и Интернет
> (через PPTP). Фундаментальные руководства - штука хорошая, но хотелось
> бы почитать что-нибудь об опасностях, характерных для вышеописанной
> конфигурации. И о том, какие варианты использования iptables в ней
> существуют.

Покопался в Сети, набрел на
http://ru.gentoo-wiki.com/Подробная_настройка_iptables

Начал настраивать по порядку, учитывая свои интерфейсы.
Все идет нормально до этого места:
http://ru.gentoo-wiki.com/Подробная_настройка_iptables#.D0.9B.D0.BE.D0.BA.D0.B0.D0.BB.D1.8C.D0.BD.D1.8B.D0.B5_.D0.B8.D0.BD.D1.82.D0.B5.D1.80.D1.84.D0.B5.D0.B9.D1.81.D1.8B

Т.е. главы "Локальные интерфейсы"

Вствляю в скрипт указанные строки, рестартую iptаbles, выполняю скрипт -
получаю ответ:

Bad argument `ACCEPT'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `ACCEPT'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `ACCEPT'
Try `iptables -h' or 'iptables --help' for more information.

Не могу понять, почему с этого места ругается, хотя до него не ругалась?
Иду дальше, пытаюсь установить блокировку широковещательных адресов.
Ответ аналогичный:

Bad argument `DROPl'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `DROPl'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `DROPl'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `DROPl'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `DROPl'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `DROPl'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `DROPl'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `DROPl'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `DROPl'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `DROPl'
Try `iptables -h' or 'iptables --help' for more information.

Тут я решил остановиться и спросить совета у сообщества.
Чего я не догоняю?

Прилагаю скрипт, до проблемных мест, включая последние:

#!/bin/bash

IPTABLES='/sbin/iptables'

# Определяем интерфейсы
EXTIF='ppp0'
INTIF1='eth0'
INTIF2='eth1'

# Включаем форвардинг ip в ядре.
/bin/echo 1 > /proc/sys/net/ipv4/ip_forward

# Сбросить правила и удалить цепочки 
$IPTABLES -F
$IPTABLES -X

# Включаем маскарадинг для разрешения доступа в интернет
$IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE

# Форвардить сетевой трафик с $INTIF1 на интернетовский интерфейс $EXTIF
$IPTABLES -A FORWARD -i $INTIF1 -o $EXTIF -m state --state
NEW,ESTABLISHED -j ACCEPT

# Форвардить сетевой трафик с $INTIF2 на интернетовский интерфейс $EXTIF
$IPTABLES -A FORWARD -i $INTIF2 -o $EXTIF -m state --state
NEW,ESTABLISHED -j ACCEPT

#echo -e "       - Разрешаем доступ к SSH серверу"
#$IPTABLES -A INPUT --protocol ssh --dport 22 -j ACCEPT
#echo -e "       - Разрешаем доступ к HTTP серверу (порты 80 и 8080"
#$IPTABLES -A INPUT --protocol tcp --dport 80 -j ACCEPT
#$IPTABLES -A INPUT --protocol tcp --dport 8080 -j ACCEPT
# Блокируем все прочие попытки доступа на $EXTIF
$IPTABLES -A INPUT -i $EXTIF -m state --state NEW,INVALID -j DROP
$IPTABLES -A FORWARD -i $EXTIF -m state --state NEW,INVALID -j DROP

# Сброс всех существующих и очистка персональных цепочек.
CHAINS=`cat /proc/net/ip_tables_names 2>/dev/null`

# ********** Цепочки журналирования событий **********
#
# Теперь мы определяем несколько цепочек которые служат для записи 
# событий о сбрасываемых пакетах. Это позволит нам избежать ввода 
# команд для каждого правила. Сперва мы фиксируем DROP, а потом REJECT.
# Не жалуйтесь, если цепочки уже существуют (однако это не приведет к
# ошибкам???)
$IPTABLES -N DROPl   2> /dev/null
$IPTABLES -A DROPl -m limit --limit 3/minute --limit-burst 10 -j LOG
--log-prefix 'FIREWALL DROP BLOCKED:'$IPTABLES -A DROPl   -j DROP
$IPTABLES -N REJECTl 2> /dev/null
$IPTABLES -A REJECTl -m limit --limit 3/minute --limit-burst 10 -j LOG
--log-prefix 'FIREWALL REJECT BLOCKED:'$IPTABLES -A REJECTl -j REJECT
$IPTABLES -N DROP2   2> /dev/null
$IPTABLES -A DROP2 -m limit --limit 3/second --limit-burst 10 -j LOG
--log-prefix 'FIREWALL DROP UNKNOWN:'$IPTABLES -A DROP2   -j DROP
$IPTABLES -N REJECT2 2> /dev/null
$IPTABLES -A REJECT2 -m limit --limit 3/second --limit-burst 10 -j LOG
--log-prefix 'FIREWALL REJECT UNKNOWN:'$IPTABLES -A REJECT2 -j REJECT

# Loop device/localhost
LPDIF="lo"
LPDIP="127.0.0.1"
LPDMSK="255.0.0.0"
LPDNET="$LPDIP/$LPDMSK"

# Необходимые утилиты
IPT="/sbin/iptables"
IFC="/sbin/ifconfig"
G="/bin/grep"
SED="/bin/sed"
AWK="/usr/bin/awk"
ECHO="/bin/echo"

#Установка ACCEPT

$IPT -t nat -A PREROUTING -j ACCEPT
# $IPT -t nat -A POSTROUTING -o $EXTIF -s $INTNET -j SNAT --to $EXTIP

# Закомментируйте последующие строки (которые содержат "MASQUERADE") 
# для сетей без трансляции адресов (NAT)
#$IPT -t nat -A POSTROUTING -o $EXTIF -s $INTNET1 -j MASQUERADE
#$IPT -t nat -A POSTROUTING -o $EXTIF -s $INTNET2 -j MASQUERADE
$IPT -t nat -A POSTROUTING                       -j ACCEPT
$IPT -t nat -A OUTPUT                            -j ACCEPT
$IPT -A INPUT   -p tcp --dport auth --syn -m state --state NEW -j ACCEPT
$IPT -A INPUT   -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT



# ********** Цепочки журналирования событий **********
#
# Теперь мы определяем несколько цепочек которые служат для записи 
# событий о сбрасываемых пакетах. Это позволит нам избежать ввода 
# команд для каждого правила. Сперва мы фиксируем DROP, а потом REJECT.
# Не жалуйтесь, если цепочки уже существуют (однако это не приведет к
# ошибкам???)
$IPT -N DROPl   2> /dev/null
$IPT -A DROPl -m limit --limit 3/minute --limit-burst 10 -j LOG
--log-prefix 'FIREWALL DROP BLOCKED:'$IPT -A DROPl   -j DROP
$IPT -N REJECTl 2> /dev/null
$IPT -A REJECTl -m limit --limit 3/minute --limit-burst 10 -j LOG
--log-prefix 'FIREWALL REJECT BLOCKED:'$IPT -A REJECTl -j REJECT
$IPT -N DROP2   2> /dev/null
$IPT -A DROP2 -m limit --limit 3/second --limit-burst 10 -j LOG
--log-prefix 'FIREWALL DROP UNKNOWN:'$IPT -A DROP2   -j DROP
$IPT -N REJECT2 2> /dev/null
$IPT -A REJECT2 -m limit --limit 3/second --limit-burst 10 -j LOG
--log-prefix 'FIREWALL REJECT UNKNOWN:'$IPT -A REJECT2 -j REJECT

# Для тестирования фиксируем события ACCEPT
$IPT -N ACCEPTl   2> /dev/null
$IPT -A ACCEPTl -m limit --limit 10/second --limit-burst 50 -j LOG
--log-prefix 'FIREWALL ACCEPT:'$IPT -A ACCEPTl   -j ACCEPT


# Сброс всех существующих и очистка персональных цепочек.
#CHAINS=`cat /proc/net/ip_tables_names 2>/dev/null`

for i in $CHAINS
do
    $IPT -t $i -F
done

for i in $CHAINS
do
    $IPT -t $i -X
done

#Разрешим все пакеты с loopback интерфейса, имеющие в качестве адреса
#назначения один из адресов наших интерфейсов
$IPT -A INPUT   -i $LPDIF -s   $LPDIP  -j ACCEPT
$IPT -A INPUT   -i $LPDIF -s   $EXTIP  -j ACCEPT
$IPT -A INPUT   -i $LPDIF -s   $INTIP1  -j ACCEPT
$IPT -A INPUT   -i $LPDIF -s   $INTIP2  -j ACCEPT


#Блокировка широковещательных пакетов 	

$IPT -A INPUT   -i $EXTIF -d   $EXTBC  -j DROPl
$IPT -A INPUT   -i $INTIF1 -d  $INTBC1  -j DROPl
$IPT -A INPUT   -i $INTIF2 -d  $INTBC2  -j DROPl
$IPT -A OUTPUT  -o $EXTIF -d   $EXTBC  -j DROPl
$IPT -A OUTPUT  -o $INTIF1 -d  $INTBC1  -j DROPl
$IPT -A OUTPUT  -o $INTIF2 -d  $INTBC2  -j DROPl
$IPT -A FORWARD -o $EXTIF -d   $EXTBC  -j DROPl
$IPT -A FORWARD -o $INTIF1 -d  $INTBC1  -j DROPl
$IPT -A FORWARD -o $INTIF2 -d  $INTBC2  -j DROPl

# Блокировать внешний доступ к локальной сети
# Это позволит остановить боевых хакеров от использования 
# нашей сети как стартовой точки для других атак.
#
# Нижеприведенная строчка на человеческом языке будет выглядеть как
# "если входящий пакет, пришедший на наш внешний интерфейс,
# имеет адрес назначения, отличный от адреса нашего внешнего интерфейса,
# то этот пакет не будет пропущен."
$IPT -A INPUT   -i $EXTIF -d ! $EXTIP  -j DROPl



---------
На всякий случай: дистрибутив "ALT Linux 2.4 Master" с ftp.altlinux.ru

---------

С уважением,
Kir									forlin на yandex.ru



Подробная информация о списке рассылки community