iptables实战笔记
上一篇 / 下一篇 2007-09-14 21:32:58 / 天气: 阴雨 / 心情: 平静 / 个人分类:Linux
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\4Qta${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/y C: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"
yx C/bo:yz@;wD0IP_WORK_RANGE="192.168.0.2/28"DOIT博客&zm"Sw*nl
IP_ALL="192.168.0.0/24"DOIT博客O){djT|(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博客-lcn&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#ps
$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博客%_U3ZI[OK
# (3) 允许访问ftp服务DOIT博客0vJ3Gn i:t#k"\%I
$IPT -A INPUT -p tcp --dport 20 -j ACCEPT
%Y'^Jf-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? el\-Q8g
$IPT -A INPUT -p tcp --dport 8080 -j ACCEPT
t,Dqa(S2WI U0# 2. 允许工作人员通过局域网访问服务器DOIT博客p9]5O Cxm K 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无限制上网
qm!Y Mn 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