在RedHat 7安裝之後的系統相關設定——安裝與設定OpenSSH(Part 4)

前言

在前幾篇中,我們已經學會了設定鏡像以及使用者的設定。在本篇文章中,會展示如何安裝與設定OpenSSH server。並讓外部可以連線進去。

檢查OpenSSH安裝

我們可以打開終端機並輸入下列的指令檢查是否已經將OpenSSH server已經安裝好,並服務在背景中執行。

我們假設登入到lee使用者,也假設,lee使用者已經在wheel群組並具有sudo權限的使用者了。


sudo systemctl status sshd

# 或是使用 service

sudo service sshd status

上述這兩者皆可以檢查OpenSSH服務是否有啟動,而上面是後來改成建議使用檢查背景服務狀態的方式。

從上圖可以得知,我們的OpenSSH服務已經在背景順利的運行了,接著我們可以打開下面的SSH設定檔去編輯相關的設定:


sudo vim /etc/ssh/sshd_config

# 或是使用gedit開啟此設定檔

sudo gedit /etc/ssh/sshd_config

接著找到下面的行數,如下圖所示:

把畫上黃色螢光筆的地方,前面的#註解拿掉,接著把22改成2222,目的是我們不想使用預設的SSH port來代表對應的服務。

接著,再往下找到如下圖畫黃色螢光筆的地方:

把PermitRootLogin的地方”yes”改成”no”,並把註解拿掉,接著存檔再離開。

這意思是,禁止遠端的使用者使用root來做登入訪問。

接著重新啟動OpenSSH server的服務,使用下列的指令做到:


sudo systemctl restart sshd

接著使用下面的指令確定ssh可以成功連線:

如果有出現上圖的截圖,就代表ssh已經成功設定並可以在本地端連線測試成功了。

若嘗試使用root進行ssh登入的話,則會出現下面的截圖:

這代表SSH已經成功設定阻擋使用root使用者進行遠端的訪問了。

外部SSH連線設定

由於目前的RedHat 7系統是安裝在VirtualBox中,而網路走的是NAT的模式,因此要讓host上面的系統可以連線進去的話,需要做下列兩個網路設定:

  • 設定RedHat 7本身的防火牆,讓外部可以透過2222 port連線出去。
  • 在VirtualBox上面,設定NAT網路,讓2222 port可以轉出去到host上。

安裝firewalld防火牆

因為預設RedHat 7會阻擋所有的連線(白名單機制),因此需要使用iptable或是相關設定允許的port可以通過防火牆。

firewalld是建立在iptable之上,可以輕鬆的使用指令設定允許的port可以通過防火牆讓外部的可以連進來。

首先,利用下面的指令安裝firewalld:


sudo yum install firewalld

如果有一個個parts跟著操作的話,這個套件已經在sudo yum update的時候已經安裝好了,因此會出現下列的截圖:

接著檢查firewalld服務狀態則會顯示成:


sudo systemctl status firewalld

若沒有安裝firewalld的話,需要按照下面的指令依序執行:


sudo yum install firewalld

sudo systemctl start firewalld

sudo reboot

設定firewalld防火牆

接著使用下面指令檢查firewalld目前的狀態:


sudo firewall-cmd --state

檢查結果如下截圖:

使用下面指令查看目前的網路區域在哪:


sudo firewall-cmd --get-default-zone

結果如下截圖:

網路區域為public。意思是對外面公開的網路都是不信任的,所有外部的連線到這台電腦都會擋住。(白名單機制)

在firewalld上設定規則

接著,我們設定規則有兩種方式,一種是以服務名稱設定,如常見的ssh, http以及https等。那這就會對應到22, 80 與 443 ports。

若是服務名稱已經將預設的port改過了,那也是可以直接指定port即可,不過要確定是使用TCP或是UDP。

相關設定的範例如下:


sudo firewall-cmd --zone=public --list-services

上述是列出暫時設定連線的列表。若要列出常駐的允許連線服務名稱,則是要再加上–permanent選項。

 

若要加入一個http服務,則用下列的指令:


sudo firewall-cmd --zone=public --add-service=http

這樣就會在系統重新開機前都會保持這個規則,若要永久的話,則需要再加上:“–permanent”


sudo firewall-cmd --zone=public --add-service=http --permanent

若是加入某一個port,則是如下:


sudo firewall-cmd --zone=public --add-port=2222/tcp --permanent

接著再用下面的指令檢查常駐允許使用的port連線清單:

 sudo firewall-cmd --zone=public --list-ports --permanent 

移除允許port或是服務連線

如下指令執行來移除運行的port或是服務的名稱,假設常駐的port有2222,而常駐的連線服務名稱有http,兩者都要移除,分別使用下列的移除:


sudo firewall-cmd --zone=public --remove-port=2222/tcp --permanent

sudo firewall-cmd --zone=public --remove-service=http --permanent

若是要移除暫時允許的則是將”–permanent”選項移除再執行即可。

設定好允許2222 port可以連線之後,接著可以設定VirtualBox的網路設定了。

設定VirtualBox NAT

接著打開此主機的設定頁面。

如下圖所示:

從上圖中得知,切換到網路選單,接著將右邊的進階打開,並按下”連接埠轉送”。打開之後會如下圖:

接著按下右上有個綠色的加號,並新增一個規則,相關設定如下截圖:

上面截圖的意思是,將host上面的2323 port轉到guest上的2222 (ssh) port,這樣一來host上就可以使用ssh來連上這台guest主機了。

設定完成之後,需要先將客體(guest)做重新開機,之後NAT設定才會生效。設定之後從host主機登入到客體(guest)主機示意圖如下:

到這裡,就完成了主體(host) NAT設定以及客體的(guest)防火牆連線設定了。

參考資料

  • https://www.brilliantcode.net/124/centos-7-install-and-configure-ssh
  • https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-firewalld-on-centos-7