Linux 管理员 – 远程管理

Linux 管理员 – 远程管理


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

  • 控制台管理
  • 图形用户界面管理

远程控制台管理

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

远程图形用户界面管理

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

使用远程 X Sessions 是 X-Window 的 Window-Managers 和运行在 X 上的 DesktopManagers 的本机。然而,整个 X Session 架构主要用于 Linux。并非每个系统管理员都会手头有一台 Linux 笔记本电脑来建立远程 X 会话。因此,最常见的是使用 VNC Server 的改编版本。

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

我们将讨论为多个管理员配置 VNC,而不是为数百个具有远程 X-Session 的最终用户。

使用 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

注意– 我们将新用户添加到组中,一旦 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 步– 让我们尝试使用根凭据登录。

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 远程管理。

为远程 CentOS 管理配置 VNC

有几种方法可以在 CentOS 6-7 上通过 VNC 启用远程 CentOS 管理。最简单但最有限制的方法就是使用名为vino的软件包Vino是围绕 Gnome 桌面平台设计的 Linux 虚拟网络桌面连接应用程序。因此,假设安装是使用 Gnome Desktop 完成的。如果尚未安装 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 客户端指向隧道端口上的 localhost,在本例中为端口 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

与 Windows 相比,Linux 中 X-Windows 的设计非常简洁。如果我们想从另一个 Linux boxm 控制远程 Linux box,我们可以利用 X 内置的机制。

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

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

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

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

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

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

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

  • XDMCP

  • 无头软件包,例如 NX

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

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

觉得文章有用?

点个广告表达一下你的爱意吧 !😁