RHCSA 系列(八): 加固 SSH,设定主机名及启用网络服务

简介:

作为一名系统管理员,你将经常使用一个终端模拟器来登录到一个远程的系统中,执行一系列的管理任务。你将很少有机会坐在一个真实的(物理)终端前,所以你需要设定好一种方法来使得你可以登录到你需要去管理的那台远程主机上。

事实上,当你必须坐在一台物理终端前的时候,就可能是你登录到该主机的最后一种方法了。基于安全原因,使用 Telnet 来达到以上目的并不是一个好主意,因为穿行在线缆上的流量并没有被加密,它们以明文方式在传送。

另外,在这篇文章中,我们也将复习如何配置网络服务来使得它在开机时被自动开启,并学习如何设置网络和静态或动态地解析主机名。

RHCSA: 安全 SSH 和开启网络服务  Part 8

RHCSA: 安全 SSH 和开启网络服务 – Part 8

安装并确保 SSH 通信安全

对于你来说,要能够使用 SSH 远程登录到一个 RHEL 7 机子,你必须安装 opensshopenssh-clients 和openssh-servers 软件包。下面的命令不仅将安装远程登录程序,也会安装安全的文件传输工具以及远程文件复制程序:

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

注意,也安装上服务器所需的相应软件包是一个不错的主意,因为或许在某个时刻,你想使用同一个机子来作为客户端和服务器。

在安装完成后,如若你想安全地访问你的 SSH 服务器,你还需要考虑一些基本的事情。下面的设定应该出现在文件 /etc/ssh/sshd_config 中。

1、 更改 sshd 守护进程的监听端口,从 22(默认的端口值)改为一个更高的端口值(2000 或更大),但首先要确保所选的端口没有被占用。

例如,让我们假设你选择了端口 2500 。使用 netstat 来检查所选的端口是否被占用:

 
  1. # netstat -npltu | grep 2500

假如 netstat 没有返回任何信息,则你可以安全地为 sshd 使用端口 2500,并且你应该在上面的配置文件中更改端口的设定,具体如下:

 
  1. Port 2500

2、 只允许协议 2(LCTT 译注:SSHv1 已经被证明不安全,默认情况下 SSHv1 和 SSHv2 都支持,所以应该显示去掉如下配置行的注释,并只支持 SSHv2。):

 
  1. Protocol 2

3、 配置验证超时的时间为 2 分钟,不允许以 root 身份登录,并将允许通过 ssh 登录的人数限制到最小:

 
  1. LoginGraceTime 2m
  2. PermitRootLogin no
  3. AllowUsers gacanepa

4、 假如可能,使用基于公钥的验证方式而不是使用密码:

 
  1. PasswordAuthentication no
  2. RSAAuthentication yes
  3. PubkeyAuthentication yes

这假设了你已经在你的客户端机子上创建了带有你的用户名的一个密钥对,并将公钥复制到了你的服务器上。

配置网络和名称的解析

1、 每个系统管理员都应该对下面这个系统配置文件非常熟悉:

  • /etc/hosts 被用来在小型网络中解析“名称” <---> “IP 地址”。

文件 /etc/hosts 中的每一行拥有如下的结构:

 
  1. IP address - Hostname - FQDN

例如,

 
  1. 192.168.0.10 laptop laptop.gabrielcanepa.com.ar

2、 /etc/resolv.conf 特别指定 DNS 服务器的 IP 地址和搜索域,它被用来在没有提供域名后缀时,将一个给定的查询名称对应为一个全称域名。

在正常情况下,你不必编辑这个文件,因为它是由系统管理的。然而,若你非要改变 DNS 服务器的 IP 地址,建议你在该文件的每一行中,都应该遵循下面的结构:

 
  1. nameserver - IP address

例如,

 
  1. nameserver 8.8.8.8

3、 /etc/host.conf 特别指定在一个网络中主机名被解析的方法和顺序。换句话说,告诉名称解析器使用哪个服务,并以什么顺序来使用。

尽管这个文件由几个选项,但最为常见和基本的设置包含如下的一行:

 
  1. order bind,hosts

它意味着解析器应该首先查看 resolv.conf 中特别指定的域名服务器,然后到 /etc/hosts 文件中查找解析的名称。

4、 /etc/sysconfig/network 包含了所有网络接口的路由和全局主机信息。下面的值可能会被使用:

 
  1. NETWORKING=yes|no
  2. HOSTNAME=value

其中的 value 应该是全称域名FQDN。

 
  1. GATEWAY=XXX.XXX.XXX.XXX

其中的 XXX.XXX.XXX.XXX 是网关的 IP 地址。

 
  1. GATEWAYDEV=value

在一个带有多个网卡的机器中, value 为网关设备名,例如 enp0s3。

5、 位于 /etc/sysconfig/network-scripts 中的文件(网络适配器配置文件)。

在上面提到的目录中,你将找到几个被命名为如下格式的文本文件。

 
  1. ifcfg-name

其中 name 为网卡的名称,由 ip link show 返回:

检查网络连接状态

检查网络连接状态

例如:

网络文件

网络文件

除了环回接口(loopback),你还可以为你的网卡指定相似的配置。注意,假如设定了某些变量,它们将为这个指定的接口覆盖掉 /etc/sysconfig/network 中定义的默认值。在这篇文章中,为了能够解释清楚,每行都被加上了注释,但在实际的文件中,你应该避免加上注释:

 
  1. HWADDR=08:00:27:4E:59:37 ### 网卡的 MAC 地址
  2. TYPE=Ethernet ### 连接类型
  3. BOOTPROTO=static ### 这代表着该网卡指定了一个静态地址。
  4. ### 如果这个值指定为 dhcp,这个网卡会从 DHCP 服务器获取 IP 地址,并且就不应该出现以下两行。
  5. IPADDR=192.168.0.18
  6. NETMASK=255.255.255.0
  7. GATEWAY=192.168.0.1
  8. NM_CONTROLLED=no ### 应该给以太网卡设置,以便可以让 NetworkManager 可以修改这个文件。
  9. NAME=enp0s3
  10. UUID=14033805-98ef-4049-bc7b-d4bea76ed2eb
  11. ONBOOT=yes ### 操作系统会在启动时打开这个网卡。

设定主机名

在 RHEL 7 中, hostnamectl 命令被同时用来查询和设定系统的主机名。

要展示当前的主机名,输入:

 
  1. # hostnamectl status

检查系统的主机名

检查系统的主机名

要更改主机名,使用

 
  1. # hostnamectl set-hostname [new hostname]

例如,

 
  1. # hostnamectl set-hostname cinderella

要想使得更改生效,你需要重启 hostnamed 守护进程(这样你就不必因为要应用更改而登出并再登录系统):

 
  1. # systemctl restart systemd-hostnamed

设定系统主机名

设定系统主机名

另外, RHEL 7 还包含 nmcli 工具,它可被用来达到相同的目的。要展示主机名,运行:

 
  1. # nmcli general hostname

且要改变主机名,则运行:

 
  1. # nmcli general hostname [new hostname]

例如,

 
  1. # nmcli general hostname rhel7

使用 nmcli 命令来设定主机名

使用 nmcli 命令来设定主机名

在开机时开启网络服务

作为本文的最后部分,就让我们看看如何确保网络服务在开机时被自动开启。简单来说,这个可通过创建符号链接到某些由服务的配置文件中的 [Install] 小节中指定的文件来实现。

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

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

要开启该服务,运行:

 
  1. # systemctl enable firewalld

另一方面,要禁用 firewalld,则需要移除符号链接:

 
  1. # systemctl disable firewalld

在开机时开启服务

在开机时开启服务

总结

在这篇文章中,我们总结了如何安装 SSH 及使用它安全地连接到一个 RHEL 服务器;如何改变主机名,并在最后如何确保在系统启动时开启服务。假如你注意到某个服务启动失败,你可以使用 systemctl status -l [service] 和 journalctl -xn 来进行排错。


本文来自云栖社区合作伙伴“Linux中国”,原文发布日期:2015-09-23  

相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
目录
相关文章
|
18天前
|
监控 安全 网络安全
云端防御策略:融合云服务与网络安全的未来之路
【5月更文挑战第30天】在数字化转型的浪潮中,云计算已成为企业IT架构的核心。然而,随之而来的安全挑战亦日益严峻。本文将探讨在动态、多租户的云环境中,如何通过融合传统与前沿的网络安全防护措施,构建一个既灵活又坚固的信息防线。我们将重点讨论云服务模型下的安全责任共担模式,以及利用最新的加密技术、身份认证机制和智能监控策略来强化数据保护和威胁检测。
|
1月前
|
Kubernetes 应用服务中间件 Docker
Kubernetes学习-集群搭建篇(二) 部署Node服务,启动JNI网络插件
Kubernetes学习-集群搭建篇(二) 部署Node服务,启动JNI网络插件
|
2天前
|
存储 安全 网络安全
勒索软件即服务的兴起与网络攻击的商业化
勒索软件即服务的兴起与网络攻击的商业化
|
11天前
|
网络协议 网络架构
计算机网络——数据链路层-可靠传输的基本概念(可靠传输服务、不可靠传输服务,分组丢失、分组失序、分组重复)
计算机网络——数据链路层-可靠传输的基本概念(可靠传输服务、不可靠传输服务,分组丢失、分组失序、分组重复)
24 0
|
11天前
|
网络协议 网络架构
计算机网络——计算机网络体系结构(4/4)-计算机网络体系结构中的专用术语(实体、协议、服务,三次握手‘三报文握手’、数据包术语)
计算机网络——计算机网络体系结构(4/4)-计算机网络体系结构中的专用术语(实体、协议、服务,三次握手‘三报文握手’、数据包术语)
10 0
|
17天前
|
存储 网络协议 Linux
NFS(Network File System 网络文件服务)
NFS(Network File System 网络文件服务)
|
18天前
|
人工智能 安全 网络安全
云端防御策略:融合云服务与先进网络安全技术
【5月更文挑战第30天】 在数字化时代,云计算为企业提供了弹性、可伸缩的资源管理解决方案,而网络安全则成为维护数据完整性和保障业务连续性的关键。本文深入探讨了云服务模型与网络安全技术的交叉领域,分析了当前面临的主要安全挑战,并提出了一套综合的云端防御策略。通过实施这些策略,组织能够更有效地保护其云基础设施,抵御日益复杂的网络威胁。
|
19天前
|
监控 安全 网络安全
云端防御策略:融合云服务与网络安全的未来之道
【5月更文挑战第29天】 在数字化时代,云计算已成为企业运营的核心动力,然而伴随其发展,网络安全问题亦成为不可忽视的挑战。本文旨在探讨如何通过融合先进的云服务技术和网络安全策略,构建一个既高效又安全的信息技术环境。文章首先概述了云计算的基本概念及其带来的变革,随后深入分析了网络安全面临的威胁以及应对这些威胁的关键技术,最终提出了一种综合性的云端防御模型,以期为企业提供指导性的网络安全解决方案。
|
20天前
|
监控 安全 网络安全
云端防御策略:融合云服务与网络安全的新纪元
【5月更文挑战第28天】 在数字化时代,云计算已成为企业运营的核心,但随之而来的是日益复杂的网络威胁。本文探讨了如何在不牺牲云服务灵活性和效率的前提下,加强网络和信息安全。我们将详细分析多层次安全框架、加密技术、身份验证机制以及智能监控,并讨论如何将这些安全措施融入日常的云服务管理中。目标是为读者提供一个清晰的指南,帮助他们在享受云计算带来的便利时,确保数据和资源的安全。
|
25天前
|
监控 网络架构 Windows
第六十八章 使用 Web 服务监控 IRIS - 监控网络客户端
第六十八章 使用 Web 服务监控 IRIS - 监控网络客户端
8 0

热门文章

最新文章