我们公司中的一些人在生产服务器上拥有 root 访问权限。我们正在寻找一种很好的方法来在我们使用 ssh 时让它变得非常清楚。
我们的一些想法是:
你们使用哪些技术来区分生产系统?
我们刚刚启动了我们的新服务器,并且我们正在所有这些服务器上运行 CentOS。成功安装 Ruby Enterprise Edition 后,我现在想添加 REE /bin(位于/usr/lib/ruby-enterprise/bin)目录,使其成为服务器上的默认 Ruby 解释器。
我尝试了以下操作,它只会将其添加到当前的 shell 会话中:
export PATH=/usr/lib/ruby-enterprise/bin:$PATH
Run Code Online (Sandbox Code Playgroud)
为所有用户永久添加此目录的正确方法是什么?我目前以.$PATHroot
有没有办法让经验丰富的 Linux syadmin 在不给他完全的 root 访问权限的情况下提高工作效率?
这个问题来自保护知识产权 (IP) 的角度,在我的情况下,它完全是代码和/或配置文件(即易于复制的小型数字文件)。我们的秘方使我们比我们的小规模所暗示的更成功。同样,我们曾经被一些试图窃取 IP 的前任肆无忌惮的员工(不是系统管理员)咬了一口,两次害羞。高层管理人员的立场基本上是,“我们信任人们,但出于自身利益,不能承担给任何人比他们完成工作绝对需要的更多访问权限的风险。”
在开发人员方面,划分工作流和访问级别相对容易,这样人们就可以提高工作效率,但只能看到他们需要看到的内容。只有顶级人才(实际公司老板)有能力将所有原料组合起来,制作出特别的酱汁。
但是我还没有想出一个很好的方法来在 Linux 管理端维护这个 IP 保密。我们广泛使用 GPG 来处理代码和敏感文本文件……但是有什么可以阻止管理员(例如)向用户发出警告并跳转到他们的 tmux 或 GNU Screen 会话并查看他们在做什么?
(我们还在可能接触敏感信息的任何地方禁用 Internet 访问。但是,没有什么是完美的,聪明的系统管理员可能会漏洞或网络管理员方面的错误。甚至是旧的 USB。有当然还有许多其他措施,但这些超出了本问题的范围。)
我能想到的最好的方法基本上是使用带有sudo 的个性化帐户,类似于以root 身份工作的多个 Linux 系统管理员中描述的内容。具体来说:除了公司所有者之外,没有人实际上拥有直接的 root 访问权限。其他管理员将拥有个性化帐户和sudo进入 root的能力。此外,将建立远程日志记录,并将日志发送到只有公司所有者才能访问的服务器。看到日志记录关闭会引发某种警报。
一个聪明的系统管理员可能仍然会在这个方案中找到一些漏洞。除此之外,它仍然是被动的而不是主动的。我们 IP 的问题在于,竞争对手可以非常迅速地利用它,并在很短的时间内造成大量损害。
所以最好是一种限制管理员可以做什么的机制。但我承认这是一个微妙的平衡(特别是考虑到目前需要解决的故障排除和生产问题)。
我不禁想知道其他拥有非常敏感数据的组织如何管理这个问题?例如,军事系统管理员:他们如何在无法看到机密信息的情况下管理服务器和数据?
编辑:在最初的帖子中,我打算先发制人地解决开始浮出水面的“招聘实践”评论。一,这应该是一个技术问题,IMO 的招聘实践更倾向于社会问题。但是,二,我会这样说:我相信我们会尽一切合理招聘人员:面试多个公司人员;背景和参考调查;所有员工都签署了大量法律文件,其中一份声明他们已阅读并理解我们的手册,其中详细介绍了知识产权问题。现在,它超出了这个问题/网站的范围,但如果有人可以提出“完美”的招聘做法,过滤掉 100% 的坏演员,我全都在听。事实是:(1)我不相信有这么完美的招聘流程;(2) 人在变——今天的天使可能是明天的恶魔;(3) 企图窃取代码在这个行业似乎有些司空见惯。
在 Ubuntu 上:
touch: cannot touch `/var/run/test.pid': Permission denied
Run Code Online (Sandbox Code Playgroud)
我正在启动 start-stop-daemon 并且喜欢将 PID 文件写入 /var/run start-stop-daemon is run as my-program-user
/var/run setting is drwxr-xr-x 9 root root
Run Code Online (Sandbox Code Playgroud)
我喜欢避免将 my-program-user 放在根组中。
使用以下命令通过 sudo 运行密集任务有什么区别吗?:
顺便说一句,这是针对 Linux 3.x 的。
我不时收到奇怪的请求,要求在 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)
根据客户端的不同,我将通过单个堡垒主机路由我的所有 …
在 linux 机器上,我如何列出所有拥有 root 权限的用户(甚至更好的是,所有用户以及他们是否拥有 root 权限)?
在我们的团队中,我们有三位经验丰富的 Linux 系统管理员,他们必须管理几十台 Debian 服务器。以前我们都使用 SSH 公钥认证作为 root 工作。但是我们就该场景的最佳实践进行了讨论,但未能达成任何一致。
这样我们就可以使用 SSH 公钥使用个性化帐户登录,并使用sudo以root权限执行单个任务。此外,我们可以给自己一个允许我们查看日志文件的“adm”组。
这是一位系统管理员提出的非常独特的建议。他建议在 /etc/passwd 中创建三个用户,所有用户的 UID 为 0,但登录名不同。他声称这实际上并没有被禁止,并且允许每个人都是 UID 0 但仍然能够进行审计。
你有什么建议?
在 cPanel 上,当我以 root 身份登录并键入“mysql”而没有主机名和密码时,它使我可以直接访问 mysql root 用户。
我想为我的一台非 cpanel 服务器执行此操作,其中 linux root 用户以与在 cPanel 上相同的方式获取密码较少的登录到 mysql root 用户。
这可能吗 ?
我经常听到 su 到 root 比直接以 root 用户登录更好(当然人们也说使用 sudo 更好)。我从来没有真正理解为什么一个比另一个更好,洞察力?