RHCSA 系列(八): 加固 SSH,設定主機名及啟用網路服務
RHCSA: 安全 SSH 和開啟網路服務 – Part 8
安裝並確保 SSH 通信安全
對於你來說,要能夠使用 SSH 遠程登錄到一個 RHEL 7 機子,你必須安裝 openssh
,openssh-clients
和 openssh-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 應該是 全稱域名 。
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
檢查系統的主機名
要更改主機名,使用
# hostnamectl set-hostname [new hostname]
例如,
# hostnamectl set-hostname cinderella
要想使得更改生效,你需要重啟 hostnamed 守護進程(這樣你就不必因為要應用更改而登出並再登錄系統):
# systemctl restart systemd-hostnamed
設定系統主機名
另外, RHEL 7 還包含 nmcli
工具,它可被用來達到相同的目的。要展示主機名,運行:
# nmcli general hostname
且要改變主機名,則運行:
# nmcli general hostname [new hostname]
例如,
# nmcli general hostname rhel7
使用 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
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive