[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