溫馨提示×

ubuntu lsnrctl安全設置

小樊
37
2025-10-08 15:34:53
欄目: 智能運維

Ubuntu環境下lsnrctl的安全設置指南

lsnrctl是Oracle數據庫的核心管理工具,用于控制監聽器服務。在Ubuntu系統中,需通過權限管理、配置加固、加密通信、訪問控制及監控審計等多維度措施,確保其運行安全。以下是具體實施步驟:

一、權限與所有權管理

  1. 修改lsnrctl文件權限
    lsnrctl通常位于Oracle軟件目錄(如/u01/app/oracle/product/19.0.0/dbhome_1/bin/lsnrctl)。通過chmod命令限制權限,僅允許所有者(root或oracle)執行:

    sudo chmod 750 /u01/app/oracle/product/19.0.0/dbhome_1/bin/lsnrctl
    

    或更嚴格的700(僅所有者可讀、寫、執行)。

  2. 調整文件所有者和組
    將lsnrctl的所有者設為root,組設為oracle(Oracle數據庫默認組),避免普通用戶篡改:

    sudo chown root:oracle /u01/app/oracle/product/19.0.0/dbhome_1/bin/lsnrctl
    
  3. 配置sudoers文件
    若需允許特定用戶(如admin)以oracle身份運行lsnrctl(無需密碼),使用visudo安全編輯/etc/sudoers文件,添加:

    admin ALL=(oracle) NOPASSWD: /u01/app/oracle/product/19.0.0/dbhome_1/bin/lsnrctl *
    

    此配置限制僅admin用戶可免密調用lsnrctl。

二、監聽器配置文件安全

  1. 設置listener.ora權限
    listener.ora(位于$ORACLE_HOME/network/admin/)包含監聽器端口、地址等敏感信息,需限制為oracle用戶和oinstall組可讀寫:

    sudo chown oracle:oinstall $ORACLE_HOME/network/admin/listener.ora
    sudo chmod 660 $ORACLE_HOME/network/admin/listener.ora
    
  2. 啟用ADMIN_RESTRICTIONS
    在listener.ora文件末尾添加以下參數,禁止動態修改監聽器配置(如端口、地址),需重啟監聽器生效:

    ADMIN_RESTRICTIONS_LISTENER = ON
    

    此設置可防止未授權用戶通過lsnrctl命令修改監聽器行為。

三、加密通信配置

  1. 啟用SSL/TLS加密
    為保護數據傳輸安全,需配置監聽器使用SSL。步驟如下:

    • 生成SSL證書:使用OpenSSL創建自簽名證書(有效期365天):
      openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out cert.pem
      
    • 配置listener.ora:添加SSL監聽地址及加密參數,啟用TCPS協議(默認端口1522):
      LISTENER =
        (DESCRIPTION_LIST =
          (DESCRIPTION =
            (ADDRESS = (PROTOCOL = TCP)(HOST = your_host)(PORT = 1521))  # 普通TCP端口
            (ADDRESS = (PROTOCOL = TCPS)(HOST = your_host)(PORT = 1522)) # SSL加密端口
          )
        )
      SECURITY_LISTENER =
        (ENCRYPTION_CLIENT = REQUIRED)  # 強制客戶端使用加密
        (ENCRYPTION_TYPES_CLIENT = (AES256, AES192, AES128))  # 支持的加密算法
        (SSL_VERSION = 1.2)  # 使用TLS 1.2及以上版本
      
    • 重啟監聽器:使配置生效:
      lsnrctl stop && lsnrctl start
      
  2. 配置Oracle Wallet管理證書
    使用Oracle Wallet安全存儲證書和私鑰,避免明文泄露:

    • 創建Wallet:
      mkstore -wrl /path/to/wallet -create
      
    • 導入證書和私鑰:
      mkstore -wrl /path/to/wallet -importcert -alias server_cert -file cert.pem
      mkstore -wrl /path/to/wallet -importkey -alias server_key -file key.pem
      
    • 配置sqlnet.ora:指定Wallet路徑及TCPS協議:
      SQLNET.AUTHENTICATION_SERVICES = (TCPS)
      WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = /path/to/wallet)))
      
    • 更新tnsnames.ora:將服務地址改為TCPS協議(端口1522)。

四、訪問控制設置

  1. 限制監聽器訪問IP
    在listener.ora文件中,通過HOST參數指定允許訪問監聽器的IP地址(如僅允許內網IP192.168.1.0/24):

    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))  # 僅允許指定主機
        )
      )
    

    此配置可阻斷外部非法IP的連接請求。

  2. 配置防火墻規則
    使用Ubuntu的ufw(Uncomplicated Firewall)限制1521(TCP)和1522(TCPS)端口的訪問,僅允許信任IP:

    sudo ufw allow from 192.168.1.0/24 to any port 1521 proto tcp  # 允許內網訪問普通端口
    sudo ufw allow from 192.168.1.0/24 to any port 1522 proto tcp  # 允許內網訪問SSL端口
    sudo ufw enable  # 啟用防火墻
    

    或使用iptables實現更細粒度的控制。

五、密碼與審計管理

  1. 設置強密碼
    為監聽器設置復雜密碼(包含大小寫字母、數字、特殊字符),并定期更換(每90天):

    lsnrctl
    LSNRCTL> SET PASSWORD  # 進入密碼修改界面
    輸入舊密碼:******
    輸入新密碼:***********
    確認新密碼:***********
    LSNRCTL> EXIT
    
  2. 啟用日志審計
    監聽器日志(位于$ORACLE_HOME/network/log/listener.log)記錄了所有連接請求和配置變更,需定期檢查異常行為(如頻繁的失敗登錄嘗試)??赏ㄟ^tail命令實時監控:

    tail -f $ORACLE_HOME/network/log/listener.log
    

    或配置日志輪轉(如使用logrotate),避免日志文件過大。

六、SELinux/AppArmor配置(可選)

若系統啟用SELinux或AppArmor,需調整策略允許lsnrctl運行:

  • SELinux:檢查狀態(sestatus),若為Enforcing模式,使用audit2allow生成自定義策略:
    sudo ausearch -c 'lsnrctl' --raw | audit2allow -M my-lsnrctl
    sudo semodule -i my-lsnrctl.pp
    
  • AppArmor:編輯/etc/apparmor.d/usr.sbin.lsnrctl文件,添加允許的文件和目錄訪問規則(如/u01/app/oracle/product/19.0.0/dbhome_1/bin/lsnrctl)。

通過以上步驟,可全面強化Ubuntu環境下lsnrctl的安全性,有效防范未授權訪問、數據泄露及惡意篡改等風險。實施前需備份相關配置文件(如listener.ora、sqlnet.ora),并在測試環境驗證配置的正確性。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女