Firewalld防火墙
硬件层面
- 硬件层面 机柜上锁 UPS 温度
- 系统层面 系统漏洞 内核升级 打补丁 弱口令 调整ssh端口 不要公网IP
- 网站层面 DDOS 网站被注入病毒 ….
- 如何登陆 路由端口映射(少量) openvpn直接内接内部服务器 (大量)
- PS: 外部的安全攻击相对较少,内部造成的故障几率极高,高达百分之80%
- PS: 如果考虑安全,那么性能就会受到影响, 如果追求性能,那么安全就无法兼顾.
firewalld的基本使用
1、firewalld的基本使用
启动: systemctl start firewalld
关闭: systemctl stop firewalld
查看状态: systemctl status firewalld
开机禁用 : systemctl disable firewalld
开机启用 : systemctl enable firewalld
2.firewalld常用命令
查看版本: firewall-cmd –version
查看防火墙默认版块:firewalld-cmd –list -all
查看帮助: firewall-cmd –help
显示状态: firewall-cmd –state
查看所有打开的端口: firewall-cmd –zone=public –list-ports
更新防火墙规则: firewall-cmd –reload
查看区域信息: firewall-cmd –get-active-zones
查看指定接口所属区域: firewall-cmd –get-zone-of-interface=eth0
拒绝所有包:firewall-cmd –panic-on
取消拒绝状态: firewall-cmd –panic-off
查看是否拒绝: firewall-cmd –query-panic
那怎么开启一个端口呢
添加
firewall-cmd –zone=public –add-port=80/tcp –permanent (–permanent永久生效,没有此参数重启后失效)
重新载入
firewall-cmd –reload
查看
firewall-cmd –zone= public –query-port=80/tcp
删除
firewall-cmd –zone= public –remove-port=80/tcp –permanent
3.firewalld防火墙区域管理
一个网卡仅能绑定一个区域。比如:eth0–>A区域
但是一个区域可以绑定多个网卡。比如:B区域–>eth1 、eth2

防火墙默认区域
[root@m01 ~]# firewall-cmd --get-default-zone public [root@m01 ~]# firewall-cmd --list-all public target: default icmp-block-inversion: no interfaces: sources: services: ssh dhcpv6-client ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: #3.使用firewalld各个区域规则结合配置,调整默认public区域拒绝所有流量,但如果来源IP是10.0.0.8/32ip则放行所有的流量。 [root@m01 ~]# firewall-cmd --remove-service=ssh --remove-service=dhcpv6-client success [root@m01 ~]# firewall-cmd --add-source=10.0.0.8/32 --zone=trusted success #重启恢复 [root@m01 ~]# firewall-cmd --reload success
4.Firewalld端口、服务规则配置
#放行端口 [root@m01 ~]# firewall-cmd --add-port={80,8080,9090}/tcp #添加多个端口 success [root@m01 ~]# firewall-cmd --remove-port=80/tcp #移除 success [root@m01 ~]# firewall-cmd --list-all public target: default icmp-block-inversion: no interfaces: sources: services: ssh dhcpv6-client ports: 80/tcp 8080/tcp 9090/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: #放行服务 [root@m01 ~]# firewall-cmd --add-service=http [root@m01 ~]# firewall-cmd --remove-service=http
5.Firewalld富规则配置示例
[root@Firewalld ~]# man firewall-cmd # 帮助手册 [root@Firewalld ~]# man firewalld.richlanguage # 获取富规则手册 rule [source] [destination] service|port|protocol|icmp-block|masquerade|forward-port [log] [audit] [accept|reject|drop] rule [family="ipv4|ipv6"] source address="address[/mask]" [invert="True"] service name="service name" port port="port value" protocol="tcp|udp" forward-port port="port value" protocol="tcp|udp" to-port="port value" to-addr="address" accept | reject [type="reject type"] | drop
a.比如允许10.0.0.1主机能够访问http服务,允许172.16.1.0/24能访问22端口
[root@m01 ~]# firewall-cmd --remove-service={ssh,dhcpv6-client}
[root@m01 ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=10.0.0.1/32 port port=80 protocol=tcp accept'
[root@m01 ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=172.16.1.0/24 port port=22 protocol=tcp accept'
b.默认public区域对外开放所有人能通过ssh服务连接,但拒绝172.16.1.0/24网段通过ssh连接服务器
[root@m01 ~]# firewall-cmd --add-service=ssh [root@m01 ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=172.16.1.0/24 port port=22 protocol=tcp drop'
c.使用firewalld,允许所有人能访问http,https服务,但只有10.0.0.1主机可以访问ssh服务
[root@m01 ~]# firewall-cmd --remove-service={ssh,dhcpv6-client}
[root@m01 ~]# firewall-cmd --add-service={http,https}
#第一种方式
[root@m01 ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=10.0.0.1/32 port port=22 protocol=tcp accept'
#第二种方式
[root@m01 ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=10.0.0.1/32 service name=ssh accept'
#最终都写入到 ==必须添加--permanent
[root@m01 ~]# vim /etc/firewalld/zones/public.xml
6.Firewalld实现内部主机共享上网
# 防火墙操作如下,开启masquerade [root@m01 ~]# firewall-cmd --add-masquerade --permanent success [root@m01 ~]# firewall-cmd --reload success [root@m01 ~]# firewall-cmd --list-all | grep masquer masquerade: yes #内网主机操作如下: [root@web02 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1 TYPE=Ethernet BOOTPROTO=none IPADDR=172.16.1.8 PREFIX=24 GATEWAY=172.16.1.61 DNS=223.5.5.5 DEFROUTE=yes NAME=eth1 DEVICE=eth1 ONBOOT=yes #最终效果如下 [root@web02 ~]# ping www.baidu.com PING www.a.shifen.com (39.156.66.14) 56(84) bytes of data. 64 bytes from 39.156.66.14 (39.156.66.14): icmp_seq=1 ttl=127 time=5.35 ms 64 bytes from 39.156.66.14 (39.156.66.14): icmp_seq=2 ttl=127 time=5.86 ms

浙公网安备 33010602011771号