SELinux 無法開啟網路服務

自從 Linux 進入某版本後,多了 SELinux 的設定,也就是安全增強式 Linux,坦白說是個麻煩的東西,若習慣 SELinux 加入之前的使用,就會覺得 SELinux 很麻煩,最簡單的方式就是修改 /etc/sysconfig/selinux 的檔案,將 SELINUX 的設定改成 SELINUX=disabled,不過這樣做安全上比較有疑慮,建議的做法就是使用 semanage 的指令來增加網路服務需要監聽的 Port。

舉例來說 SSH 預設監聽 22 Port 的風險高,因為網路上太多 Try 密碼的工具會不斷嘗試登入,萬一你用的密碼太過簡單,就有可能整台主機被入侵後淪陷,所以架好一台 Linux 主機之後,SSH 當然需要馬上改 Port,對我來說這是安全的第一陣線。相對的很多網路服務都有被攻擊的風險,也可以透過改監聽 Port 的方式來避免不必要的攻擊,反正私有服務自己知道怎麼連線就好。
在 SELinux 的架構之下很多 Port 是不給 Listen 的,譬如說你改 SSH 為 6000 Port 可能就無法順利啟動,而 Linux 連線管理最重要的就是 SSH 管理 Port,不通怎麼怎麼可以呢?尤其像是 Google Cloud Platform 的管理都是以 SSH 為主,網路一定得通啊!!!以我自己的示範為例,當 SSH 受限制無法啟動的時候,會出現「Job for sshd.service failed because a configured resource limit was exceeded」的訊息,可能就是你 SSH 設定檔中的 Listen Port 被限制了!!!

解決方法也非簡單,首先安裝 semanage 可以透過「yum install policycoreutils-python」來安裝,之後透過指令「semanage port -a -t ssh_port_t -p tcp 6000」來允許 SSH 服務監聽 6000 Port。而每個服務 type 也會有所不同,以 http 為例可以透過「semanage port -l | grep http」來查看 type 的種類,之後就能依照不同的 type 來下指令囉!!!

什麼是 SELinux?安全增強式Linux(SELinux, Security-Enhanced Linux)是一種強制存取控制(mandatory access control)的實現。它的作法是以最小權限原則(principle of least privilege)為基礎,在Linux核心中使用Linux安全模組(Linux Security Modules)。它並非一個Linux發行版,而是一組可以套用在類Unix作業系統(如Linux、BSD等)的修改。


更多資訊請參考:
跌跌撞撞自架站一路向前,遠振資訊台灣 SSD VPS 推薦|虛擬主機走這|台灣 VPS 走這
推薦開箱 PAPAGO! RAY 電子後視鏡,突破傳統後視鏡的使用經驗