游客:
注册
|
登录
|
帮助
网友俱乐部
»
网络技术
» 如何用Red Hat Linux9.0系统架设互联网网关?(2)
网友生活网
|
网友学堂
如何获得金币?
诚招斑竹
IP归属地查询 PR查询 收录查询 whois查询
免费超短2级域名,your.jpy.cc
传世私服
|
传奇世界私服
注册亚洲交友中心,找个人来同居吧!
免费存储空间,免费网络硬盘
‹‹ 上一主题
|
下一主题 ››
投票
交易
悬赏
活动
打印
|
推荐
|
订阅
|
收藏
标题: 如何用Red Hat Linux9.0系统架设互联网网关?(2)
ty
荣誉会员
UID 9897
精华 0
积分 1868
帖子 901
威望 901
金币 892
热心 9
阅读权限 50
注册 2006-3-22
状态 离线
#1
使用道具
发表于 2006-4-2 18:57
资料
个人空间
短消息
加为好友
如何用Red Hat Linux9.0系统架设互联网网关?(2)
三、配置防火墙和NAT(地址伪装)
我们已经为局域网的用户打开了一扇通向互联网的大门了,现在坐下来想想是否还得做点什么?对了,我们这个代理服务器还不太安全。当然,一个有着正确配置的代理服务能够保证岂不会被一些不速之客所访问,但是其他服务是否也已经得到了很好的保护呢?接下来我们就通过Linux的一个常用工具——防火墙来为上述问题提供一个满意的答案。
现在大部分Linux发行版都带有以下两个软件包:ipchains和iptables,但前者已经有些过时,所以我们将专门介绍Red Hat 默认采用的iptables。
我们首先解决安全问题。在/etc/sysconfig目录下存放着一个名为iptables的文件,该文件采用iptables-save和iptables-restore实用程序所特有的格式。如果在安装时选择了中级保护,那么该文件将由lokkit程序创建,如下所示:
# Firewall configuration written by lokkit
# Manual customization of this file is not recommended.
# Note: ifup-post will punch the current nameservers through the
# firewall; such entries will *not* be listed here.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Lokkit-0-50-INPUT - [0:0]
-A INPUT -j RH-Lokkit-0-50-INPUT
-A FORWARD -j RH-Lokkit-0-50-INPUT
-A RH-Lokkit-0-50-INPUT -i lo -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 0:1023 --syn -j REJECT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 2049 --syn -j REJECT
-A RH-Lokkit-0-50-INPUT -p udp -m udp --dport 0:1023 -j REJECT
-A RH-Lokkit-0-50-INPUT -p udp -m udp --dport 2049 -j REJECT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 6000:6009 --syn -j REJECT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 7100 --syn -j REJECT
COMMIT
这个配置文件从逻辑上可以分为三部分。首先出现的是默认策略,允许所有ITPUT、FORWORD和OUTPUT数据包通过。接下来是一条特殊规则RH-Lokkit-0-50-INPUT,他后面的每一行都是一条规则。数据包依次经过这些规则的过滤,直至找到一个匹配的。这里一个常犯的错误是将一条允许规则置于一条拒绝规则之后。为此,创建规则的时候,首先应该是主机的允许规则,然后是主机的拒绝规则,接下来是网络的允许规则,最后是网络的拒绝规则。
我们这里这个中等级别的安全配置文件允许本地接口的所有数据包,拒绝1023及其以下的端口上的输入数据包,并拒绝X Window系统和字体服务器端口。如果连接是从本地发起的,过滤器将允许所有的数据包。该配置对工作站来说已经非常合理了,但对于一个网关服务器来说,还欠些火候,所以还要进一步改进。在改进之前,我们假设网关的IP地址为192.168.0.1,通过以太接口eth0接入内部网络192.168.0.0。
为了能方便使用电子邮件等服务,我们这里会用到NAT技术,它有时又称为地址伪装。它的作用在于将来自内部机器的IP数据包做些转换工作,使它们在外部看来是网关发出的。但外部的数据进入时,NAT在进行相应的逆变换。
首先要做的是允许转发全局数据包,可以通过以下任何一条命令来实现,或者:
# echo 1 > /proc/sys/net/ipv4/ip_forward或者:# sysctl -w net.ipv4.ip_forward=1
但无论使用上面哪条命令,都必须在超级用户模式下进行。另外,还需要修改/etc/sysctl.conf文件中的下面一行:
net.ipv4.ip_forward = 0
将这一行改为:
net.ipv4.ip_forward = 1
下一步是配置iptables。一般情况下,电子邮件服务会用到三个端口:25,通过SMTP发送电子邮件;110,通过POP3接收电子邮件;143,通过IMAP4接收电子邮件。至于新闻组,它使用的是端口119。要允许经由这些端口的连接的话,我们还得向文件/etc/sysconfig/ipchains中添加部分规则。
我们现在来为我们的用户机器配置DNS,因为电子邮件客户程序需要它。如果我们知道邮件服务器的IP地址的话,我们可以将其放入Linux的/etc/hosts文件,对于Windows9X/ME则放入c:windowshosts,对于WindowsNT/2000/XP放入c:winntsystem32driversetchosts。
通常情况下规则的顺序是非常重要的,用于电子邮件的规则也不例外,具体如下所示:
# Simple firewall for internet gateway
*filter
:INPUT ACCEPT [0:0]
# Deny forward for security reasons
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
:RH-FW-INPUT - [0:0]
# Redirect all input-forwarded packets to our special rule
-A INPUT -j RH-FW-INPUT
# Accept all packets for local interface (lo)
-A RH-FW-INPUT -i lo -j ACCEPT
# Define custom rules
# This part equal to some part from generated by Lokkit utility
-A RH-FW-INPUT -p tcp -m tcp --dport 0:1023 --syn -j REJECT
-A RH-FW-INPUT -p tcp -m tcp --dport 2049 --syn -j REJECT
-A RH-FW-INPUT -p udp -m udp --dport 0:1023 -j REJECT
-A RH-FW-INPUT -p udp -m udp --dport 2049 -j REJECT
-A RH-FW-INPUT -p tcp -m tcp --dport 6000:6009 --syn -j REJECT
-A RH-FW-INPUT -p tcp -m tcp --dport 7100 --syn -j REJECT
# Allow access to mail/news/DNS
-A FORWARD -s 192.168.0.0/24 -p tcp -m tcp --dport 25 -j ACCEPT
-A FORWARD -s 192.168.0.0/24 -p tcp -m tcp --dport 110 -j ACCEPT
-A FORWARD -s 192.168.0.0/24 -p tcp -m tcp --dport 143 -j ACCEPT
-A FORWARD -s 192.168.0.0/24 -p tcp -m tcp --dport 119 -j ACCEPT
-A FORWARD -s 192.168.0.0/24 -p tcp -m tcp --dport 53 -j ACCEPT
-A FORWARD -s 192.168.0.0/24 -p udp -m udp --dport 53 -j ACCEPT
COMMIT
# Enable masquerading
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A POSTROUTING -p tcp -s 192.168.0.0/24 -o ppp0 -j MASQUERADE
-A POSTROUTING -p udp -s 192.168.0.0/24 -o ppp0 -j MASQUERADE
COMMIT
然后添加如下命令来加载用于地址伪装的内核模块:
# touch /etc/rc.d/rc.modules
# chmod +x /etc/rc.d/rc.modules
# ln -s /etc/rc.d/rc.modules /etc/rc.modules
# cat > /etc/rc.d/rc.modules
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe iptable_nat
modprobe ip_nat_ftp
^D
若要不想重新启动系统的话,可以运行rc.modules:
# /etc/rc.d/rc.modules
出于安全的考虑,我们当前的转发策略为DENY,因为这样就可以拒绝非法IP数据包。
在修改完我们的配置文件后,还得运行iptables才能让它发挥作用。另外,如果能让iptables自动载入那就更好了。现在动手吧:
# service ipchains start
Reseting all current rules and user queries [ OK ]
Cleaning all current rules and user queries [ OK ]
Loading rules iptables [ OK ]
# chkconfig iptables on
有时候启动iptables会中断某些服务,所以建议打开对REJECT和DROP规则的日志。另外,用-j LOG –log-prefix “short comment”替换掉-j DROP 或-j REJECT,这样一来就会为被阻止的数据包向系统日志/var/log/messages中添加相应的消息,籍此您就可以精心制作出更合适的允许规则了。当然,有些我们也能允许某些用户使用网络外部的其他一些服务,但你应该尽量避免这样做,因为它会降低网络的整体安全性能。
[广告]
免费域名(Free Subdomain)
免费空间(Free hosting)
PR查询(Google Pagerank)
投票
交易
悬赏
活动
控制面板首页
编辑个人资料
积分交易
公众用户组
好友列表
个人空间管理
基本概况
流量统计
客户软件
发帖量记录
论坛排行
主题排行
发帖排行
积分排行
在线时间
管理团队
管理统计
当前时区 GMT+8, 现在时间是 2008-10-11 12:58
信产部ICP备案:
京ICP备05066424号
北京市公安局网监备案:1101050648号
Powered by
Discuz!
5.5.0
TOP
清除 Cookies
-
联系我们
-
网友俱乐部
-
Archiver
-
WAP