URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID10
Нить номер: 3747
[ Назад ]

Исходное сообщение
"iptables помогите разобраться"

Отправлено Anton , 12-Апр-08 22:48 
Штудирую http://www.opennet.me/docs/RUS/iptables пока не все понятно,но упорно изучаю

На базе найденного в сети скрипта сделал свой, такое подозрение, что он весьма коряв. Поправьте меня или выложите надежный проверенный скрипт.

sudo cat /etc/network/if-up.d/00-firewall
#!/bin/sh
#
#
#
# Конфигурация Интернет-интерфейса.
#

INET_IP="111.111.111.111" #внешний IP
INET_IFACE="eth2" #Ваш интерфейс в интернет
INET_BROADCAST="255.255.255.248" #Броадкаст

#
# Конфигурация LAN-интерфейса
#

LAN_IP="192.168.0.51"
LAN_IP_RANGE="192.168.0.0/24"
LAN_IFACE="eth0"

#
# Конфигурация localhost.
#

LO_IP="127.0.0.1"
LO_IP_RANGE="127.0.0.1/8"
LO_IFACE="lo"
#
# Конфигурация VPN-интерфейса
#

VPN_IP="192.168.1.1"
VPN_IP_RANGE="192.168.1.0/24"
VPN_IFACE="tun0"

#
# Конфигурация IPTables.
#

IPTABLES="iptables"

#Загрузка модулей
/sbin/depmod -a

#
# Необходимые модули
#
/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack
/sbin/modprobe iptable_filter
/sbin/modprobe iptable_mangle
/sbin/modprobe iptable_nat
/sbin/modprobe ipt_LOG
/sbin/modprobe ipt_limit
/sbin/modprobe ipt_state
#
# Дополнительные модули
#
#/sbin/modprobe ipt_owner
/sbin/modprobe ipt_REJECT
/sbin/modprobe ipt_MASQUERADE
#/sbin/modprobe ip_conntrack_ftp
#/sbin/modprobe ip_conntrack_irc
#/sbin/modprobe ip_nat_ftp
#/sbin/modprobe ip_nat_irc


#
# Включаем FORWARDинг
#

echo "1" > /proc/sys/net/ipv4/ip_forward

# очищаем
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F
$IPTABLES -X

#
# Политика по умолчанию
#

$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP

#
# Создание собственных цепочек
#
$IPTABLES -N bad_tcp_packets
$IPTABLES -N allowed
$IPTABLES -N tcp_packets
$IPTABLES -N udp_packets
$IPTABLES -N icmp_packets

#
# Заполнение собственных цепочек
#

#
# Цепочка bad_tcp_packets
#

$IPTABLES -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset
$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP

#
# Цепочка allowed
#

$IPTABLES -A allowed -p TCP --syn -j ACCEPT
$IPTABLES -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A allowed -p TCP -j DROP

#
# Порты TCP
#

$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 1488 -j allowed # SSH
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 1194 -j allowed # OpenVPN
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 888 -j allowed # Apache
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 110 -j allowed # POP
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 25 -j allowed # SMTP
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 5353 -j allowed # wflogs
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 5001 -j allowed # SalesWorks
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 5800 -j allowed # DameWareRoman

#
# Порты UDP
#

$IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 53 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -s 0/0 --dport 1194 -j ACCEPT # OpenVPN
$IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 5001 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 5800 -j ACCEPT
#
# Правила ICMP
#

$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT

#
# Цепочка INPUT
#

$IPTABLES -A INPUT -p tcp -j bad_tcp_packets

#
# Правила для LAN (разрешаем все)
#
$IPTABLES -A INPUT -p ALL -i $VPN_IFACE -s $VPN_IP_RANGE -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -s $VPN_IP_RANGE -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -s $LAN_IP_RANGE -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LAN_IP -s $LO_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LAN_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $VPN_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $INET_IP -j ACCEPT

#
# Правила для пакетов из интернета
#

$IPTABLES -A INPUT -p ALL -d $INET_IP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p TCP -i $INET_IFACE -j tcp_packets
$IPTABLES -A INPUT -p UDP -i $INET_IFACE -j udp_packets
$IPTABLES -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets


#
# Цепочка FORWARD
#

$IPTABLES -A FORWARD -p tcp -j bad_tcp_packets


#
# FORWARDинг на всю локальную сеть.(Пользователи из локалки могут ходить в интернет)
#

$IPTABLES -A FORWARD -i $LAN_IFACE -j ACCEPT
$IPTABLES -I FORWARD -i tun0 -j ACCEPT
$IPTABLES -I FORWARD -o tun0 -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

#
# Цепочка OUTPUT
#

$IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets

#
# Правила цепочки
#
$IPTABLES -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $INET_IP -j ACCEPT
#$IPTABLES -A OUTPUT -p ALL -s $VPN_IFACE -j ACCEPT

#
# Включаем IP Forwarding и трансляцию адресов(или маскарадинг)
#

#$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE #если ip динамический
$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to-source $INET_IP #если ip статический
$IPTABLES -t nat -A PREROUTING -i $INET_IFACE -d $INET_IP -p tcp --dport 5001 -j DNAT --to-destination 192.168.0.116:5001 #SalesWorks
$IPTABLES -t nat -A PREROUTING -i $INET_IFACE -d $INET_IP -p tcp --dport 5800 -j DNAT --to-destination 192.168.0.116:5800 #Dameware Roman
$IPTABLES -t nat -A PREROUTING -i $LAN_IFACE -d ! $LAN_IP_RANGE -p tcp --dport 80 -j REDIRECT --to-port 8080 #прозрачный squid
$IPTABLES -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/255.255.255.0 -j MASQUERADE # пускаем в локалку openVPN


Редирект 5001 и 5800 так и не зароботал. Компьютер используется в кач-ве почтового сервера, инет шлюза и прокси-сервера.

Что посоветуете для безопасности сервера?


Содержание

Сообщения в этом обсуждении
"iptables помогите разобраться"
Отправлено angra , 13-Апр-08 00:41 
Лениво читать :)
Вообще учитесь разбивать задачу на части и анализировать. Для начала ставите все политики в ACCEPT и настраиваете работу nat, а уже потом начинаете поочередно закрывать, что считаете нужным, и смотреть, чтобы при этом nat продолжал работать.

"iptables помогите разобраться"
Отправлено reader , 13-Апр-08 15:50 
>[оверквотинг удален]
>$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT
>
>#
># Цепочка INPUT
>#
>
>$IPTABLES -A INPUT -p tcp -j bad_tcp_packets
>
>
>

1
>#
># Правила для LAN (разрешаем все)
>#
>$IPTABLES -A INPUT -p ALL -i $VPN_IFACE -s $VPN_IP_RANGE -j ACCEPT
>$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -s $VPN_IP_RANGE -j ACCEPT
>$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -s $LAN_IP_RANGE -j ACCEPT

незнаю, оправдан ли полный доступ к шлюзу

>$IPTABLES -A INPUT -p ALL -i $LAN_IP -s $LO_IP -j ACCEPT

-i $LAN_IP - для входящего интерфейса указываете IP?

>$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LAN_IP -j ACCEPT
>$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $VPN_IP -j ACCEPT
>$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $INET_IP -j ACCEPT

эти 3 как-то не понятны для чего.
>[оверквотинг удален]
>
>
>#
># FORWARDинг на всю локальную сеть.(Пользователи из локалки могут ходить в интернет)
>
>#
>
>$IPTABLES -A FORWARD -i $LAN_IFACE -j ACCEPT
>$IPTABLES -I FORWARD -i tun0 -j ACCEPT
>$IPTABLES -I FORWARD -o tun0 -j ACCEPT

tun0 - полностью открыта в инет?

>[оверквотинг удален]
>$IPTABLES -t nat -A PREROUTING -i $INET_IFACE -d $INET_IP -p tcp --dport
>5800 -j DNAT --to-destination 192.168.0.116:5800 #Dameware Roman
>$IPTABLES -t nat -A PREROUTING -i $LAN_IFACE -d ! $LAN_IP_RANGE -p tcp
>--dport 80 -j REDIRECT --to-port 8080 #прозрачный squid
>$IPTABLES -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/255.255.255.0 -j MASQUERADE #
>пускаем в локалку openVPN
>
>
>Редирект 5001 и 5800 так и не зароботал. Компьютер используется в кач-ве
>почтового сервера, инет шлюза и прокси-сервера.

помоему правила для 5001 и 5800 нужны в FORWARD а не в INPUT
>
>Что посоветуете для безопасности сервера?


"iptables помогите разобраться"
Отправлено Антон , 14-Апр-08 10:34 
>
>помоему правила для 5001 и 5800 нужны в FORWARD а не в
>INPUT
>>
>>Что посоветуете для безопасности сервера?

Можно по-подробнее, какое именно правило?


"iptables помогите разобраться"
Отправлено reader , 14-Апр-08 15:33 
>>
>>помоему правила для 5001 и 5800 нужны в FORWARD а не в
>>INPUT
>>>
>>>Что посоветуете для безопасности сервера?
>
>Можно по-подробнее, какое именно правило?

$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 5001 -j allowed # SalesWorks
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 5800 -j allowed # DameWareRoman