iptables服务的安装
1. 安装iptables软件包
因为netfilter/iptables的netfilter组件是与内核集成在一起的,所以只需要安装iptables工具,默认情况下系统会安装该软件包,可通过下面命令检查是否已安装:

防火墙与Squid代理服务器的搭建及应用_内网

若输出了版本信息,则表明系统已安装。若未安装,可在RHEL 7.2安装光盘中找到安装包iptables-1.4.21-16.e17.x86_64进行安装即可。
2. Iptables服务的常用管理命令
设置完成后可启动、停止或重启iptables服务了,有关命令如下:
(1) iptables服务的启动。停止或重新启动

防火墙与Squid代理服务器的搭建及应用_服务器_02

(2) iptables服务的自动启动

防火墙与Squid代理服务器的搭建及应用_内网_03


防火墙与Squid代理服务器的搭建及应用_服务器_04

此命令打开文本图形界面,在iptables前面选中“”,确定后即可实现开机自动加载iptables服务,否则取消掉“”就不自动加载了。

防火墙与Squid代理服务器的搭建及应用_内网_05

  1)添加、插入规则

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200111142900636.png)

2)查看规则

防火墙与Squid代理服务器的搭建及应用_服务器_06


Iptables -vnL INPUT

防火墙与Squid代理服务器的搭建及应用_内网_07

  3)创建、删除用户自定义链
在filter表中创建一条用户自定义的链,链名为hnwy。

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200111143011283.png)

清空filter表中所有自定义的链。
4)删除、清空规则

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200111143017358.png)

5)设置内置链的默认策略
当数据包与链中所有规则都不匹配时,将根据链的默认策略来处理数据包。
默认允许的策略:首先默认允许接受所有的输入、输出、转发包,然后拒绝某些危险包,没有明确允许的都被拒绝。这种方式安全性高,但不灵活。通常采用默认禁止的策略。

防火墙与Squid代理服务器的搭建及应用_ip地址_08

6)匹配条件的设置
匹配条件是识别不同数据包的依据,它详细描述了数据包的某种特征,以使这个包区别于其他所有的包。
Iptables的匹配条件有3类:

(1) 通过匹配条件——不依赖于其他匹配条件和拓展模块,可直接使用。包括协议、地址和网络接口匹配。
1>iptables -I FORWARD -s 10.10.1.0/24 -j ACCEPT
允许内网10.10.1.0/24子网里所有的客户机上Internet网
2>iptables -I INPUT -p icmp -s 172.16.102.36 -j DROP
3>iptables -I INPUT -i eth0 -p icmp -j DROP
禁止Internet上的计算机通过ICMP协议ping到本服务器的上连接公网的网络接口eth0.
···· (2)隐含条件匹配——以协议匹配为前提
1> 端口匹配——以协议匹配为前提,不能单独使用端口匹配

禁止内网的10.10.1.0/24子网里所有的客户机使用FTP协议下载

2> TCP标记匹配

用于检查数据包的TCP标记位(–tcp-flags),以便有选择的过滤不同类型的TCP数据包

3>禁止那些FIN和ACK标记被设置而SYN标记未设置的数据包。

4>ICMP类型匹配——以“-p icmp”协议匹配为前提

用于检查ICMP数据包的类型(–icmp-type),以便有选择地过滤不同类型的ICMP数据包。

ICMP类型可为:“Echo-Request”,“Echo-Reply”,“Destination-Unreachable”,分别对应ICMP协议的请求、回显、目标不可达数据。

防火墙与Squid代理服务器的搭建及应用_ip地址_09


禁止其他主机ping到本服务器,但允许从本服务器上ping其他主机(允许接收ICMP回应数据包)。

(3)回显条件匹配

这种匹配的功能需要由额外的内核模块提供,因此需要在iptables命令使

用“-m模块关键字”的形式调用相应的内核模块。

常见的显式条件匹配有:MAC地址匹配、非连续的多端口匹配、多IP地址匹配、状态检测匹配。

防火墙与Squid代理服务器的搭建及应用_内网_10

禁止转发来自MAC地址为00-19-21-F1-83-C7的主机的数据包。

防火墙与Squid代理服务器的搭建及应用_内网_11

允许开放本机的20、21、53等TCP端口。
7)规则的保存与恢复
使用iptables命令手工进行设置,在系统中是即时生效的,但如果不进行保存将在系统下次启动时丢失。
(1) 保存防火墙规则
命令1:service iptables save
将当前正在运行的防火墙规则,保存到“/etc/sysconfig/iptables”文件中,文件原有的内容将被覆盖。Iptables每次启动或重启时都使用/etc/sysconfig/iptables文件中所提供的规则进行规则恢复。
在保存防火墙当前配置前应将原有配置进行备份

防火墙与Squid代理服务器的搭建及应用_服务器_12

命令2:iptables-save
将配置信息显示到标准输出(屏幕)中

命令3:iptables-save>路径/文件名

将显示到标准输出(屏幕)中的当前正在运行的防火墙规则配置信息重定向保存到指定目录的指定文件中。

Service iptables save命令等效于iptables-save>/etc/sysconfig/iptables命令;使用iptables-save命令可以将多个版本的配置信息保存到不同的文件中。

防火墙与Squid代理服务器的搭建及应用_内网_13

将当前运行的防火墙规则保存到用户指定的配置文件和系统默认的配置文件。
(2) 恢复防火墙规则
命令:iptables-restore<路径/文件名
功能:将使用iptables-save保存的规则文件中的规则恢复到当前系统中。
Iptables-restore命令可恢复不同版本的防火墙配置文件。

防火墙与Squid代理服务器的搭建及应用_ip地址_14

实例一——管理icmp

禁止某机(物理机)ping防火墙所在主机(虚拟机)

防火墙与Squid代理服务器的搭建及应用_服务器_15


禁止除某机以外的其他主机ping防火墙所在的主机

防火墙与Squid代理服务器的搭建及应用_ip地址_16


禁止本网段以外的主机ping本机

防火墙与Squid代理服务器的搭建及应用_ip地址_17


禁止所有人ping本机

防火墙与Squid代理服务器的搭建及应用_内网_18

实例二——设置远程登录限制
初始化:

防火墙与Squid代理服务器的搭建及应用_ip地址_19


仅允许某机127.0.0.1使用ssh连接防火墙

防火墙与Squid代理服务器的搭建及应用_ip地址_20

实例三——作为专门Web服务器终端的配置
要让局域网内的计算机访问内部网的FTP、Web等服务器,实现如图的应用场景, 应在防火墙上按如下步骤配置:
1. 初始化防火墙,清除任何以前配置的规则

防火墙与Squid代理服务器的搭建及应用_服务器_21


2. 使客户机能远程登录访问服务器

防火墙与Squid代理服务器的搭建及应用_服务器_22


3. 把所有默认策略设置为DROP

防火墙与Squid代理服务器的搭建及应用_内网_23


4. 让本机的回环设备可以使用

防火墙与Squid代理服务器的搭建及应用_服务器_24

没有上述两条规则时,系统启动会卡住
5. 客户机通过80端口访问WEB服务器

防火墙与Squid代理服务器的搭建及应用_内网_25


6. 使防火墙能够解析进来的包

防火墙与Squid代理服务器的搭建及应用_服务器_26

7. 保存设置

防火墙与Squid代理服务器的搭建及应用_服务器_27

请在启动Linux系统前添加第二块网卡。
第1步:启动虚拟机软件。
第2步:添加第二块网卡。
在虚拟机软件菜单上单击“虚拟机”—>“设置”—>“添加”,接着单击“网络适配器”—>“下一步”,选择“网桥”,单击“完成”—>“确定”。
第3步:启动RHEL7.2。
第4步:配置IP地址。
第一块网卡eth0:172.16.102.X+60
第二块网卡eth1:10.10.1.X/24

使用iptables实现NAT服务
IP地址的分配与管理由ICANN管理机构负责,公网地址必须经申请;后才能合法使用。为解决IP地址资源问题,IANA机构将IP地址划分了一部分出来,将其规定为私网地址,只能在局域网内使用,不同局域网可重复使用。
可使用的私网地址有:
>>一个A类地址:10.0.0.0/8
>>16个B类地址:172.16.0.0/16~172.31.0.0/16
>>256个C类地址:192.168.0.0/16
1. NAT服务的概念及分类
为了解使用私网地址的局域网用户访问因特网的问题,从而诞生了网络地址转换(NAT)技术。
NAT(Network AddressTranslation,网络地址转换)是一种用另一个地址来替换IP数据包头部的源地址或目的地地址的技术。
通过网络地址转换操作,局域网用户就能透明地访问因特网,通过配置静态地址转换,位于因特网中的主机还能实现对局域网内特定主机的访问。
目前几乎所有防火墙的软硬件产品都集成了NAT功能,iptables也不例外。
根NAT替换数据包头部中地址的不同,NAT分为源地址转换ABAT(IP伪装)和目的地址转换DNAT两大类。
局域网用户的访问请求报文中的源地址是私网地址,报文在进入因特网后,将被英特网中的路由器丢弃。
利用网络地址转换技术,在报文离开局域网的边界路由器进入因特网之前,对报文中的源地址进行替换修改,将其替换修改为某一个合法的公网地址,这样报文就能在因特网中被正常路由器转发了,访问就会成功。
这种对报文中的源地址或目的地之进行替换修改的操作,就称为网络地址转换。

2. 使用SNAT实现使用私网IP的多台主机共享上网
为落实上述SNAT技术的结果,要在NAT服务器上完成以下两个操作:
步骤1> 开启Linux内核IP报文转发功能
允许NAT服务器上的eth0和eth1两块网卡之间能相互转发数据包,有两种开启方法:

cd …/etc/

执行命令:

方法一ip_forward 0->1

防火墙与Squid代理服务器的搭建及应用_ip地址_28


防火墙与Squid代理服务器的搭建及应用_ip地址_29


方法二

防火墙与Squid代理服务器的搭建及应用_ip地址_30


使sysctl.conf的修改立即生效。

步骤2> 添加使用SBAT策略的防火墙规则

当NAT服务器的外网接口配置的是固定的公网IP地址

防火墙与Squid代理服务器的搭建及应用_服务器_31

当NAT服务器通过ADSL拨号方式连接Internet,即外网接口获取的是动态公网IP地址:

3. 使用DNAT实现向公网发布私网的应用服务器

步骤1> 确认已开启网关的路由器转发功能(方法同上)

步骤2> 添加使用DNAT策略的防火墙规则,若发布的是Web服务器,其命令如下:

防火墙与Squid代理服务器的搭建及应用_ip地址_32

需求分析:
所有内网计算机要访问互联网,Mail和FTP服务器对内部员工开放,对外发布Web站点,管理员通过外网对Web站点进行远程管理。
首先,删除所有规则设置,将默认规则设置为DROP;然后开启防火墙对于客户端的访问限制,打开Web、MSN、QQ及MAIL的相应端口,允许外部客户端登录Web服务器的80、22端口。

解决方案:

1、 安装iptables。

2、 查看本机关于iptables的设置情况。

防火墙与Squid代理服务器的搭建及应用_服务器_33


3、 清除原有规则,不管你在安装Linux时是否启动了防火墙,如果你想配置属于自己的防火墙,那就清除现在filter的所有规则。

iptables -F
清空所选链中的规则,如果没有指定链则清空指定表中所有的规则。

iptables -X
清除预设表filter中使用者自定义链中的规则。

iptables -Z
清除预设表filter中使用者自定义链中的规则。

4. 设置默认策略

防火墙与Squid代理服务器的搭建及应用_服务器_34


防火墙与Squid代理服务器的搭建及应用_内网_35


设置默认策略为关闭filter表的INPUT及FORWARD链开启OUTPUT链,nat表的三个链PREROUTING、OUTPUT、POSTROUTING全部开启。

5. 设置回环地址

防火墙与Squid代理服务器的搭建及应用_内网_36

有些服务的测试需要使用回环地址,为了保证各个服务的正常工作,需要允许回环地址的通信。

6. 连接状态设置

防火墙与Squid代理服务器的搭建及应用_内网_37

为了简化防火墙的配置操作,并提高检查的效率,需要添加连接状态设置。
连接跟踪存在四种数据包状态:

NEW——想要新建连接的数据包
INVALID——无效的数据包,例如损坏或者不完整的数据包
ESTSBLISHED——已经建立连接的数据包
RELATED——与已经发送的数据包有关的数据包

7. 设置80端口

防火墙与Squid代理服务器的搭建及应用_服务器_38

公司网站需要对外开放,需要开放80端口。

8. DNS相关配置

防火墙与Squid代理服务器的搭建及应用_内网_39

为了客户端能够正常使用域名访问互联网,需要允许内网计算机与外部DNS服务器的数据转发。

9. 允许管理员通过外网进行远程管理,开启22端口

防火墙与Squid代理服务器的搭建及应用_服务器_40

10.允许内网主机登录MSN和QQ相关设置

防火墙与Squid代理服务器的搭建及应用_服务器_41

QQ能够使用TCP80、8000、443及UDP8000、4000登录,而MSN通过TCP1863、443验证。因此只需要允许这些端口的FORWARD转发即可正常登录。

    11.允许内网主机收发邮件

客户端发送邮件时访问邮件服务器的TCP25端口。接收邮件时访问,可能使用的端口较多。UDP协议以及TCP协议的端口:110、143、993和995。

防火墙与Squid代理服务器的搭建及应用_ip地址_42

    12.NAT端口映射设置

防火墙与Squid代理服务器的搭建及应用_服务器_43

由于局域网的地址为私网地址,在公网上不合法,所以必须将私网地址转为服务器的外部地址进行地址映射,连接外网接口为eth0。

13.内网机器对外发布Web网站

防火墙与Squid代理服务器的搭建及应用_ip地址_44

内网Web服务器IP地址为10.10.1.1,我们需要进行如下配置,当公网客户端访问服务器时,防火墙将请求映射到内网的10.10.1.1的80端口。

14.禁止访问具体域名和IP地址

禁止访问指定IP地址

防火墙与Squid代理服务器的搭建及应用_服务器_45

15.禁止INTERNET上计算机通过ICMP协议PING到代理服务器的eth0接口

防火墙与Squid代理服务器的搭建及应用_ip地址_46

此时,局域网中的计算机还是可以ping通Internet上的计算机的,因为从局域网到Internet的数据包使用NAT方式传输,仅经过PREROUTING链——PORWARD链——POSTROUTING链,并没有经过INPUT和PUTPUT链。

16.保存与恢复iptables配置

防火墙与Squid代理服务器的搭建及应用_服务器_47

17.重启服务

防火墙与Squid代理服务器的搭建及应用_内网_48

现在iptables配置表里什么配置都没有了。

欢迎您关注我的微信公众号:学习微站(studysth)

防火墙与Squid代理服务器的搭建及应用_服务器_49