前言
在前幾篇中,我們已經學會了設定鏡像以及使用者的設定。在本篇文章中,會展示如何安裝與設定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