Linux教程

Linux(21)——防火墙

本文主要是介绍Linux(21)——防火墙,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Linux(21)——防火墙


1. 防火墙安装及切换

  • firewalld
      rhel8中默认使用的是firewalld
    安装:
[root@rhclient Desktop]# dnf install iptables-services -y

从iptables切换至firewalld:

[root@rhclient Desktop]# systemctl stop iptables
[root@rhclient Desktop]# systemctl disable iptables
[root@rhclient Desktop]# systemctl mask iptables
[root@rhclient Desktop]# systemctl enable --now firewalld
  • iptables
    安装:
[root@rhclient Desktop]# dnf install iptables-services -y

从firewalld切换至firewalldiptables:

[root@rhclient Desktop]# systemctl stop firewalld
[root@rhclient Desktop]# systemctl disable firewalld 
[root@rhclient Desktop]# systemctl mask firewalld 
[root@rhclient Desktop]# systemctl enable --now iptables
  • chain

     input				#输入
     output				#输出
     forward			#内核转发
     postrouting		#路由之后
     prerouting			#路由之前
    
  • tables

     filter		#使用内核转发(input output forward)
     nat		#不经过内核的数据(postrouting,prerouting,input,output) 
     mangle		#当filter和nat表不够用时使用
    

2. iptables

配置文件储存在 /etc/sysconfig/iptables
保存当前配置

[root@rhclient Desktop]# iptales-save > /etc/sysconfig/iptables
[root@rhclient Desktop]# service iptables save
  • 设置策略
 [root@rhclient Desktop]#  iptables -[options] <-t table> [chain] [condition] [measure]
-t			#指定表名称
-n			#不做解析
-L			#查看
-A			#添加策略	
-N			#新建链
-E			#更改链名称
-X			#删除链
-D			#删除规则
-I			#插入规则
-R			#更改规则
-P			#更改默认规则
-m			#修改

-p			#协议
--dport		#目的地端口
-s			#来源

	RELATED					#建立过连接的(数据包)
	ESTABLISHED				#正在连接的(数据包)
	NEW						#新的(数据包)

-j			#动作
	ACCEPT			#允许
	DROP			#丢弃
	REJECT			#拒绝
SNAT		#源地址转换
DNAT		#目的地地址转换

使用范例:

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# filter表INPUT中添加规则: 接受状态为RELATED,ESTABLISHED的数据包

iptables -A INPUT -m state --state NEW -i lo -j ACCEPT
# filter表INPUT中添加规则: 接受状态为NEW数据包

iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
# filter表INPUT中添加规则: 接受状态为NEW并且tcp协议来自80端口的数据包

iptables -A INPUT -m state --state NEW ! -s 192.168.0.10 -p tcp --dport 22 -j ACCEPT	
# filter表INPUT中添加规则: 接受状态为NEW tcp协议端口为22的来源不是的192.168.0.10 的数据包

iptables -A INPUT -m state --state NEW -j REJECT
# filter表INPUT中添加规则: 拒绝状态为new的数据包

iptable -t nat -A POSTROUTING -o ens160 -j SNAT --to-source 192.168.0.20
# 添加snat规则,从ens160发出的数据来源更改为 192.168.0.20

iptables -t nat -A PREROUTING -i ens160 -j DNAT --to-dest 172.25.254.30
# 添加dnat规则,ens160 收到的数据目标地址改为172.25.254.30

3. firewalld

  firewalld 配置目录 /etc/firewalld ;模块目录 /lib/firewalld
  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
externalipv4网络地址伪装转发 sshd
  • 常规设定
[root@rhclient Desktop]# firewall-cmd [options] 
	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=dhcp	#移除服务
	
	firewall-cmd --reload 			#刷新防火墙策略
	
	firewall-cmd --permanent --add-source=192.168.158.0/24 --zone=trusted
	#		指定数据来源访问域
	firewall-cmd --reload 
	firewall-cmd --permanent --remove-source=192.168.158.0/24 --zone=trusted
	#		删指定的域中的数据来源
	
	firewall-cmd --permanent --add-interface=ens224 --zone=trusted
	#		添加网络接口至指定域
	firewall-cmd --permanent --remove-interface=ens224 --zone=trusted
	#		删除指定域的网络接口
	firewall-cmd --permanent --change-interface=ens224 --zone=trusted
	#		更改网络接口指定的域
  • 高级设定
[root@rhclient Desktop]# firewall-cmd --direct --get-all-rules	#查看高级规则
[root@rhclient Desktop]# firewall-cmd --direct --add-rule ipv4 filter INPUT 0 ! -s 192.168.158.128 -p tcp --dport 22 -j REJECT
#		添加规则:非来自192.168.158.128 tcp 端口为22的数据包拒绝接受
  • NAT
    SNAT只需开启masquerade功能,DNAT需要进行具体配置
[root@rhclient Desktop]# firewall-cmd --permanent --add-masquerade
[root@rhclient Desktop]# firewall-cmd --permanent --add-forward port=port=22:proto=tcp:toaddr=192.168.158.128 
这篇关于Linux(21)——防火墙的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!