我不时收到奇怪的请求,要求在 Linux 系统上提供远程支持、故障排除和/或性能调整。
较大的公司通常已经制定了完善的程序来提供对供应商/供应商的远程访问,我只需要遵守这些程序。(不论结果好坏。)
另一方面,小公司和个人总是求助于我,让他们知道他们需要做什么来建立我。通常,他们的服务器直接连接到互联网,现有的安全措施包括其 Linux 发行版的默认设置。
我几乎总是需要 root 级别的访问权限,而为我设置访问权限的人不是专家系统管理员。我不想要他们的 root 密码,而且我也很确定我的行为不会是恶意的,但是我应该给出什么相当简单的说明:
(是的,我知道并总是警告那些客户,一旦我拥有管理员访问权限,隐藏任何恶意操作都是微不足道的,但让我们假设我没有什么可隐藏的,并积极参与创建审计跟踪。)
以下步骤可以改进什么?
设置帐户并安全地交换凭据
我提供了一个密码哈希,并要求我的帐户设置了该加密密码,因此我们不需要传输明文密码,我将是唯一知道密码的人,我们不会从可预测的弱密码。
sudo useradd -p '$1$********' hbruijn
Run Code Online (Sandbox Code Playgroud)
我提供了一个公钥 SSH(每个客户端的特定密钥对)并要求他们使用该密钥设置我的帐户:
sudo su - hbruijn
mkdir -p ~/.ssh
chmod 0700 ~/.ssh
echo 'from="10.80.0.0/14,192.168.1.2" ssh-rsa AAAAB3NzaC1y***...***== hbruijn@serverfault' >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)
设置 root (sudo) 访问权限
我要求客户使用sudo sudoedit
或使用他们最喜欢的编辑器为我设置 sudo 并附加到/etc/sudoers
:
hbruijn ALL=(ALL) ALL
Run Code Online (Sandbox Code Playgroud)
限制对我帐户的访问
通常,客户端仍然允许基于密码的登录,我要求他们添加以下两行以/etc/ssh/sshd_config
至少将我的帐户限制为仅使用 SSH 密钥:
Match user hbruijn
PasswordAuthentication no
Run Code Online (Sandbox Code Playgroud)
根据客户端的不同,我将通过单个堡垒主机路由我的所有 …