24.Firewalld防火牆

1.Firewalld防火牆的概述

  1. RHEL/CentOS 7系統中集成了多款防火牆管理工具,其中firewalld是默認的防火牆配置管理工具它擁有基於CLI(命令行界面)和基於GUI(圖形用戶界面)的兩種管理方式。html

  2. firewalld支持動態更新,並加入了區域zone的概念python

  3. zone就是firewalld預先準備了幾套防火牆策略集合(策略模板),用戶能夠根據生產場景的不一樣而選擇合適的策略集合,從而實現防火牆策略之間的快速切換mysql

    2. 安全框架方向:

1. 硬件層   電源 (UPS) 機架上鎖  服務器溫度監控  按期的硬件檢查  磁盤報警
2. 網絡層   設置防火牆僅能公司的IP 地址可以鏈接服務器的22端口  公有云的話  安全組設置
3. 系統層   服務器沒有公網IP 修改ssh端口號,禁止ROOT直接登陸,統一使用密鑰認證方式,使用防火牆限制-->某個來源IP才能鏈接SSH,軟件更新  內核升級   --->已運行好久系統不要升級內核
4. 服務層   按期更新服務  mysql redis  防止漏洞注入
        - 不要有公網IP地址 
        - 若是有公網IP,不要監聽在0.0.0.0
        - 必定要設定比較複雜的密碼認證
        - web: nginx tomcat  應用層
        - HTTPS
        - WAF -->web應用防火牆       (防火牆+WAF防火牆)   --> http/https協議
5. web層    漏洞注入,sql注入,XSS跨站,ddos攻擊 能夠採用第三方軟件  waf防火牆  全棧的https協議(ssl證書,保證網站的傳輸安全)
6. SLA :服務等級協議  
        99.9       8.76小時
        99.99      52.6分鐘
        99.999     5.26分鐘  
        宕機的時間
7.網絡安全產品推薦: 
    安全狗
    知道創宇
    牛盾雲
    安全寶  
    阿里雲  

8.雲環境:
  - 系統層面:   
        - SSH
        - 安騎士(免費版)      雲安全中心(收費版)
        - 快照  --->  使用快照須要購買存儲空間
  - 服務層面:  redis  mysql 
        - 不要有公網IP地址 
        - 若是有公網IP,不要監聽在0.0.0.0
        - 必定要設定比較複雜的密碼認證
        - 安全組(防火牆)
  - web層面:
        - HTTPS
        - 雲WAF    
  - 數據層面:
        - 備份
        - 異地備份
        - 上網  --->VPC --->NAT網關       (端口映射)

找幾家作安全公司,    nginx+lua

9.雲架構
        - 高防IP          --->DDOS
        - WAF防火牆       --->漏洞注入
        - HTTPS          ---->防劫持 防篡改

3.HTTPS+WAF+負載均衡

在這裏插入圖片描述

4.HTTPS+高仿IP+WAF+負載均衡

高防須要配置HTTPS --> WAF也須要配置HTTPS --> 源站 http
考慮安全 性能差
考慮性能 安全弱
在這裏插入圖片描述nginx

5. Firewalld防火牆

- firewalld  --->   無需網絡知識      --->     自動擋汽車      不支持花活

- iptables   --->   依賴網絡知識     ---->    手動擋汽車     花活

firewalld比iptables簡單--->

  - 圖形界面操做   GUI     太複雜
  - 命令行操做     CLI     簡單

-  端口80 22 3306

- 一個網卡僅能綁定一個區域。好比: eth0-->A區域 

- 但一個區域能夠綁定多個網卡。好比: B區域-->eth0、eth一、eth2

- 還能夠根據來源的地址設定不一樣的規則。好比:全部人能訪問80端口,但只有公司的IP才容許訪問22端口。

6.Firewalld防火牆使用區域管理

在這裏插入圖片描述

1.查看咱們使用的是哪一個區域?
[root@manager ~]# systemctl start firewalld
[root@manager ~]# firewall-cmd --get-active-zones 
public
  interfaces: eth0 eth1
  
2.使用--list-all 獲取當前默認區域的規則 
[root@manager ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0 eth1
  sources: 
  services: ssh dhcpv6-client
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:

6.1使用firewalld各個區域規則結合配置,調整默認public區域拒絕全部流量,但若是來源IP是10.0.0.0/24網段則容許。 復規則實現(只須要一個區域)

[root@manager ~]# firewall-cmd --remove-service={ssh,dhcpv6-client}
[root@manager ~]# firewall-cmd --add-source="10.0.0.0/24" --zone=trusted
[root@manager ~]# firewall-cmd --get-active-zones 
public
  interfaces: eth0 eth1
trusted
  sources: 10.0.0.0/24
  
--->>>清空配置
[root@manager ~]# firewall-cmd --reload

7.firewalld放行端口

1.添加放行端口【80,8081,8082】
[root@manager ~]# firewall-cmd --add-port=80/tcp
[root@manager ~]# firewall-cmd --add-port={8081/tcp,8082/tcp}

2.移除放行端口
[root@manager ~]# firewall-cmd --remove-port=80/tcp 
[root@manager ~]# firewall-cmd --remove-port={8081/tcp,8082/tcp}

3.獲取當前區域的規則
[root@manager ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0 eth1
  sources: 
  services: ssh dhcpv6-client
  ports: 80/tcp 8081/tcp 8082/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:

8.放行服務--->對應的仍是端口-->比端口看起來更清晰

1.firewalld放行某個服務的流量
[root@manager ~]# firewall-cmd --add-service=http
[root@manager ~]# firewall-cmd --add-service=https
[root@manager ~]# firewall-cmd --add-service={zabbix-agent,zabbix-server}
[root@manager ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0 eth1
  sources: 
  services: ssh dhcpv6-client http https zabbix-agent zabbix-server
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
  
PS:注意--permanent 若是添加則表明永久,不然都算臨時

2.移除被放行的服務
[root@manager ~]# firewall-cmd --remove-service={zabbix-agent,zabbix-server}

9.自定義服務名稱--->服務對應的端口 8080 8081 8082 -->api業務

1. 名稱表明後面添加的服務名稱
[root@manager services]# cd /usr/lib/firewalld/services
[root@manager services]# cp http.xml api.xml
[root@manager services]# cat api.xml 
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>API (HTTP)</short>
  <port protocol="tcp" port="8081"/>
  <port protocol="tcp" port="8082"/>
  <port protocol="tcp" port="8083"/>
</service>

 2.重載firewalld
[root@manager services]# firewall-cmd --reload
success

3.添加自定義後的服務名
[root@manager services]# firewall-cmd --add-service=api
success

10.firewalld實現端口轉發

  • 路由器 ---------->TPLINKweb

  • 虛擬機Vmwareredis

  • Nginx四層TCP/IP (相似 和lvs不同)sql

  • Firewalld
    在這裏插入圖片描述
firewall-cmd --permanent --zone=<區域> --add-forward-port=port=<源端口號>:proto=<協議>:toport=<目標端口號>:toaddr=<目標IP地址>

0.firewalld實現端口轉發(端口映射)只能轉發tcp相關的服務 
[root@manager ~]# firewall-cmd --add-forward-port=port=5555:proto=tcp:toport=22:toaddr=172.16.1.31
  
1. 地址假裝
  [root@manager ~]# firewall-cmd --add-masquerade
  ------------------------------------------------------->
2.管理上抓包
  [root@manager ~]# tcpdump port 5555 -nn
  
3.後端主機的抓包
  [root@nfs ~]# tcpdump -i eth1 port 22 -nn

11.Firewalld富規則

[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

11.1容許10.0.0.1主機可以訪問 http服務,容許172.16.1.0/24能訪問8080端口

10.0.0.1   --->    80         http     除此之外都不能夠訪問
172.16.1.x --->    8080       api      除此之外都不能夠訪問

1.重載firewalld
[root@manager ~]# firewall-cmd --reload

2.容許10.0.0.1主機可以訪問    http服務
[root@manager ~]# firewall-cmd --add-rich-rule='rule family=ipv4  source address=10.0.0.1/32 service name="http" accept'

3.容許172.16.1.0/24能訪問8080端口
[root@manager ~]# firewall-cmd --add-rich-rule='rule family=ipv4  source address=172.16.1.0/24 service name="api" accept'

11.2默認public區域對外開放全部人能經過ssh服務鏈接,但拒絕172.16.1.0/24網段經過ssh鏈接服務器

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

11.3使用firewalld,容許全部人能訪問http,https服務,但只有10.0.0.1主機能夠訪問ssh服務

1.重載firewalld
[root@manager ~]# firewall-cmd --reload

2.容許全部人能夠訪問服務名稱爲http,https的
[root@manager ~]# firewall-cmd --add-service={http,https}

3.移除ssh服務
[root@manager ~]# firewall-cmd --remove-service=ssh

4.只有10.0.0.1主機能夠訪問ssh服務
[root@manager ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=10.0.0.1/32 service name="ssh" accept'

PS:使用端口方式  2222
[root@manager ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=10.0.0.1/32 port port="2222" protocol=tcp accept'

11.4當用戶來源IP地址是10.0.0.1主機,則將用戶請求的5555端口轉發至後端172.16.1.31的22端口

1.任何人訪問10.0.0.61 5555端口都給轉發
10.0.0.1   --->    10.0.0.61 5555   ---> 172.16.1.31 22

[root@manager ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address="10.0.0.1/32" forward-port port="5555" protocol="tcp" to-port="22" to-addr="172.16.1.31"'

2.開啓轉發功能(假裝)
[root@manager ~]#  firewall-cmd --add-masquerade

12.firewalld實現共享上網

在指定的帶有公網IP的實例上啓動Firewalld防火牆的NAT地址轉換,以此達到內部主機上網。
在這裏插入圖片描述shell

詳細流程:

在這裏插入圖片描述
1.firewalld防火牆開啓masquerade, 實現地址轉換後端

[root@Firewalld ~]# firewall-cmd --add-masquerade --permanent
[root@Firewalld ~]# firewall-cmd --reload

2.客戶端將網關指向firewalld服務器,將全部網絡請求交給firewalldapi

[root@web03 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1
GATEWAY=172.16.1.61

3.客戶端還需配置dns服務器

[root@web03 ~]# cat /etc/resolv.conf
nameserver 223.5.5.5

4.重啓網絡,使其配置生效

[root@web03 ~]# ifdown eth1 && ifup eth1

5.測試後端web的網絡是否正常

[root@web03 ~]# ping baidu.com
PING baidu.com (123.125.115.110) 56(84) bytes of data.
64 bytes from 123.125.115.110 (123.125.115.110): icmp_seq=1 ttl=127 time=9.08 ms

13.firewalld共享上網方式不是特別推薦 (阿里雲上如何實現---> 提交工單)

推薦:

物理環境: 使用路由器來實現上網

雲環境: 推薦使用NAT網關設備

安全體系: OSI七層模型 --->

雲架構 ( 高防IP + WAF防火牆 ) | 單機架構| 集羣架構 |多機房 | SOA

WAF+負載均衡配置

  • 1.配置負載均衡+多web節點
  • 2.配置WAF ---> 指向負載均衡的公網IP地址 --->完成後會生成一個cname的域名.
  • 3.配置DNS 解析---> 指向WAF cname
  • 4.配置HTTPS,請將證書傳一份至WAF上, 至於負載均衡需不須要看狀況.

高防IP + WAF防火牆 + 負載均衡

Firewalld 默認是拒絕全部端口

​ 區域概念

​ 放行端口

​ 放行服務

​ 端口轉發

​ 共享上網

​ 富規則

相關文章
相關標籤/搜索