Linux的防火墙

Posted 他和晚风一样温柔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux的防火墙相关的知识,希望对你有一定的参考价值。

DNAT 的原理及应用

  • DNAT (Destination Network Address Translation, 目标地址转换)是 Linux 防火墙的另一种地址转换操作,同样也是 iptables 命令中的一种数据包控制类型
  • 其作用是根据指定条件修改数据包的目标IP地址和目标端口
  • DNAT应用环境:在Internet中 发布位于局域网内的服务器
  • DNAT原理:修改数据包的目的地址。

概述

  • DNAT 策略与 SNAT 非常相似,只不过应用方向相反
  • SNAT 用来修改源 IP 地址,而 DNAT 用来修改目标 IP 地址和目标端口
  • SNAT 只能用在 nat 表的 POSTROUTING 链中,而 DNAT 只能用在 nat 表的 PREROUTING 链和 OUTPUT链(或被其调用的链)中

DNAT转换前提条件

  • 局域网的服务器能够访问Internet
  • 网关的外网地址有正确的DNS解析记录
  • Linux关开启IP路由转发
vim /etc/sysctl.conf
net.ipv4.ip_forward =1
#将此行写入配置文件,0改为1
sysctl –p
#读取修改后的配置

正确设置 DNAT 策略
通过分析得知,需要针对 Internet 中的任意主机访问网关80端口的数据包,将目标地址修改为位于内网的网站服务器的 IP 地址,网关的防火墙参考规则如下所示

iptables -t nat -A PREROUTING -i ens33:0 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.126.11
	                         入站 外网网卡  外网IP                                              内网服务器IP

测试 DNAT 发布结果

  • 在网站服务器 192.168.126.11 中正确配置、启动 Web 服务,并提供测试网页,如在首页文件 index.html 中加入识别标记
  • 然后通过 Internet中的客户机访问网站 http://www.xcf.com(如果没有做 DNS 解析,也可以直接访问(12.0.0.1)
  • 在浏览器中看到的将会是实际由网站服务器 192.168.126.11 提供的页面内容
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 250 -j DNAT --to 192.168.126.11:22
#发布局域网内部的OpenssH服务器,外网主机需使用250端口进行连接

ssh -p 250 root@12.0.0.1
#在外网环境中使用SSH测试

ssh -p 250 root@12.0.0.1
#在外网环境中使用SSH测试
yum -y install net-tools
#若没有ifconfig命令可提前使用yum进行安装
ifconfig ens33

#注意:使用DNAT时,同时还有配合SNAT使用,才能实现响应数据包的正确返回

规则的导出与导入(即备份与恢复)

在 Linux 系统中, iptables 为我们提供了批量备份与恢复规则的命令,也提供了标准的系统服务以便开启、关闭防火墙功能。
规则的备份及还原

  • 防火墙规则的批量备份、还原用到两个命令,即 iptables-save 和 iptables-restore
  • 分别用来保存(Save)和恢复(Restore)

iptables-save 命令
iptables-save 命令用来批量导出 Linux 防火墙规则
直接执行 iptables-save save 命令时,将显示出当前启用的所有规则
在 iptables-save 命令的输出信息中,以“#”号开头的内容表示注释,“*表名”表示所在的表,”:链名 默认策略”表示相应的链及默认策略,具体的规则部分省略了命令名“iptables”,后面的“COMMIT”表示提交前面的规则设置
由于 iptables-save 命令只是把规则内容输出到屏幕上,因此当需要保存为固定的文件时,还应该结合重定向输出的操作以完成备份
例如,若要将当前已设置的所有防火墙规则备份为opt/ipt.txt 文件,可以执行以下操作

iptables-save > /opt/ipt.txt
#备份所有表的规则

iptables-restore 命令
iptables-restore 命令用来批量导入 Linux 防火墙规则,如果已经使用 iptables-save 命令导出备份文件,则恢复规则的过程在一瞬间就能完成
与 iptables–save 命令相对的 iptables-restore 命令也应结合重定向输入来指定备份文件的位置

iptables-restore < /opt/ipt.txt
#从备份文件恢复规则

使用 iptables 服务

  • 通过名为 iptables 的系统服务,可以快速启用、清空防火墙规则
  • iptables 服务使用的规则文件位于 /etc/sysconfig/iptables 文件中,配置格式与 iptables-save 命令输出的一致

自动启用防火墙规则
在服务器中调试好各种 iptables 规则以后,使用 iptables-save 备份为默认的规则配置文件 etc/sysconfig/iptables,然后就可以通过 iptables 服务来调用

iptables-save > /etc/sysconfig/iptables

清空所有防火墙规则

  • 在调试各种防火墙规则的过程中,为了排除其他规则的干扰,有时候需要清空某些表的规则
  • 当需要一次清空所有表的规则时,停用 iptables 服务是最快捷的方法,也是最彻底的方法
systemctl stop iptables   
#停止iptables服务会清空掉所有表的规则

systemctl start iptables  
#启动iptables服务会自动还原/etc/sysconfig/iptables中的规则

以上是关于Linux的防火墙的主要内容,如果未能解决你的问题,请参考以下文章

linux打开终端如何启动scala,如何在终端下运行Scala代码片段?

Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段

linux中怎么查看mysql数据库版本

Linux下单机安装部署kafka及代码实现

Linux中iptables防火墙指定端口范围

Linux 的防火墙无法启动,并且没有错误提示,怎么回事啊!!!