Linux系统防火墙iptables

news2024/10/7 11:21:47

目录

一、iptables防火墙概述

1.简介

2.netfilter/iptables关系

3.iptables的四表五链

(1)四表

(2)五链

4.数据包过滤的匹配流程

(1)入站

(2)转发

(3)出站

二、iptables防火墙配置

1.下载相关服务

2.iptables命令

3.实操

(1)添加新的规则

(2)查看规则

(3) 删除规则

(4)清空规则

(5)修改规则

三、规则的匹配

1.通用匹配

2.隐含匹配

(1)协议端口匹配

(2) tcp标记匹配

(3)ICMP类型匹配

3.显式匹配

(1)多端口匹配

(2)ip范围匹配

(3)mac地址匹配

(4)状态匹配

四、iptables配置NAT地址转换

1.配置SNAT

(1)转换为固定公网ip

(2)转换为非固定的公网ip(动态)

2.配置DNAT

五、iptables防火墙策略的备份和恢复


一、iptables防火墙概述

1.简介

Linux系统的防火墙: IP信息包过滤系统,它实际上由两个组件netfilteriptables组成。

主要工作在网络层,针对IP数据包。针对 TCP/IP 数据包实施过滤和限制,属于典型的包过滤防火墙(或称为网络层防火墙)

2.netfilter/iptables关系

netfilter:属于“内核态” (Kernel Space, 又称为内核空间)的防火墙功能体系。 是内核的一部分,由一些数据包过滤表组成,这些表包含内核用来控制数据包过滤处理的规则集。

iptables:属于“用户态” (User Space,又称为用户空间)的防火墙管理体系。 是一种用来管理Linux防火墙的命令程序,它使插入,修改和删除数据包过滤表中的规则变得容易,通常位于/sbin/iptables目录下。

netfilter/iptables后期简称为iptables。

iptables是基于内核的防火墙,其中内置了raw、mangle、 nat和filter四个规则表。

表中所有规则配置后,立即生效,不需要重启服务。

3.iptables的四表五链

(1)四表

raw表:确定是否对该数据包进行状态跟踪。包含两个规则链,OUTPUT、PREROUTING。

mangle表:修改数据包内容,用来做流量整形的,给数据包设置标记。包含五个规则链,INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING。

nat表:负责网络地址转换,用来修改数据包中的源、目标IP地址或端口。包含三个规则链,OUTPUT、PREROUTING、POSTROUTING。

filter表:负责过滤数据包,确定是否放行该数据包(过滤)。包含三个规则链,INPUT、FORWARD、OUTPUT。

在iptables的四个规则表中,filter表是防火墙默认表,mangle表和raw表的应用相对较少。

(2)五链

INPUT:处理入站数据包,匹配目标IP为本机的数据包。

OUTPUT:处理出站数据包,一般不在此链上做配置。

FORWARD:处理转发数据包,匹配流经本机的数据包。

PREROUTING链:在进行路由选择前处理数据包,用来修改目的地址,用来做DNAT。相当于把内网中的80端口映射到路由器外网端口上。

POSTROUTING链:在进行路由选择后处理数据包,用来修改源地址,用来做SNAT。相当于内网通过路由器NAT转换功能实现内网主机通过一个公网IP地址上网。

数据包到达防火墙时,规则表之间的优先顺序

raw > mangle > nat > filter

img编辑

4.数据包过滤的匹配流程

(1)入站

入站数据包从A网络发到B网络,首先发到防火墙,先后顺序经过有PREROUTING链的三个表(raw、mangle、nat),如果都是放通状态的会经过路由选择,然后根据目的地址一层一层往上送,经过有INPUT的两个表(mangle、filter),一直送到应用程序。

(2)转发

目的地不是本机,数据包先从A网络过滤,经过PREROUTING链,看是否是自己的目的地址,如果是外网到内网需要用nat转换成内网IP,找到内网用户,经过FORWARD链进行过滤,允许放通的到达POSTROUING链,再把内网地址转换成公网,这样数据包才能回去;如果是内网往外网发顺序就是反过来。

(3)出站

从本机的应用程序发出来, 经过路由选择,让路由知道从哪里发,先后顺序经过有OUTPUT链的四个表(raw、mangle、nat、filter),都放通后到达POSTROUING链的两个表(mangle、nat),如果没有什么转换地址,就出站。

img编辑

总结

当一个数据包进入网卡时,数据包首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去。

如果数据包是进入本机的,数据包就会沿着图向下移动,到达INPUT链。数据包到达INPUT链后, 任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包经过OUTPUT链,然后发送出去。

如果数据包是要转发出去的,且内核允许转发,数据包就会向右移动,经过FORWARD链,然后到达POSTROUTING链输出。

二、iptables防火墙配置

1.下载相关服务

Centos 7默认使用firewalld防火墙,没有安装iptables, 若想使用iptables防火墙。必须先关闭firewalld防火墙,再安装iptables

systemctl stop firewalld. service //关闭firewalld防火墙 systemctl disable firewalld. service //取消firewalld防火墙开机自启动 yum -y install iptables iptables-services //安装iptables和iptables-services systemctl start iptables.service //启动iptables-services

2.iptables命令

iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j 控制类型]

-t指定表名(raw、mangle、nat、filter)
-j指定控制类型

常用管理选项

选项作用
-A (--append)在指定链的末尾追加一条新的规则
-I (--insert)在指定链的开头插入一条新的规则;未指定序号时默认作为第一条规则
-R (--replace)修改、替换指定链中的某一条规则,可指定规则序号或具体内容
-P (--policy)设置指定链的默认策略
-D (--delete)删除指定链中的某一条规则,可指定规则序号或具体内容
-F (--flush)清空指定链中的所有规则;若未指定链名,则清空表中的所有链
-L (--list)列出指定链中所有的规则;若未指定链名,则列出表中的所有链
-n (--numeric)(搭配-L使用)使用数字形式显示输出结果,如显示IP地址而不是主机名
-v(搭配-L使用)显示详细信息,包括每条规则的匹配包数量和匹配字节数
--line-numbers(搭配-L使用)查看规则时,显示规则的序号

常用控制类型

控制类型作用
ACCEPT允许数据包通过
DROP直接丢弃数据包,不给出任何回应消息
REJECT拒绝数据包通过,会给数据发送端一个响应信息
SNAT修改数据包的源地址
DNAT修改数据包的目的地址
MASQUERADE伪装成—个非固定公网IP地址
LOG在/varlog/messages文件中记录日志信息,然后将数据包传递给下一条规则。(LOG只是一种辅助动作,并没有真正处理数据包)

匹配条件

匹配条件说明
-p指定要匹配的数据包的协议类型
-s指定要匹配的数据包的源IP地址
-d指定要匹配的数据包的目的IP地址
-i指定数据包进入本机的网络接口
-o指定数据包离开本机做使用的网络接口
--sport指定源端口号
--dport指定目的端口号

注意事项 不指定表名时,默认指filter表 不指定链名时,默认指表内的所有链 除非设置链的默认策略,否则必须指定匹配条件控制类型使用大写字母,其余均为小写

3.实操

(1)添加新的规则

//1.-A 在filter表的INPUT链末行添加拒绝icmp的规则
[root@localhost1 ~]#iptables -t filter -A INPUT -p icmp -j REJECT
​
//2.-I 不指定行,是在指定链首行插入规则(允许tcp 22端口)
[root@localhost1 ~]#iptables -t filter -I INPUT -p tcp --dport 22 -j ACCEPT
​
//3.-I 指定行,是在指定链的指定行上插入规则
[root@localhost1 ~]#iptables -t filter -I INPUT 2 -p tcp --dport 22 -j ACCEPT

(2)查看规则

//1.查看指定表的规则(不加链名显示所有链的所有规则)
[root@localhost1 ~]#iptables -t filter -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
REJECT     icmp --  anywhere             anywhere             reject-with icmp-port                                                                                                         -unreachable
​
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
​
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
​
//2.-nL 以数字形式显示
[root@localhost1 ~]#iptables -t filter -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
REJECT     icmp --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port                                                                                                         -unreachable
​
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
​
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
​
//3.-nvL 以数字形式显示,并显示详细信息
[root@localhost1 ~]#iptables -t filter -nvL
Chain INPUT (policy ACCEPT 3 packets, 381 bytes)
 pkts bytes target     prot opt in     out     source               destination                                                                                                             
  408 29984 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0                                                                                                                     tcp dpt:22
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0                                                                                                                     tcp dpt:22
    5   420 REJECT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0                                                                                                                     reject-with icmp-port-unreachable
​
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination                                                                                                             
​
Chain OUTPUT (policy ACCEPT 66 packets, 5784 bytes)
 pkts bytes target     prot opt in     out     source               destination                                                
​
//4. --line-numbers 显示规则序号(指定链名,就显示指定链的规则)
[root@localhost1 ~]#iptables -t filter -nvL INPUT --line-numbers
Chain INPUT (policy ACCEPT 3 packets, 381 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1      902 64816 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22
2        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22
3        5   420 REJECT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable

(3) 删除规则

注意 若规则列表中期多条相同的规则时,按内容匹配只删除的序号最小的一条

按号码匹配删除时,确保规则号码小于等于已有规则数,否则报错 按内容匹配删数时,确保规则存在,否则报错

//1.根据规则序号删
[root@localhost1 ~]#iptables -D INPUT 3
​
//2.根据规则内容删(相当于操作一遍创建指定规则的步骤加上-D选项删除)
[root@localhost1 ~]#iptables -D INPUT -p icmp -j REJECT
​
//3.有相同的规则会删除第一个
[root@localhost1 ~]#iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
REJECT     icmp --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-p 
​
[root@localhost1 ~]#iptables -D INPUT -p tcp --dport 22 -j ACCEPT

(4)清空规则

注意 -F仅仅是清空链中的规则,并不影响-Р设置的默认规则,默认规则需要手动进行修改

-P设置了默认规则为DROP后,使用-F一定要小心,因为iptables的修改是立刻生效的! 防止把允许远程连接的相关规则清除后导致无法远程连接主机,此情况如果没有保存规则可重启主机解决

如果不写表

名和链名,默认清空filter表中所有链里的所有规则

//1.清空指定链中所有规则
[root@localhost1 ~]#iptables -F OUTPUT
​
//2.不指定链名默认清空所有规则
[root@localhost1 ~]#iptables -F

(5)修改规则

//1.-R 修改已有的规则
[root@localhost1 ~]#iptables -t filter -R INPUT 1 -p icmp -j ACCEPT
​
//2.-P 修改默认策略(修改为丢弃转发数据包)
[root@localhost1 ~]#iptables -P FORWARD DROP

三、规则的匹配

1.通用匹配

可直接使用,不依赖其他条件或扩展包括网络协议、IP地址、网络接口等条件。

协议匹配-p 协议名
地址匹配-s 源地址 -d 目的地址(可以是IP、网段、域名、空(代表任何地址))
接口匹配-i 入站网卡 -o 出站网卡
​
//1.(使用!取反)不是icmp协议的其他数据包全部接受
//注:虽然不是icmp包都接受,但是没有指定icmp包的规则,所以icmp包默认还是接受的
[root@localhost1 ~]#iptables -A INPUT ! -p icmp -j ACCEPT
​
//2.将指定主机192.168.116.20的数据包丢弃
[root@localhost1 ~]#iptables -A INPUT -s 192.168.116.20 -j DROP
​
//3.拒绝指定网段的数据包从ens33网卡进入
[root@localhost1 ~]#iptables -I INPUT -i ens33 -s 192.168.110.0/24 -j REJECT


​

2.隐含匹配

某些条件,如端口、TCP标记、ICMP类型,隐含要求以特定的协议匹配作为前提。

(1)协议端口匹配

--sport--dsport 必须配合 -p 指定协议使用

详细用法

--sport 1000匹配源端口是1000的数据包
--sport 1000:3000匹配源端口是1000-3000的数据包
--dport :3000匹配目标端口是3000及以下的数据包
--dport 1000:匹配目标端口是1000及以上的数据包
//1.允许tcp的20和21端口通过(即允许ftp数据包)
[root@localhost1 ~]#iptables -I INPUT -p tcp --dport 20:21 -j ACCEPT
​
//2.丢弃192.168.11.0网段转发的tcp 24000到24500 端口的数据包
[root@localhost1 ~]#iptables -I FORWARD -d 192.168.11.0/24 -p tcp --dport 24000:24500 -j DROP

(2) tcp标记匹配

--tcp-flags 配合 -p tcp 使用,指定tcp标记(SYN、ACK、RST、URG、PSH、FIN)

//1.丢弃SYN请求包,允许其他指定的数据包
[root@localhost1 ~]#iptables -A INPUT -p tcp --tcp-flags SYN,RST,ACK SYN -j ACCEPT
​
SYN,RST,ACK SYN  前面指定包范围,空格后再指定
表明前面指定的里面,除了这空格后面的SYN,其他都放行
​
//2.tcp三次握手第一次接受SYN,拒绝其他,第二次发送SYN和ACK
[root@localhost1 ~]#iptables -I INPUT -p tcp --dport 22 --tcp-flags SYN,ACK,FIN,RST,URG,PSH  SYN -j REJECT
[root@localhost1 ~]#iptables -I OUTPUT -p tcp --dport 22 --tcp-flags SYN,ACK,FIN,RST,URG,PSH SYN,ACK -j REJECT

(3)ICMP类型匹配

--icmp-type 配合 -p icmp 使用,指定icmp类型(字符串或数字代码)

注:icmp类型可用iptables -p icmp -h 查看帮助信息

Echo-Request(代码为8)请求
Echo-Reply (代码为0)回显
Destination-Unreachable(代码为3)目标不可达
//1.丢弃icmp请求包(使别人不能ping通本机,但本机默认情况可以ping通别人)
[root@localhost1 ~]#iptables -A INPUT -p icmp --icmp-type 8 -j DROP
​
//2.丢弃icmp回显包(本机发送ping请求,但是别人回显的包被本机丢弃,默认情况下本机不能ping通别人)
[root@localhost1 ~]#iptables -A INPUT -p icmp --icmp-type 0 -j DROP
​
//3.当ping不通时,允许显示目标不可达
[root@localhost1 ~]#iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT

3.显式匹配

要求以 -m (扩展模块)的形式明确指出类型,包括多端口、MAC地址、IP范围、数据包状态等条件。

(1)多端口匹配

-m multiport --sport 源端口列表

-m multiport --dport 目的端口列表

//1.允许tcp的20,21,22,53端口
[root@localhost1 ~]#iptables -A INPUT -p tcp -m multiport --dport 20,21,22,53 -j ACCEPT
​
//2.允许udp的53,67,68端口
[root@localhost1 ~]#iptables -A INPUT -p udp -m multiport --dport 53,67,68 -j ACCEPT

(2)ip范围匹配

-m iprange --src-range 源IP范围

-m iprange --dst-range 目的IP范围

//1.禁止转发源ip范围是192.168.10.100-192.168.10.200的udp数据包
[root@localhost1 ~]#iptables -A FORWARD -p udp -m iprange --src-range 192.168.10.100-192.168.10.200 -j DROP

//2.禁止发送目的ip范围是192.168.10.100-192.168.10.200的udp数据包
[root@localhost1 ~]#iptables -A INPUT -p udp -m iprange --dst-range 192.168.10.100-192.168.10.200 -j DROP

(3)mac地址匹配

-m mac --mac-source 源MAC地址

(4)状态匹配

-m state --state 连接状态

常见的连接状态

NEW本机要连接目标主机,在目标主机上看到的第一个想要连接的包
ESTABLISHED本机已与目标主机进行通信,判断标准只要目标主机回应了第一个包,就进入该状态
RELATED本机已与目标主机进行通信,目标主机发起新的链接方式,一般与ESTABLISHED配合使用
INVALID无效的封包,例如数据破损的封包状态
//第一个包我只看22端口的包(-p tcp是隐含匹配,可以省略-m tcp)
[root@localhost1 ~]#iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
​
//允许放通tcp和udp的这些端口号
[root@localhost1 ~]#iptables -A INPUT -p tcp -m multiport --dport 443,80,22,21,20,53 -j ACCEPT
[root@localhost1 ~]#iptables -A INPUT -p udp -m multiport --dport 53 -j ACCEPT
​
//使已建立连接的包以及该链接相关的包允许通过
[root@localhost1 ~]#iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
​
//默认策略设为drop,以上所有配置就成了一个tcp相关包的白名单,通过第一步的检测后允许相关包通过
[root@localhost1 ~]#iptables -P INPUT DROP

四、iptables配置NAT地址转换

1.配置SNAT

应用场景

局域网主机共享转换的公网ip接入internet公网(内 --> 外)

模拟实验环境

私网客户端一台、网关服务器一台(设置iptables防火墙)、外网web服务端(有httpd服务)

三台都需要关闭默认防火墙firewalld和selinux

准备私网客户端:设置网卡网段为192.168.146.0/24;ip设为192.168.146.20;网关设为192.168.146.30。

img

准备网关服务器:一个网卡设为192.168.146.0/24网段,并设置ip为192.168.146.30;另一个网卡设为12.0.0.0/8网段,并设置ip为12.0.0.12;添加路由转发功能;下载 iptables-services 并开始iptables之后做防护墙策略。

img

img

img

img

准备外网web服务端:设置网卡网段为12.0.0.0/8;ip设为12.0.0.12;网关设为12.0.0.254;下载并开启httpd服务。

img

img

(1)转换为固定公网ip

iptables -t nat -A POSTROUTING -s 源网段 -o 出站网卡 -j SNAT --to 转换的公网地址

iptables -t nat -A POSTROUTING -s 源网段 -o 出站网卡 -j SNAT --to-source 转换的公网地址范围(如12.0.0.1-12.0.0.10)

注:每一个做转换的公网ip,一般可以支持内网100~200台主机。

img

测试效果

使用客户端访问外网web服务器地址;在web服务器查访问日志/var/log/httpd/access.log,发现私网客户端使用了转换的12.0.0.254地址访问了服务端。

img

img

(2)转换为非固定的公网ip(动态)

iptables -t nat -A POSTROUTING -s 源网段 -o 出站网卡 -j MASQUERADE

2.配置DNAT

应用场景

在internet公网中发布位于企业局域网的服务器(外 --> 内)

模拟实验环境

私网客户端一台(有httpd服务)、网关服务器一台(设置iptables防火墙)、外网web服务端

三台都需要关闭默认防火墙firewalld和selinux

可参考上个模拟场景,再为私网主机增设httpd服务使之成为私网web服务端,将原来的外网主机当做客户端。

为私网主机添加httpd服务并启用

img

img

转换为私网ip

注: 在配置DNAT前一定要先配置SNAT!!!

iptables -t nat -A PREROUTING -d 外网客户端地址 -p 指定协议 --dport 指定端口 -i 入站网卡 -j DNAT --to 转换到的内网服务器地址:服务端口(如果前面指定的端口和服务端口一致则可省略,如http默认80端口,若前面修改成 -- dport 8080,最后就需要加上:80)

img

测试效果

外网客户端访问指定修改后的的外网ip就可以访问内网服务器

img

img

五、iptables防火墙策略的备份和恢复

iptables的配置存放在/etc/sysconfig/iptables 文件中,我们对iptables所做的策略修改,虽然会立刻生效,但是并没有保存下来,当我们重启iptables防火墙时,会读取配置文件中设置的策略,我们之前修改过的策略便失效了。所以需要对修改的iptables策略进行备份和恢复。

iptables-save > 备份文件 将修改的iptables策略导入到备份文件中

iptables-restore < /opt/iptables.bak 将备份文件中的策略还原到配置文件中

systemctl restart iptables.service 重启服务生效

//1.查看配置文件中的默认策略
[root@localhost1 opt]#cat /etc/sysconfig/iptables
# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configur                                                                                                            ation
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
​
//2.以下为我们修改过的策略,使用iptables -nL查看
[root@localhost1 opt]#iptables -nL
Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:                                                                                                            22
DROP       icmp --  0.0.0.0/0            0.0.0.0/0            icmptype 8
DROP       icmp --  0.0.0.0/0            0.0.0.0/0            icmptype 0
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0            icmptype 3
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            multiport dports 2                                                                                                            0,21,22,53
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            multiport dports 5                                                                                                            3,67,68
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            multiport dports 5                                                                                                            3
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTA                                                                                                            BLISHED
​
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
DROP       udp  --  0.0.0.0/0            0.0.0.0/0            source IP range 19                                                                                                            2.168.10.100-192.168.10.200
​
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
​
//3.对自定义的iptables策略做备份(将命令导入一个备份文件iptables.bak)
[root@localhost1 opt]#iptables-save > /opt/iptables.bak
[root@localhost1 opt]#cd /opt
[root@localhost1 opt]#cat iptables.bak
# Generated by iptables-save v1.4.21 on Thu Sep 15 21:55:58 2022
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [14:1392]
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j DROP
-A INPUT -p icmp -m icmp --icmp-type 0 -j DROP
-A INPUT -p icmp -m icmp --icmp-type 3 -j ACCEPT
-A INPUT -p tcp -m multiport --dports 20,21,22,53 -j ACCEPT
-A INPUT -p udp -m multiport --dports 53,67,68 -j ACCEPT
-A INPUT -p udp -m multiport --dports 53 -j ACCEPT
-A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -p udp -m iprange --src-range 192.168.10.100-192.168.10.200 -j DROP
COMMIT
# Completed on Thu Sep 15 21:55:58 2022
​
//4.重启服务(用作模拟未保留修改的策略),再查看发现策略又恢复成了配置文件中的默认策略
[root@localhost1 opt]#systemctl restart iptables.service
​
[root@localhost1 opt]#iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited
​
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited
​
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
​
//5.将备份文件中的策略恢复到配置文件中,再重启服务就还原成功了
[root@localhost1 opt]#iptables-restore < /opt/iptables.bak
​
[root@localhost1 opt]#systemctl restart iptables.service
​
[root@localhost1 opt]#iptables -nL
Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:                                                                                                            22
DROP       icmp --  0.0.0.0/0            0.0.0.0/0            icmptype 8
DROP       icmp --  0.0.0.0/0            0.0.0.0/0            icmptype 0
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0            icmptype 3
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            multiport dports 2                                                                                                            0,21,22,53
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            multiport dports 5                                                                                                            3,67,68
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            multiport dports 5                                                                                                            3
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTA                                                                                                            BLISHED
​
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
DROP       udp  --  0.0.0.0/0            0.0.0.0/0            source IP range 19                                                                                                            2.168.10.100-192.168.10.200
​
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/632686.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端vue简单好用的上拉加载下拉刷新组件,支持列表分页 本地分页

前端vue简单好用的上拉加载下拉刷新组件,支持列表分页 本地分页, 下载完整代码请访问uni-app插件市场地址: https://ext.dcloud.net.cn/plugin?id12942 效果图如下: #### 使用方法 使用方法 <!-- pullDown:下拉刷新 back-top: 回到顶部 --> <ccPullScroll class…

OMG--IDL(Interface Definition Language)

OMG--IDL&#xff08;Interface Definition Language&#xff09; 1 概述2 内容缩写IDL 语法和语义概述词法约定ISO Latin-1的字母字符如下表十进制数字字符图形字符格式化字符Tokens注释标识符冲突规则转义标识符关键字IDL识别的其他字符字面量 预处理IDL 语法构建块核心数据类…

dubbo流量录制异常(dubbo2.7.3)的问题解决排查

背景 我们自己基于jvm-sandbox-repeater做的流量录制出现了如下的问题, 从这个问题的堆栈信息来看&#xff0c;是在针对dubbo的调用的时候判断这个dubbo的返回是否有异常的时候&#xff0c;报了空指针异常了。 分析 我们看下具体出错的代码地方是怎么样的吧。 Overridepro…

chatgpt赋能python:Python怎么判断素数:一篇完整指南

Python怎么判断素数&#xff1a;一篇完整指南 Python是一种广泛应用于编程领域的语言&#xff0c;它非常适合初学者。在许多编程任务中&#xff0c;一个常见问题是需要判断一个数字是否是素数。本篇文章将介绍Python是如何判断素数的&#xff0c;并带领读者详细了解其中的细节…

Java入门之String 学习随记(一)

一. 前置知识 API-Application Programming Interface-应用程序编程接口,接口可以简单理解为别人写好的东西,我们拿过来直接使用即可.顾名思义,JavaAPI指的就是JDK提供的各种功能的Java类,它们将底层的实现封装了起来. 二. java.lang.String 该类为字符串,在Java中所有字符串…

chatgpt赋能python:如何正确删掉Python代码

如何正确删掉Python代码 介绍 在编写Python代码时&#xff0c;难免会出现一些多余或者错误的代码。为了保持代码的整洁和高效&#xff0c;我们需要学会如何正确地删掉Python代码。本文将介绍一些实用的方法和技巧&#xff0c;帮助您轻松删除不必要的代码。 方法 1. 手动删除…

前端基于radio增强单选框组件

前端基于radio增强单选框组件, 下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id12977 效果图如下: # #### 使用方法 使用方法 <!-- radioData:单选数据 curIndex&#xff1a;当前选择序列 change&#xff1a;单选事件 --> <ccRadio…

软考A计划-系统架构师-学习笔记-第一弹

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

QNX交叉编译及运行摆脱IDE

工具链及Demo工程介绍 把交叉编译工具链qnx_cross_compile_toolchain.zip拷贝到交叉编译主机目录下&#xff0c;用unzip命令解压&#xff08;不会unzip可以自行百度linux 下unzip命令&#xff09;&#xff0c;如Ubuntu22.04等。 解压后可以用vscode打开交叉编译工具链的目录。…

JavaScript 流程控制-分支 流程控制-循环

3.1分支结构 由上到下执行代码的过程中&#xff0c;根据不同的条件&#xff0c;执行不同的路径代码(执行代码多选一的过程&#xff09;&#xff0c;从而得到不同的结果。 JS语言提供了两种分支语句 if语句switch 语句 3.2 if 语句 1.语句结构 //条件成立执行代码&#xff…

Java入门之String学习随记(二)

一. 字符串的常用方法 public char charAt(int index) 根据索引返回字符 public int length() 返回字符串的长度 注意:获得字符串的长度和获得数组的长度不同,数组的长度是数组的属性 数组名.length() 属性 字符串.length() …

通知神器——java调用钉钉群自定义机器人----Jay

其中webhook非常重要&#xff0c;下文详述。点击设置说明可以看相关使用文档&#xff0c;文档链接见本文末尾 创建群自定义机器人 其中webhook非常重要&#xff0c;下文详述。点击设置说明可以看相关使用文档&#xff0c;文档链接见本文末尾 使用HTTP POST请求发送消息…

如何从linux社区下载和合入内核patch?

参考 git - How do I get a linux kernel patch set from the mailing list? - Unix & Linux Stack Exchangehttps://unix.stackexchange.com/questions/80519/how-do-i-get-a-linux-kernel-patch-set-from-the-mailing-list 方法 发现使用b4这个工具非常合适。 下面是…

【MySQL】数据库的查询语言DQL

目录 前言&#xff1a; 一.基本查询 1.1查询多个字段 1.2设置别名 1.3去除字段中重复的值 二.条件查询 2.1条件的种类 2.1.1比较运算符 2.1.2逻辑运算符 三.结尾 前言&#xff1a; 在前面讲完了如何增删改数据表中的记录后&#xff0c;那么如何使用这些数据就成了另一…

chatgpt赋能python:Python如何加断点

Python如何加断点 什么是断点 在程序执行时&#xff0c;开发人员可以设置断点&#xff0c;使得程序在断点处暂停执行&#xff0c;从而方便调试程序。当程序停在断点处时&#xff0c;可以查看变量的值、执行语句等&#xff0c;以找出程序中的错误。 Python加断点的方法 在Py…

chatgpt赋能python:Python中的元组及其自身的特性说明

Python 中的元组及其自身的特性说明 在 Python 中&#xff0c;元组是一组有序的值&#xff0c;可以存储各种不同类型的数据。与列表不同的是&#xff0c;元组是不可变的&#xff0c;一旦创建就不能修改。由于元组不可更改&#xff0c;因此它们的值在创建后是固定的。 由于元组…

C语言之预处理那点事

文章目录 一、程序的翻译和执行环境二、预定义符号的介绍1.预定义符号2.#define3.宏和函数的比较4.条件编译 总结 在C语言中&#xff0c;曾出现各种各样新的标准&#xff0c;有的昙花一现&#xff0c;有的则源远流传。我们这篇来看流传下来的&#xff0c;简化开发者编程和提升性…

FFmpeg音视频处理工具介绍及应用

1 FFmpeg介绍 FFmpeg项目由 Fabrice Bellard在2000年创立。到目前为止&#xff0c;FFmpeg项目的开发者仍然与VLC、MPV、dav1d、x264等多媒体开源项目有着广泛的重叠。Ffmpeg&#xff08;FastForward Mpeg&#xff09;是一款遵循GPL的开源软件&#xff0c;在音视频处理方面表现…

算法刷题-数组-移除元素

27. 移除元素 力扣题目链接 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用 O(1) 额外空间并原地修改输入数组。 元素的顺序可以改变。你不需…

chatgpt赋能python:Python如何编写优化SEO的软件

Python如何编写优化SEO的软件 作为一种功能强大且易于学习的编程语言&#xff0c;Python已经成为广泛使用的开发工具之一&#xff0c;其用户群体涵盖从初学者到专业开发人员。然而&#xff0c;在Python编写SEO相关软件时&#xff0c;开发人员需要遵循一些最佳实践&#xff0c;…