Linux 版 (精华区)

发信人: lofe (〖感激生活Θ垃圾桶〗), 信区: Linux
标  题: IPtable 1.0.7指南(四) 
发信站: 哈工大紫丁香 (2001年12月11日13:46:22 星期二), 站内信件

使用赋值的 IP's的奇怪的ISP's 
我增加了这个是因为我的一个朋友告诉我我几乎忘光了的一件事,一些愚蠢的
ISP's为他们的本地网 使用用IANA 赋值的IP's 。例如瑞典的ISP 和电话垄断者
Telia在他们的DNS 服务器上使用这种方法,使用10.x.x.x IP 范围。你最可能遇
到的问题是,在这个脚本中我们不允许任何在10.x.x.x范围内的IP's 到我们的连
接,因为可能有欺骗。好,这有个例子,你在那些规则上的花些力气。你可能在欺
骗部分插入一个ACCEPT 规则,允许来自那些DNS 服务器的负载,或者你可以注释
那部分脚本。它看起来象这样: 
/usr/local/sbin/iptables -t nat -I PREROUTING -i eth1 -s 10.0.0.1/32 –j
 ACCEPT 
我将咒骂这些ISP's。这个范围不是为你用来做填充的,至少在我的知识范围内不
是,对于大的公司站点更不是,或者对于你的家庭网络,但你不能迫使我们开放自
己只因为你的一些whince 。 


更新并刷新你的表 
如果你弄乱了你的iptables,有命令可以刷新它,你不必要重启动。到现在为止我
遇到这个问题好多次了,所以我想我将在这回答它。如果你错误地增加了一条规则
,你可以在你加错的那一行上将-A 参数改为-D,iptables 将发现错误行并替你抹
去,万一你有几行看起来相同,它抹去它发现的与你的规则匹配的第一个实例。如
果这不是你想要的行为,你就要试着使用-D 选项,iptables -D INPUT 10,将
INPUT链中的第十条规则抹去。 
还有你想刷新整个链的情况,这时你要执行-F 选项。比如iptables -F INPUT将抹
去整个INPUT 链,虽然它不会改变默认规则。因此如果默认规则被置为“DROP” 
,而且你想象上面一样使用,则你要阻塞整个INPUT链,重置链规则,象你置“
DROP”一样做。例如iptables -P INPUT ACCEPT。 
我做了一个小的脚本 (作为附录)可以刷新并重置你的iptables,你在创建你的
rc.firewall文件时可以考虑使用。还有一件事情,如果你在弄乱的表中变的混乱
,这个脚本不会抹去它们,它只添加抹去它们需要的几行,但在这我不添加它们,
因为弄乱的表在我的rc.firewall 脚本中不使用。 

其他的资源及连接 
这是我获得信息的一些连接: 
http://ods.dyndns.org/ipt_flow.html 
system control via /proc etc 
The official site of iptables and netfilter 
The official netfilter FAQ 
Rusty's Unreliable Guide to packet filtering 
Rusty's Unreliable Guide to Network Address Translation 
Rusty's Unreliable Netfilter Hacking HOWTO 
Netfilter user mailing-list 
当然,还包括iptables 的原始资料,文档及帮助我的人。 

贡献者 
我感谢下面的人在我写这篇文章时对我的帮助: 
Fabrice Marie, 修改我的语法及拼写. 感谢他将指南修改成 DocBook 格式并带有
 make files等等。 
Marc Boucher, 在使用状态匹配代码上给予了我很大的帮助。 
Frode E. Nyboe,完善了 rc.firewall 的规则,在我重写ruleset时给了我很大灵
感,使我引入了在同一文件中使用多重表格的方法。* 
Chapman Brad, Alexander W. Janssen, 他们使我认识到,我在想包如何以它们显
示的顺序穿过基本的 NAT和 filters tables时最初是想错了。 
Michiel Brandenburg, Myles Uyema,帮助我书写一些状态匹配代码并使它们工作
。 
Kent `Artech' Stahre, 帮助我从绘图的烦琐工作中解脱出来,我知道我热中于绘
图,但是你是我所知道的绘图最好的人,还感谢你帮我检查指南的错误。 
Jeremy `Spliffy' Smith, 感谢在可能扰乱人的素材上给我以暗示,感谢尝试它并
检查我写的东西的错误。 
还有所有我曾经谈过话、向他们询问过建议的朋友。 

例子 rc.firewall <> 

#!/bin/sh 

# rc.firewall - Initial SIMPLE IP Firewall test script for 2.4.x 

# Author: Oskar Andreasson 
# (c) of BoingWorld.com, use at your own risk, do whatever you please 
with 
# it as long as you don't distribute this without due credits to 
# BoingWorld.com 


########### 
# Configuration options, these will speed you up getting this script 
to 
# work with your own setup. 


# your LAN's IP range and localhost IP. /24 means to only use the 
first 
24 
# bits of the 32 bit IP adress. the same as netmask 255.255.255.0 

# STATIC_IP is used by me to allow myself to do anything to myself, 
might 
# be a security risc but sometimes I want this. If you don't have a 
static 
# IP, I suggest not using this option at all for now but it's stil 
# enabled per default and will add some really nifty security bugs for 

all 
# those who skips reading the documentation=) 

LAN_IP_RANGE="192.168.0.0/24" 
LAN_IP="192.168.0.2/32" 
LAN_BCAST_ADRESS="192.168.0.255/32" 
LOCALHOST_IP="127.0.0.1/32" 
STATIC_IP="194.236.50.155/32" 
INET_IFACE="eth0" 
LAN_IFACE="eth1" 
IPTABLES="/usr/local/sbin/iptables" 

######### 
# Load all required IPTables modules 



# Needed to initially load modules 

/sbin/depmod -a 


# Adds some iptables targets like LOG, REJECT and MASQUARADE. 

/sbin/modprobe ipt_LOG 
#/sbin/modprobe ipt_REJECT 
/sbin/modprobe ipt_MASQUERADE 


# Support for owner matching 

#/sbin/modprobe ipt_owner 


# Support for connection tracking of FTP and IRC. 

#/sbin/modprobe ip_conntrack_ftp 
#/sbin/modprobe ip_conntrack_irc 


# Enable ip_forward, this is critical since it is turned off as defaul 

in Linux. 


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


# Dynamic IP users: 

#echo "1" > /proc/sys/net/ipv4/ip_dynaddr 


# Enable simple IP Forwarding and Masquerading 


$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE 


# Bad TCP packets we don't want 


$IPTABLES -A FORWARD -p tcp ! --syn -m state --state NEW -j LOG 
--log-prefix "New not syn:" 
$IPTABLES -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP" 


# 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 FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG 
--log-level DEBUG --log-prefix "IPT FORWARD packet died: " 


# Set default policies for the INPUT, FORWARD and OUTPUT chains 


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


# Create separate chains for ICMP, TCP and UDP to traverse 


$IPTABLES -N icmp_packets 
$IPTABLES -N tcp_packets 
$IPTABLES -N udpincoming_packets 


# The allowed chain for TCP connections 


$IPTABLES -N 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 


# ICMP rules 


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


# 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 22 -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 113 -j allowed 


# UDP ports 


$IPTABLES -A udpincoming_packets -p UDP -s 0/0 --source-port 53 -j 
ACCEPT 
$IPTABLES -A udpincoming_packets -p UDP -s 0/0 --source-port 123 -j 
ACCEPT 
$IPTABLES -A udpincoming_packets -p UDP -s 0/0 --source-port 2074 -j 
ACCEPT 
$IPTABLES -A udpincoming_packets -p UDP -s 0/0 --source-port 4000 -j 
ACCEPT 

 
 
相关链接 
 
 
 
相关文章 
 
 
 
关键字 
 
IPtable, 防火墙,  
来自 
最后更新: 2001年10月16日 


--
直到有一天,
你看淡了一切,
觉得这些是人生来来往往中的一部分,
都是美丽的,
你就悟了。

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 210.82.167.241]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.530毫秒