AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 805333
Accepted
HBruijn
HBruijn
Asked: 2016-09-27 03:54:41 +0800 CST2016-09-27 03:54:41 +0800 CST 2016-09-27 03:54:41 +0800 CST

Linux:为远程系统管理员设置

  • 772

我时不时地收到奇怪的请求,要求在 Linux 系统上提供远程支持、故障排除和/或性能调整。

较大的公司通常已经有完善的程序来为供应商/供应商提供远程访问,我只需要遵守这些程序。(不论结果好坏。)

另一方面,小公司和个人总是求助于我,指导他们如何设置我。通常他们的服务器直接连接到互联网,现有的安全措施包括他们的 Linux 发行版的默认值。

我几乎总是需要 root 级别的访问权限,而为我设置访问权限的人并不是专业的系统管理员。我不想要他们的 root 密码,而且我也很确定我的行为不会是恶意的,但是我应该给出什么合理简单的指示:

  • 设置帐户并安全地交换凭据
  • 设置 root (sudo) 访问权限
  • 限制访问我的帐户
  • 提供审计线索

(是的,我知道并总是警告那些客户,一旦我拥有管理员访问权限,隐藏任何恶意行为都是微不足道的,但让我们假设我没有什么可隐藏的,并积极参与创建审计跟踪。)

以下步骤可以改进什么?


我当前的指令集:

设置帐户并安全地交换凭据

我提供了密码哈希并要求我的帐户设置了该加密密码,因此我们不需要传输明文密码,我将是唯一知道密码的人,我们不会从可预测的弱密码。

sudo useradd -p '$1$********' hbruijn

我提供了一个公钥 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 

设置 root (sudo) 访问权限

sudo sudoedit我要求客户使用或使用他们最喜欢的编辑器为我设置 sudo 并附加到/etc/sudoers:

hbruijn ALL=(ALL) ALL

限制访问我的帐户

通常客户端仍然允许基于密码的登录,我要求他们添加以下两行以/etc/ssh/sshd_config至少将我的帐户限制为仅 SSH 密钥:

Match user hbruijn
PasswordAuthentication no

根据客户端,我将通过单个堡垒主机路由所有 SSH 访问,以始终提供单个静态 IP 地址(例如 192.168.1.2)和/或提供我的 ISP 使用的 IP 地址范围(例如 10.80. 0.0/14)。如果 SSH 访问受到限制,客户端可能需要将它们添加到防火墙白名单中(尽管 ssh 通常是未过滤的)。

您已经将这些 ip 地址视为文件中的from=限制,~.ssh/authorized_keys它限制了可以使用我的密钥访问其系统的主机。

提供审计线索

到目前为止,没有客户要求我这样做,除了以下内容之外,我还没有做任何具体的事情来掩盖我的屁股:

我尝试始终使用sudo单个命令并尝试防止使用sudo -ior sudo su -。我尽量不使用sudo vim /path/to/file ,而是使用sudoedit。

默认情况下,所有特权操作都将记录到 syslog(和/var/log/secure):

Sep 26 11:00:03 hostname sudo:  hbruijn : TTY=pts/0 ; PWD=/home/hbruijn ; USER=jboss ; COMMAND=sudoedit /usr/share/jbossas/domain/configuration/domain.xml  
Sep 26 11:00:34 hostname sudo:  hbruijn : TTY=pts/0 ; PWD=/home/hbruijn ; USER=root ; COMMAND=/usr/bin/tail -n 5 /var/log/messages

我基本上放弃了自定义我的工作环境,我唯一真正做的就是在~/.bash_profile增加 bash 历史记录中设置以下内容并包含时间戳:

export HISTSIZE=99999999999
export HISTFILESIZE=99999999999
export HISTIGNORE="w:ls:ls -lart:dmesg:history:fg"
export HISTTIMEFORMAT='%F %H:%M:%S  '
shopt -s histappend
linux security root sudo audit
  • 4 4 个回答
  • 2621 Views

4 个回答

  • Voted
  1. Best Answer
    faker
    2016-09-27T04:34:53+08:002016-09-27T04:34:53+08:00

    唯一想到的就是添加--expiredate到adduser通话中。
    这样,客户就知道您的访问权限将在固定日期自动过期。

    他仍然需要信任您,因为您具有 root 访问权限并且仍然可以删除过期标志。

    • 24
  2. user9517
    2016-09-27T08:29:40+08:002016-09-27T08:29:40+08:00

    您可以使用script(1)实用程序记录您的会话。

    $ script session.log
    Script started, file is session.log
    $ ls
    file1  session.log
    exit
    Script done, file is session.log
    

    然后一切都在 session.log 中。

    • 15
  3. zwol
    2016-09-27T07:51:17+08:002016-09-27T07:51:17+08:00

    由于您已经使用 SSH 公钥登录,因此如果您不提供密码哈希,事情会变得更加紧张;而是告诉他们使用adduser --disabled-password(等效地useradd -p '!',我认为),这实际上等同PasswordAuthentication no于该帐户,而且窥探您的电子邮件的人不可能暴力破解密码哈希并以您的身份登录。

    • 7
  4. Jens Timmerman
    2016-10-01T01:12:15+08:002016-10-01T01:12:15+08:00

    当您要使用公钥/私钥时,为什么要提供密码。

    公钥是要共享的,因此您应该使用它来安全地交换凭据,而不是散列密码。

    sudo useradd --disabled-password hbruijn

    发送您的公钥时,请通过第二个渠道(例如电话)验证指纹,这样您就知道没有人在它进入的过程中对其进行更改。

    由于您现在没有密码来使用 sudo,因此您还需要将 sudoers 文件中的行更改为

    hbruijn ALL=(ALL) NOPASSWD:ALL

    如果您对没有 sudo 密码感到不自在,并且真的想要一个密码,那么您仍然不需要发送您的散列密码,让帐户在没有密码的情况下创建,设置您的公钥,一旦您的帐户是设置您可以通过 ssh 登录并运行 passwd以设置您自己的密码。

    • 2

相关问题

  • 在 SOHO 环境中实施的最佳 VPN 技术是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve