firewalld防火墙 小记

*firewalld默认规则是全部拒绝,iptable则是默认全部允许。
*firewalld 只能做和ip/port相关的限制,web相关的限制无法实现。

 

1.防火墙使用区域管理

 

 

常用区域:

trusted区域           #白名单
public区域             #默认
drop区域               #黑名单

 

2.防火墙基本指令参数

 

runtime运行时: 修改规则马上生效,但如果重启服务则马上失效,测试建议。
permanent持久配置: 修改规则后需要reload重载服务才会生效,生产建议。

 

3.防火墙配置放行策略

a:放行服务

[root@web01 ~]# firewall-cmd --add-service=http
success

**补充:可放行服务都存放在/usr/lib/firewalld/services/这个目录下

 

[root@backup ~]# firewall-cmd --add-service=nginx
Error: INVALID_SERVICE: nginx

当放行某个服务时出现此类报错说明/usr/lib/firewalld/services目录下没有nginx的放行配置文件,此时我们需要手动添加nginx.xml配置文件。

 

 

#放行多个服务

[root@web01 ~]# firewall-cmd --add-service={https,mysql,redis}
success

 

b:放行端口   注意:放行端口一定要加上协议

[root@web01 ~]# firewall-cmd  --add-port=873/tcp

#放行多个端口

[root@web01~]# firewall-cmd  --add-port={443/tcp,80/udp}
success

 

c:放行ip    #允许一个IP所有的操作,加入白名单

[root@web01 ~]# firewall-cmd  --add-source=10.0.0.1  --zone=trusted
success

 

4.防火墙端口转发

*端口转发是指传统的目标地址映射,实现外网访问内网资源
流量转发命令格式为:
firewalld-cmd --permanent --zone=<区域> --add-forward-port= port=<源端口号>:proto=<协议>:toport=<目标端口号>:toaddr=<目标IP地址>

--permanent          #永久生效,根据实际情况确定是否添加

--zone=<区域>     #指定区域

注意:配置端口转发一定要开启ip伪装~~

示例:将本地的10.0.0.8:5555端口映射到172.16.1.7:22端口

第一步:

[root@web02 ~]# firewall-cmd  --add-forward-port=port=5555:proto=tcp:toport=22:toaddr=172.16.1.7

success

第二步:

[root@web02 ~]# firewall-cmd  --add-masquerade
success

第三步:终端测试

[c:\~]$ ssh 10.0.0.8 5555
Connecting to 10.0.0.8:5555...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.

Last login: Mon Sep 14 09:04:43 2020 from 10.0.0.1
[root@web01 ~]#

 

 

5.firewall富规则

*富规则语法*

[root@web01 ~]# man firewalld.richlanguage
rule
[source]
[destination]
service|port|protocol|icmp-block|icmp-type|masquerade|forward-port|source-port
[log]
[audit]
[accept|reject|drop|mark]

rule [family="ipv4|ipv6"]
source [not] address="address[/mask]"|mac="mac-address"|ipset="ipset"
destination [not] address="address[/mask]"
service name="service name"
port port="port value" protocol="tcp|udp"
protocol value="protocol value"
forward-port port="port value" protocol="tcp|udp" to-port="port value" to-addr="addr
ess"
source-port port="port value" protocol="tcp|udp"
[accept|reject|drop|mark]

*accept     #接受,允许 

*reject  与*drop 都有拒绝之意,区别在于reject是直接拒绝,返回拒绝;drop是丢弃,不显示直到超时。

 

 

#富语言规则相关命令
--add-rich-rule='<RULE>'              #在指定的区域添加一条富语言规则
--remove-rich-rule='<RULE>'        #在指定的区删除一条富语言规则
--query-rich-rule='<RULE>'           #找到规则返回0,找不到返回1
--list-rich-rules                                 #列出指定区里的所有富语言规则

 

 

示例:

1.允许10.0.0.1主机能够访问http服务,允许172.16.1.0/24能访问111端口

 

[root@web01 ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=10.0.0.1 service name=http accept'
success

[root@web01 ~]#firewall-cmd --add-rich-rule='rule family=ipv4 source address=172.16.1.0/24 port port=111 protocol=tcp accept'

success

 

2.默认public区域对外开放所有人能通过ssh服务连接,但拒绝172.16.1.0/24网段通过ssh连接服务器

[root@web01~]# firewall-cmd --add-service=ssh

success

 

[root@web01~]# firewall-cmd  --add-rich-rule='rule family=ipv4 source address=172.16.1.0/24 service name=ssh reject'
success

 

 

3.当用户来源IP地址是10.0.0.1主机,则将用户请求的5555端口转发至后端172.16.1.7的22端口

[root@web01~]# firewall-cmd  --add-rich-rule='rule family=ipv4 source address=10.0.0.1 forward-port port=5555 protocol=tcp to-port=22 to-addr=172.16.1.7'
success

 

4.防火墙配置网站禁ping

[root@web01~]#firewall-cmd --add-rich-rule='rule family=ipv4 protocol value=icmp drop'        #ping的协议=icmp

success

 

5.防火墙规则备份       #适用于企业中为新增的服务器添加防火墙规则

[root@web021~]# ll  /etc/firewalld/zones/  

 

防火墙规则设置永久生效后会写入/etc/firewalld/zones/ 目录下对应的配置文件中,当执行firewall-cmd --reload后服务会重新去读配置文件,只有在配置文件中存在的规则才会继续保留。

--permanent       #永久生效参数,需要重启后生效。

 

 

6.防火墙内部共享上网

*在指定的带有公网IP的实例上启动Firewalld防火墙的NAT地址转换,以此达到内部主机上网。

 

 

[root@m01 ~]# firewall-cmd --add-masquerade        #开启ip伪装
success

 

 

[root@web01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1     #配置内网机器的网关地址

#添加以下两行
GATEWAY=172.16.1.61
DNS1=223.5.5.5

 

#重启网卡
[root@web01 ~]# ifdown eth1 && ifup eth1

 

内部共享上网原理:

没有外网和不能上网是两个不同的概念,当处于内网环境需要上网的时候我们可以借助防火墙共享上网。外网关闭后在给他配置防火墙的内网(内网之间可以互联),然后再通过防火墙机器的外网到达上网目的。

注意:内网外不能互联,所以需要开启ip伪装。

 

posted @ 2021-01-03 17:29  芒果~~  阅读(483)  评论(0编辑  收藏  举报