我将把 Ansible 引入我的数据中心,我正在寻找一些关于在何处定位控制机器以及如何管理 SSH 密钥的安全最佳实践。
问题一:控制机
我们当然需要一台控制机器。控制机器上保存了公共 SSH 密钥。如果攻击者可以访问控制机器,它就有可能访问整个数据中心(或 Ansible 管理的服务器)。那么数据中心有专用控制机好还是远程控制机好(比如我的笔记本电脑远程连接数据中心)?
如果最佳做法是使用我的笔记本电脑(当然,它可能会被盗,但我可以将我的公钥安全地在线保存在云中或离线保存在便携式加密设备上),如果我需要使用一些 Web 界面,该怎么办? Ansible,像 Ansible Tower、Semaphore、Rundeck 或 Foreman,需要安装在数据中心的中央机器上?如何保护它并避免它成为“单点攻击”?
问题 2:SSH 密钥
假设我需要使用 Ansible 来制作一些需要由 root 执行的任务(比如安装软件包或类似的东西)。我认为最好的做法是不要在受控服务器上使用 root 用户,而是为 Ansible 添加一个具有 sudo 权限的普通用户。但是,如果 Ansible 需要执行几乎所有任务,则它需要通过 sudo 访问每个命令。那么,最好的选择是什么:
~/.ssh/authorized_keys
在我作为System Monkey 的短暂统治之后,我现在面临着一个两难境地:
我确实成功地在我的笔记本电脑上创建了备份和测试 VM,因为没有工作中的计算机有足够的可用磁盘空间。我还没有删除备份,因为它仍然是公司历史上唯一的一个。原来是在一个自 2006 年以来一直在使用的硬盘上运行。现在公司只剩下一个人,知道备份是什么,而且他们不太可能雇用其他人,原因与我的离职密切相关.
上次我试图与他们谈论备份的重要性时,他们认为我在威胁他们。
我应该保留它吗?
优点:
缺点:
你会怎么办?
更新:
感谢所有的回复,你们都非常有帮助。我最终通过电话录音确认他们不想要备份,他们不希望我保留它,他们知道我拥有它,并且他们承担从现在开始没有备份的责任。我已经粉碎了我的副本。
我意识到这是非常主观的并且取决于许多变量,但我想知道大多数人在需要诊断给定系统上的数据包丢失时会经历哪些步骤?
我通常喜欢为自己设置单独的登录,一个具有常规用户权限,另一个用于管理任务。例如,如果域是 XXXX,我会设置一个 XXXX\bpeikes 和一个 XXXX\adminbp 帐户。我一直这样做是因为坦率地说,我不相信自己以管理员身份登录,但在我工作过的每个地方,系统管理员似乎只是将他们常用的帐户添加到域管理员组中。
有没有最佳实践?我看过 MS 的一篇文章,它似乎说你应该使用运行方式,而不是以管理员身份登录,但他们没有给出一个实现的例子,我从来没有见过其他人这样做。
当员工离开您的组织时,您是否删除或禁用他们的 Active Directory 帐户?我们的 SOP 是禁用、导出/清除 Exchange 邮箱,然后在“一段时间”过去后(通常每季度)删除该帐户。
有必要延迟吗?导出并清除他们的邮箱后,为什么我不应该立即删除该帐户?
去年,我们收到了来自托管服务提供商的一封电子邮件,内容涉及我们的一个帐户 - 它已被盗用并用于提供相当慷慨的垃圾邮件帮助。
显然,用户已将她的密码重置为她名字的变体(姓氏是你第一次可能猜到的。)她在一周内立即遭到黑客攻击 - 她的帐户发送了大量 270,000 封垃圾邮件 - 并且很快阻止。
到目前为止,没有什么特别不寻常的。那个会发生。您将密码更改为更安全的密码,教育用户并继续前进。
然而,有关的东西我更比我们账户的事实,一个已经失密。
我们的托管服务提供商为了提供帮助,实际上在以下电子邮件中向我们引用了密码:
我很惊讶。我们很快就要续约了——这感觉就像一个交易破坏者。
托管服务提供商能够找出帐户中使用的实际密码的情况有多普遍?
大多数托管服务提供商是否有一个帐户滥用部门比一线代表拥有更多的访问权限(并且可以在必要时查找密码),或者这些人只是没有遵循最佳实践来让他们的任何员工访问用户?密码?我认为密码应该被散列并且不可检索?这是否意味着他们以纯文本形式存储每个人的密码?
托管服务提供商能够以这种方式发现帐户密码是否合法?这对我来说似乎太不可思议了。
在我们考虑更换提供商之前,我想保证这不是常见的做法,而且我们的下一个托管服务提供商也不太可能以相同的方式进行设置。
期待听到您对此的看法。
就在最近,我让一位开发人员意外地尝试将数据库恢复到生产环境,而他本应恢复到临时副本。这很容易做到,因为数据库名称相似,即 CustomerName_Staging 与 CustomerName_Production。
理想情况下,我会将这些放在完全独立的盒子上,但这成本太高,而且,严格来说,如果用户连接到错误的盒子,它不会阻止同样的事情发生。
这本身并不是一个安全问题——它是使用临时数据库的正确用户,如果在生产数据库上有工作要做,那也是他。我很想有一个部署官来解决这些问题,但团队不够大。
我很想听听关于如何防止这种情况的实践、配置和控制方面的一些建议。
我正在尝试查找有关为每个物理内核(CPU 的)配置 vCPU 的虚拟化的一些文档或最佳实践指南。如果重要的话,我正在寻找 vmWare 的虚拟化实现。例如,Intel Xeon CPU 可能有 4、8 等内核。我有兴趣了解更多有关配置的更多信息,而不仅仅是每个物理核心一个 vCPU。与我交谈的供应商肯定认为可以将单个内核配置到多个 vCPU 中。
到目前为止,我在我的研究中通常看到的是,“好吧,这取决于您的应用程序。” 在这种情况下,我的应用程序正在编辑代码、编译/链接、测试和配置管理。当然,并非所有 VM 都需要为每个内核配置多个 vCPU,但在一般情况下。
我们最近为我们的域购买了通配符 SSL 证书。我们将所有证书转换为 Java 密钥库,但现在我们问自己应该将这些证书存储在哪里以备后用。
人们是否对这些类型的文件使用像 BitBucket 这样的源代码控制,或者只是在每次需要时生成,或者其他什么?
我们想知道是否有关于存储这些证书以供将来使用的标准解决方案或任何“最佳实践”。
我在 docker 容器中有 php-fpm,在Dockerfile
我编辑 fpm 配置文件 ( /etc/php5/fpm/pool.d/www.conf
) 以设置要访问的访问日志和要访问的/var/log/fpm-access.log
错误日志/var/log/fpm-php.www.log
:
# Do some php-fpm config
# Redirect worker stdout and stderr into main error log
# Activate the fpm access log
# Enable display errors
# Enable the error log
RUN sed -i '/^;catch_workers_output/ccatch_workers_output = yes' /etc/php5/fpm/pool.d/www.conf && \
sed -i '/^;access.log/caccess.log = /var/log/fpm-access.log' /etc/php5/fpm/pool.d/www.conf && \
sed -i '/^;php_flag\[display_errors\]/cphp_flag[display_errors] = off' /etc/php5/fpm/pool.d/www.conf && \
sed -i '/^;php_admin_value\[error_log\]/cphp_admin_value[error_log] = /var/log/fpm-php.www.log' /etc/php5/fpm/pool.d/www.conf && \
sed …
Run Code Online (Sandbox Code Playgroud) best-practices ×10
security ×3
ansible ×1
certificate ×1
docker ×1
email ×1
logging ×1
packet ×1
packetloss ×1
password ×1
php-fpm ×1
sql-server ×1
vcpu ×1