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

Исходное сообщение
"Давайте обсудим мой iptables"

Отправлено Makalu , 04-Фев-05 15:00 
Здравствуйте Все!
Хотел бы со всеми проконсультироваться и если можно улучшить табицу.
Я не так силен в iptables.
Прочитал много документации.
Есть 1 машина с Suse 9.1 c выходом в интернет
За ней локальная сеть офиса. На Suse 9.1 стоит Web , Mail и FTP сервера.
Вот вопрос.
Если я удаляю строку
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 80 -j allowed
То с локалки пользователи все равно выходят по http?
Что неправильно?
Как на Ваш взгляд данная таблица?
Всем спасибо.
Олег

#################################
INET_IP="217.24.37.34"
INET_IFACE="eth1"
INET_BROADCAST="217.24.37.39"
LAN_IP="10.0.0.1"
LAN_IP_RANGE="10.0.0.0/24"
LAN_BROADCAST_ADDRESS="10.255.255.255"
LAN_IFACE="eth0"
LO_IFACE="lo"
LO_IP="127.0.0.1"
IPTABLES="/usr/sbin/iptables"
echo "1" > /proc/sys/net/ipv4/ip_forward
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
#
# Create separate chains for ICMP, TCP and UDP to traverse
#
$IPTABLES -N allowed
$IPTABLES -N tcp_packets
$IPTABLES -N udp_packets
$IPTABLES -N icmp_packets
$IPTABLES -N bad_tcp_packets
#######################################################@@@@@@@@@@@

# Битые пакеты выбросить
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A OUTPUT -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP

# Stealth Scans etc. запретить
# Flags не установлен
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A FORWARD -p tcp --tcp-flags ALL NONE -j DROP

# SYN и FIN установить
iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
iptables -A FORWARD -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP

# SYN и RST одновременно установить
iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN,RST -j DROP

# FIN и RST одновременно установить
iptables -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j DROP
iptables -A FORWARD -p tcp --tcp-flags FIN,RST FIN,RST -j DROP

# FIN без ACK
iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j DROP
iptables -A FORWARD -p tcp --tcp-flags ACK,FIN FIN -j DROP

# PSH без ACK
iptables -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j DROP
iptables -A FORWARD -p tcp --tcp-flags ACK,PSH PSH -j DROP

# URG без ACK
iptables -A INPUT -p tcp --tcp-flags ACK,URG URG -j DROP
iptables -A FORWARD -p tcp --tcp-flags ACK,URG URG -j DROP

# Loopback-Netzwerk-Kommunikation разрешить
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Maximum Segment Size (MSS) для Forwarding на PMTU разрешить
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
############################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

# ping tracerout
$IPTABLES -A INPUT -s0/0 -d $INET_IP -p icmp --icmp-type echo-request -j DROP
$IPTABLES -A INPUT -s0/0 -d $INET_IP -p udp --dport 33435:33525 -j DROP
# Syn-flood:
$IPTABLES -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
#
$IPTABLES -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
#Ping of death:
$IPTABLES -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
#
# bad_tcp_packets chain
#
$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
#
#
$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 rules
#######################
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 20 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 21 -j allowed
#$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 22 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 25 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 80 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 110 -j allowed
#$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 443 -j allowed
#$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 770 -j allowed
#  для Ростава к-банк
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 1401 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 3306 -j allowed
#       E-Mule
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 4242 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 4661:4665 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 5801 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 5901 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 8010 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 8100 -j allowed

#
# UDP ports
#!!
#$IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 53 -j ACCEPT
#$IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 123 -j ACCEPT
#$IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 2074 -j ACCEPT
#$IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 4000 -j ACCEPT
#
# In Microsoft Networks you will be swamped by broadcasts. These lines
# will prevent them from showing up in the logs.
#
$IPTABLES -A udp_packets -p UDP -i $INET_IFACE -d $INET_BROADCAST \
--destination-port 135:139 -j DROP
#
#
# ICMP rules
#
$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 3 -j ACCEPT # Dest unreachable
$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j DROP # Ping
$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT # Time exceeded
$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 12 -j ACCEPT # Parameter problem
#
# INPUT chain
#
$IPTABLES -A INPUT -p tcp -j bad_tcp_packets
#
# Rules for special networks not part of the Internet
#
$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -s $LAN_IP_RANGE -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -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 $INET_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -d $LAN_BROADCAST_ADDRESS -j ACCEPT
#
# Rules for incoming packets from the internet.
#
$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 chain
#
$IPTABLES -A FORWARD -p tcp -j bad_tcp_packets
#
# Accept the packets we actually want to forward
#
$IPTABLES -A FORWARD -i $LAN_IFACE -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
#
$IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets
#
# Special OUTPUT rules to decide which IP's to allow.
#
$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
#
#
# ---------------------------------------------------------------------------REFERER
$IPTABLES -A OUTPUT -o INET_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -o INET_IFACE -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
#
#  nat table
$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to-source $INET_IP
#
#################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# SYN-Cookies разрешить
echo 1 > /proc/sys/net/ipv4/tcp_syncookies 2> /dev/null

# Stop Source-Routing
for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/accept_source_route 2> /dev/null; done

# Stop Redirecting
for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/accept_redirects 2> /dev/null; done

# Reverse-Path-Filter
for i in /proc/sys/net/ipv4/conf/*; do echo 2 > $i/rp_filter 2> /dev/null; done

# Log Martians
for i in /proc/sys/net/ipv4/conf/*; do echo 1 > $i/log_martians 2> /dev/null; done

# BOOTP-Relaying отключить
for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/bootp_relay 2> /dev/null; done

# Proxy-ARP выключить
for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/proxy_arp 2> /dev/null; done

# Негодные ICMP-ответы игнорировать
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses 2> /dev/null

# ICMP Echo-Broadcasts игнорировать
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts 2> /dev/null

# Max. 500/секунд посылать
echo 5 > /proc/sys/net/ipv4/icmp_ratelimit

# Оптимизация памяти и времени для IP-дe-фрагментации
echo 262144 > /proc/sys/net/ipv4/ipfrag_high_thresh
echo 196608 > /proc/sys/net/ipv4/ipfrag_low_thresh
echo 30 > /proc/sys/net/ipv4/ipfrag_time

# TCP-FIN-Timeout защиту от DoS-Attacken установить
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout

# Maximal 3 ответа на один TCP-SYN
echo 3 > /proc/sys/net/ipv4/tcp_retries1

# TCP-Pakete maximal 15x повторить
echo 15 > /proc/sys/net/ipv4/tcp_retries2

################################@@@@@@@@@@@@@@


Содержание

Сообщения в этом обсуждении
"Давайте обсудим мой iptables"
Отправлено Mranton , 04-Фев-05 20:56 
ip свой потри

"Давайте обсудим мой iptables"
Отправлено V.Pasashnikov , 07-Фев-05 08:47 
>$IPTABLES -A FORWARD -i $LAN_IFACE -j ACCEPT
вот эта строчка тебе не о чём не говорит?

А во вторых, ты tcp_packets зовёшь для цепочки INPUT, а для FORWARD похочже забыл.


"Давайте обсудим мой iptables"
Отправлено dimus , 07-Фев-05 09:15 
Заметь также, что в начале ты сажаешь сразу кучу правил сразу в цепочки инпут и форвард. Их со спокойной совестью можно соединить в одну цепочку, и футболить пакеты туда. И такая цепочка у тебя есть - это bad_tcp_packet

"Давайте обсудим мой iptables"
Отправлено Makalu , 07-Фев-05 10:53 
>Заметь также, что в начале ты сажаешь сразу кучу правил сразу в
>цепочки инпут и форвард. Их со спокойной совестью можно соединить в
>одну цепочку, и футболить пакеты туда. И такая цепочка у тебя
>есть - это bad_tcp_packet

Пожалуйста, Буду очень благодарен если приведете исправленный текст.
Спасибо


"Давайте обсудим мой iptables"
Отправлено Makalu , 08-Фев-05 15:00 
>>Заметь также, что в начале ты сажаешь сразу кучу правил сразу в
>>цепочки инпут и форвард. Их со спокойной совестью можно соединить в
>>одну цепочку, и футболить пакеты туда. И такая цепочка у тебя
>>есть - это bad_tcp_packet
>
>
>
>Пожалуйста, Буду очень благодарен если приведете исправленный текст.
>Спасибо

Ну что никто не поможет еще?