运维工具之iptables命令

运维工具之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-prohibited

Chain FORWARD (policy ACCEPT) #FORWARD链默认是允许规则
target                      prot opt source                         destination
REJECT                      all -- anywhere                         anywhere            reject-with icmp-host-prohibited

Chain 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-prohibited

Chain FORWARD (policy ACCEPT) #FORWARD链默认是允许规则
target                      prot opt source                         destination
REJECT                      all -- anywhere                         anywhere            reject-with icmp-host-prohibited

Chain 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
//执行结果省略

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

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

相关文章

c语言 编译与链接

编译与链接 翻译环境和执行环境翻译环境1.1预编译1.2编译1.3汇编&#xff08;ASM&#xff09;2.链接 执行环境最后给大家附上一张关于本节知识内容的图供大家更好理解~ ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/522d488885ba44d99aa504d6b21c88d5.png) &…

LLaMa2 Chat gpt 大模型本地部署初体验

一直想在自己电脑或者测试环境随便找台服务器尝试部署一下“大模型”&#xff0c;但“大模型”对于内存和GPU的要求令人望而却步&#xff0c;层出不穷的各种术语也令人困惑&#xff0c;有点难以下手。 经过一段时间&#xff0c;在百度千帆大模型平台、讯飞星火大模型平台、魔搭…

【期末考试】网络综合复习宝典

相关链接 网络复习思维导图&#xff08;HCIP&#xff09;https://www.edrawsoft.cn/viewer/public/s/038e2370897928 详述循环冗余校验CRC码https://blog.csdn.net/liht_1634/article/details/124328005?app_version6.2.6&codeapp_1562916241&csdn_share_tail%7B%22…

【送书活动七期】CMeet系列 技术生态沙龙:技术人职业交流会·杭州场-转鸿蒙 对应用开发来说是否是职业发展新机会

CSDN致力于促进城市区域内尖端新兴技术开发者交流,提供开放自由的切磋平台。在近期热议的话题中,“华为鸿蒙系统不再兼容安卓应用”的消息成了程序员们广泛关注并引发思考的问题。 因此便有了我们此次的活动探讨议题! 目录 题外话开场简单介绍活动主办方介绍活动话题讨论升职加…

IDEA连接Github⭐️使用Git工具上传本地文件到远程仓库

环境准备 已安装IDEA开发工具&#xff0c;Git版本管理工具&#xff0c;已注册GitHub账号 需要先准备好这些环境&#xff0c;可以自行搜索教程&#xff0c;下面的安装是基于这里的环境上操作的 目录 一、需要提供SSH公钥 ​二、Github配置SSH公钥 ​三、IDEA配置连接 四、连…

C++ 多条件比较的几种实现方式

文章目录 1 sort()使用自定义比较器1.1 在类内部定义比较器 -- 声明为静态成员函数1.2 在函数内部定义比较器 -- lamda表达式1.3 全局函数比较器 2 重载运算符<2.1 在结构体中重载运算符<2.2 在类中重载运算符< 3 重写仿函数bool operator()4 使用pair排序5 priority_…

基于Mapbox的Mvt矢量瓦片集成实践

目录 前言 一、数据说明 1、基本数据 2、属性数据 二、Mapbox集成Mvt矢量瓦片 1、关于访问令牌 2、定义html 3、初始地图 4、加载矢量瓦片 5、效果展示 总结 前言 熟悉矢量瓦片的朋友一定知道&#xff0c;在Webgis当中&#xff0c;矢量瓦片的格式除了pbf的格式&#x…

Mysql 安装通过mysql installer安装+配置环境+连接可视化工具

注意&#xff1a;不适合纯小白&#xff0c;小白建议移步别的大佬MySQL详细安装教程 目录 注意&#xff1a;不适合纯小白&#xff0c;小白建议移步别的大佬MySQL详细安装教程 前言 准备工作 一、Mysql下载 二、MySQL installer 安装以及系统环境配置 三、检验MySQL 四、可…

CleanMyMac X .4.14.7如何清理 Mac 系统?

细心的用户发现苹果Mac电脑越用越慢&#xff0c;其实这种情况是正常的&#xff0c;mac电脑用久了会产生很多的缓存文件&#xff0c;如果不及时清理会影响运行速度。Mac系统在使用过程中都会产生大量系统垃圾&#xff0c;如不需要的系统语言安装包&#xff0c;视频网站缓存文件&…

宝塔发布网站问题汇总和记录

1、添加网站站点后打不开 解决办法&#xff0c;关闭防跨站攻击2 2、laravel项目部署到linux的时候出现The stream or file "/home/www/storage/logs/laravel.log" could not be opened in append mode 给目录加权限 chmod -R 777 storage 3、Class "Redis"…

交友系统程序开发,前后端源码交付,允许二开,UI配色新颖,APP小程序H5随心搭配!

在开发设计与测试阶段&#xff0c;主要包括了程序开发、测试和上线运营等环节。根据产品经理确定的功能需求&#xff0c;开发团队开始进行具体的编程和开发工作。这个过程中需要考虑到不同设备、不同系统和不同版本的需求&#xff0c;确保软件可以在不同平台上稳定运行。 测试是…

在线录屏-通过Web API接口轻松实现录屏

在线录屏是指在互联网上进行屏幕录制的过程。它允许用户通过网络连接&#xff0c;将自己的屏幕活动记录下来&#xff0c;并可以在需要时进行播放、共享或存档。在线录屏常用于教育、培训、演示、游戏等场景&#xff0c;可以帮助用户展示操作步骤、解决问题、分享经验等。通常&a…

MySQL运维篇(三)分库分表

一、介绍 1. 问题分析 随着互联网及移动互联网的发展&#xff0c;应用系统的数据量也是成指数式增长&#xff0c;若采用单数据库进行数据存储&#xff0c;存在以下 性能瓶颈&#xff1a; &#xff08;1&#xff09;IO瓶颈&#xff1a;热点数据太多&#xff0c;数据库缓存不足&…

Redis的事务

一、Redis中事务的定义 1) Redis事务是一个单独的隔离操作&#xff1a;事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中&#xff0c;不会被其他客户端发送来的命令请求所打断 2) Redis事务的主要作用就是串联多个命令防止别的命令插队。 二、multi 、exe…

高精度算法笔记·····························

目录 加法 减法 乘法 除法 高精度加法的步骤&#xff1a; 1.高精度数字利用字符串读入 2.把字符串翻转存入两个整型数组A、B 3.从低位到高位&#xff0c;逐位求和&#xff0c;进位&#xff0c;存余 4.把数组C从高位到低位依次输出 1.2为准备 vector<int> A, B, …

vite 打包优化

✨专栏介绍 在当今数字化时代&#xff0c;Web应用程序已经成为了人们生活和工作中不可或缺的一部分。而要构建出令人印象深刻且功能强大的Web应用程序&#xff0c;就需要掌握一系列前端技术。前端技术涵盖了HTML、CSS和JavaScript等核心技术&#xff0c;以及各种框架、库和工具…

消息中间件面试题

目录 一.为什么使用消息队列 二.RabbitMQ 1.RabbitMQ如何保证消息不丢失 2.RabbitMQ消息的重复消费问题 3.RabbitMQ延迟队列 4.RabbitMQ消息堆积 5.RabbitMQ高可用机制 三.Kafka 1.Kafka如何保证消息不丢失 2.Kafka如何保证消费消息的顺序性 3.Kafka高可用机制 4.Ka…

GitLab Runner 实现项目 CI/CD 发布

Gitlab Runner简介 Gitlab实现CICD的方式有很多&#xff0c;比如通过Jenkins&#xff0c;通过Gitlab Runner等&#xff0c;今天主要介绍后者。Gitlab在安装的时候&#xff0c;就默认包含了Gitlab CI的能力&#xff0c;但是该能力只是用于协调作业&#xff0c;并不能真的去执行…

PLSQL去除一个字符串中的数字

PLSQL去除一个字符串中的数字 SQL Select regexp_replace(abc1234ABC678aaad590AAA, [0-9], ) As 去数字后From dual;效果

Web开发介绍

1 什么是web开发 Web&#xff1a;全球广域网&#xff0c;也称为万维网(www World Wide Web)&#xff0c;能够通过浏览器访问的网站。 所以Web开发说白了&#xff0c;就是开发网站的&#xff0c;例如下图所示的网站&#xff1a;淘宝&#xff0c;京东等等 那么我们知道了web开发…