Linux 管理员 - 远程管理


当以管理员身份谈论 CentOS 中的远程管理时,我们将探讨两种方法 -

  • 控制台管理
  • 图形化管理

远程控制台管理

远程控制台管理意味着通过 ssh 等服务从命令行执行管理任务。为了有效地使用 CentOS Linux,作为管理员,您需要精通命令行。Linux 的核心是为从控制台使用而设计的。即使在今天,一些系统管理员仍然更喜欢命令的强大功能,并通过运行没有物理终端和安装 GUI 的裸机 Linux 机器来节省硬件成本。

远程图形化管理

远程 GUI 管理通常通过两种方式完成:远程 X-Session 或 GUI 应用层协议(如 VNC)。每个都有其优点和缺点。然而,在大多数情况下,VNC 是管理的最佳选择。它允许从本身不支持 X Windows 协议的其他操作系统(例如 Windows 或 OS X)进行图形控制。

使用远程 X 会话是运行在 X 上的 X-Window 窗口管理器和桌面管理器的本机功能。但是,整个 X 会话架构主要用于 Linux。并非每个系统管理员都会拥有一台 Linux 笔记本电脑来建立远程 X 会话。因此,最常见的是使用 VNC Server 的改编版本。

VNC 的最大缺点是: VNC 本身不支持多用户环境,例如远程 X-Sessions。因此,对于最终用户远程 XSession 的 GUI 访问将是最佳选择。然而,我们主要关心的是远程管理 CentOS 服务器。

我们将讨论如何为多个管理员和数百个具有远程 X 会话的最终用户配置 VNC。

使用 SSH 进行远程控制台访问奠定安全基础

sshSecure Shell现在已成为远程管理任何 Linux 服务器的标准。与 telnet 不同,SSH 使用 TLS 来确保通信的真实性和端到端加密。如果配置正确,管理员可以非常确定他们的密码和服务器都是远程信任的。

在配置 SSH 之前,我们先来谈谈基本的安全性和最不常见的访问。当 SSH 在其默认端口 22 上运行时;迟早,您将受到针对常见用户名和密码的暴力字典攻击。这只是随着领土而来的。无论您向拒绝文件添加多少主机,它们每天都会从不同的 IP 地址进入。

通过一些通用规则,您可以简单地采取一些积极主动的步骤,让坏人浪费时间。以下是使用 SSH 在生产服务器上进行远程管理时需要遵循的一些安全规则 -

  • 切勿使用通用的用户名或密码。系统上的用户名不应是系统默认值,也不应与公司电子邮件地址相关联,例如:systemadmin@yourcompany.com

  • 不应通过 SSH 允许根访问或管理访问。通过 SSH 进行身份验证后,使用唯一的用户名和 su 到 root 或管理帐户。

  • 密码策略是必须的:复杂的 SSH 用户密码,例如:“This&IS&a&GUD&P@ssW0rd&24&me”。每隔几个月更改一次密码,以消除对增量暴力攻击的敏感性。

  • 禁用已废弃或长时间未使用的帐户。如果招聘经理收到语音邮件,表明他们一个月内不会进行面试;例如,这可能会导致精通技术的人有很多空闲时间。

  • 每天查看您的日志。作为系统管理员,每天早上至少花 30-40 分钟检查系统和安全日志。如果有人问起,请让每个人都知道您没有时间不积极主动。这种做法将有助于在问题出现给最终用户和公司利润之前隔离警告信号。

关于 Linux 安全的注意事项- 任何对 Linux 管理感兴趣的人都应该积极关注当前的网络安全新闻和技术。虽然我们大多听说其他操作系统受到损害,但不安全的 Linux 机器却是网络犯罪分子追捧的宝藏。借助 Linux 在高速互联网连接上的强大功能,熟练的网络犯罪分子可以使用 Linux 对其他操作系统进行攻击。

安装并配置 SSH 以进行远程访问

步骤 1 - 安装 SSH 服务器和所有依赖包。

[root@localhost]# yum -y install openssh-server 
'Loaded plugins: fastestmirror, langpacks 
Loading mirror speeds from cached hostfile 
* base: repos.centos.net 
* extras: repos.dfw.centos.com 
* updates: centos.centos.com 
Resolving Dependencies 
   --> Running transaction check 
   ---> Package openssh-server.x86_64 0:6.6.1p1-33.el7_3 will be installed 
   --> Finished Dependency Resolution 
Dependencies Resolved

步骤 2 - 安全地定期使用添加 shell 访问。

[root@localhost ~]# useradd choozer 
[root@localhost ~]# usermod -c "Remote Access" -d /home/choozer -g users -G 
wheel -a choozer

注意- 我们将新用户添加到wheel组,以便在SSH访问经过身份验证后能够su进入root权限。我们还使用了在常用单词列表中找不到的用户名。这样,当 SSH 受到攻击时,我们的帐户就不会被锁定。

保存 sshd 服务器配置设置的文件是/etc/ssh/sshd_config

我们最初想要编辑的部分是 -

LoginGraceTime 60m
PermitRootLogin no

步骤 3 - 重新加载 SSH 守护进程sshd

[root@localhost]# systemctl reload sshd

最好将注销宽限期设置为 60 分钟。某些复杂的管理任务可能会超过默认的 2 分钟。在配置或研究更改时,没有什么比 SSH 会话超时更令人沮丧的了。

步骤 4 - 让我们尝试使用 root 凭据登录。

bash-3.2# ssh centos.vmnet.local 
root@centos.vmnet.local's password:   
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

步骤 5 - 我们无法再使用root凭据通过 ssh 远程登录。因此,让我们登录到我们的非特权用户帐户并suroot帐户。

bash-3.2# ssh chooser@centos.vmnet.local
choozer@centos.vmnet.local's password:
[choozer@localhost ~]$ su root
Password:

[root@localhost choozer]#

步骤 6 - 最后,让我们确保 SSHD 服务在启动时加载,并且防火墙允许外部 SSH 连接。

[root@localhost]# systemctl enable sshd

[root@localhost]# firewall-cmd --permanent --add-service=ssh 
success

[root@localhost]# firewall-cmd --reload 
success
 
[root@localhost]#
 

SSH 现已设置并准备好进行远程管理。根据您的企业边界,数据包过滤边界设备可能需要配置为允许在企业 LAN 外部进行 SSH 远程管理。

配置 VNC 以进行远程 CentOS 管理

有几种方法可以在 CentOS 6 - 7 上通过 VNC 启用远程 CentOS 管理。最简单但限制最大的方法是使用名为vino的软件包。Vino是一款围绕 Gnome 桌面平台设计的 Linux 虚拟网络桌面连接应用程序。因此,假设安装是通过 Gnome 桌面完成的。如果尚未安装 Gnome 桌面,请在继续之前安装。默认情况下,Vino 将随 Gnome GUI 安装一起安装。

要在 Gnome 下使用 Vino 配置屏幕共享,我们需要进入 CentOS 系统偏好设置进行屏幕共享。

Applications->System Tools->Settings->Sharing

分享

屏幕共享

屏幕共享认证

配置 VNC 桌面共享的注意事项 -

  • 禁用新连接必须要求访问- 此选项将需要物理访问才能确定每个连接。除非有人在物理桌面上,否则此选项将阻止远程管理。

  • 启用需要密码- 这与用户密码分开。它将控制对虚拟桌面的访问,并且仍然需要用户密码才能访问锁定的桌面(这有利于安全)。

  • 转发 UP&P 端口:如果可用,请保持禁用状态- 转发 UP&P 端口将向第 3 层设备发送通用即插即用请求,以允许自动连接到主机的 VNC。我们不希望这样。

确保 vino 正在侦听 VNC 端口 5900。

[root@localhost]# netstat -antup | grep vino 
tcp        0        0 0.0.0.0:5900        0.0.0.0:*        LISTEN        4873/vino-server
tcp6       0        0 :::5900                :::*          LISTEN        4873/vino-server
   
[root@localhost]#

现在让我们配置防火墙以允许传入的 VNC 连接。

[root@localhost]# firewall-cmd --permanent --add-port=5900/tcp 
success

[root@localhost]# firewall-cmd --reload 
success

[root@localhost rdc]#

最后,如您所见,我们能够连接 CentOS Box 并使用 Windows 或 OS X 上的 VNC 客户端对其进行管理。

VNC客户端

遵守 VNC 的规则与我们为 SSH 制定的规则同样重要。就像 SSH 一样,VNC 会不断扫描 IP 范围并测试弱密码。还值得注意的是,启用默认 CentOS 登录并设置控制台超时确实有助于远程 VNC 安全。由于攻击者需要 VNC 和用户密码,因此请确保您的屏幕共享密码不同,并且与用户密码一样难以猜测。

输入VNC屏幕共享密码后,我们还必须输入用户密码才能访问锁定的桌面。

VNC屏幕共享密码

安全说明- 默认情况下,VNC 不是加密协议。因此,VNC 连接应通过 SSH 建立隧道进行加密。

通过 VNC 设置 SSH 隧道

设置 SSH 隧道将提供一层 SSH 加密来通过隧道传输 VNC 连接。另一个很棒的功能是它使用 SSH 压缩为 VNC GUI 屏幕更新添加另一层压缩。在管理 CentOS 服务器时,更安全、更快速总是一件好事!

因此,从将启动 VNC 连接的客户端,让我们设置一个远程 SSH 隧道。在本演示中,我们使用的是 OS X。首先我们需要sudo -sroot

bash-3.2# sudo -s 
password:

输入用户密码,我们现在应该有带有# 提示符的root shell -

bash-3.2#

现在,让我们创建SSH 隧道

ssh -f rdc@192.168.1.143 -L 2200:192.168.1.143:5900 -N

让我们分解这个命令 -

  • ssh - 运行本地 ssh 实用程序

  • -f - 任务完全执行后,ssh 应在后台运行

  • rdc@192.168.1.143 - 托管 VNC 服务的 CentOS 服务器上的远程 ssh 用户

  • -L 2200:192.168.1.143:5900 - 创建隧道 [本地端口]:[远程主机]:[VNC 服务的远程端口]

  • -N告诉 ssh 我们不希望在远程系统上执行命令

bash-3.2# ssh -f rdc@192.168.1.143 -L 2200:192.168.1.143:5900 -N
rdc@192.168.1.143's password:

成功输入远程ssh用户的密码后,我们的ssh隧道就创建好了。现在是最酷的部分!要进行连接,我们将 VNC 客户端指向隧道端口上的本地主机,在本例中为端口 2200。以下是 Mac 笔记本电脑的 VNC 客户端上的配置 -

SSH 隧道

最后,我们的远程 VNC 桌面连接!

VNC 桌面连接

SSH 隧道的最酷之处在于它几乎可以用于任何协议。SSH 隧道通常用于绕过 ISP 的出口和入口端口过滤,以及欺骗应用层 IDS/IPS,同时逃避其他会话层监控。

  • 您的 ISP 可能会过滤非企业帐户的端口 5900,但允许在端口 22 上运行 SSH(或者如果端口 22 被过滤,则可以在任何端口上运行 SSH)。

  • 应用程序级 IPS 和 IDS 着眼于有效负载。例如,常见的缓冲区溢出或 SQL 注入。端到端的SSH加密将对应用层数据进行加密。

SSH 隧道是 Linux 管理员工具箱中用于完成工作的出色工具。然而,作为管理员,我们希望探索锁定有权访问 SSH 隧道的权限较低的用户的可用性。

管理安全说明- 限制 SSH 隧道需要管理员深思熟虑。首先评估用户为何需要 SSH 隧道;哪些用户需要隧道;以及实际风险概率和最坏情况的影响。

这是一个超出中级入门知识范围的高级主题。建议那些希望进入 CentOS Linux 管理高层的人对此主题进行研究。

使用 SSH 隧道进行远程 X-Windows

Linux 中 X-Windows 的设计与 Windows 相比确实很简洁。如果我们想从另一个 Linux 盒子控制远程 Linux 盒子,我们可以利用 X 中内置的机制。

X-Windows(通常简称为“X”)提供了一种机制,可以将源自一个 Linux 机器的应用程序窗口显示到另一个 Linux 机器上的 X 显示部分。因此,通过 SSH,我们可以请求将 X-Windows 应用程序转发到世界各地另一个 Linux 盒子的显示器上!

要通过 ssh 隧道远程运行 X 应用程序,我们只需要运行一个命令 -

[root@localhost]# ssh -X rdc@192.168.1.105

语法为- ssh -X [用户]@[主机],并且主机必须使用有效用户运行 ssh。

以下是 GIMP 通过远程 XWindows ssh 隧道在 Ubuntu 工作站上运行的屏幕截图。

使用 SSH 隧道进行远程 X-Windows

从另一台 Linux 服务器或工作站远程运行应用程序非常简单。还可以通过几种方法远程启动整个 X-Session 并拥有整个桌面环境。

  • XDMCP

  • 无头软件包,例如 NX

  • 在 X 和桌面管理器(例如 Gnome 或 KDE)中配置备用显示和桌面

这种方法最常用于没有物理显示器的无头服务器,并且确实超出了中级入门的范围。不过,了解可用的选项还是有好处的。