分享
 
 
 

RedHat7.1下Ipchains的经典应用

王朝other·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

摘要:

网络的安全性是一个不可忽视的问题,Linux从早期版本的ipfwadm到2.2的ipch

ains和2.4的netfilter,提供了配置简单而强大的防火墙工具。本文以一个小企业网

络网络为例子,讲述了RedHat7.1下使用ipchains的几个实用配置,其中包括内外网

的IP隐藏(Masquerading)和口转发(Port forwarding);另外给出有效和安全的

rule配置规范。

一、基本知识和假设

1.选择防火墙策略

防火墙一般只有两个策略:

A.除了明确允许,否则拒绝

B.除了明确拒绝,否则允许

第一种更能保证网络的安全性,这也是我们实验采用的策略。

2.网络结构设计

我们的实验网络由一个防火墙和两个局域网组成,防火墙放在内部网和Internet

(专线上网)的中间。 FireWall所在的机器配置两个TpLink8139a/10m网卡,

只有外部网卡上使用合法IP202.116.0.1,其他均为 保留IP。第一个内部网(LAN1)

192.168.1.*局域网连接到网关192.168.1.1,第二个内部网(LAN2)192.168.2.*

局域网连接到网关192.168.2.1。企业的要求是内部网的机器能访问Internet,

并且对外提供www服务。

网络结构图如下:

INTERNET

|

-----------------[202.116.0.1]--------------------------

| | |

|

FireWall |

| | |

---------[192.168.1.1]-----------[192.168.2.1]-----------

|

|

+-------------+

+-------------+

[92.168.1.2] [192.168.1.3] [192.168.2.2] [192.168.2.3](www)

系统要求:

系统版本:RadHat7.1

Ipchains版本:1.3.10(已内置)

二、前期准备

1.安装网卡

实验网络需要3个网卡,按照如下顺序配置:

A.添加配置外部网卡eth0:

#netconfig

IPADDR=202.116.0.1

NETMASK=255.255.255.0

DefalutGW=202.116.0.254

B.添加配置LAN1网卡eth1:

编辑 /etc/sysconfig/network-scripts/ifcfg-eth1

IPADDR=192.168.0.1

NETMASK=255.255.255.0

ONBOOT=yes

C.添加配置LAN2网卡eth2:类似B.

提示:如果没有找到ifcfg-eth1/2文件,可以copyifcfg-eht0进行修改.

不要直接使用ifconfig,否则重启后的重新配置.

2. 配置路由

由于上面的配置只有一个默认网关,还没有完成全部必要的路由,所以还要

手工配置。

编辑 /etc/rc.d/rc.local

在最后一个"fi"前添加如下命令,使得每次启动系统都能自动配置路由:

echo "Setting routes......"

/sbin/route add -net 127.0.0.0

/sbin/route add -net 202.116.0.1 netmask 255.255.255.0 eth0

/sbin/route add -net 192.168.1.0 netmask 255.255.255.0 eth1

/sbin/route add -net 192.168.2.0 netmask 255.255.255.0 eth2

/sbin/route add -host 202.116.0.1 eth0

/sbin/route add -host 192.168.1.1 eth1

/sbin/route add -host 192.168.2.1 eth2

/sbin/route add default gw 202.116.0.254

提示:为了能保存配置,不使直接用route.

配置eth1,eth2致关重要,否则本地数据报不可能别转发.

3.加入Ipchains

虽然7.1内置了ipchains,为了保证能正确启动,最好完成下面步骤:

A.添加模组

#linuxconf

选择[Control]->[Control files and systems]->[Configure Linuxconf modules],

点选[firewall]模组。

#reboot (重新开机)

B.启用转发功能

#linuxconf

选择[Networking]->[clinet tasks]->[Routing and gateways]->[Set Defaults],

点选 [X] Enable routing

C.启用规则链

选择[Config]->[Networking]->[Firewalling]->[Firewalling],

启用选择下面三项

Inputing rules (*) are active

Outputing rules (*) are active

Forwarding ules (*) are active

D.启动ipchains

# setup

进入 System,services 选项里,选取ipchains,

确保系统会自动启动防火墙.

提示:B可以用下面方法代替

#/etc/sysconfig/network中添加FORWARD_IPV4=yes

或者:

#echo '1' >/proc/sys/net/ipv4/ip_forward

三、初始化和规则规范

1.虽然可以通过shell执行ipchains配置规则,但为了不小心通过命令行添加和

删除规则,造成防火墙不全安全,也为了能保存已有规则,建议把所有规则

放在一个可执行的shell脚本中,通过修改脚本管理规则,并且通过执行shell

脚本添加规则。

#touch /etc/rc.d/rc.myfirewall

#chmod u+x /etc/rc.d/rc.myfirewall

通过vi管理规则

#./rc.myfirewall导入规则

脚本的格式:

/sbin/ipchains 规则

2.定义全局变量

EXTERNAL_INTERFACE="202.116.0.1"

LAN1_INTERFACE="192.116.1.1"

LAN2_INTERFACE="192.116.2.1"

LOOPBACK_INTERFACE="lo"

3.由于我们采用了"除了明确允许,否则拒绝"的策略,我们的防火墙的初始化部分

如下:

#Set the policy

/sbin/ipchains -P input DENY

/sbin/ipchains -P output DENY

/sbin/ipchains -P forward DENY

#Flush the chains

/sbin/ipchains -F input

/sbin/ipchains -F output

/sbin/ipchains -F forward

#other Firewall rules

4.为了安全可以启动必要的日记记录;

并通过添加用户自定义链优化规则。

四、实验设计和测试

下面按照上面的要求,设计了实验的案例。请注意,实验过程基本上是顺序进

行,因为后一个案例可能依赖于前一个的完成。

1.本地环路访问

原理:由于我们的默认为拒绝所有包,环路接口的数据包也被拒绝,为了能使用

系统日记、X Windows和其他本地UNIX域及基于socket的服务,

必须允许这些数据报通过。

规则:

ipchains -A input -i $LOOKBACK_INTERFACE -j ACCEPT

ipchains -A output -i $LOOKBACK_INTERFACE -j ACCEPT

测试:

ping 202.116.0.1 [ok]

ping 127.0.0.1 [ok]

2.允许内部机器访问Internet

原理:由于内部网使用的不是合法IP,所以无法直接访问Internet,数据包会

被eth0被丢弃。我们使用用到Ip隐藏或Ip欺骗技术,实现单个IP的共享,

即NAT(Net Address Transporting)。其原理是:LAN的数据

报从内部网关上的输出队列转到外部网卡的输入队列前,数据报的源地址

被替换为外部网卡IP即202.116.0.1,再传到Internet上。

规则:

#只允许Internet对外部卡的访问:

ipchains -A output -i eth0 -s EXTERNAL_INTERFACE all -d 0/0 all -j ACCEPT

ipchains -A input -i eth0 -s 0/0 all -d EXTERNAL_INTERFACE all -j ACCEPT

#外部卡上的IP隐藏:

ipchains -A forward -i eth0 -s $LAN1_INTERFACE/24 -j MASQ

ipchains -A forward -i eth0 -s $LAN2_INTERFACE/24 -j MASQ

#允许LAN1访问所有外部IP:

ipchians -A output -i eth1 -s 0/0 all -d 0/0 all -j ACCEPT

ipchians -A input -i eth1 -s 0/0 all -d 0/0 all -j ACCEPT

#允许LAN2访问所有外部IP:

ipchians -A output -i eth2 -s 0/0 all -d 0/0 all -j ACCEPT

ipchians -A input -i eth2 -s 0/0 all -d 0/0 all -j ACCEPT

测试:

【192.168.1.2】:ping InternetIP [ok]

【192.168.2.2】:ping InternetIP [ok]

3.内部多个LAN的相互访问

原理:要求LAN1,LAN2能不需要Ip隐藏地互相访问,只要网关支持转发就可

以。

规则:

#允许从内部网1到内部网2访问:

ipchains -A output -i eth1 -s $LAN1_INTERFACE/24 -d $LAN2_INTERFACE/24 -j ACCEPT

ipchains -A input -i eth1 -s $LAN2_INTERFACE/24 -d $LAN1_INTERFACE/24 -j ACCEPT

ipchains -A forward -i eth1 -s $LAN1_INTERFACE/24 -d $LAN2_INTERFACE/24 -j ACCEPT

#允许从内部网2到内部网1访问:

ipchains -A output -i eth2 -s $LAN1_INTERFACE/24 -d $LAN2_INTERFACE/24 -j ACCEPT

ipchains -A input -i eth2 -s $LAN2_INTERFACE/24 -d $LAN1_INTERFACE/24 -j ACCEPT

ipchains -A forward -i eth2 -s $LAN1_INTERFACE/24 -d $LAN2_INTERFACE/24 -j ACCEPT

测试:

【192.168.1.2上】:ping 192.168.2.3 [ok]

【192.168.2.2上】:ping 192.168.1.3 [ok]

4.允许Internet对内部服务www的访问

原理:外部机器无法访问到内部服务,可以使用代理;另种方法就是利用端

口转发了。端口转发是在IP层内核一级重写数据包,所以应用级代理

更加稳定可靠,速度更快。而且可以在防火墙外部地址上使用IP别名

处理更多的端口转发请求(如若有多台WWW服务器).

在访问过程中分为(见下图),外部机器对内部机器的服务请求及外部机

器对请求的相应, 所以同时用到前面的Masquareding和

Port Forwarding。

LAN 数据报 |---MASQ---| Internet数据报

(www相应)[srcIP:192.168.0.1]-->| Firewall |--> [srcIP:202.116.0.1]

(www请求)[dIP:192.168.0.1:80]<-|-Port FW--|<-[srcIP:202.116.0.1:80]

Linux7.1已经有一个端口转发模块ip_masq_portfw,但是配置和管

理却是通过第三方程序ipmasqadm,可以在下面FTP上找到 ipmasqadm

RPM包。

ftp://ftp.redhat.com/pub/contrib/libc6/i386/

ipmasqadm-0.4.6.i386.rpm

规则:

由于有了前面“允许内部机器访问Internet”的配置,我们所要做的就是启

动外部接口的端口转发规则:

/usr/sbin/ipmasqadm

portfw

-a

-P

tcp

/

- L EXTENAL_INTERFACE

80 -R

192.168.1.2

80

五、后记

ipchains配置比较简单,安全性也比较强,但是随着netfilter的出现,尤其是

由于netfilter 允许建立状态防火墙,能够过滤TCP标志任意组合报文,还能够过滤

MAC地址,所以比ipchains具有的优势。所以会有越来越多的管理员转而使用

Netfilter.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有