Linux中國

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中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國