【任务描述】
网络建立初期, 人们只考虑如何实现通信而忽略了网络的安全。 而防火墙可以使企业内部局域网与Internet之间或者与其他外部网络互相隔离, 限制网络互访来保护内部网络。
大量拥有内部地址的机器组成了企业内部网, 那么如何连接内部网与Internet呢? 代理服务器将是很好的选择, 它能够解决内部网访问Internet的问题, 并提供访问的优化和控制功能。
本任务设计在安装有企业版Linux网络操作系统的服务器上安装iptables。
【任务分析】
部署iptables应满足下列需求: ①安装好的企业版Linux网络操作系统, 必须保证常用服务正常工作。 客户端使用Linux或Windows网络操作系统。 服务器和客户端能够通过网络进行通信。 ②或者利用虚拟机进行网络环境的设置。
【任务实施】
安装iptables软件包
(1) 因为netfilter/iptables的netfilter组件是与内核集成在一起的, 所以只需要安装iptables工具, 默认情况下系统会安装该软件包, 可通过下面命令检查是否已安装:
[root@dyzx~]#rpm -qa|grep iptables
iptables-ipv6-1.4.7-9.el6.i686
iptables-1.4.7-9.el6.i686
若输出了版本信息, 则表明系统已安装。
若未安装,可在RHEL6.0安装光盘中找到安装包iptables-1.4.7-9.el6.i686.rpm进行安装便可。
(2) iptables服务运行管理。
①iptables服务的启动、 停止或重新启动:
service iptables start|stop|restart
②iptables服务的自动启动:
#chkconfig --level 345 iptables on
#ntsysv
此命令打开文本图形界面, 在iptables前面选中 “∗”, 确定后即可实现开机自动加载iptables服务; 否则取消 “∗” 就不自动加载了。
防火墙配置管理的核心命令的基本格式为:
iptables [-t表名] 命令选项 [链名] -[匹配条件] [-j目标动作/跳转]
其中:
表名、 链名——用于指定所操作的表和链, 若未指定表名, 则filter作为默认表。
命令选项——指定管理规则的方式,常用的命令选项见表11-1。
匹配条件——用于指定对符合什么样的条件的包进行处理,常用条件匹配见表11-2。
目标动作/跳转——用来指定内核对数据包的处理方式, 如允许通过、 拒绝、 丢弃或跳转给其他链进行处理等,常用目标动作/跳转见表11-3。
表11-1 iptables命令的常用命令选项
表11-2 iptables命令的常用条件匹配
续表
表11-3 iptables命令的常用目标动作/跳转
(3) iptables命令的基本使用。
①添加、 插入规则:
#iptables -t filter -A INPUT -p tcp -j ACCEPT
#iptables -I INPUT -p udp -j ACCEPT
#iptables -I INPUT 2 -p icmp -j ACCEPT
②查看规则:
#iptables -t filter -L INPUT --line-numbers
Chain INPUT(policy ACCEPT)
num target prot opt source destination
1 ACCEPTudp -- anywhere anywhere
2 ACCEPT icmp-- anywhere anywhere
3 ACCEPTtcp -- anywhere anywhere
#iptables-vn LINPUT
L选项要放在vn后, 否则会将vn当成链名。
③创建、 删除用户自定义链:
#iptables -t filter -N hnwy
//在filter表中创建一条用户自定义的链,链名为hnwy
#iptables -t filter -X
//清空filter表中所有自定义的链
④删除、 清空规则:
#iptables -D INPUT3
#iptables -F
#iptables -t nat -F
⑤设置内置链的默认策略。
当数据包与链中所有规则都不匹配时, 将根据链的默认策略来处理数据包。
默认允许的策略: 首先默认允许接受所有的输入、 输出、 转发包, 然后拒绝某些危险包。 没有被拒绝的都被允许 (灵活方便, 但安全性不高):
#iptables -P OUTPUT ACCEPT
默认禁止的策略: 通常采用默认禁止的策略。 首先拒绝所有的输入、 输出、 转发包,然后根据需要逐个打开要开放的各项服务。 没有明确允许的都被拒绝 (安全性高, 但不灵活):
#iptables -t filter -P FORWARD DROP
⑥匹配条件的设置。
匹配条件是识别不同数据包的依据, 它详细描述了数据包的某种特征, 以使这个包区别于其他所有的包。
iptables的匹配条件有3类。
a. 通用匹配条件。 不依赖于其他匹配条件和扩展模块, 可直接使用, 包括协议、 地址和网络接口匹配。
iptables -I FORWARD -s 10.10.1.0/24 -j ACCEPT
//允许内网10.10.1.0/24子网里所有的客户机上Internet网
iptables -I INPUT-picmp-s 172.16.102.36 -j DROP
iptables -I INPUT -ieth0 -picmp -j DROP
//禁止Internet上的计算机通过ICMP协议ping到本服务器的上连接公网的网络接口eth0
b. 隐式条件匹配——以协议匹配为前提。
端口匹配——以协议匹配为前提, 不能单独使用端口匹配。
#iptables-IFORWARD -ptcp--dport 20:21-j DROP
//禁止内网的10.10.1.0/24子网里所有的客户机使用FTP协议下载
TCP标记匹配——用于检查数据包的TCP标记位 (--tcp-flags), 以便有选择地过滤不同类型的TCP数据包。
使用格式为“--tcp-flags检查范围 被设置的标记”。
“检查范围” ——用于指定要检查哪些标记 (可识别的标记有SYN、 ACK、 FIN、 RST、URG及PSH)。
“被设置的标记” ——指定在 “检查范围” 中出现过且被设为1 (即状态是打开的) 的标记:
#iptables-IINPUT-ptcp --tcp-flags !SYN,FIN,ACK SYN -j DROP
//禁止那些FIN和ACK标记被设置而SYN标记未设置的数据包
ICMP类型匹配——以“-picmp” 协议匹配为前提,用于检查ICMP数据包的类型 (--icmp-type),以便有选择地过滤不同类型的ICMP数据包。
使用格式为“--icmp-type ICMP类型”。
“ICMP类型” ——可为Echo-Request、Echo-Reply、Destination-Unreachable,分别对应ICMP协议的请求、 回显、 目标不可达数据:
#iptables -A INPUT -p icmp --icmp-type Echo-Request-j DROP
#iptables -A INPUT -p icmp --icmp-type Echo-Reply-j ACCEPT
#iptables -A INPUT -p icmp --icmp-type Destination-Unreachable
-j ACCEPT
禁止其他主机ping到本服务器, 但允许从本服务器上ping其他主机 (允许接收ICMP回应数据包)。
c. 显式条件匹配。
这种匹配的功能需要由额外的内核模块提供, 因此需要在iptables命令中使用 “-m模块关键字” 的形式调用相应功能的内核模块。
常见的显式条件匹配有: MAC地址匹配; 非连续的多端口匹配; 多IP地址匹配; 状态检测匹配。
#iptables -I FORWARD -m mac --mac-source 00-19-21-F1-83-C7
-j DROP //禁止转发来自MAC地址为00-19-21-F1-83-C7的主机的数据包
#iptables -I INPUT -p tcp -m multiport --dport20,21,53 -j
ACCEPT //允许开放本机的20、21、53等TCP端口
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。