資料的安全永遠是企業核心服務中最重要的一步,卻也是最常被忽略的部分。你也不希望前面辛苦做的設定,哪天因為自己一個手殘就化為烏有了。
想作任何異動前,請先考慮備份。
備份 OCS Inventory 伺服器
創建一個文件夾來存儲所有備份文件
mkdir ~/backup_ocs
備份組態檔案
cp /etc/apache2/conf-available/z-ocsinventory-server.conf ~/backup_ocs
cp /etc/apache2/conf-available/zz-ocsinventory-restapi.conf ~/backup_ocs
cp /etc/apache2/conf-available/ocsinventory-reports.conf ~/backup_ocs
cp /usr/share/ocsinventory-reports/ocsreports/dbconfig.inc.php ~/backup_ocs
備份資料庫,請照需求自行設定排程備份。
mysqldump -u ocs -p'your_password' --all-databases > ~/backup_ocs/ocsdbbackup.sql
備份憑證與私鑰
sudo cp /etc/ssl/private/server.key ~/backup_ocs
cp /etc/ssl/certs/server.pem ~/backup_ocs
# 記得也要備份憑證簽署要求 CSR
cp server.csr ~backup_ocs
保護 OCS Inventory 伺服器
刪除 ocsreports 目錄中的 install.php
sudo rm /usr/share/ocsinventory-reports/ocsreports/install.php
保護您的管理控制台
預設情況下,安裝腳本會創建一個 admin 帳號,我們建議您至少更改密碼。您也可以使用超級管理員創建自己的帳戶,然後刪除預設帳號。
安全的 MySQL 存取
預設情況下,安裝腳本會創建一個 ocs 的帳號,我們建議您至少更改密碼,但更好的辦法是創建一個新的 MySQL 帳號。
GRANT ALL PRIVILEGES ON ocsweb.* TO 'your_account'@'localhost' IDENTIFIED BY 'your_password' WITH GRANT OPTION;
修改 dbconfig.inc.php 配置文件
sudo vi /usr/share/ocsinventory-reports/ocsreports/dbconfig.inc.php
<?php
define("DB_NAME", "ocsweb");
define("SERVER_READ","localhost");
define("SERVER_WRITE","localhost");
define("SERVER_PORT","3306");
define("COMPTE_BASE","your_account");
define("PSWD_BASE","your_password");
define("ENABLE_SSL","");
define("SSL_MODE","");
define("SSL_KEY","");
define("SSL_CERT","");
define("CA_CERT","");
?>
修改 z-ocsinventory-server.conf 配置文件
sudo vi /etc/apache2/conf-available/z-ocsinventory-server.conf
# Master Database settings
# Replace localhost by hostname or ip of MySQL server for WRITE
PerlSetEnv OCS_DB_HOST localhost
# Replace 3306 by port where running MySQL server, generally 3306
PerlSetEnv OCS_DB_PORT 3306
# Name of database
PerlSetEnv OCS_DB_NAME ocsweb
PerlSetEnv OCS_DB_LOCAL ocsweb
# User allowed to connect to database
PerlSetEnv OCS_DB_USER your_account
# Password for user
PerlSetVar OCS_DB_PWD your_password
記得重啟 Apache 服務
sudo service apache2 restart
設置 Anti-SPAM 系統
例如 fail2ban 來監控伺服器日誌並檢測任何可疑活動,有助於減少自動攻擊的影響。
https://www.digitalocean.com/community/tutorials/how-to-protect-ssh-with-fail2ban-on-ubuntu-20-04
進行 GeoIP 封鎖
限制我們的服務只開放特定的地理區域,例如只有台灣能夠存取,避免服務遭受惡意攻擊。
可以參考如何在 Ubuntu 20.04 透過防火牆對 GeoIP 進行封鎖
在管理控制台中停用警告消息
您可以在 GUI 中停用警告消息,來避免洩漏重要資訊。
到 Configuration 點選 Users
點選 Profiles 頁籤,選擇您想要調整的 Profile。
將 See warning messages of the GUI 設置為 NO
Apache 和 PHP 訊息洩露
預設情況下,Apache 和 PHP 版本可以在 HTTP Header 發現。
隱藏 Apache 版本
sudo vi /etc/apache2/conf-enabled/security.conf
# ServerTokens
# This directive configures what you return as the Server HTTP response
# Header. The default is 'Full' which sends information about the OS-Type
# and compiled in modules.
# Set to one of: Full | OS | Minimal | Minor | Major | Prod
# where Full conveys the most information, and Prod the least.
#ServerTokens Minimal
ServerTokens Prod
# Optionally add a line containing the server version and virtual host
# name to server-generated pages (internal error documents, FTP directory
# listings, mod_status and mod_info output etc., but not CGI generated
# documents or custom error documents).
# Set to "EMail" to also include a mailto: link to the ServerAdmin.
# Set to one of: On | Off | EMail
ServerSignature Off
隱藏 PHP 版本
sudo vi /etc/php/7.4/apache2/php.ini
;;;;;;;;;;;;;;;;;
; Miscellaneous ;
;;;;;;;;;;;;;;;;;
; Decides whether PHP may expose the fact that it is installed on the server
; (e.g. by adding its signature to the Web server header). It is no security
; threat in any way, but it makes it possible to determine whether you use PHP
; on your server or not.
; http://php.net/expose-php
expose_php = Off
記得重啟 Apache 服務
sudo service apache2 restart
鐵人賽總結
以上就是本次 2023 鐵人賽想與大家分享的所有內容,希望能夠幫助企業 IT 管理者深入了解 OCS Inventory 並充分運用它來提升 IT 管理效率和資產安全性。
若有跟著實作的朋友您擁有以下技能:
後續若有 OCS Inventory 的文章會更新在筆者的 Medium,有機會再跟大家分享如何透過開源的 ITSM 建置組態管理資料庫 CMDB 並同步 OCS Inventory 的設備資料進行整合,謝謝大家。
參考文件