RHCSA 系列(八): 加固 SSH,設定主機名及啟用網路服務

贊 回覆發表於2015-09-23

作為一名系統管理員,你將經常使用一個終端模擬器來登入到一個遠端的系統中,執行一系列的管理任務。你將很少有機會坐在一個真實的(物理)終端前,所以你需要設定好一種方法來使得你可以登入到你需要去管理的那臺遠端主機上。

事實上,當你必須坐在一臺物理終端前的時候,就可能是你登入到該主機的最後一種方法了。基於安全原因,使用 Telnet 來達到以上目的並不是一個好主意,因為穿行線上纜上的流量並沒有被加密,它們以明文方式在傳送。

另外,在這篇文章中,我們也將複習如何配置網路服務來使得它在開機時被自動開啟,並學習如何設定網路和靜態或動態地解析主機名。

RHCSA: 安全 SSH 和開啟網路服務

RHCSA: 安全 SSH 和開啟網路服務 – Part 8

安裝並確保 SSH 通訊安全

對於你來說,要能夠使用 SSH 遠端登入到一個 RHEL 7 機子,你必須安裝 opensshopenssh-clientsopenssh-servers 軟體包。下面的命令不僅將安裝遠端登入程式,也會安裝安全的檔案傳輸工具以及遠端檔案複製程式:

# yum update && yum install openssh openssh-clients openssh-servers

注意,也安裝上伺服器所需的相應軟體包是一個不錯的主意,因為或許在某個時刻,你想使用同一個機子來作為客戶端和伺服器。

在安裝完成後,如若你想安全地訪問你的 SSH 伺服器,你還需要考慮一些基本的事情。下面的設定應該出現在檔案 /etc/ssh/sshd_config 中。

1、 更改 sshd 守護程式的監聽埠,從 22(預設的埠值)改為一個更高的埠值(2000 或更大),但首先要確保所選的埠沒有被佔用。

例如,讓我們假設你選擇了埠 2500 。使用 netstat 來檢查所選的埠是否被佔用:

# netstat -npltu | grep 2500

假如 netstat 沒有返回任何資訊,則你可以安全地為 sshd 使用埠 2500,並且你應該在上面的配置檔案中更改埠的設定,具體如下:

Port 2500

2、 只允許協議 2(LCTT 譯註:SSHv1 已經被證明不安全,預設情況下 SSHv1 和 SSHv2 都支援,所以應該顯示去掉如下配置行的註釋,並只支援 SSHv2。):

Protocol 2

3、 配置驗證超時的時間為 2 分鐘,不允許以 root 身份登入,並將允許通過 ssh 登入的人數限制到最小:

LoginGraceTime 2m
PermitRootLogin no
AllowUsers gacanepa

4、 假如可能,使用基於公鑰的驗證方式而不是使用密碼:

PasswordAuthentication no
RSAAuthentication yes
PubkeyAuthentication yes

這假設了你已經在你的客戶端機子上建立了帶有你的使用者名稱的一個金鑰對,並將公鑰複製到了你的伺服器上。

配置網路和名稱的解析

1、 每個系統管理員都應該對下面這個系統配置檔案非常熟悉:

  • /etc/hosts 被用來在小型網路中解析“名稱” <---> “IP 地址”。

檔案 /etc/hosts 中的每一行擁有如下的結構:

IP address - Hostname - FQDN

例如,

192.168.0.10    laptop  laptop.gabrielcanepa.com.ar

2、 /etc/resolv.conf 特別指定 DNS 伺服器的 IP 地址和搜尋域,它被用來在沒有提供域名字尾時,將一個給定的查詢名稱對應為一個全稱域名。

在正常情況下,你不必編輯這個檔案,因為它是由系統管理的。然而,若你非要改變 DNS 伺服器的 IP 地址,建議你在該檔案的每一行中,都應該遵循下面的結構:

nameserver - IP address

例如,

nameserver 8.8.8.8

3、 /etc/host.conf 特別指定在一個網路中主機名被解析的方法和順序。換句話說,告訴名稱解析器使用哪個服務,並以什麼順序來使用。

儘管這個檔案由幾個選項,但最為常見和基本的設定包含如下的一行:

order bind,hosts

它意味著解析器應該首先檢視 resolv.conf 中特別指定的域名伺服器,然後到 /etc/hosts 檔案中查詢解析的名稱。

4、 /etc/sysconfig/network 包含了所有網路介面的路由和全域性主機資訊。下面的值可能會被使用:

NETWORKING=yes|no
HOSTNAME=value

其中的 value 應該是全稱域名FQDN

GATEWAY=XXX.XXX.XXX.XXX

其中的 XXX.XXX.XXX.XXX 是閘道器的 IP 地址。

GATEWAYDEV=value

在一個帶有多個網路卡的機器中, value 為閘道器裝置名,例如 enp0s3。

5、 位於 /etc/sysconfig/network-scripts 中的檔案(網路介面卡配置檔案)。

在上面提到的目錄中,你將找到幾個被命名為如下格式的文字檔案。

ifcfg-name

其中 name 為網路卡的名稱,由 ip link show 返回:

檢查網路連線狀態

檢查網路連線狀態

例如:

網路檔案

網路檔案

除了環回介面(loopback),你還可以為你的網路卡指定相似的配置。注意,假如設定了某些變數,它們將為這個指定的介面覆蓋掉 /etc/sysconfig/network 中定義的預設值。在這篇文章中,為了能夠解釋清楚,每行都被加上了註釋,但在實際的檔案中,你應該避免加上註釋:

HWADDR=08:00:27:4E:59:37 ### 網路卡的 MAC 地址
TYPE=Ethernet ### 連線型別
BOOTPROTO=static ### 這代表著該網路卡指定了一個靜態地址。
                      ### 如果這個值指定為 dhcp,這個網路卡會從 DHCP 伺服器獲取 IP 地址,並且就不應該出現以下兩行。
IPADDR=192.168.0.18
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
NM_CONTROLLED=no ### 應該給乙太網卡設定,以便可以讓 NetworkManager 可以修改這個檔案。
NAME=enp0s3
UUID=14033805-98ef-4049-bc7b-d4bea76ed2eb
ONBOOT=yes ### 作業系統會在啟動時開啟這個網路卡。

設定主機名

在 RHEL 7 中, hostnamectl 命令被同時用來查詢和設定系統的主機名。

要展示當前的主機名,輸入:

# hostnamectl status

在RHEL 7 中檢查系統的主機名

檢查系統的主機名

要更改主機名,使用

# hostnamectl set-hostname [new hostname]

例如,

# hostnamectl set-hostname cinderella

要想使得更改生效,你需要重啟 hostnamed 守護程式(這樣你就不必因為要應用更改而登出並再登入系統):

# systemctl restart systemd-hostnamed

在 RHEL7 中設定系統主機名

設定系統主機名

另外, RHEL 7 還包含 nmcli 工具,它可被用來達到相同的目的。要展示主機名,執行:

# nmcli general hostname

且要改變主機名,則執行:

# nmcli general hostname [new hostname]

例如,

# nmcli general hostname rhel7

使用 nmcli 命令來設定主機名

使用 nmcli 命令來設定主機名

在開機時開啟網路服務

作為本文的最後部分,就讓我們看看如何確保網路服務在開機時被自動開啟。簡單來說,這個可通過建立符號連結到某些由服務的配置檔案中的 [Install] 小節中指定的檔案來實現。

以 firewalld(/usr/lib/systemd/system/firewalld.service) 為例:

[Install]
WantedBy=basic.target
Alias=dbus-org.fedoraproject.FirewallD1.service

要開啟該服務,執行:

# systemctl enable firewalld

另一方面,要禁用 firewalld,則需要移除符號連結:

# systemctl disable firewalld

在開機時開啟服務

在開機時開啟服務

總結

在這篇文章中,我們總結了如何安裝 SSH 及使用它安全地連線到一個 RHEL 伺服器;如何改變主機名,並在最後如何確保在系統啟動時開啟服務。假如你注意到某個服務啟動失敗,你可以使用 systemctl status -l [service]journalctl -xn 來進行排錯。

請隨意使用下面的評論框來讓我們知曉你對本文的看法。提問也同樣歡迎。我們期待著你的反饋!


via: http://www.tecmint.com/rhcsa-series-secure-ssh-set-hostname-enable-network-services-in-rhel-7/

作者:Gabriel Cánepa 譯者:FSSlc 校對:wxy

本文由 LCTT 原創翻譯,Linux中國 榮譽推出

相關文章