当前位置: 澳门新濠3559 > 编程 > 正文

原来在PIX防火墙上做服务器对外网的NAT,iptable

时间:2019-12-27 17:08来源:编程
公网地址111.8.61.2在防火墙上做了映射,111.8.61.2:80映射到私网地址为10.54.4.11的服务器上。111.8.61.2:9100映射到私网地址为10.54.4.97的服务器上。现在需求是想节省一个端口号,在防火墙上

公网地址111.8.61.2在防火墙上做了映射,111.8.61.2:80映射到私网地址为10.54.4.11的服务器上。111.8.61.2:9100映射到私网地址为10.54.4.97的服务器上。现在需求是想节省一个端口号,在防火墙上111.8.61.2:80映射其中一台服务器上,再在这台服务器上做个跳转。以后用户就用域名访问,比如就可以访问10.54.4.11服务器上的A网站,就可以访问10.54.4.97服务器上B网站该需求是否可行?这个具体怎么做?

iptablesIP静态映射还是跟端口映射做的工作差不多,具体操作如下:

当要访问某个IP,计算机必须知道这个IP的物理地址(MAC地址),这时计算机会发一个广播式的数据包询问,整个局域网的机子都收到这个询问,真正拥有这个IP的机子就会回答它,本篇介绍的就是由于ARP不更新所引起的网络故障。

01:iptables防火墙网络安全前言介绍
企业中安全配置原则:
尽可能不给服务器配置外网IP,可以通过代理转发或者通过防火墙映射。
并发不是特别大情况有外网IP,可以开启防火墙服务。大并发的情况,不能开iptables,影响性能,利用硬件防火墙提升架构安全。

其实静态映射和端口映射差不多是一个意思,只不过IP静态是整个把内部网的服务器转到internet上(或者外部网络上)去,而端口映射只是把内网的某些服务端口映射到外网服务器的某个端口上。

一、组网环境

2.iptables防火墙概念介绍
Netfilter/Iptables(以下简称Iptables)是unix/linux自带的一款优秀且开放源代码的完全自由的基于包过滤的防火墙工具,它的功能十分强大,使用非常灵活,可以对流入和流出服务器的数据包进行很精细的控制。

或许有的兄弟会奇怪为什么要做ip静态映射呢?直接设置为外网IP不就完了?其实原因很简单,为了方便统一管理和制定安全策略。假设你的服务器要搬迁、更换,如果只有一台还好说——在这台服务器上更改一下IP地址或者把新的服务器地址改为老服务器地址换上去就行了,如果有好几台服务器呢?你就不得不面对更长的断网时间……使用静态IP映射能够让你更方便的管理多台服务器,同时增加了安全性(等于凭空给服务器作了一个防火墙啊)。假设你想用新的服务器替换老服务器,可以给新的服务器分配另外的外网IP或者用端口映射(与IP静态映射差不多,个人觉得不如IP静态映射来的方便),测试功能完全实现后,直接修改防火墙配置,只是一瞬间,网站就能实现切换,切换完毕后再处理老服务器。搬迁的时候也是,不必给每个服务器都更改IP地址、子网掩码什么的一大堆,全都接到防火墙上,把防火墙上的IP更改一次就完事,真正服务器的ip地址都不用改(反正都是私网地址)。好处目前想到的就这些啦。

在网件路由的组网环境中,网件的接口工作在交换式接口模式,原来在PIX防火墙上做服务器对外网的NAT server转换,网络调整后把在PIX防火墙上对服务器做的NAT server转换的数据删除,改为在路由器上做服务器的NAT server转换,服务器对外网的公网地址不变,网络调整后,从Internet上无法ping通服务器的公网地址,也无法访问服务器上的业务。

iptables是linux2.4及2.6内核中集成的服务。
iptables主要工作在OSI七层的二、三、四层,如果重新编译内核,iptables也可以支持7层控制

其实配置还是很简单的。

二、故障分析

3.iptables防火墙使用时名词概念理解
容器:装东西的器皿,docker容器技术,将镜像装在了一个系统中,这个系统就称为容器
iptables称为一个容器---装着防火墙的表
防火墙的表又是一个容器---装着防火墙的链
防火墙的链也是一个容器---装着防火墙的规则
iptables---表---链---规则

我们假设你有两台web服务器,ip地址为192.168.1.1和192.168.1.2,一台交换机,一台linux双网卡服务器(做防火墙和ip静态映射用),一根外线,数个可用的公网IP(假设为1.1.1.1~1.1.1.6),而你想让大家通过访问1.1.1.2访问第一台web服务器,通过访问1.1.1.3访问第二台。将外线接在linux服务器的一块网卡上(比如eth0),设置该网卡地址为1.1.1.1;再用网线连接另外一块网卡(比如eth1)到交换机上,设置ip地址为192.168.1.254。两台web分别接到交换机上,网关设置为192.168.1.254(也就是linux防火墙的内网地址啦)。

1、检查服务器的网卡工作状态是否正常,没有发现问题。

规则:防火墙一条一条安全策略
防火墙匹配规则流程:参见防火墙工作流程图
1.防火墙是层层过滤的,实际是按照配置规则的顺序从上到下,从前到后进行过滤的。
2.如果匹配上规则,即明确表示是阻止还是通过,数据包就不再向下匹配新的规则。
3.如果规则中没有明确表明是阻止还是通过的,也就是没有匹配规则,
向下进行匹配,直到匹配默认规则得到明确的阻止还是通过。
4.防火墙的默认规则是所有规则执行完才执行的。

iptables 做 IP 的 静态映射 还是跟端口映射做的工作差不多,具体操作如下: 其实静态映射和端口映射差不多是一个意思,只不过IP静态是...

2、检查路由器上的数据配置是否有问题。经检查没有发现问题,且从路由器能ping通服务器的私网地址和映射后的公网地址。

表和链说明:4表5链
Filter: 实现防火墙安全过滤功能
原来在PIX防火墙上做服务器对外网的NAT,iptables防火墙网络安全前言介绍。· INPUT 对于指定到本地套接字的包,即到达本地防火墙服务器的数据包 外面---->(门)房子iptables
· FORWARD 路由穿过的数据包,即经过本地防火墙服务器的数据包 外面-----(前门)房子(后门)---房子
· OUTPUT 本地创建的数据包 外面<-----(门)房子iptables
NAT: 实现将数据包中IP地址或者端口信息,内网到外网进行改写/外网到内网进行改写
· PREROUTING 一进来就对数据包进行改变 在路由之前,进行数据包IP地址或端口信息的转换
· OUTPUT 本地创建的数据包在路由之前进行改变 本地防火墙要出去的流量进行相应转换(了解)
· POSTROUTING 在数据包即将出去时改变数据包信息 在路由之后,进行数据包IP地址或端口信息的转换
Managle 对数据进行标记
raw 忽略不计

3、从路由器上ping服务器映射后的公网地址,无法ping通,在路由器上使用命令display ip routing-table查看到服务器映射后的公网地址的路由,没有发现问题。

多个表和链的关系

4、在路由器上执行命令display arp all查看ARP表项,发现服务器映射后的公网IP地址对应的仍然是PIX防火墙的MAC地址,ARP表项没有及时更新导致网络不通。

4.iptables防火墙操作实践练习
1)iptables防火墙配置初始化
/etc/init.d/iptables start
chkconfig iptables on
iptables -F --- 清除防火墙默认规则
iptables -X --- 清除防火墙自定义链
iptables -Z --- 清除防火墙技术器信息

三、故障处理

2)iptables防护墙信息查看方法
/etc/init.d/iptables status
iptables -L --- -L 以列表形式显示所有规则信息
iptables -L -n --- -n 以数字形式显示IP地址或端口信息,不要转换为字符串显示
iptables -t nat -L -n --- -t 表示指定查看或者配置相应的表
iptables -L -n -v --- -v 表示显示详细规则信息,包含匹配计数器数值信息
iptables -L -n --line-number --- --line-number 显示规则序号信息

1、在用户视图下执行命令reset arp interface interface-type interface-number,清空路由器上与防火墙相连的接口上的ARP表项。

3)iptables防火墙端口规则配置:
实践01:阻止用户访问服务器的22端口
iptables -t filter -A INPUT -p tcp --dport 22 -j DROP --- -A 表示添加规则到相应链上,默认表示添加规则到结尾
iptables -t filter -D INPUT -p tcp --dport 22 -j DROP --- -D 表示删除规则从相应链上。
iptables -t filter -D INPUT 规则序号
iptables -t filter -I INPUT -p tcp --dport 22 -j DROP --- -I 表示插入规则到相应链上,默认表示插入规则到首部
iptables -t filter -I INPUT 3 -p tcp --dport 22 -j DROP --- 指定规则插入位置
iptables -t filter -R INPUT 6 -p tcp --dport 8080 -j DROP --- -R 指定将配置好的规则信息进行替换

2、ping服务器映射后的公网地址11.1.1.2,使ARP表项重新自动学习。

总结防火墙参数信息:
-A --- 表示将规则添加到指定链上
澳门新濠3559,-I --- 表示将规则插入到指定链上
-D --- 表示将规则从指定链上删除
-R --- 表示将规则信息进行修改
-p --- 指定相应服务协议信息(tcp udp icmp all)
--dport --- 表示指定目标端口信息
--sport --- 表示指定源端口号信息
-j --- 指定对相应匹配规则执行什么操作(ACCEPT DROP* REJECT)

3、执行display arp all,可以看到服务器映射后的公网IP地址对应的是的MAC地址,完成上述操作后,从Internet上可以ping通服务器映射后的公网地址,也可以正常访问服务器上的业务,故障排除。

实践02:阻止相应网段主机访问服务端指定端口服务
10.0.0.0/24 -- 22端口(阻止)
iptables -t filter -A INPUT -s 10.0.0.0/24 -p tcp --dport 22 -j DROP
iptables -t filter -A INPUT -s 10.0.0.9 -p tcp --dport 22 -j DROP
iptables -t filter -A INPUT -i eth0 -s 10.0.0.9 -p tcp --dport 22 -j DROP

一般情况下,ARP表项老化之前,系统会发送广播的ARP老化探测报文,确认ARP表项中MAC地址和IP地址的映射是否正确,当网络调整后,MAC地址发生了改变,但新设备仍然使用原来IP地址,在ARP表项超时之前,从Internet上ping服务器映射后的公网地址时,系统认为自己有IP地址与MAC地址的映射,所以不会发送ARP老化探测报文。

总结参数信息:
-s --- 指定匹配的源地址网段信息,或者匹配的主机信息
-d --- 指定匹配的目标地址网段信息,或者匹配的主机信息
-i --- 指定匹配的进入流量接口信息 只能配置在INPUT链上
-o --- 指定匹配的发出流量接口信息 只能配置在OUTPUT链上

实践03:除了莫个地址可以访问22端口之外,其余地址都不能访问
10.0.0.1 10.0.0.253 10.0.0.9(只允许)
iptables -t filter -A INPUT -s 10.0.0.9 -p tcp --dport 22 -j ACCEPT
iptables -t filter -A INPUT -s 10.0.0.0/24 -p tcp --dport 22 -j DROP

iptables -t filter -A INPUT ! -s 10.0.0.9 -p tcp --dport 22 -j ACCEPT
通过利用 !进行规则取反,进行策略控制

实践04:指定阻止访问多个端口服务
22--80 22,24,25
iptables -A INPUT -s 10.0.0.9 -p tcp --dport 22:80 -j DROP --- 匹配连续的端口号访问
iptables -A INPUT -s 10.0.0.9 -m multiport -p tcp --dport 22,24,25 -j DROP --- 匹配不连续的端口号访问

总结参数信息:
-m --- 指定应用扩展模块参数
multiport --- 可以匹配多个不连续端口信息

实践05: 通过防火墙实现禁ping功能
实现ping功能测试链路是否正常,基于icmp协议实现的
icmp协议有多种类型:
icmp-type 8:请求类型 icmp-type 0:回复类型

情况一:实现禁止主机访问防火墙服务器(禁ping)
iptables -A INPUT -p icmp --icmp-type 8 -j DROP
iptables -A OUTPUT -p icmp --icmp-type 0 -j DROP

情况二:实现禁止防火墙访问主机服务器(禁ping)
iptables -A OUTPUT -p icmp --icmp-type 8 -j DROP
iptables -A INPUT -p icmp --icmp-type 0 -j DROP

默认情况:所有icmp类型都禁止
iptables -A INPUT -p icmp -m icmp --icmp-type any -j DROP
iptables -A OUTPUT -p icmp -m icmp --icmp-type any -j DROP

实践06:实现防火墙状态机制控制
NEW: 发送数据包里面控制字段为syn=1,发送第一次握手的数据包
ESTABLISHED: 请求数据包发出之后,响应回来的数据包称为回复的包
RELATED: 基于一个连接,然后建立新的连接 例如:ftp连接
INVALID: 无效的的数据包,数据包结构不符合正常要求的

iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

5.企业当中应用防火墙方法
项目:部署一个最安全的企业级防火墙(案例)
两种思想:针对默认规则而言。
逛公园:黑名单
1、默认规则默认是允许的状态。
看电影:白名单(更安全,推荐配置)
2、默认规则默认是不允许的状态。更安全。
看电影的思想更安全。

1)保存防火墙配置文件信息
cp /etc/sysconfig/iptables{,.bak}

2)清除配置规则
iptables -F <- 清空iptables所有规则信息(清除filter)
iptables -X <- 清空iptables自定义链配置(清除filter)
iptables -Z <- 清空iptables计数器信息(清除filter)

3)别把自己踢出到门外
iptables -A INPUT -s 10.0.0.1 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 10.0.0.0/24 -p tcp --dport 22 -j ACCEPT

4)配置防火墙filter上各个链的默认规则
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

-P --- 指定相应链的默认规则策略,是允许还是阻止

5)允许iptables服务端ping自己的网卡地址
iptables -A INPUT -i lo -j ACCEPT --- 让自己可以ping自己

6)指定外网可以访问的端口信息
iptables -A INPUT -p tcp -m multiport --dport 80,443 -j ACCEPT

7)企业中内网之间不要配置防火墙策略
iptables -A INPUT -s 172.16.1.0/24 -j ACCEPT --- 允许架构内部服务进行访问

8)企业之间有合作关系的,不要将友商的网络禁止(主要经常改动)
iptables -A INPUT -s 10.0.1.0/24 -j ACCEPT --- 允许一些合作企业的外网服务器进行访问
iptables -A INPUT -s 10.0.2.0/24 -j ACCEPT

9)如果防火墙上配置了FTP服务,需要配置网络状态机制
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT --- 允许web服务与ftp服务器建立连接
注意:如果没有ESTABLISHED允许,当用防火墙的服务器ssh去另一台服务器时,就没有回来的数据了
例如:telnet 10.0.0.9 22 将连接不成功
10)实现iptables策略配置永久保存
①. 利用防火墙启动脚本命令参数,实现永久保存
/etc/init.d/iptables save

②. 利用防火墙配置信息保存命令,实现永久保存
iptables-save >/etc/sysconfig/iptables

实例拓展:避免自己被踢出门外
1.去机房重启系统或者登陆服务器删除刚才的禁止规则。
2.让机房人员重启服务器或者让机房人员拿用户密码登录进去
3.通过服务器的远程管理卡管理(推荐)
4.先写一个定时任务,每5分钟就停止防火墙
5.测试环境测试好,写成脚本,批量执行

以上内容为防火墙filter表的配置实践与原理说明

6.防火墙nat表的配置实践
iptables NAT:(配置NAT表示就是配置以下两个链)
1.postrouting(内网---外网-NAT 源私网IP地址---源公网IP地址)
路由之后,进行地址映射转换,把源地址进行转换(源私网地址==>源公网地址)
2.prerouting(外网---内网-NAT 目标公网IP地址---目标私网IP地址 映射目标端口)
路由之前,进行地址映射转换,把目标地址进行转换(目标公网地址==>目标变为私网地址)

实践一:iptables实现共享上网方法(postrouting)
第一个历程:配置内网服务器,设置网关地址
/etc/init.d/iptables stop --- 内网服务器停止防火墙服务
ifdown eth0 --- 模拟关闭内网服务器外网网卡
setup --- 修改内网网卡网关和DNS地址信息
[root@oldboyedu42-lnb-02 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
172.16.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 eth1
0.0.0.0 172.16.1.7 0.0.0.0 UG 0 0 0 eth1
说明:内网服务器网关地址指定为共享上网服务器内网网卡地址

第二个历程:配置共享上网服务器,开启共享上网服务器路由转发功能
[root@oldboyedu42-lnb-02 ~]# vim /etc/sysctl.conf
[root@oldboyedu42-lnb-02 ~]# sysctl -p
net.ipv4.ip_forward = 1

第三个历程:配置共享上网服务器,实现内网访问外网的NAT映射
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o eth0 -j SNAT --to-source 10.0.0.7
-s 172.16.1.0/24 --- 指定将哪些内网网段进行映射转换
-o eth0 --- 指定在共享上网哪个网卡接口上做NAT地址转换
-j SNAT --- 将源地址进行转换变更
-j DNAT --- 将目标地址进行转换变更
--to-source ip地址 --- 将源地址映射为什么IP地址
--to-destination ip地址 --- 将目标地址映射为什么IP地址

扩展如果开启:forward默认drop策略,如果配置forward链
iptables -A FORWARD -i eth1 -s 172.16.1.0/24 -j ACCEPT
iptables -A FORWARD -o eth0 -s 172.16.1.0/24 -j ACCEPT
iptables -A FORWARD -i eth0 -d 172.16.1.0/24 -j ACCEPT
iptables -A FORWARD -o eth1 -d 172.16.1.0/24 -j ACCEPT

网络数据包传输过程一定是有去有回的

实践二:iptables实现共享上网方法(postrouting)
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o eth0 -j MASQUERADE <- 伪装共享上网
说明:在企业中如何没有固定外网IP地址,可以采取以上伪装映射的方式进行共享上网

总结:配置映射方法
1.指定哪些网段需要进行映射 -s 172.16.1.0/24
2.指定在哪做映射 -o eth0
3.用什么方法做映射 -j SNAT/DNAT
4.映射成什么地址 --to-source ip地址/--to-destination ip地址

实践三:iptables实现外网IP的端口映射到内网IP的端口
需求:将网关的IP和9000端口映射到内网服务器的22端口
端口映射 10.0.0.7:9000 -->172.16.1.8:22
实现命令:
iptables -t nat -A PREROUTING -d 10.0.0.7 -i eth0 -p tcp --dport 9000 -j DNAT --to-destination 172.16.1.8:22

(1)-d 10.0.0.8目标地址。
(2)-j DNAT 目的地址改写。

Linux公社的RSS地址:

本文永久更新链接地址

澳门新濠3559 1

编辑:编程 本文来源:原来在PIX防火墙上做服务器对外网的NAT,iptable

关键词: