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

 

posted @ 2021-05-24 09:33  张福帅  阅读(117)  评论(0)    收藏  举报