linux中的iptables火墙优化策略

  • 一、基本命令
  • 二、火墙的切换
  • 三、iptables的使用及火墙使用规则
    • (1)、名词解释
    • (2)、表格解释
    • (3)、iptables使用方式
      • 1)、基本命令
      • 2)、具体使用方法
  • 四、优化火墙状态处理
    • (1)、数据请求状态
    • (2)、加快数据请求火墙处理
  • 五、iptables的NAT桥接
    • (1)、实验环境
    • (2)、SNAT源地址转换
    • (3)、DNAT目的地地址转换
  • 六、firewall
    • (1)、firewall的开启
    • (2)、firewalld的模式
    • (3)、firewalld的文件及其设定原理
    • (4)、 firewalld的管理命令
    • (5)、编写一个火墙服务文件
  • 七、firewalld的高级使用
    • (1)、对单独ip访问设置不同的域
    • (2)、对不同网卡进行不同域的设置
  • 八、firewalld的桥接
    • (1)、SNAT
    • (2)、DNAT

一、基本命令

iptables命令 解释
-t 指定表名称
-n 不做解析
-L 查看
-A 添加策略
-p 协议
–dport 目的地端口
-s 来源
-j 动作
ACCEPT 允许
DROP 丢弃
REJECT 拒绝
SNAT 源地址转换
DNAT 目的地地址转换
-N 新建链
-E 更改链名称
-X 删除链
-D 删除规则
-I 插入规则
-R 更改规则
-P 更改默认规则
-o 指定输出网络设备
-i 指定输入设备

SNAT:用的是POSTROUTING,在路由之后做,参数用-o表示出口
DNAT:用的是PREROUTING,在路由之前做,参数用-i表示进入口

此外,prerouting 和postrouting 也经常用于NAT配置网关机进行网络地址转换使用,这时候有一下规律:
POSTROUTING是源地址转换(SNAT),要把你内部网络上受防火墙保护的ip地址转换成你本地的公网地址才能让它们上网。
PREROUTING是目的地址转换(DNAT),要把别人的公网IP换成你们内部的IP,才让访问到你们内部受防火墙保护的服务器。

二、火墙的切换

firewalld----->iptables

dnf install iptables-services.x86_64 --allowerasing
systemctl disable firewalld.service
systemctl mask firewalld.service
systemctl enable --now iptables.service

三、iptables的使用及火墙使用规则

(1)、名词解释

input 输入
output 输出
forward 转发(经过内核)
postrouting 路由之后
prerouting 路由之前

(2)、表格解释

filter 经过内核处理的数据 包括input,output,forward
nat 不经过内核处理(地址转换和地址伪装部分) 包括input,output,postrouting ,prerouting
mangle 包含全部内容 对内容做补充说明

(3)、iptables使用方式

如果不指名表格默认都fitter表

1)、基本命令

1、基本命令
service iptables save保存当前规则到永久文件
永久文件的保存地址为/etc/sysconfig/iptables
每次重启iptables后都会重新读取iptables的永久文件的规则

iptables-t ##指定表名称-n ##不做解析-L ##查看-A ##添加策略-p ##指定协议--dport ##指定目的地端口-s ##指定来源-j ##指定动作 ACCEPT ##允许DROP ##丢弃REJECT ##拒绝SNAT ##源地址转换DNAT ##目的地地址转换-F ##清空表中策略-N ##新建链-E ##更改链名称-X ##删除链-D ##删除规则-I ##插入规则-R ##更改规则-P ##更改默认规则

常用组合命令如下:

iptables -nL                                   查看链条规则(默认为filter表)
iptables -t filter -L                          查看filter表链接情况
iptables -t filter -nL                         查看链接情况,不做地址解析
iptables -F                                    清除所有规则,重启iptables服务后可恢复正常
iptables-save                                  保存当前iptables设置
iptables -t nat -nL                            查看nat表
iptables -A INPUT  -j REJECT                   添加一个新的input链
iptables -D INPUT 1                            删除第一个链接
iptables -A INPUT -p tcp --dport 22 -j ACCEPT  添加tcp协议的22端口

2)、具体使用方法

2、刷掉所有的规则,重启iptables

iptables -nL
iptables -F
iptables -nL
systemctl restart iptables.service               重启iptables服务
iptables -nL

刷掉所有规则后,没有保存在永久文件中,所以重启后会还原

3、添加链条,删除链条
添加在input中添加一条链

删除刚刚这条链条

4、刷掉所有的规则,设置拒绝所有人访问

此时我们的ssh连接不上

5、设置访问端口
在filter表的INPUT链中添加拒绝所有访问请求的策略,接着再添加规则,接受通过tcp的22端口(ssh远程连接默认使用22端口)


此时还是连接拒绝,因为iptables的读取规则是从上到下读取的

现在在第一行的位置,插入一条规则,内容是允许tcp的22端口接入

再次ssh连接发现成功

6、利用-R更改,对ip来源高级设定

对于之前的前两条规则,更改链接:允许172.25.42网段链接,拒绝172.254.14网段链接

iptables -R INPUT 1 -s 172.25.42.0/24 -p tcp --dport 22 -j ACCEPT
iptables -R INPUT 2 -j REJET
iptables -nL

按照现在的读取顺序来说,172.25.42.xx/24网段的可以ssh连接,其他网段的不能连接

结果发现以真机(172.25.42.250)可以连接本机172.25.42.100

将此台虚拟机更改ip为172.25.25.100,将另外一台机器设置为172.25.25.200后访问发现
虽然都是同一网段,但是访问失败


将第一条规则更改为允许172.25.25.200访问

结果发现172.25.25.200可以用ssh进行连接

记得将本虚拟机的ip还原为172.25.42.100

7、更改默认规则

iptables -P INPUT DROP                   可以链接,但是丢弃掉全部请求
iptables -P INPUT ACCEPT                 接受请求

8、新建一个链:

iptables -N  westos                               新建westos链
iptables -E  westos westos1 更名为westos1
iptables -X  westos1                              删除westos1

四、优化火墙状态处理

(1)、数据请求状态

RELATED 建立过链接的
ESTABLISHED 建立过链接的
NEW 新链接的

(2)、加快数据请求火墙处理

为了优化处理速度,加快筛选过滤速度,对数据包状态进行编辑,加快火墙助理

1 iptables  -F                                                                去掉现有火墙策略
2 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT            接受所有建立过连接、正在连接的数据包
3 iptables -A INPUT -m state --state NEW -i LO -j ACCEPT                      接受所有来自本机回环接口的新的数据包
4 iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT          接受所有来自对于tcp的22端口的数据包
5 iptables -A INPUT -m state --state NEW -j REJECT                            拒绝其他其他新的数据包
iptables-save

结果是:优化后的火墙,对于第一次访问的数据进行第4条判断,再次访问时进行第2条的判断,加快过滤速度

五、iptables的NAT桥接

(1)、实验环境

实验环境
真实主机 :ip为172.25.254.250
双网卡主机westosa(虚拟机):ip1为172.25.42.100,ip2为172.25.254.100
单网卡主机westosb(虚拟机):ip为172.25.42.200

双网卡主机westosa

单网卡主机westosb

流程图

SNAT:用的是POSTROUTING,在路由之后做,参数用-o表示出口
DNAT:用的是PREROUTING,在路由之前做,参数用-i表示进入口

(2)、SNAT源地址转换

想要实现单网卡主机(172.25.42.200)和真实主机172.25.254.250的互通,可以用双网卡主机的内核做地址转换(地址伪装)。用双网卡主机的172.25.42.100的ens3网卡接收对来自于单网卡主机172.25.42.200的数据包,然后双网卡主机ens3网卡将数据经过内核转换给172.25.254.200的ens8网卡,并将数据的源地址更改为双网卡的172.25.254.200地址。

因为SNAT源地址转换是在路由之后POSTROUTING链中进行的,即我们需要双网卡的nat表的POSTROUTING链中添加策略

1、进行双网卡主机westosa设定
因为是路由之后,所以更改双网卡主机的数据包的ens8网卡,将传递给真机的数据包更改源地址为ens8
POSTROUTING,在路由之后做,参数用-o表示出口

iptables -t nat -A POSTROUTING -o ens8 -j SNAT --to-source 172.25.254.100       路由后操作POSTROUTING,将en3网卡输出的ip都伪装为172.25.254.100
sysctl -a |grep ip_forward                                                      图1、查看路由功能是否开启
vim /etc/sysctl.conf                                                            图2、打开路由功能
sysctl -p                                                                       使得内核路由功能生效
iptables -t nat -nL                                                                       图3、查看当前的SNAT

图1

图2

2、单网卡主机westosb设定
将单网卡的网关设置为双网卡主机ens8网卡的ip172.25.42.100,这样可以使得数据可以与双网卡主机的ens3网卡进行通信,然后通过ens8网卡和外界进行连接

实验结果1:单网卡主机(172.25.42.200)能与不同网段的主机(172.25.254.250)通过双网卡主机路由直接ping通

实验结果2:单网卡主机(172.25.42.200)能与不同网段的主机(172.25.254.250)通过双网卡主机路由进行ssh连接,w -i 可以查看到,当前的ssh连接是通过172.25.42.100路由转发的。

实验结果3:此时我们的真机不能访问到westosb,因为数据的流向是单向的,只能从westosb到真机。要实现在这个的话也可以用DANT去做

(3)、DNAT目的地地址转换

为了实现真实主机
在路由之前做,参数用-i表示进口做

DNAT:用的是PREROUTING,在路由之前做,参数用-i表示进入口

DNAT目的地地址转换是在路由之前PREROUTING链中进行的,即我们需要在nat表的PREROUTING链中添加策略,指定对所有从ens8接口输入的数据用DNAT转换其目的地地址为westosb为172.25.42.200
1、在双网卡主机中进行操作
更改DNAT

iptables -F
iptables -t nat -F
iptables -t nat -A PREROUTING -i ens8 -j DNAT --to-dest 172.25.42.200

2、实验结果
实验结果发现虽然连接的是westosa(172.25.254.100),但是访问到的是westosb(172.25.42.200)

六、firewall

(1)、firewall的开启

systemctl disable --now iptables.service
systemctl unmask firewalld.service
systemctl enable --now firewalld.service
systemctl mask iptables.service

(2)、firewalld的模式

trusted 信任模式:接受所有连接
home 家庭网络:允许ssh,mdns, ipp-client, samba-client, dhcp-client
work 工作网络:允许ssh, ipp-client, dhcp-client
public 公共模式:ssh,dhcp-client
dmz 军工级:ssh
block 拒绝所有
drop 丢弃,所有的连接都不回复
intter 内部网络:ssh,mdns,ipp-client,samba-client
external ipv4网络地址伪装发送 sshd

(1)设定信任模式时

(2)设定public模式时

(3)设定block模式

(3)、firewalld的文件及其设定原理

  • 更改firewalld状态后,配置文件/etc/firewalld/firewalld.conf内容会改变
  • 封装的各个firewalld状态文件的子配置文件地址/usr/lib/firewall/
  • 各个软件运用时,火墙的运用模块:/usr/lib/firewalld/services/
  • 火墙添加永久允许模时,配置文件更改地址:cd /etc/firewalld/zones/

(4)、 firewalld的管理命令

firewall-cmd --state ##查看火墙状态
firewall-cmd --get-active-zones ##查看当前火墙中生效的域
firewall-cmd --get-default-zone ##查看默认域
firewall-cmd --list-all ##查看默认域中的火墙策略
firewall-cmd --list-all --zone=work ##查看指定域的火墙策略
firewall-cmd --set-default-zone=trusted ##设定默认域
firewall-cmd --get-services ##查看所有可以设定的服务
firewall-cmd --permanent --remove-service=cockpit ##移除服务
firewall-cmd --reload 重启服务
firewall-cmd --permanent --add-source=172.25.254.0/24 --zone=block ##指定数据来源访问指定域
firewall-cmd --reload
firewall-cmd --permanent --remove-source=172.25.254.0/24 --zone=block ##删除自定域中的数据来源
firewall-cmd --permanent --remove-interface=ens224 --zone=public ##删除指定域的网络接口
firewall-cmd --permanent --add-interface=ens224 --zone=block ##添加指定域的网络接口
firewall-cmd --permanent --change-interface=ens224 --zone=public ##更改网络接口到指定域

(5)、编写一个火墙服务文件

1.拷贝其中一个文件,取名为westos.xml

cp /usr/lib/firewalld/services/ssh.xml /usr/lib/firewalld/services/westos.xml

2.更改其中内容

vim /usr/lib/firewalld/services/westos.xml


3.重启火墙,查看火墙中的westos文件

systemctl restart firewalld.service
firewall-cmd --get-services | grep westos


4.火墙添加westos文件,移除文件

firewall-cmd --permanent --remove-service=westos 

七、firewalld的高级使用

(1)、对单独ip访问设置不同的域

firewall-cmd --permanent --add-source 172.25.0.0/24 --zone=trusted            此ip访问时,设置为信任域
firewall-cmd --reload
firewall-cmd --permanent --remove-source 172.25.0.0/24 --zone=trusted         移除
firewall-cmd --reload 

(2)、对不同网卡进行不同域的设置

firewall-cmd --permanent --remove-interface=ens9 --zone=public
firewall-cmd --permanent --remove-interface=ens8 --zone=public
firewall-cmd --permanent --add-interface=ens8 --zone=trusted
firewall-cmd --reload
firewall-cmd --list-all
firewall-cmd --list-all --zone=trusted
firewall-cmd --permanent --change-interface=ens8 --zone=public        修改回来


此时ens3的ip地址的aphche不可以被访问到(未添加http服务)
此时ens8的ip地址的aphche不可以被访问到(信任模式)

八、firewalld的桥接

(1)、SNAT

双网卡主机

 firewall-cmd --permanent --add-masquerade     开启地址伪装firewall-cmd --reload

单网卡
单网卡(172.25.14.100)网关设置为双网卡的同网段(172.25.254.200)即可连接不同网段主机

(2)、DNAT

目的地地址转接
双网卡主机

[root@service ~] firewall-cmd --permanent --add-forward-port=port=22:proto=tcp:toaddr=172.25.254.214                   将登陆本机的ip转接到172.25.14.200
success
[root@service ~] firewall-cmd --reload
success


结果:ssh-l访问双网卡主机时会伪装转接到单网卡主机上

【linux进阶9】linux中的iptables火墙优化策略相关推荐

  1. 低延迟音频中的音频解码优化策略

    文章目录 前言 音频播放 举个例子:PortAudio 回调函数 解码与播放 优化策略 1. 一次性读取音频到内存中 2. MMAP 3. 音频转码,再接 MMAP 4. 解码缓冲 总结 参考资料 前 ...

  2. 计算机算法对程序设计的作用,计算机编程中数学算法的优化策略

    李钰 摘要:在计算机编程中,合理地运用数学算法所拥有的优势不但可以完好地针对所拥有的问题进行总结分类归纳,还可以将其归纳作为基础从而进行针对性的统一计算,并且能够将非常复杂的问题进行整体的简化并且将其 ...

  3. HBase最佳实践-HBase中的读性能优化策略

    任何系统都会有各种各样的问题,有些是系统本身设计问题,有些却是使用姿势问题.HBase也一样,在真实生产线上大家或多或少都会遇到很多问题,有些是HBase还需要完善的,有些是我们确实对它了解太少.总结 ...

  4. 一文概览深度学习中的五大正则化方法和七大优化策略

    深度学习中的正则化与优化策略一直是非常重要的部分,它们很大程度上决定了模型的泛化与收敛等性能.本文主要以深度卷积网络为例,探讨了深度学习中的五项正则化与七项优化策略,并重点解释了当前最为流行的 Ada ...

  5. linux下的iptables火墙的管理

    1.iptables火墙的基本命令 systemctl stop firewalldsystemctl disable firewalldsystemctl start iptablessystemc ...

  6. linux防火墙cc,Linux防火墙后面的Alljoyn服务(iptables)

    我想在嵌入式linux设备上使用Alljoyn框架.由于安全原因,有必要为该设备配置防火墙.这是通过iptables完成的.Linux防火墙后面的Alljoyn服务(iptables) 我到目前为止所 ...

  7. Linux 进阶笔记(二)

    这几篇博文主要记录博主的Linux 学习之路,用作以后回顾和参考.大家可以选择略过也可以作参考. (一)Linux 初步笔记 (二)Linux 进阶笔记(一) (三)Linux 进阶笔记(二) (四) ...

  8. Linux 进阶笔记(一)

    这几篇博文主要记录博主的Linux 学习之路,用作以后回顾和参考.大家可以选择略过也可以作参考. (一)Linux 初步笔记 (二)Linux 进阶笔记(一) (三)Linux 进阶笔记(二) (四) ...

  9. Linux 指令简单将***IP列入iptables 限制范围

    Linux 指令简单将***IP列入iptables 限制范围 今天部分服务器收到真IP的非SYN***,郁闷. netstat -an | grep -v LISTEN | awk '{print ...

最新文章

  1. [专题目录]-CA/TA development导读目录
  2. nodejs 快速搭建接口
  3. 【转】PB实现在通知区域添加图标
  4. Android多媒体整体架构图
  5. 强者联盟——Python语言结合Spark框架
  6. vi/vim 键盘图
  7. P1117 [NOI2016]优秀的拆分
  8. macOS 12.4beta3 With OpenCore 0.8.1 and Clover and winPE黑苹果镜像
  9. i3cpu驱动xp_Intel英特尔Core i3/Core i5/Core i7系列CPU核芯显卡驱动
  10. [19保研]厦门大学软件学院暑期夏令营招生简章
  11. java工程师和全栈工程师_java全栈工程师 - 北大青鸟东莞金码学校官网
  12. 计算机桌面声音图标,声音图标不见了,教您电脑声音图标不见了如何解决
  13. python中compile的作用_Python compile函数有什么用?
  14. R语言dplyr包学习笔记(吐血整理宇宙无敌详细版)
  15. 什么是前提、行为及后果?
  16. 目前是大专学历如何快速提升到本科学历?学历提升有哪几种形式呢?
  17. 下班路上捡了一部手机,我用8年开发知识主动找到了失主
  18. 怎样在群晖中安装GitLab用于项目代码管理
  19. 0.96寸IIC接口ssd1306和ssd1315驱动oled12864屏幕介绍
  20. 2022-2028年中国渗滤液处理行业市场全景评估及发展策略分析报告

热门文章

  1. Ubuntu系统无法识别移动硬盘以及U盘和硬盘的整正确弹出方式
  2. 【e】每日一邮24_Detective_ALong_新浪博客
  3. 硬盘克隆带linux系统,一种Windows环境下基于DiskGenius克隆Linux系统的方法及系统与流程...
  4. 观察:华为全面进军公有云,胜算几何?
  5. 雨水版Redmine常见配置及日常操作
  6. 【Python】生成一张随机噪声图片(Numpy+Pillow)
  7. 用C#制作含万年历的台历(2009年样张)之1
  8. 英语基本句型之简单句
  9. GPS卫星信号(一):测距码信号
  10. 7-2 货币转换 (10 分)