Linux 管理员 - 远程管理

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

  • 控制台管理
  • GUI 管理

远程控制台管理

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

远程 GUI 管理

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

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

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

我们将讨论为多个管理员配置 VNC,以及使用远程 X-Sessions 为数百个最终用户配置 VNC。

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

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

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

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

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

  • 不应允许通过 SSH 进行 root 访问或管理访问。使用唯一的用户名,并在通过 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 远程登录。因此,让我们登录到我们的非特权用户帐户,然后 su 进入 root 帐户。

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

[root@localhost choozer]#

步骤 6 − 最后,让我们确保 SSHD 服务在启动时加载,并且 firewalld 允许外部 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 是一个针对 Linux 的虚拟网络桌面连接应用程序,围绕 Gnome Desktop 平台设计。因此,假定安装已使用 Gnome Desktop 完成。如果尚未安装 Gnome Desktop,请在继续之前先安装。 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 Laptop 的 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

与 Windows 相比,Linux 中的 X-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。

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

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

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

  • XDMCP

  • 无头软件包,例如 NX

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

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