[Comm] FTP и Firewall
Прокопьев Евгений
=?iso-8859-1?q?john_=CE=C1_rmts=2Edonpac=2Eru?=
Пн Сен 23 11:45:02 MSD 2002
Здравствуйте!
Настроен iptables, ходить по www можно, а с ftp такие проблемы:
$ ftp ftp.rmts.donpac.ru
Connected to ftp.rmts.donpac.ru (195.161.172.86).
220-RMTS FTP service
WarFTPd 1.71-b.01 (Jan 8 2000) Ready
(C)opyright 1996 - 2000 by Jarle (jgaa) Aase - all rights reserved.
220 Please enter your user name.
Name (ftp.rmts.donpac.ru:john): john
331 User name okay, Need password.
Password:
230 User logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> dir
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls (238 bytes).
И здесь ftp зависает
Скрипт, загружающий правила firewall выглядит так
#!/bin/sh
#
# file /etc/sysconfig/iptable_ppp.sh - Initial IP Firewall script for 2.4.x
#
# Author: Vladimir Kholmanov, Eugene Prokopiev
# use at your own risk
#
################################################################################
# Конфигурационные параметры.
# При необходимости - отредактируйте.
#
# Script не требует указания ни статического, ни "подхвата"
# динамического IP адреса.
# Правила фильтрации привязаны к интерфейсам.
#
# Проверьте правильность пути к iptables.
################################################################################
EXTERNAL_IFACE="ppp0"
INTERNAL_IFACE="eth0"
LOCAL_IFACE="lo"
VIRTUAL_IFACE="vmnet1"
IPTABLES="/sbin/iptables"
################################################################################
# Проверка зависимостей в загружаемых IPTables modules
#
/sbin/depmod -a
#
################################################################################
# Устанавливаем default policies для INPUT, FORWARD и OUTPUT chains
#
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD DROP
################################################################################
# Создаем дочерние chains для ICMP, TCP и UDP протоколов.
#
$IPTABLES -N icmp_in_ppp
$IPTABLES -N tcp_in_ppp
$IPTABLES -N udp_in_ppp
################################################################################
# Загружаем ICMP rules для входящих потоков
#
$IPTABLES -A icmp_in_ppp -p ICMP --icmp-type 3 -j ACCEPT
$IPTABLES -A icmp_in_ppp -p ICMP --icmp-type 0 -j ACCEPT
$IPTABLES -A icmp_in_ppp -p ICMP --icmp-type 11 -j ACCEPT
$IPTABLES -A icmp_in_ppp -m limit --limit 6/minute --limit-burst 1 -p
ICMP --icmp-type 8 -j ACCEPT
$IPTABLES -A icmp_in_ppp -m limit --limit 2/minute --limit-burst 4 -j
LOG --log-prefix "ICMP in ppp died: "
$IPTABLES -A icmp_in_ppp -p ICMP -j DROP
################################################################################
# Загружаем TCP rules для входящих потоков
#
$IPTABLES -A tcp_in_ppp -p TCP --syn --dport 80 -j ACCEPT
$IPTABLES -A tcp_in_ppp -p TCP --syn --dport 22 -j ACCEPT
$IPTABLES -A tcp_in_ppp -p TCP --syn --dport 53 -j ACCEPT
$IPTABLES -A tcp_in_ppp -p TCP --syn --sport 53 -j ACCEPT
$IPTABLES -A tcp_in_ppp -p TCP -m state --state ESTABLISHED,RELATED -j
ACCEPT
$IPTABLES -A tcp_in_ppp -m limit --limit 2/minute --limit-burst 4 -j LOG
--log-prefix "TCP in ppp died: "
$IPTABLES -A tcp_in_ppp -p TCP -j DROP
################################################################################
# Загружаем UDP rules для входящих потоков
#
$IPTABLES -A udp_in_ppp -p UDP --dport 53 -j ACCEPT
$IPTABLES -A udp_in_ppp -p UDP --sport 53 -j ACCEPT
$IPTABLES -A udp_in_ppp -m limit --limit 3/minute --limit-burst 6 -j LOG
--log-prefix "UDP in ppp died: "
$IPTABLES -A udp_in_ppp -p UDP -j DROP
################################################################################
# INPUT chain
#
# Регистрируем и удаляем "проблемные" TCP пакеты.
#
$IPTABLES -A INPUT -i $EXTERNAL_IFACE -p tcp ! --syn -m state --state
NEW -j LOG --log-prefix "New not syn:"
$IPTABLES -A INPUT -i $EXTERNAL_IFACE -p tcp ! --syn -m state --state
NEW -j DROP
################################################################################
# "Направляющие" для локальных и "перенаправляющие" для inet пакетов rules.
#
$IPTABLES -A INPUT -p TCP -i $LOCAL_IFACE -j ACCEPT
$IPTABLES -A INPUT -p TCP -i $VIRTUAL_IFACE -j ACCEPT
$IPTABLES -A INPUT -p TCP -i $INTERNAL_IFACE -j ACCEPT
$IPTABLES -A INPUT -p TCP -i $EXTERNAL_IFACE -j tcp_in_ppp
$IPTABLES -A INPUT -p UDP -i $LOCAL_IFACE -j ACCEPT
$IPTABLES -A INPUT -p UDP -i $VIRTUAL_IFACE -j ACCEPT
$IPTABLES -A INPUT -p UDP -i $INTERNAL_IFACE -j ACCEPT
$IPTABLES -A INPUT -p UDP -i $EXTERNAL_IFACE -j udp_in_ppp
$IPTABLES -A INPUT -p ICMP -i $LOCAL_IFACE -j ACCEPT
$IPTABLES -A INPUT -p ICMP -i $VIRTUAL_IFACE -j ACCEPT
$IPTABLES -A INPUT -p ICMP -i $INTERNAL_IFACE -j ACCEPT
$IPTABLES -A INPUT -p ICMP -i $EXTERNAL_IFACE -j icmp_in_ppp
################################################################################
# Регистрирующее rule для "неохваченных" пакетов.
#
$IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 6 -j LOG
--log-prefix "IP INPUT packet died: "
################################################################################
# Корректировка уязвимости NAT
#
$IPTABLES -A OUTPUT -m state -p icmp --state INVALID -j DROP
--
С уважением, Прокопьев Евгений
Подробная информация о списке рассылки community