Leo Yeh's Blog

SAS 資訊安全 (12)

教學目標

初步了解如何透過設定在 SAS Viya 平台中採用符合企業安全政策所簽發的憑證。

重點概念

首先 SAS Viya 平台主要使用的 Apache HTTP 伺服器當成反向代理伺服器,並且在部署時 Ansible 的 Playbook 將會自動安裝 Apache httpd 服務和 mod_ssl 模組,同時會使用預設 Apache 的安全設定,以及建立自簽憑證。然而在客戶端通常會需要透過客製憑證取代自簽憑證,以及強化預設加密強度,當我們進行任何變更之後,請務必重新啟動 httpd 服務和 SAS Viya 服務。

重新啟動 Apache 的 httpd 服務

1
# sudo service httpd restart

重新啟動 SAS Viya 的所有服務

1
2
3
# cd /etc/init.d
# sudo ./sas-viya-all-services stop
# sudo ./sas-viya-all-services start

接著 SAS Viya 平台進行完整部署時預設能夠透過 HTTPS 安全協定存取 SASHome 網站服務,其網址為「https://reverse-proxy-server/SASHome/」。但若是僅程式部署則 SAS Viya 使用者必須使用 HTTP 連接 SAS Studio 或 CAS Server Monitor,因為 Apache HTTP 伺服器預設沒有支援 HTTPS,以及沒有 SASHome 能夠進行存取。此外當我們透過瀏覽器以 HTTPS 安全協定存取 SASHome 網站服務時,瀏覽器將會顯示不安全,主要是因為憑證是由 SAS Viya 平台中的 Vault 服務產生的自簽憑證,還未加入至「受信任的根憑證授權單位」的憑證存放區中,因此顯示不安全。這時我們只要將自簽憑證安裝至「受信任的根憑證授權單位」的憑證存放區中重新啟動瀏覽器就能夠顯示安全存取。

再來在 Apache 伺服器中使用 TLS 加密協定主要是採用 OpenSSL 中的 mod_ssl 模組,因此 SAS Viya 建議使用 /etc/httpd/conf.d/sas-ssl.conf 檔案設定密碼的強度,並且在 /etc/httpd/conf.d/ssl.conf 檔案中的載入 sas-ssl.conf 設定檔。

編輯 sas-ssl.conf

1
2
3
4
5
6
7
8
9
10
11
12
Header set Strict-Transport-Security "max-age=31536000"
SSLProtocol TLSv1.2
SSLHonorCipherOrder On
# The line containing variable SSLCipherSuite and values
must not include line breaks
SSLCipherSuite
ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:
ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:
ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:
ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:
AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:
AES128-SHA256

編輯 ssl.conf

1
2
3
4
5
<VirtualHost_default:443>

Include /etc/httpd/conf.d/sas-ssl.conf

</VirtualHost>

最後在企業中部署 SAS Viya 平台時建議使用符合企業安全政策所簽發的憑證取代 Apache httpd 服務中的憑證。首先必須將憑證檔案和信任鏈檔放置「/etc/pki/tls/certs」目錄中,並且更改權限為 644,以及將私密金鑰放置「/etc/pki/tls/private」目錄中,並且更改權限為 600,同時在 /etc/httpd/conf.d/ssl.conf 檔案中編輯相關檔案的路徑設定,以及重新啟動 SAS Viya 的 httpproxy 服務和 Apache 的 httpd 服務。

編輯 ssl.conf

1
2
3
4
5

SSLCertificateFile /etc/pki/tls/certs/custom.crt
SSLCertificateKeyFile /etc/pki/tls/private/custom.key
SSLCertificateChainFile /etc/pki/tls/certs/custom-chain.crt

重新啟動 SAS Viya 的 httpproxy 服務

1
2
# cd /etc/init.d
# sudo ./sas-viya-httpproxy-default start

重新啟動 Apache 的 httpd 服務

1
# sudo service httpd restart

此外我們還必須修改 vars.yml 檔案中的 HTTPD_CERT_PATH 的路徑指向為 CA 根憑證或中繼憑證,並且透過 Ansible 工具將憑證部署至 CA 憑證目錄中和重新建立信任區域至每台機器中,最後重新啟動 SAS Viya 所有服務,就能夠在 SAS Viya 平台中採用符合企業安全政策所簽發的憑證。

編輯 vars.yml

1
HTTPD_CERT_PATH: '/install/sas/sas_viya_playbook/certs/custom_chain.crt'

執行 Ansible 指令

1
# ansible-playbook -i inventory.ini utility/distribute-httpd-certs.yml

重新啟動 SAS Viya 的所有服務

1
2
3
# cd /etc/init.d
# sudo ./sas-viya-all-services stop
# sudo ./sas-viya-all-services start

總結我們能夠透過設定在 SAS Viya 平台中採用符合企業安全政策所簽發的憑證。此外若是僅更換 httpd 服務的憑證,則雖然可以開啟 SAS Logon 的登入網站,但是登入之後將會發生 500 錯誤訊息,所以必須透過 Ansible 工具將憑證部署至 CA 憑證目錄中和重新建立信任區域至每台機器中完成,以利正常透過 HTTPS 安全協定存取 SAS Viya 平台。

相關資源

⬅️ Go back