Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Попал в ступор :)
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Russian
View previous topic :: View next topic  
Author Message
GreenDragon
Guru
Guru


Joined: 31 Jul 2003
Posts: 319

PostPosted: Sat Feb 18, 2006 3:16 pm    Post subject: Попал в ступор :) Reply with quote

Ситуация следующая, увидел вопрос по IP-тавлес на одной из конференций и решил проверить у себя, ибо скрипт на первый взгляд достаточно рабочий и ...
Привожу весь скрипт ибо голова уже не варит :)
Code:


#!/bin/sh 
iptables --flush
iptables -t nat --flush
clear                         
                              # 1. Configuration options.
# 1.1 Internet Configuration.
                    INET_IP="21*.1*.10*.1*"       
INET_IFACE="eth0"       
   
# 1.2 Local Area Network configuration.           
     
LAN_IP="10.10.5.15"     
LAN_IP_RANGE="10.0.0.0/9"     
LAN_IFACE="eth1"             

# 1.4Localhost Configuration.

LO_IFACE="lo"                 
LO_IP="127.0.0.1"             

# 1.5 IPTables Configuration.

IPTABLES="iptables"           

# 2.Module loading.           

/sbin/depmod -a               
# 2.1 Required modules

/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     

# 2.2 Non-Required modules   

/sbin/modprobe
ip_conntrack_ftp             
/sbin/modprobe
ip_conntrack_irc             
/sbin/modprobe ip_nat_ftp     
/sbin/modprobe ip_nat_irc     

# 3. /proc set up.
# 3.1 Required proc configuration                 echo "1" > /proc/sys/net/ipv4/ip_forward

# 3.2 Non-Required proc configuration     

# 4. rules set up.     
# 4.1 Filter table
# 4.1.1 Set policies   

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

  # 4.1.2 Create userspecified chains

    $IPTABLES -N bad_tcp_packets

  # 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

  # 4.1.3 Create content in userspecified chains

    $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 \
                 LOG --log-prefix "New not syn:"
    $IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP

  # allowed chain

    $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 21 -j allowed
    $IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 65222 -j allowed
    $IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 80 -j allowed

  # UDP ports

#    $IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 53 -j ACCEPT

  # ICMP rules

    $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

  # 4.1.4 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

  # Special rule for DHCP requests from LAN, which are not caught properly otherwise.

    $IPTABLES -A INPUT -p UDP -i $LAN_IFACE --dport 67 --sport 68 -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

  # Log weird packets that don't match the above.

    $IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \
                --log-level DEBUG --log-prefix "IPT INPUT packet died: "

  # 4.1.5 FORWARD chain

    $IPTABLES -A FORWARD -p tcp -j bad_tcp_packets

  # Accept the packets we actually want to forward

#   $IPTABLES -A FORWARD -s 192.168.1.10 -d 192.168.0.1 -j ACCEPT
    $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

  # Log weird packets that don't match the above.

    $IPTABLES -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG \
                 --log-level DEBUG --log-prefix "IPT FORWARD packet died: "

  # 4.1.6 OUTPUT chain

    $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

  # Log weird packets that don't match the above.

    $IPTABLES -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \
                    --log-level DEBUG --log-prefix "IPT OUTPUT packet died: "

  # 4.2 nat table
  # 4.2.1 POSTROUTING chain
  # Enable simple IP Forwarding and Network Address Translation

    $IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to-source $INET_IP                         

Результат работы скрипта следующий:
сервер с этим скриптом ходит-бродит где хочет без проблем.
Если он некоторое время не просит ничего из инета, то на него (например порт 80) зайти никто из инета не может кроме машин из его внешнего пула IP.
Как только, не важно что (ping, GET, ...) , на него поступил запрос со своего пула - опа, весь инет видит http сервер.
Вот заинтересовало, что это за прикол такой со скриптом?
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Russian All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum