<返回更多

Linux防火墙之iptables防火墙

2022-06-28    运维老男孩
加入收藏
Linux防火墙之iptables防火墙

 

一、iptables防火墙

概述

netfilter 和 iptables

Linux防火墙之iptables防火墙

 

netfilter

iptables

netfilter/iptables

四表五链

Linux防火墙之iptables防火墙

 

四表

五链

规则表的匹配顺序

raw > mangle > nat > filter

Linux防火墙之iptables防火墙

 

规则链之间的匹配顺序

Linux防火墙之iptables防火墙

 

iptables的安装

#关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
#安装并开启iptables服务
yum -y install iptables iptables-services
systemctl start iptables.service

iptables防火墙的配置方法

命令行配置格式

Linux防火墙之iptables防火墙

 

注意事项

常用的控制类型

控制类型

作用

ACCEPT

允许数据包通过。

DROP

直接丢弃数据包,不给出任何回应信息。

REJECT

拒绝数据包通过,会给数据发送端一个响应信息。

SNAT

修改数据包的源地址。

DNAT

修改数据包的目的地址。

MASQUERADE

伪装成一个非固定公网IP地址。

LOG

在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则。 LOG只是一种辅助动作,并没有真正处理数据包。

常用的管理选项

选项

说明

-A

在指定链的末尾追加(–Append)一条新的规则

-I

在指定链的开头插入(–insert)一条新的规则,未指定序号时默认作为第一条规则

-R

修改、替换(–replace)指定链中的某一条规则,可指定规则序号或具体内容

-P

设置指定链的默认策略(–policy)

-D

删除(–delete)指定链中的某一条规则,可指定规则序号或具体内容

-F

清空(–flush)指定链中的所有规则,若未指定链名,则清空表中的所有链

-L

列出(–list)指定链中所有的规则,若未指定链名,则列出表中的所有链

-n

使用数字形式(–numeric)显示输出结果,如显示 IP 地址而不是主机名

-v

显示详细信息,包括每条规则的匹配包数量和匹配字节数

–line-numbers

查看规则时,显示规则的序号

匹配条件

匹配条件

说明

-p

指定要匹配的数据包的协议类型

-s

指定要匹配的数据包的源IP地址

-d

指定要匹配的数据包的目的IP地址

-i

指定数据包进入本机的网络接口

-o

指定数据包离开本机做使用的网络接口

–sport

指定源端口号

–dport

指定目的端口号

协议匹配:-p 协议名
地址匹配:-s 源地址、-d 目的地址	#可以是IP、网段、域名、空(任何地址)
接口匹配:-i 入站网卡、-o 出站网卡


例:
iptables -A FORWARD ! -p icmp -j ACCEPT
iptables -A INPUT -s 192.168.80.11 -j DROP
iptables -I INPUT -i ens33 -s 192.168.80.0/24 -j DROP

端口匹配:--sport 源端口、--dport 目的端口
#可以是个别端口、端口范围
--sport 1000			匹配源端口是1000的数据包
--sport 1000:3000		匹配源端口是1000-3000的数据包
--sport :3000			匹配源端口是3000及以下的数据包
--sport 1000:			匹配源端口是1000及以上的数据包
注意:--sport 和 --dport 必须配合 -p <协议类型> 使用
例:
iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT
iptables -I FORWARD -d 192.168.80.0/24 -p tcp --dport 24500:24600 -j DROP
TCP标记匹配:--tcp-flags TCP标记
iptables -I INPUT -i ens33 -p tcp --tcp-flags SYN,RST,ACK SYN -j ACCEPT
#丢弃SYN请求包,放行其他包
ICMP类型匹配:--icmp-type ICMP类型		
#可以是字符串、数字代码、、目标不可达
“Echo-Request”(代码为 8)表示 请求
“Echo-Reply”(代码为 0)表示 回显
“Destination-Unreachable”(代码为 3)表示 目标不可达
关于其它可用的 ICMP 协议类型,可以执行“iptables -p icmp -h”命令,查看帮助信息
多端口匹配:-m multiport --sports 源端口列表
-m multiport --dports 目的端口列表
例:
iptables -A INPUT -p tcp -m multiport --dport 80,22,21,20,53 -j ACCEPT
iptables -A INPUT -p udp -m multiport --dport 53 -j ACCEPT
IP范围匹配:-m iprange --src-range IP范围
iptables -A FORWARD -p udp -m iprange --src-range 192.168.80.100-192.168.80.200 -j DROP			
#禁止转发源地址位于192.168.80.100-192.168.80.200的udp数据包
状态匹配:-m state --state 连接状态
常见的连接状态:
NEW :与任何连接无关的,还没开始连接
ESTABLISHED :响应请求或者已建立连接的,连接态
RELATED :与已有连接有相关性的(如FTP 主被动模式的数据连接),衍生态,一般与ESTABLISHED 配合使用
INVALID :不能被识别属于哪个连接或没有任何状态
iptables -A FORWARD -m state --state NEW -p tcp ! --syn -j DROP
#禁止转发与正常 TCP 连接无关的非--syn 请求数据包(如伪造的网络攻击数据包)

SNAT原理与应用

SNAT应用环境

SNAT原理

SNAT转换前提条件

路由转发开启方式

临时打开:
echo 1 > /proc/sys/net/ipv4/ip_forward
或
sysctl -w net.ipv4.ip_forward=1

永久打开:
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1 	#将此行写入配置文件

sysctl -p 		#读取修改后的配置

SNAT转换

SNAT转换1:固定的公网IP地址:
iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j SNAT --to 12.0.0.1
或
iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j SNAT --to-source 12.0.0.1-12.0.0.10
									内网IP	      出站 外网网卡                   外网IP或地址池		

SNAT转换2:非固定的公网IP地址(共享动态IP地址):
iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j MASQUERADE

知识扩展

DNAT原理与应用

DNAT 应用环境

在Internet中发布位于局域网内的服务器

DNAT原理

修改数据包的目的地址。

DNAT转换前提条件

DNAT转换

1、发布内网的Web服务
#把从ens33进来的要访问web服务的数据包目的地址转换为 192.168.80.11
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to 192.168.80.11
或
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.80.11
                             入站 外网网卡  外网IP											   内网服务器IP
 
iptables -t nat -A PREROUTING -i ens33 -p tcp --dport 80 -j DNAT --to 192.168.80.11-192.168.80.20
-------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------	
	
2、发布时修改目标端口			
#发布局域网内部的OpenSSH服务器,外网主机需使用250端口进行连接
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 250 -j DNAT --to 192.168.80.11:22

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

yum -y install net-tools 		#若没有 ifconfig 命令可提前使用 yum 进行安装
ifconfig ens33

知识扩展

防火墙规则的备份和还原

导出(备份)所有表的规则

iptables-save > /opt/ipt.txt

导入(还原)规则

iptables-restore < /opt/ipt.txt

将iptables规则文件保存在 /etc/sysconfig/iptables 中,iptables服务启动时会自动还原规则
iptables-save > /etc/sysconfig/iptables
systemctl stop iptables			#停止iptables服务会清空掉所有表的规则
systemctl start iptables			#启动iptables服务会自动还原/etc/sysconfig/iptables 中的规则
声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>