文章目录

  • 1、linux防火墙介绍及原理
  • 2、火墙默认策略的五条链和三张表
  • 3、管理火墙的俩种方式
  • 3.1 iptables与firewalled服务的切换
  • 3.2 firewalld使用介绍
  • 3.2.1 关于firewalld的配置数据路径
  • 3.2.2 firewalld 的域
  • 3.2.3 firewalld的管理命令
  • 3.2.4 firewalld的高级规则
  • 3.2.5 firewalld中的NAT
  • 3.3 iptables 使用介绍
  • 3.3.1 iptables参数
  • 3.3.2 数据包
  • 3.3.3 NAT中的DNAT,SNAT



1、linux防火墙介绍及原理

Linux 防火墙在企业应用中非常有用,举例如下:

  • 中小企业与网吧里有iptables 作为企业的NAT路由器,可以用来代替传统路由器,而节约成本。
  • IDC机房一般没有硬件防火墙,IDC机房的服务器可以用Linux 防火墙代替硬件防火墙。
  • iptables 可以结合squid 作为企业内部上网的透明代理。传统代理需要在浏览器里配置代理服务器信息,而iptables+squid 的透明代理则可以把客户端的请求重定向到代理服务器的端口。客户端不要作任何设置,而感觉不到代理的存在。
  • 将iptables 作为企业NAT 路由器时,可以使用iptables 的扩展模块屏蔽P2P 流量,还可以禁止非法网页。
  • iptables 可以用于外网IP 向内网IP 映射。
  • iptables 可以轻松防止轻量级DOS 攻击,比如ping 攻击及SYN 洪水攻击。

综述,Iptables 有两种应用模式:主机防火墙,NAT路由器。

linux centos 防火墙icmp怎么添加 linux怎么添加防火墙策略_linux

2、火墙默认策略的五条链和三张表

默认策略中的五条链
- input		    ##输入
- output		##输出
- forward		##转发
- postrouting	##路由之后
- prerouting	##路由之前
 
默认的三张表
- filter		##经过本机内核的数据(input output forward)
- nat		    ##不经过内核的数据(postrouting,prerouting,input,output)
- mangle		##当filter和nat表不够用时使用(input output forward postrouting,prerouting,)

linux centos 防火墙icmp怎么添加 linux怎么添加防火墙策略_iptables_02

linux centos 防火墙icmp怎么添加 linux怎么添加防火墙策略_网络_03

linux centos 防火墙icmp怎么添加 linux怎么添加防火墙策略_iptables_04

3、管理火墙的俩种方式

3.1 iptables与firewalled服务的切换

- firewalld----->iptables
- 	dnf install iptables-services -y
- 	systemctl stop firewalld
- 	systemctl disable firewalld 
- 	systemctl mask firewalld 
-	systemctl enable --now iptables

- iptales -------> fiewalld 
-	dnf install firewalld -y
-	systemctl stop iptables
-	systemctl disable iptables
-	systemctl mask iptables
-	systemctl enable --now firewalld

3.2 firewalld使用介绍

3.2.1 关于firewalld的配置数据路径

- /etc/firewalld		##火墙配置目录
- /lib/firewalld		##火墙模块目录

3.2.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			##丢弃所有数据全部丢弃无任何回复
- internal		##内部网络 ssh mdns ipp-client samba-client dhcp-client
- external		##ipv4网络地址伪装转发 sshd

3.2.3 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.10/24 --zone=block ##指定数据来源访问指定域
- firewall-cmd --reload 
- firewall-cmd --permanent --remove-source=172.25.254.10/24 --zone=block ##删除指定域中的数据来源
- firewall-cmd --permanent --remove-interface=enp1s0 --zone=public ##删除指定域的网络接口(网卡)
- firewall-cmd --permanent --add-interface=enp1s0 --zone=block 	##添加指定域的网络接口
- firewall-cmd --permanent --change-interface=enp1s0 --zone=public ##更改网络接口到指定域

linux centos 防火墙icmp怎么添加 linux怎么添加防火墙策略_运维_05

3.2.4 firewalld的高级规则

当这个服务没有被火墙允许时,高级规则不生效
- firewall-cmd --direct --get-all-rules	##查看高级规则 
- firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -s 172.25.254.10 -p tcp --dport 22  -j REJECT					        
##10不能访问
- firewall-cmd --direct --add-rule ipv4 filter INPUT 1 ! -s 172.25.254.10 -p tcp --dport 22  -j REJECT                           
##除了10都不可以访问
- firewall-cmd --direct --remove-rule ipv4 filter INPUT 1 -s 172.25.254.10 -p tcp --dport 22  -j REJECT	                   
##删除高级规则
3.2.5 firewalld中的NAT
SNAT
-	firewall-cmd --permanent --add-masquerade
-	firewall-cmd --reload 
-
 DNAT
- 	firewall-cmd --permanent --add-forward-port=port=22:proto=tcp:toaddr=1.1.1.210
-	firewall-cmd --reload

双网卡设置

linux centos 防火墙icmp怎么添加 linux怎么添加防火墙策略_路由器_06


linux centos 防火墙icmp怎么添加 linux怎么添加防火墙策略_运维_07


测试

linux centos 防火墙icmp怎么添加 linux怎么添加防火墙策略_运维_08

3.3 iptables 使用介绍

3.3.1 iptables参数

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

linux centos 防火墙icmp怎么添加 linux怎么添加防火墙策略_运维_09


linux centos 防火墙icmp怎么添加 linux怎么添加防火墙策略_linux_10


linux centos 防火墙icmp怎么添加 linux怎么添加防火墙策略_运维_11


linux centos 防火墙icmp怎么添加 linux怎么添加防火墙策略_路由器_12


linux centos 防火墙icmp怎么添加 linux怎么添加防火墙策略_linux_13


linux centos 防火墙icmp怎么添加 linux怎么添加防火墙策略_linux_14


linux centos 防火墙icmp怎么添加 linux怎么添加防火墙策略_运维_15


linux centos 防火墙icmp怎么添加 linux怎么添加防火墙策略_网络_16


linux centos 防火墙icmp怎么添加 linux怎么添加防火墙策略_路由器_17


linux centos 防火墙icmp怎么添加 linux怎么添加防火墙策略_路由器_18


linux centos 防火墙icmp怎么添加 linux怎么添加防火墙策略_网络_19


linux centos 防火墙icmp怎么添加 linux怎么添加防火墙策略_linux_20

3.3.2 数据包

- 状态
- 	RELATED		##建立过连接的
-	ESTABLISHED	##正在连接的
-	NEW			##新的

实验如下图

linux centos 防火墙icmp怎么添加 linux怎么添加防火墙策略_运维_21

3.3.3 NAT中的DNAT,SNAT

双网卡中配置
- 	设置网卡ip分别为172.25.254.110 和 1.1.1.110,网卡配置分别如下
- 	nat表中的dnat snat
-	snat
-		iptables -t nat -A POSTROUTING -o ens160 -j SNAT --to-source 172.25.254.110
-	dnat    ##为了可以使俩个网段互通,o表示输出
-		iptables -t nat -A PREROUTING -i ens160 -j DNAT --to-dest 1.1.1.210 ##为了使真机ssh root@172.25.254.110时,连接的是1.1.1.210  ,i表示input
-	iptables -t nat -nL           ##查看是否配置成功
-	sysctl -a | grep ip_forward   ###  必须等于1
-	 
-	
单网卡的网卡配置
- 	BOOTPROTO=none
-	NAME=enp1s0
-	DEVICE=enp1s0
-	ONBOOT=yes
-	IPADDR=1.1.1.210	
-	PREFIX=24
-	GATEWAY=1.1.1.110
- 
-  
测试
- 	1. 1.1.1.210主机可以ping通 172.25.254.10(真机)
- 	2. 1.1.1.210可以ssh root@172.25.254.10 
- 	3. 172.25.254.10  可以ssh root@172.25.254.110  ,实际进入的是1.1.1.210主机