From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Comment: RFC 2476 MSA function at mx14.yandex.ru logged sender identity as: forlin Date: Thu, 24 Mar 2005 17:00:57 +0300 From: Kir To: community@altlinux.ru Subject: Re: [Comm] =?KOI8-R?Q?=EF=DB=C9=C2=CB=C9_=D0=D2=C9_=CE=C1=D3=D4?= =?KOI8-R?Q?=D2=CF=CA=CB=C5?= iptables Message-Id: <20050324170057.11a4609a.forlin@yandex.ru> In-Reply-To: <20050322122626.398b660c.forlin@yandex.ru> References: <20050320050257.23c0eb35.forlin@yandex.ru> <200503200841.09195.ngrechukh@ua.fm> <20050320211017.6ad70865.forlin@yandex.ru> <200503211115.11766.ngrechukh@ua.fm> <20050322122626.398b660c.forlin@yandex.ru> X-Mailer: Sylpheed version 0.9.10 (GTK+ 1.2.10; i586-alt-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=KOI8-R Content-Transfer-Encoding: 8bit X-BeenThere: community@altlinux.ru X-Mailman-Version: 2.1.5 Precedence: list Reply-To: community@altlinux.ru List-Id: Mailing list for ALT Linux users List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 24 Mar 2005 14:00:45 -0000 Archived-At: List-Archive: List-Post: Доброго всем времени суток! > Понял, спасибо. > Было бы еще хорошо ткнуть меня в какие-нибудь доки с описанием > настроек 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