爱爽爽

iptables实战笔记

上一篇 / 下一篇  2007-09-14 21:32:58 / 天气: 阴雨 / 心情: 平静 / 个人分类:Linux

DOIT博客Rc;q$nQ&x

netfilter/iptables这个玩意儿似乎很复杂一直没太搞懂它的原理,所以从给公司配置服务器开始就从未使用过它,让同事们共享上网时才用了一下它的伪装,当时也只是从网上看到了那行iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE,仍然不知道它究竟都干了些什么。最近觉得QQ这个东西的确有些影响同事们工作,所以下决心摸索一下iptables,看看能不能提供一下生产力。

i$pB^c9^T@0我的网络情况linux服务器既是上网的拨号服务器,同时也是公司的web server、mail server、ftp server等,域名动态解析,同时它与公司其它windows客户端构成了一个局域网,内网IP为192.168.0.1(eth1接口),外网网卡(eth0接口),拨号接口为ppp0,网内其它计算机的IP也都是192.168.0网段。192.168.0.2到192.168.0.16为公司工作人员(公司比较小,只有10来个人),192.168.0.240到192.168.0.243这几个IP是我和其它两个同事在用,需要实现的目标是外网只能访问服务器的www、mail、ftp、tomcat这几个服务、内网192.168.0.2到192.168.0.16这个IP段的同事们上班时间只能上外网的www、mail、ftp、tomcat并禁止使用QQ、192.168.0.240到192.168.0.243这个IP段的同事们可以无限制上网。下面是我的脚本内容。DOIT博客F}&Q/e\!M'_|aDx%^

work_firewall.sh:DOIT博客;H#L a\4Q ta${V{
# Display start messageDOIT博客Kv/g*z|){0H+B1nU B_
echo "Starting iptables rules..."DOIT博客:m3D `:y ?*E
# 设置变量DOIT博客%R r"{z5|
IPT=/sbin/iptables
!Kw/yC:r[B1\;r0INTERNET_SERVER=192.168.0.1
&Sm&]w|@aB [1g0IP_ME="127.0.0.1"DOIT博客;J%RG1V"[T [c4Dyp!~,Q
IP_SPEC_RANGE="192.168.0.240/30"
yxC/bo:yz@;wD0IP_WORK_RANGE="192.168.0.2/28"DOIT博客&zm"Sw*nl
IP_ALL="192.168.0.0/24"DOIT博客O){dj T|(o D)])kf
# 清除所有规则
#Uko:^,a8j0$IPT -F
O;y'k*a/]/GQ0$IPT -t nat -F
B d#S4FLx&v0# 重置所有链默认设置
,nu^Fh!VM7z2Z_0$IPT -P INPUT DROPDOIT博客-l cn&USJ
$IPT -P OUTPUT ACCEPT
2X&k!wHl \XB!U0$IPT -P FORWARD ACCEPT
X)q$qLz4n]0$IPT -t nat -P PREROUTING ACCEPTDOIT博客H*]yq8@ ?+F#p s
$IPT -t nat -P POSTROUTING ACCEPTDOIT博客lN~0uzRX)N0h
# 1. 限制internet对web服务器的访问
n(n$e(u1R0# (1) 允许自己无限制访问自己
-o g j5qe:QGD0FZ0$IPT -A INPUT -s $IP_ME -j ACCEPT
+ra+zn$v-l [0# (2) 允许访问www服务
K{,YS,eUA T0$IPT -A INPUT -p tcp --dport 80 -j ACCEPTDOIT博客%_U3Z I[ O K
# (3) 允许访问ftp服务DOIT博客0vJ3Gn i:t#k"\%I
$IPT -A INPUT -p tcp --dport 20 -j ACCEPT
%Y'^ J f-B g5w)o7N5U0$IPT -A INPUT -p tcp --dport 21 -j ACCEPTDOIT博客 J)r)fP9j/@ K
# (4) 允许访问mail服务
GTi(e cema|0$IPT -A INPUT -p tcp --dport 110 -j ACCEPT
d M&I3nb%L"x^5b0$IPT -A INPUT -p tcp --dport 143 -j ACCEPTDOIT博客G8s+hQ-H
$IPT -A INPUT -p tcp --dport 25 -j ACCEPT
HI,Y+sJ3RU!s0# (5) 允许访问tomcat服务DOIT博客aV!N P? e l\-Q8g
$IPT -A INPUT -p tcp --dport 8080 -j ACCEPT
t,Dqa(S2WIU0# 2. 允许工作人员通过局域网访问服务器DOIT博客p9]5O CxmK D
$IPT -A INPUT -s $IP_SPEC_RANGE -j ACCEPT
B(j:Z:](YeL0$IPT -A INPUT -s $IP_WORK_RANGE -j ACCEPTDOIT博客4^Q"e}Y2nw)u
# 3. 允许特殊IP无限制上网
q m!YMn E'`0$IPT -t nat -A PREROUTING -s $IP_SPEC_RANGE -j ACCEPTDOIT博客:b3Al"^9hD&YM
# 4. 对工作范围内IP限制部分上网功能DOIT博客]+k|1Huap/x
# (1) 允许访问DNS和ECHO
"Q%zfH)M!Ka0$IPT -t nat -A PREROUTING -s $IP_WORK_RANGE -d 0/0 -p udp --dport 53 -j ACCEPT
w?ca8h7TL8j d.C0$IPT -t nat -A PREROUTING -s $IP_WORK_RANGE -d 0/0 -p udp --dport 42 -j ACCEPT
orR on)[rrl%b(o0$IPT -t nat -A PREROUTING -s $IP_WORK_RANGE -d 0/0 -p udp --dport 7 -j ACCEPTDOIT博客+e{O(iaN0e
# (2) 禁止QQ的TCP登录
aS1_7i0s4@!bD4Og0$IPT -t nat -A PREROUTING -s $IP_WORK_RANGE -d 219.133.38.5 -p tcp -j DROP
*~(eQq f'VC/d0$IPT -t nat -A PREROUTING -s $IP_WORK_RANGE -d 218.18.95.165 -p tcp -j DROP
{*R5qhS$m5D0$IPT -t nat -A PREROUTING -s $IP_WORK_RANGE -d 218.17.209.23 -p tcp -j DROPDOIT博客}/z5?6qm;P
$IPT -t nat -A PREROUTING -s $IP_WORK_RANGE -d 218.18.95.153 -p tcp -j DROPDOIT博客#u1L(@[ h0t%RcDz
# (3) 禁止MSN登录DOIT博客%xu%xG(@B5}`
$IPT -t nat -A PREROUTING -s $IP_WORK_RANGE -d 207.46.104.20 -j DROPDOIT博客 v7SFe!cf4N
# (4) 允许访问www
&hd+b2^d5P ER3v0$IPT -t nat -A PREROUTING -s $IP_WORK_RANGE -d 0/0 -p tcp --dport 80 -j ACCEPTDOIT博客7J:m:n6x r Z
# (5) 允许访问ftpDOIT博客;e4`~u.a3s(M Q
$IPT -t nat -A PREROUTING -s $IP_WORK_RANGE -d 0/0 -p tcp --dport 20 -j ACCEPT
5A(x*em.q t)@2| {0$IPT -t nat -A PREROUTING -s $IP_WORK_RANGE -d 0/0 -p tcp --dport 21 -j ACCEPT
/E.PX j#f8\ y0# (6) 允许访问mailDOIT博客E0IO FS:S F K-E
$IPT -t nat -A PREROUTING -s $IP_WORK_RANGE -d 0/0 -p tcp --dport 110 -j ACCEPTDOIT博客,{QC8d9I
$IPT -t nat -A PREROUTING -s $IP_WORK_RANGE -d 0/0 -p tcp --dport 143 -j ACCEPTDOIT博客2ckC l$EL;C q"AD
$IPT -t nat -A PREROUTING -s $IP_WORK_RANGE -d 0/0 -p tcp --dport 25 -j ACCEPTDOIT博客i N [d'R7hH aU_&E
# (7) 允许访问tomcatDOIT博客D;A A$P(rD;X9i W0L Fwp P
$IPT -t nat -A PREROUTING -s $IP_WORK_RANGE -d 0/0 -p tcp --dport 8080 -j ACCEPTDOIT博客`v&` } VG.N
# (8) 禁止访问其它服务DOIT博客J&O'_UB
$IPT -t nat -A PREROUTING -s $IP_WORK_RANGE -d ! $IP_ALL -j DROP
!o t5Vc5g0# 5. 共享上网
M J7uio%`m p0$IPT -t nat -A POSTROUTING -o ppp+ -j MASQUERADEDOIT博客P V%`&o2P7Y
# 显示结束信息
L}u?k1p^'u_[0echo "Completed iptables rules."DOIT博客1j l#H'SN$d H

网上讲解iptables命令如何使用的文章已经数不胜数了,但真正要理解它的工作原理还是不太容易,也许是自己太笨周六那天竟然午饭都没吃苦苦思索了整整一天才慢慢有所领悟。netfilter/iptables共有三组规则表:filter、nat和mangle。filter表用于一般的信息包过滤,如我的网络中192.168.0.1服务器自己访问internet资源时或者外网访问服务器本身时使用filter表规则;nat表用于转发的信息包过滤,如我的局域网内客户端需要通过服务器访问外网时就需要用到nat表规则;mangle表用于高级路由,我此次没有用到,因此也没有深究,有空了再看看^_^。filter表包括INPUT链、OUTPUT链和FORWARD链;nat表包括PREROUTING链、POSTROUTING链和OUTPUT链;mangle表包括PREROUTING链和OUTPUT链。filter表为默认规则表。DOIT博客8NXW1b8H k

表名DOIT博客)R5l d yD*xy1Go

功能

-n9ZS z,r m0
filter用于一般的信息包过滤,包括INPUT链、OUTPUT链和FORWARD链,如我的网络中192.168.0.1服务器自己访问internet资源时或者外网访问服务器本身时使用filter表规则
nat用于转发的信息包过滤,包括PREROUTING链、POSTROUTING链和OUTPUT链,如我的局域网内客户端需要通过服务器访问外网时就需要用到nat表规则
mangle用于高级路由,包括PREROUTING链和OUTPUT链
DOIT博客 fK#~-gMn)F

上面的脚本先清除了所有链的所有规则并重置了默认设置,其中INPUT链默认不接受外来访问服务器的任何数据包,接着第1步开放了服务器的80、20、21、110、143、25和8080端口,第2步允许局域网内的192.168.0.2到192.168.0.16及192.168.0.240到192.168.0.243的客户端访问服务器,第3步允许192.168.0.240及192.168.0.243无限制访问外网,第4步允许192.168.0.2到192.168.0.16访问外网的80、20、21、110、143、25、8080及DNS和echo,第5步局域网内客户端共享上网。DOIT博客T~rZ/[*G*s q5^;Q


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-12-05  
 123456
78910111213
14151617181920
21222324252627
28293031   

数据统计

  • 访问量: 3475
  • 日志数: 22
  • 图片数: 1
  • 建立时间: 2007-09-13
  • 更新时间: 2007-10-02

RSS订阅

Open Toolbar