运维工具之iptables命令

news/2024/2/25 14:22:46/文章来源:https://blog.csdn.net/m0_60981735/article/details/135631246

运维工具之iptables命令

1.iptables防火墙介绍

​ iptables其实并不是真正的防火墙,我们可以理解成一个客户端代理,用户通过 IPTables这个代理,将用户的安全设定执行到对应的"安全框架"中,这个"安全框架"才 是真正的防火墙,这个框架的名称叫做 netfilter .

netfilter 位于内核空间,IPTables其实是一个命令行工具,位于用户空间,我 们用这个工具操作真正的框架。netfilter/iptables 组成Linux平台下的包过滤防火墙,与 大多数的Linux软件一样,这个包过滤防火墙是免费的,完成封包过滤,封包重定向和 网络地址转换(NAT)等功能。

​ iptbales是一个基于命令行的防火墙工具,它使用规则链来允许/阻止网络流量。 当一条网络连接试图在你的系统中建立时,IPTables会查找对应的匹配规则。如果找 不到,IPTbales将对其采取默许操作。 iptables 是 Linux 防火墙系统的重要组成部分,iptables 的主要功能是实现对网络数据包进出设备及转发的控制。当数据包需要进入设备、从设备中流出或者由该设备转发、路由时,都可以使用 iptables 进行控制。

​ iptables 是集成在 Linux 内核中的包过滤防火墙系统。使用 iptables 可以添加、删除具体的过滤规则,iptables 默认维护着 4 个表和 5 个链,所有的防火墙策略规则都被分别写入这些表与链中
在这里插入图片描述

1.1 iptables基础

​ 规则(rules)其实就是网络管理员预定义的条件,规则一般定义为"如果数据包头符合这样的条件,就按照规定处理这个数据包"。规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址,目的地址,传输协议(如TCP,UDP,ICMP等)和服务类型(如HTTP,FTP,SMTP等)。当数据包和规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept),拒绝(reject)和丢弃(drop)等。配置防火墙的主要工作就是添加,修改和删除这些规则。

1.2 iptables和netfilter的关系

​ iptables只是Linux防火墙的管理工具而已,位于/sbin/iptables。真正实现防火墙功能的是netfilter,它是Linux内核中实现包过滤的内部结构

[root@localhost ~]# which iptables
/usr/sbin/iptables

1.3 iptables中的表和链

1.3.1 iptables中的表

​ iptables中的规则表用于容纳多个规则链。规则表默认是允许通过状态,因此规则表中的规则链需要设置禁止的规则用来限制规则表,从而达到数据包过滤的效果。 反之,如果规则表禁止状态,则规则链需要设置被允许的规则。iptables根据防火墙规则的作用对表进行划分
在这里插入图片描述
规则表的执行顺序是raw>mangle>nat>filter
在这里插入图片描述

1.3.2 iptables中的规则链

iptables中定义了很多规则链,且每种规则链的作用各不同
在这里插入图片描述

规则链也存在执行顺序的概念:

  • 入站顺序:PREROUTING>INPUT
  • 出站顺序:OUTPUT>POSTROUTING
  • 转发顺序:PREROUTING>FORWARD>POSTROUTING
1.3.3 iptables规则中数据包的控制类型
  • ACCEPT:允许数据包通过
  • DROP:直接将数据包丢弃,不给出任何提示
  • REJECT:拒绝将数据包丢弃,必要时给出提示
  • LOG:记录日志信息,然后转发给下一跳规则继续匹配
  • DNAT:目的地址转换
  • SNAT:源地址转换
  • MASQUERADE:地址欺骗
  • REDIRECT:重定向
1.3.4 iptables中需要注意的事项
  • 若未指定匹配规则表,则默认使用filter表

  • 若未指定规则链,则指表内所有的规则链

  • 规则链内的规则一旦匹配就停止,若未匹配成功则按照练的默认策略执行

1.4 iptables传输数据包的过程

1.4.1 PREROUTING链
# 当一个数据包进入网卡时,它首先进入PREROUTING链,内核根据数据包源IP,目的IP判断是否需要转发
1.4.2 INPUT链
# 如果数据包就是进入本机的,他就会进入INPUT链。数据包到达了INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出
1.4.3 FORWARD链
# 如果数据包是要转发出去的,且内核允许转发,数据包就会经过FORWARD链,然后到达POSTROUTING链输出

在这里插入图片描述

了解内核转发

# 开启内核转发
[root@localhost ~]# echo "1" > /proc/sys/net/ipv4/ip_forward
[root@localhost ~]# cat /proc/sys/net/ipv4/ip_forward
1
# 保持开机自启
[root@localhost ~]# vim /etc/sysctl.conf 
[root@localhost ~]# cat /etc/sysctl.conf 
net.ipv4.ip_forward = 1 #0为关闭,1为开启
[root@localhost ~]#

2.iptable基本语法

2.1 iptables 参数介绍

iptables 命令的基本语法格式如下:

iptables [-t table] COMMAND [chain] CRETIRIA -j ACTION

各参数的含义为:

  • -t:指定需要维护的防火墙规则表filter,nat,mangle或者raw,默认为filter
  • COMMAND:子命令,定义对规则的管理
  • chain:指明链表
  • CRETIRIA:匹配参数
  • ACTION:触发动作

iptables 命令常用的选项及各自的功能:

选 项    功 能
-A  添加防火墙规则
-D  删除防火墙规则
-I  插入防火墙规则
-F  清空防火墙规则
-L  列出添加防火墙规则
-R  替换防火墙规则
-Z  清空防火墙数据表统计信息
-P  设置链默认规则
-m 	设置扩展模块

iptables 命令常用匹配参数及各自的功能:

参 数               功 能
[!]-p            匹配协议,! 表示取反
[!]-s            匹配源地址
[!]-d            匹配目标地址
[!]-i            匹配入站网卡接口
[!]-o            匹配出站网卡接口
[!]--sport       匹配源端口
[!]--dport       匹配目标端口
[!]--src-range   匹配源地址范围
[!]--dst-range   匹配目标地址范围
[!]--limit       匹配数据表速率
[!]--mac-source  匹配源MAC地址
[!]--sports      匹配源端口
[!]--dports      匹配目标端口
[!]--stste       匹配状态(INVALID、ESTABLISHED、NEW、RELATED)
[!]--string      匹配应用层字串

iptables 命令触发动作及各自的功能:

触发动作      功 能
ACCEPT      允许数据包通过
DROP        丢弃数据包
REJECT      拒绝数据包通过
LOG         将数据包信息记录 syslog 曰志
DNAT        目标地址转换
SNAT        源地址转换
MASQUERADE  地址欺骗
REDIRECT    重定向

​ 内核会按照顺序依次检查 iptables 防火墙规则,如果发现有匹配的规则目录,则立刻执行相关动作,停止继续向下查找规则目录;如果所有的防火墙规则都未能匹配成功,则按照默认策略处理

  • 使用 -A 选项添加防火墙规则会将该规则追加到整个链的最后
  • 使用 -I 选项添加的防火墙规则则会默认插入到链中作为第一条规则

2.2 iptables规则的查看与清除

2.1.1 查看规则
iptables -nvL

各参数的含义为:

  • -L:表示查看当前表的所有规则,默认查看的是filter表,如果要查看nat表,可以加上-t nat参数
  • -n:表示不对IP地址进行反查,加上这个参数显示速度将会加快
  • -v:表示输出详细信息,包含通过该规则的数据包数量,总字节数以及相应的网络接口
[root@localhost ~]# iptables -L
Chain INPUT (policy ACCEPT) #INPUT链默认是允许规则
target                      prot opt source                         destination
ACCEPT                      all -- anywhere                         anywhere            state
RELATED,ESTABLISHED
ACCEPT                      icmp -- anywhere                        anywhere
ACCEPT                      all -- anywhere                         anywhere
ACCEPT                      tcp -- anywhere                         anywhere            state NEW tcp dpt:ssh
REJECT                      all -- anywhere                         anywhere            reject-with icmp-host-prohibitedChain FORWARD (policy ACCEPT) #FORWARD链默认是允许规则
target                      prot opt source                         destination
REJECT                      all -- anywhere                         anywhere            reject-with icmp-host-prohibitedChain OUTPUT (policy ACCEPT) #OUTPUT链默认是允许规则
target                      prot opt source                         destination--chain:链
--policy:策略
--target:控制类型
--prot:协议
--opt:操作
--source:源IP地址
--destination:目的IP地址
2.1.2 添加规则
# 设置Input链的默认策略设置为拒绝(DROP)
[root@localhost ~]# iptables -P INPUT DROP #配置INPUT链默认拒绝数据包
[root@localhost ~]# iptables -I INPUT -p icmp -j ACCEPT #在INPUT链开头加入允许所有ICMP报文通过
[root@localhost ~]# iptables -I INPUT -p tcp --dport 22 -j ACCEPT #在INPUT链开头加入允许所有TCP端口22的报文通过
[root@localhost ~]# iptables -A INPUT -j ACCEPT #在INPUT链结尾加入所有报文
通过(-t filter可以省略不写,默认是filter表)
[root@localhost ~]# iptables -L #查看防火墙规则
Chain INPUT (policy DROP) #INPUT链默认是允许规则
target                      prot opt source                         destination
ACCEPT                      all -- anywhere                         anywhere            state RELATED,ESTABLISHED
ACCEPT                      icmp -- anywhere                        anywhere        
ACCEPT     					tcp  --  anywhere             			anywhere            tcp dpt:ssh
ACCEPT                      all -- anywhere                         anywhere
ACCEPT                      tcp -- anywhere                         anywhere            state NEW tcp dpt:ssh
REJECT                      all -- anywhere                         anywhere            reject-with icmp-host-prohibitedChain FORWARD (policy ACCEPT) #FORWARD链默认是允许规则
target                      prot opt source                         destination
REJECT                      all -- anywhere                         anywhere            reject-with icmp-host-prohibitedChain OUTPUT (policy ACCEPT) #OUTPUT链默认是允许规则
target                      prot opt source                         destination
2.1.3 修改规则
# 允许所有人可以通过tcp的22号端口远程连接,修改为仅允许192.168.65.0/24网段的用户远程连接
[root@localhost ~]# iptables -R INPUT 2-s 192.168.65.0/24 -j ACCEPT
[root@localhost ~]# iptables -L #查看防火墙规则
ACCEPT                      icmp -- anywhere                        anywhere        
ACCEPT     					tcp  --  192.168.65.0/24                anywhere            tcp dpt:ssh
2.1.4 删除规则
# 删除规则有两种方法,但都必须使用 -D 参数
[root@localhost ~]# iptables -D INPUT -p icmp -j ACCEPT#有时需要删除的规则较长,删除时需要写一大串的代码,这样比较容易写错,这时可以先使用 -line-number 找出该条规则的行号,再通过行号删除规则
[root@localhost ~]# iptables -L -n --line-number
[root@localhost ~]# iptables -D INPUT 1

3.防火墙的备份与还原

​ 默认的 iptables 防火墙规则会立刻生效,但如果不保存,当计算机重启后所有的规则都会丢失,所以对防火墙规则进行及时保存的操作是非常必要的。

​ iptables 软件包提供了两个非常有用的工具,我们可以使用这两个工具处理大量的防火墙规则。这两个工具分别是 iptables-save 和 iptables-restore,使用该工具可以实现防火墙规则的保存与还原。这两个工具的最大优势是处理庞大的规则集时速度非常快。

​ CentOS 7 系统中防火墙规则默认保存在 /etc/sysconfig/iptables 文件中,使用 iptables-save 将规则保存至该文件中可以实现保存防火墙规则的作用,计算机重启后会自动加载该文件中的规则。如果使用 iptables-save 将规则保存至其他位置,可以实现备份防火墙规则的作用。当防火墙规则需要做还原操作时,可以使用 iptables-restore 将备份文件直接导入当前防火墙规则

3.1 iptables-save命令

iptables-save 命令用来批量导出 Linux 防火墙规则,语法介绍如下:

保存在默认文件夹中(保存防火墙规则):
[root@liangxu ~]# iptables-save > /etc/sysconfig/iptables
保存在其他位置(备份防火墙规则):
[root@liangxu ~]# iptables-save > 文件名称

直接执行 iptables-save 命令:显示出当前启用的所有规则

[root@localhost ~]# iptables-save 
……“#”号开头的表示注释;
“*filter”表示所在的表;
“:链名默认策略”表示相应的链及默认策略,具体的规则部分省略了命令名“iptables”;
在末尾处“COMMIT”表示提交前面的规则设置。

备份到其他文件中。例如文件:text,如下所示

[root@localhost ~]# iptables-save > text

列出nat表的规则内容,命令如下:

[root@localhost ~]# iptables-save -t nat
3.2 iptables-restore命令

​ iptables-restore 命令可以批量导入Linux防火墙规则,同时也需要结合重定向输入来指定备份文件的位置。命令如下:

[root@localhost ~]# iptables-restore < 文件名称

​ 注意,导入的文件必须是使用 iptables-save工具导出来的才可以。

​ 先使用 iptables-restore 命令还原 text 文件,然后使用 iptables -t nat -nvL 命令查看清空的规则是否已经还原,如下所示:

[root@localhost ~]# iptables-restore < test 
[root@localhost ~]# iptables -t nat -nvL 
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination

3.iptables的实际使用

3.1 防止黑客对SSH服务暴力破解

#配置只有指定IP地址段的用户可以连接本地的SSH服务。其他用户拒绝访问,可以有效防止黑客对SSH服务暴力破解
[root@localhost ~]# iptables -I INPUT -s 192.168.0.0/24 -p tcp --dport 22 -j ACCEPT
#在INPUT链的头部加入只允许源IP时192.168.0.0/24的网段协议是TCP目的端口是22的数
据通过
[root@localhost ~]# iptables -I INPUT -p tcp --dport 22 -j DROP
#在INPUT链的末尾加入不允许所有IP地址网络协议是TCP目的端口是22的数据通过

3.2 不允许任何用户访问本机的3306端口

[root@localhost ~]# iptables -I INPUT -p tcp --dport 3306 -j DROP
#在INPUT链的末尾加入不允许所有IP地址网络协议是TCP目的端口是3306的数据通过
[root@localhost ~]# iptables -I INPUT -p udp --dport 3306 -j DROP
#在INPUT链的末尾加入不允许所有IP地址网络协议是UDP目的端口是3306的数据通过

3.3 防止ICMP类型的主机发现

[root@localhost ~]# iptables -I INPUT -p icmp -j REJECT
#禁止ICMP类型数据包发送进入该主机
[root@localhost ~]# iptables -I OUTPUT -p icmp -j REJECT
#禁止ICMP类型数据包从该主机发出
C:\Users\admin>ping 192.168.80.134
正在 Ping 192.168.80.134 具有 32 字节的数据:
请求超时。
请求超时。
请求超时。
请求超时。
192.168.80.134 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 0,丢失 = 4 (100% 丢失)

3.4 禁止主机用户访问百度

[root@localhost ~]#iptables -I FORWARD -d www.baidu.com -j DROP
#禁止从主机转发访问www.baidu.com的数据报文

3.5 使用iptables封禁IP

3.5.1 封禁单个IP
[root@localhost ~]# iptables -I INPUT -s 192.168.65.7 -j DROP #-I 指插入表第一列
[root@localhost ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       all  --  192.168.65.7         anywhere            
………………
3.5.2 解封单个IP
[root@localhost ~]# iptables -D INPUT -s 192.168.65.7 -j DROP
[root@localhost ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         …………
3.5.3 封禁IP段
`1.封IP段: 从123.0.0.1到123.255.255.254的命令
[root@localhost ~]# iptables -I INPUT -s 123.0.0.0/8 -j DROP`2.封IP段:从123.168.0.0到123.168.255.254的命令
[root@localhost ~]# iptables -I INPUT -s 123.168.0.0/16 -j DROP`3.封IP段:从123.168.65.0到123.168.65.254的命令
[root@localhost ~]# iptables -I INPUT -s 123.128.65.0/24 -j DROP
3.5.3解封IP段
`1.解IP段: 从123.0.0.1到123.255.255.254的命令
[root@localhost ~]# iptables -D INPUT -s 123.0.0.0/8 -j DROP`2.解IP段:从123.168.0.0到123.168.255.254的命令
[root@localhost ~]# iptables -D INPUT -s 123.168.0.0/16 -j DROP`3.解IP段:从123.168.65.0到123.168.65.254的命令
[root@localhost ~]# iptables -D INPUT -s 123.128.65.0/24 -j DROP

4.iptables进行网络地址转换

​ iptables具有NAT功能,可以将内网地址和外网地址进行转换,从而完成内外网 通信。网络地址转换分为源地址转换和目的地址转换两种.

4.1 源地址转换(SNAT)

​ SNAT是指在数据包从网卡发出去的时候,把数据包中的源地址替换成可访问公 网的IP地址,当数据报文发送至对端主机后,对端主机认为源IP是公网的IP地址,从 而进行正常的响应.

4.1.1 SNAT的工作原理

在这里插入图片描述

实现一个IP地址做SNAT转换,一般可以让内网100到200台主机实现上网。

在这里插入图片描述

4.1.2 SNAT转换前提条件
  • 局域网各主机己正确设置IP地址、子网掩码、默认网关地址

  • Linux网关开启IP路由转发

    [root@localhost ~]#echo 1 > /proc/sys/net/ipv4/ip_forward
    
  • SNAT转换:固定的公网IP地址

    #配置SNAT策略,实现SNAT功能,将所有192.168.80.0/24这个网段的源IP改为
    192.168.0.111
    [root@localhost ~]#iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j SNAT --to-source 192.168.0.111
    -- -s:可以指定单个IP地址
    -- -o:指定出站网卡
    -- --to-source:外网IP或地址池
    [root@localhost ~]#iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j SNAT --to-source 192.168.0.111-192.168.0.122
    

利用实验来验证SNAT源地址转换的作用

①实验准备:

  • 局域网网段为:192.168.80.0/24
  • 设置外网网段为:192.168.0.0/24
    在这里插入图片描述

②实验步骤:

Ⅰ配置局域网机器的iptables功能

[root@localhost ~]# iptables -F -t nat #清空指定表的规则
[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o
ens160 -j SNAT --to-source 192.168.0.111 #配置NAT表的POSTROUTING链规则
[root@localhost ~]# iptables -L -t nat #查看指定表的规则

Ⅱ.配置网关服务器

[root@client2 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward #开启路由转发功能

Ⅲ.配置Web服务器

#下载安装httpd服务器
[root@Server ~]# yum -y install httpd
[root@server ~]# firewall-cmd --permanent --add-service=http #防火墙放行http流量
success
[root@server ~]# firewall-cmd --reload
success
[root@server ~]#

Ⅳ.对外网主机80端口抓包,此时内网主机访问外网web时,成功隐藏了内网主机的ip, 而用网关外网ip来做访问报文的源地址和响应报文的目标地址

#外网主机下载Tcpdump工具进行网络流量抓包
[root@localhost ~]# yum -y install tcpdump.x86_64
[root@localhost ~]# yum -y install libpcap
#内网机器访问外网服务器
[root@localhost ~]# curl 192.168.0.112
#对外网服务器的ens160接口进行指定协议和端口的抓包
[root@server ~]# tcpdump -i ens160 -nn tcp port 80
tcpdump: verbose output suppressed, use -v or -vv for full protocol
decode
listening on ens160, link-type EN10MB (Ethernet), capture size 262144
bytes
07:34:16.215925 IP 192.168.0.108.1684 > 192.168.0.112.80: Flags [S], seq
1361455181, win 64240, options [mss 1460,nop,wscale 8,nop,nop,sackOK],
length 0
07:34:16.216134 IP 192.168.0.112.80 > 192.168.0.108.1684: Flags [R.],
seq 0, ack 1361455182, win 0, length 0
07:34:16.716185 IP 192.168.0.108.1684 > 192.168.0.112.80: Flags [S], seq
1361455181, win 64240, options [mss 1460,nop,wscale 8,nop,nop,sackOK],
length 0
07:34:16.716374 IP 192.168.0.112.80 > 192.168.0.108.1684: Flags [R.],
seq 0, ack 1, win 0, length 0
07:34:17.218806 IP 192.168.0.108.1684 > 192.168.0.112.80: Flags [S], seq
1361455181, win 64240, options [mss 1460,nop,wscale 8,nop,nop,sackOK],
length 0
........

Ⅴ.对网关内网接口抓包,是直接内网ip发包给外网ip

[root@localhost ~]# tcpdump -i ens160 -nn tcp port 80
dropped privs to tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol
decode
listening on ens160, link-type EN10MB (Ethernet), capture size 262144bytes
07:53:20.020348 IP 192.168.80.134.59868 > 192.168.0.112.80: Flags [S],seq 589541098, win 29200, options [mss 1460,sackOK,TS val 2237827899 ecr0,nop,wscale 7], length 0
07:53:21.074566 IP 192.168.80.134.59868 > 192.168.0.112.80: Flags [S],seq 589541098, win 29200, options [mss 1460,sackOK,TS val 2237828954 ecr 0,nop,wscale 7], length 0
07:53:22.035860 IP 192.168.0.112.80 > 192.168.80.134.59868: Flags [R.],seq 1036074530, ack 589541099, win 64240, length 0

③实验心得

​ SANT的优点是可以使得多台局域网内的主机都通过一个公网IP进行正常的网页 访问,解决了IP资源匮乏的问题。同时,由于其源IP地址进行了转换,从而加强了网 络的安全性.

4.2 目的地址转换(DNAT)

​ DNAT是指数据包从网卡发送出去的时候修改数据报文中的目的IP为某公司内网 中私有IP使用的技术

4.2.1 DNAT的工作原理:

在这里插入图片描述

4.2.2 DNAT转换前提条件:
  • 局域网的服务器能够访问Internet
  • 网关的外网地址有正确的DNS解析记录
  • Linux网关开启IP路由转发

利用实验来验证DNAT目的地址转化的作用

实验步骤:

①发布内网的Web服务

[root@localhost ~]# iptables -t nat -A PREROUTING -i ens160 -d 192.168.0.0/24 -p tcp --dport 80 -j DNAT --to-destination 192.168.80.11
[root@localhost ~]# iptables -L -t nat
-- -s:可以指定单个IP地址或IP地址段
-- -i:指定入站网卡
-- --to-destination:内网IP或地址池
-- --dport :指定入站的网络端口

②发布时修改目标端口

#发布局域网内部的OpenSSH服务器, 外网主机需使用250端口进行连接
[root@localhost ~]#iptables-t nat -A PREROUTING -i ens33 -d 192.168.0.112 -p tcp--dport 250-jDNAT --to 192.168.80.11:22
[root@localhost ~]# iptables -L -t nat

5.实验——iptables配置实践

5.1 实验介绍:

第一部分:模拟Linux系统为局域网中某服务器,通过编写脚本localsafe.sh加固
本机安全性
第二部分:模拟Linux系统主机为本地网络中的防火墙,通过对该系统编写脚本networksaft.sh加固本地网络,实现本地FTP服务器,Web服务器。E-mali服务
器的安全性

5.2 实验目的:

  • 了解iptables的基本功能
  • 掌握iptables的防火墙配置方法

5.3 实验环境

  • Centos 7
  • Redhat 8

5.4 实验步骤

步骤1:

​ 设置Redhat 8作为Web服务器,现在需要配置该Web服务器能被客户端访问,并 配置它能被安全的SSH远程控制,且配置可以SNMP安全纳管。该脚本通过配置 INPUT表默认为拒绝,并配置只允许接收的数据报文从而形成白名单机制的安全原则.

[root@localhost ~]#vim localsafe.sh
#!/bin/bash
iptables -F #清除所有规则
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
#允许调用localhost的应用访问
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
#允许接收任意IP地址发送ICMP的echo类型报文
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
#允许接收任意IP地址访问TCP的80和443端口(允许访问Web服务器)
iptables -A INPUT -p udp -s 192.168.0.7 --dport 22 -j ACCEPT
iptables -A INPUT -p udp -s 192.168.0.7 --dport 161 -j ACCEPT
#只允许IP地址为192.168.0.7的主机连接TCP的22端口(TCP)和UDP的161端口(SNMP)
iptables -A INPUT -j DROP
#INPUT链默认为数据包丢弃
iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT
#允许建立ESTBELISHED状态的数据包发出
iptables -A OUTPUT -j DROP
iptables -A FORWARD -j DROP
#OUTPUT链默认设置为拒绝,即禁止主机主动发出外部连接,这个可以有效防止反弹shell攻击
#FORWARD链默认为数据包丢第
iptables -L -n --line-numbers

步骤2:

​ 为localsafe.sh脚本赋予执行权限,然后执行脚本

[root@localhost ~]# vim localsafe.sh
[root@localhost ~]# ./localsafe.sh

步骤3:

​ Linux服务器模拟配置网络防火墙,该组网中所有的服务器用到的IP均为公网IP, 且有三个服务器:Web服务器(220.128.15.10),FTP服务器(220.128.15.11),Email服务器(220.128.15.12).内网IP地址网段为192.168.1.0/24.配置Linux防火墙允 许内网访问三个服务器,不允许其他公网IP访问。禁止Internet用户ping防火墙的eth0 接口
在这里插入图片描述

为了满足上述要求,编写脚本networksafe.sh

root@client2 ~]# vim networksafe.sh
[root@client2 ~]# cat networksafe.sh
#!/bin/bash
iptables -F #清空规则链
iptables -P INPUT DROP #配置INPUT链默认拒绝数据包
iptables -P FORWARD DROP #配置FORWARD链默认拒绝数据包
iptables -P OUTPUT DROP #配置OUTPUT链默认拒绝数据包
iptables -A FORWARD -p tcp -s 192.168.1.0/24 -d 220.128.15.10 --dport 80  -j ACCEPT
iptables -A FORWARD -p tcp -s 192.168.1.0/24 -d 220.128.15.10 --dport 443 -j ACCEPT
#配置允许源IP192.168.1.0/24网段的Web服务器的数据包通过防火墙
iptables -A FORWARD -p tcp -s 192.168.1.0/24 -d 220.128.15.11 --dport 21  -j ACCEPT
iptables -A FORWARD -p tcp -s 192.168.1.0/24 -d 220.128.15.11 --dport 20  -j ACCEPT
#配置允许源IP192.168.1.0/24网段的FTP服务器的数据包通过防火墙
iptables -A FORWARD -p tcp -s 192.168.1.0/24 -d 220.128.15.12 --dport 25  -j ACCEPT
iptables -A FORWARD -p tcp -s 192.168.1.0/24 -d 220.128.15.12 --dport 110 -j ACCEPT
iptables -A FORWARD -p udp -s 192.168.1.0/24 -d 220.128.15.12 --dport 161 -j ACCEPT
#配置允许源IP192.168.1.0/24网段的E-mail服务器的数据包通过防火墙
iptables -A INPUT -i eth0 -p icmp -j DROP
#配置拒绝接口eth0的icmp流量
echo 1 > /proc/sys/net/ipv4/ip_forward
#开启路由转发
[root@client2 ~]# chmod +x networksafe.sh
[root@client2 ~]# ./networksafe.sh
//执行结果省略

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Laravel 框架中队列的使用

概述 Laravel 框架内置了强大的队列系统&#xff0c;用于处理异步任务、提高系统性能等。队列可以让任务异步执行&#xff0c;而不会阻塞当前进程&#xff0c;可以提高系统的处理能力。 Laravel 的队列系统支持多种驱动&#xff0c;如 Redis、Beanstalkd、SQS 等&#xff0c;…

Android WiFi Service启动-Android13

Android WiFi Service启动 - Android13 1、SystemServer中入口2、WifiService启动2.1 关键类概要2.2 启动时序图 Android WiFi基础概览 AOSP > 文档 > 心主题 > WiFi概览 1、SystemServer中入口 编译生成对应的jar包&#xff1a;"/apex/com.android.wifi/javalib…

桌面显示器type-c接口方案6020

TYPE-C接口桌面显示器&#xff0c;与传统的显示器不同的是 新一类的显示器不仅仅支持视频传输&#xff0c;还可以利用显示器的DC电源转成PD协议充电给设备端&#xff08;笔记本&#xff0c;任天堂等HOST设备&#xff09;充电。 这种新型的TYPE-C接口桌面显示器&#xff0c;不仅…

基于机器学习的高考志愿高校及专业分析系统

本项目在“基于 Python 的高考志愿高校及专业分析系统”基础上补充添加了机器学习算法对高考总问进行预测&#xff1b; 项目采用了网络爬虫技术&#xff0c;从指定的高考信息网站上抓取了各大高校的历年录取分数线数据。 通过精细的数据清洗过程&#xff0c;这些数据被存储于…

物联网智能控制器—福建蜂窝物联网科技有限公司

什么是物联网智能控制器&#xff1f; 物联网智能控制器是蜂窝物联自主研发的一种远程测控设备(RTU)&#xff0c;负责对现场信号、工业设备的监测和控制。本质上是一个模块化封装的微型计算机设备&#xff0c;将相应的一些功能进行了封装&#xff0c;无需进行电路设计和硬件程序…

为什么使用双token实现无感刷新用户认证?

单token机制 认证机制&#xff1a;对与单token的认证机制在我们项目中仅使用一个Access Token的访问令牌进行用户身份认证和授权的方案处理。 不足之处&#xff1a; 安全性较低(因为只有一个token在客户端和服务器端之间进行传递&#xff0c;一目Acess Token被截获或者被泄露…

在程序中链接静态库 和 动态库

9. 链接库 在编写程序的过程中&#xff0c;可能会用到一些系统提供的动态库或者自己制作出的动态库 或者静态库文件&#xff0c;cmake中也为我们提供了相关的加载动态库的命令hehedalinux:~/Linux/loveDBTeacher-v3$ tree . ├── CMakeLists.txt ├── include │ └── …

远程开发之vscode端口转发

远程开发之vscode端口转发 涉及的软件forwarded port 通过端口转发&#xff0c;实现在本地电脑上访问远程服务器上的内网的服务。 涉及的软件 vscode、ssh forwarded port 在ports界面中的port字段&#xff0c;填需要转发的IP:PORT&#xff0c;即可转发远程服务器中的内网端…

Monorepo-uniapp 构建分享

Monorepo uniapp 构建灵感&#xff1a;刚好要做一个项目&#xff0c;于是想到升级一下之前自己写的一个vue3tspiniauno的模版框架&#xff0c;其实那个框架也不错&#xff1b;只是感觉还差点东西&#xff0c;我已经用那个小框架写了两三个项目&#xff1b;轻巧实用。为什么选…

idea使用docker-compose发布应用程序

非常重要的话说在前头 idea要想使用docker-compose&#xff0c;不能使用ssh创建idea Docker&#xff0c;而需要使用socket创建idea Docker。 socket docker是不安全的&#xff0c;任何人都可以访问你的docker&#xff0c;所以只能测试环境使用&#xff0c;请勿在正式环境使用s…

ubuntu安装mysql(tar.xz)

0:本机Ubuntu的版本为 腾讯云 18.04 1&#xff1a;下载地址 MySQL &#xff1a;&#xff1a; 下载 MySQL 社区服务器 2&#xff1a;上传文件到服务器 3:解压 sudo sumv mysql-8.2.0-linux-glibc2.17-x86_64-minimal.tar.xz /usrtar -xvf mysql-8.2.0-linux-glibc2.17-x86_6…

推荐一款.NET开发的物联网开源项目

物联网&#xff08;IoT&#xff09;是一个正在快速发展的技术领域&#xff0c;它涉及到各种设备、物体和系统的互联。所以各种物联网平台和物联网网关项目层出不穷&#xff0c;在物联网&#xff08;IoT&#xff09;领域&#xff0c;.NET平台扮演着重要的角色。作为一款广泛使用…

【日常聊聊】ChatGPT和文心一言哪个更好用

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; 日常聊聊 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 介绍 哪个在文本生成上有优势 结语 我的其他博客 前言 随着人工智能技术的不断发展&#xff0c;自然语言处理领域也取得了显…

C语言从入门到实战——数据在内存中的存储方式

数据在内存中的存储方式 前言1. 整数在内存中的存储2. 大小端字节序和字节序判断2.1 什么是大小端2.2 为什么有大小端2.3 练习2.3.1 练习12.3.2 练习22.3.3 练习32.3.4 练习42.3.5 练习52.3.6 练习6 3. 浮点数在内存中的存储3.1 练习3.2 浮点数的存储3.2.1 浮点数存的过程3.2.2…

C++ 多态

文章目录 多态的概念虚函数抽象类多态的原理虚函数指针与虚函数表多继承与虚函数表菱形虚拟继承 动态绑定与静态绑定 多态的概念 多种状态 —— 不同对象去完成某个行为&#xff0c;会有不同的状态 虚函数 virtual void Func(){;} //虚函数&#xff0c;和之前的虚继承没什么…

华为设备端口镜像设置

核心代码&#xff1a; observe-port int 编号 int 编号 mirror to observe-port both | inbound | outbound #both:将镜像端口的入和出流量同时复制到观察者端口 #inbound:将镜像端口的入流量复制到观察者端口 #outbound:将镜像端口的出流量复制到观察者端口配置后可使出入端口…

解决ELK日志收集中Logstash报错的关键步

ElK执行日志收集的时候logstash报错&#xff1a; Failed to execute action {:action>LogStash::PipelineAction::Create/pipeline_id:main, :exception>“LogStash::ConfigurationError”, :message>“Expected one of [^\r\n], “\r”, “\n” at line 88, column 4…

C++学习笔记——标准模板库

目录 一、简介 二、STL概述 2.1STL是什么&#xff1f; 2.2STL的优势 三、容器&#xff08;Containers&#xff09; 3.1序列式容器&#xff08;Sequence Containers&#xff09; 3.2关联式容器&#xff08;Associative Containers&#xff09; 3.3容器适配器&#xff08;…

python统计分析——操作案例(模拟抽样)

参考资料&#xff1a;用python动手学统计学 import numpy as np import pandas as pd from matplotlib import pyplot as plt import seaborn as snsdata_setpd.read_csv(r"C:\python统计学\3-4-1-fish_length_100000.csv")[length] #此处将文件路径改为自己的路…

centos 7 上如何安装chrome 和chrome-driver

centos 7 上如何安装chrome 和chrome-driver 查找自己的服务器是什么系统 cat /etc/os-release这里以centos linux 7为例 下载google-chrome安装包 wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm安装chrome sudo yum localinstall go…