Chinaunix首页 | 论坛 | 博客
  • 博客访问: 313122
  • 博文数量: 75
  • 博客积分: 1956
  • 博客等级: 上尉
  • 技术积分: 862
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-21 15:36
文章分类

全部博文(75)

文章存档

2018年(1)

2012年(3)

2011年(19)

2010年(1)

2009年(1)

2008年(50)

分类: LINUX

2008-09-11 15:59:43

考点 15.02 防火墙和包过滤

防火墙被放置在你所在的局域网与外部网络之间。防火墙可以被配置用于检测进出你所在网络的数据包。当防火墙被适当的配置后,它可以过滤对你系统有安全威胁的数据包,以保证网络安全。

要理解包过滤如何工作,你需要知道信息是如何在网络中传输的。

在你向网络发送信息之前,信息被分解成小的单元,叫做“包”。管理信息,包括数据类型、源地址和目的地址被加到每一个“包”中。当这些“包”到达目的计算机后被重新组合。防火墙检查每个“包”的管理信息区域,以确定是否允许这些包通过。

Red Hat Enterprise Linux 包含你需要所有东西,以将系统配置为防火墙,包括 iptables 命令。

在工作中
RHEL5同样包括IPv6网络的防火墙, ip6tables。

配置 iptables

iptables 的运作原理基于“chains”(链)。它对网络的数据包设置各种规则。每条规则做两件事:它定义在何种情况下包匹配这条规则和匹配后进行何种操作。
iptables 命令的格式如下:
iptables -t tabletype -j
现在一步步分析这条命令。首先是 -t tabletype 开关。iptables有两tabletype种基本的tabletype:
*filter:设定包过滤规则
*nat:配置网络地址转换,或者说是伪装,将在以后的章节讨论
如果你不使用 -t tabletype 参数,默认是采用 filter;iptables 命令会认为你要操作一条过滤规则。

然后是。iptables的规则中有4种基本的操作:
*-A (--append) 在链末尾添加一条规则。
*-D (--delete) 删除链中的一条规则。需要确定规则的位置。
*-L (--ist) 列出目前链中的配置的所有规则。
*-F (--flush) 删除所有规则。
当你添加或删除一条规则时,你要确定网络数据传输的方向:
*INPUT 所有输入的包
*OUTPUT 所有输出的包
*FORWARD 所有转发的包

下面你要配置。iptables防火墙会核查所有包的模式。下面是IP地址的简单模式:
*-s ip_address 源地址
*-d ip_address 目的地址
包的模式很复杂。在 TCP/IP中,包使用TCP、UDP或ICMP协议传输。你可以使用 -p 来指定这些协议,并包括目的端口(--dport)。例如, -p tcp --dport 80 匹配网络中的HTTP连接。

当 iptables 在包模式中找到匹配条件,它需要知道如何处理这些包,这就是命令的最后部分, -j 。这里有3种基本选项:
*DROP 丢弃匹配的包,不发送任何信息。
*REJECT 丢弃匹配的包,向发起请求的计算机发送错误消息。
*ACCEPT 允许报进入,并遵循 -A 的定义:INPUT、OUTPUT或FORWARD。

下面是一些例子,教你如何使用 iptables 命令来配置防火墙。第一步是查看目前的配置,使用如下命令:
# iptables -L (注意:使用 iptables 命令需要管理员身份)
如果iptables以前配置过,它会返回链中的规则,在3个不同的类里:INPUT、OUTPUT和FORWARD

以下命令定义规则:拒绝来自 192.168.75.0 子网的所有流量,并向请求连接的客户端发送“destination unreachable”的错误消息。
# iptables -A INPUT -s 192.168.75.0/24 -j REJECT

下面的命令将阻止 IP 地址为 192.168.25.200 上的用户 “ping”你的系统。(ping 命令使用 ICMP 协议)
# iptables -A INPUT -s 192.168.25.200 -p icmp -j DROP
192.168.1.0
下面的命令将防止来自外网的 TCP SYN 攻击。假定你所在网络的 IP 地址是 192.168.1.0。使用(!)的意思是:除 192.168.1.0 外的所有网络(子网掩码为 255.255.255.0)。
# iptables -A INPUT -s !192.168.1.0/24 -p tcp -j DROP

如果你想删除列表中关于 ping 的规则(有些服务使用 ICMP 来测试联通性,如VOIP),使用以下命令:
# iptables -D INPUT -s 192.168.25.200 -p icmp -j DROP

默认的规则中对于 INPUT、OUTPUT 和 FORWARD 的操作都是 ACCEPT。如果拒绝转发,需添加如下命令:
# iptables -A FORWARD -j DROP

维护 Netfilter 规则

当你使用 iptables 命令对规则进行更改后,使用下面的命令将改动保存:
# service iptables save
这条命令将你的链表保存到 /etc/sysconfig/iptables 配置文件中。当你启动 Linux 后,iptables 服务的启动脚本会去读取这个文件。你可以使用 chkconfig 命令在所有网络启动级别中(2、3、4和5)激活 iptables 服务:
# chkconfig iptables on
# chkconfig --list iptables
iptables        0:off   1:off   2:on   3:on   4:on   5:on   6:off

考试预览
知道如何配置安全的 Red Hat Enterprise Linux 系统以应对非认证的访问。
理解章节中所讨论的内容和命令。

Red Hat 防火墙配置工具

你可以自动化配置防火墙。RHEL 包含了安全级别配置工具。你可以使用 system-config-securitylevel 命令来启动,或在菜单中选择 System | Administration | Security Level 来启动它。截图掠过。。。。。(个人建议,图像化配置工具能不用就不用,可能会出现莫名其妙的问题)

如果你以前安装过 RHEL,界面会看起来很熟悉;选项和 RHEL 第一次启动的进程相同。同样 RHEL 还有同版本的基于文本界面的配置工具,可在文本情况下使用 system-config-securitylevel-tui 启动。

Red Hat 在 RHEL5 中已经改变这个工具;你可以翻到这一章节的最后,它提供设置 SELinux 的允许方式:Enforcing,Permissive或者是 Disabled(SELinux的配置由SELinux Management负责)。它同样支持对端口的简单配置;如点击“Add”,在探出的窗口中添如端口号,并选择协议方式,TCP 或 UDP,点击“OK”。安全级别配置工具将自动将这个端口添加到防火墙的允许列表中。
*RHEL 防火墙默认允许外部用户的 ping 命令,并允许对 e-mail 和 DNS 服务的访问,以及支持 IPP。如果你要增强这些服务的安全性,请关闭安全级别配工具,在 /etc/sysconfig/iptables 配置文件中进行修改。
*默认情况下,RHEL 防火墙组织所有非本地网络的入站请求。例如,DNS恢复是被允许的。

如书中截图所示,你可以选择多个服务,以允许访问。例如,如果你勾选WWW (HTTP),其他人将可以连接到你计算机的 Web 服务。通过这些选项,你可以允许以下服务的访问:
*选择 FTP 选项,启用 FTP 服务器,使用 vsFTP 服务。
*选择 Mail (SMTP),通过 sendmail 或 Postfix 提供邮件服务。详情见第12章。
*选择 NFS4,允许通过 NFS 共享目录。 详情见第10章
*选择 SSH,允许安全的远程连接。详情见第13章
*选择 Samba 选项,允许与 Microsoft Windows 网络共享目录。
*选择 WWW (HTTPS) 选项,提供安全的 Web服务。
*选择 Telnet,将允许Telnet服务。
*选择 WWW (HTTP) 允许 Web 服务。
你选择的配置将被保存到文件 /etc/sysconfig/iptables。你可以使用 iptables 命令添加其他防火墙规则。

下面的截图是添加TCP/IP端口。(图我就不附了)

例如,如果你要允许代理服务通过防火墙,你需要添加 3128 端口,使用 TCP/IP协议(3128端口为 Squid服务默认端口,可以在 /etc/services 或 /etc/squid/squid.conf 中定义)。同样 iptables 命令如下:
# iptables -A INPUT -p tcp --dport 3128 -j ACCEPT

阅读(1094) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2008-09-11 22:24:58

我基本上是直译,一段对一段。很好对应的。

chinaunix网友2008-09-11 16:17:55

应该将原文和中文以行尾单位对应,如果别人阅读的时候发现不准确,可以跟帖校正