我正在使用 Terraform 模块来部署资源,使用单独的实例来部署这些资源集。我希望能够根据实例的名称来命名这些资源。例如:
module "thing1" {
source = "my-module"
param1 = "value the first"
param2 = "value the second"
}
Run Code Online (Sandbox Code Playgroud)
并在模块中:
resource "resource_type" "doesntmatter" {
name = "${module.self.name}"
...
}
Run Code Online (Sandbox Code Playgroud)
在示例中,我希望资源的名称为thing1。
我当然可以创建另一个变量用于模块的输入,但这对于客户端代码来说是重复的(违反了 DRY——创建的资源需要一个合理的标识符,但没有什么漂亮的,所以最好重用一个描述性实例名称)并且这似乎应该可用,但我在 Terraform 文档中看不到任何内容。
我们有一个企业 VPN 服务器,在装有 Ubuntu 16.04 Xenial 的 AWS 实例上运行 OpenVPN 2.3。服务器已使用 Ansible playbook 进行配置。
我计划升级到 Ubuntu 18.04 Bionic,它还将 OpenVPN 升级到 2.4 版(这是一个预期的副作用,因为 OpenVPN 2.3 已被弃用)。所以我创建了一个带有 Bionic 的测试实例,并针对它运行了 Ansible playbook。配置包括通过 Google Authenticator 的 MFA,所以我也~/.google_authenticator从旧服务器复制文件并应用chmod 400到它。
在新服务器工作之前,我还必须解决一些兼容性问题:
openvpn-plugin-auth-pam.so 文件位置已更改,现在无需在服务器配置中指定其完整路径。CAP_AUDIT_WRITEopenvpnsystemd 服务中缺少权限(在此处查看更多详细信息)但是,即使在该身份验证之后,新服务器上的身份验证仍然失败。这是我的/etc/pam.d/openvpn样子:
auth required pam_google_authenticator.so
Run Code Online (Sandbox Code Playgroud)
如果我用 替换这一行auth required pam_permit.so,我将成功通过身份验证(当然使用任何密码)并连接,所以问题肯定是 MFA 介入的地方。
同时,pamtester告诉我pam_google_authenticator.so工作正常:
$ sudo pamtester openvpn vlad authenticate
Verification code:
pamtester: successfully authenticated
Run Code Online (Sandbox Code Playgroud)
这是我在尝试对 VPN 服务器进行身份验证时在 …
所以我刚刚使用 ufw 添加了一条防火墙规则。我如何知道是否需要执行额外的步骤才能使此规则在重新启动后也自动出现?
(第二个问题,但对我来说不太重要:如果需要的话,需要采取哪些步骤?)
例如:我是否必须检查已安装/启用/配置的 iptables-save?我必须将规则放入 /etc/ufw/ 中吗?(在哪里?)是否有这样的规则:如果我使用 Ubuntu,那么 ufw 在重新启动后将始终记住状态?
我不习惯使用 ufw 或 iptables-save。我刚刚在论坛和 ufw 的手册页上阅读了谣言。
如果您必须假设一个操作系统来回答,那么请假设 Ubuntu 16.04。
我有一个提供程序 (A),它想通过传入的 TCP 连接向我们发送数据。不幸的是,消费服务 (B) 无法接收入站 TCP 连接。此外,它没有静态 IP,这是另一个要求。
解决此问题的一种方法是将传入 TCP A 端口连接到另一个 TCP 端口 B 的服务,以便消费者可以与 B 建立出站连接。
这不是一个独特的问题[1] [2],使用 socat 我可以做出非常接近我想要的东西:
socat -d -d -d -u TCP4-LISTEN:PORT-A,reuseaddr TCP4-LISTEN:PORT-B,reuseaddr
但是,这存在以下问题:
TCP4-LISTEN:PORT-B,reuseaddr,fork,可以连接但不接收数据。PORT-B(可克服的)有没有办法调整命令,使其成为“永久”并抵抗失败?
我有一台云服务器只托管一个网站(django + gunicorn + nginx),postgres 数据库将部署到另一台云服务器。
在这种情况下,我应该为我的网站创建特殊用户吗?似乎使用 root 更容易,并且它会带来更多的安全风险,但如果我只在那里托管一个应用程序,则不会太多?
Let's Encrypt提供免费的 SSL 证书。与其他付费证书(例如AWS Certificate Manager)相比,是否有任何缺点?
我有一台安装了 cifs 共享(Azure 存储文件)的服务器。有时 ls 返回缓慢(20 秒)。经过一番调试后,我到目前为止发现:
ls /data/some/symlink/directory20秒内返回ls .需要 0.02 秒ls /data/original/location/that/symlinkpoints/to/directory也返回亚秒ls 的 20 秒返回时间似乎受到目录中文件数量的影响。目录越大,花费的时间就越多。
这让我认为这与 ls 处理符号链接的方式有关。就像它必须为每个文件或其他东西解决它一样。
为了调试这个,我想通过 strace 运行 ls 来看看我是否可以看到不同情况之间的系统调用有什么区别。但是如果我跑
strace ls /data/some/symlink/directory it also returns sub second suddenly.
Run Code Online (Sandbox Code Playgroud)
关于为什么通过 strace 运行它会使其速度更快以及如何进一步调试有什么想法吗?
笔者的最佳做法DNS转发[petri.com]建议使用ISP的DNS服务器作为转发器,而不是自己做的递归查询,主要原因是性能。这是有道理的,因为您只执行一个查询,考虑到 ISP 有足够大的缓存和足够流行的网站,可能会立即获得响应。
使用 ISP 的 DNS 服务器的缺点可能是它们的稳定性。过去,ISP 的 DNS 服务器通常不是很稳定。但是,这可以通过简单地转发到名称服务器(例如 1.1.1.1、8.8.8.8 或 9.9.9.9)来解决。
自己进行查找有什么好处?
编辑:使用像 Quad9 这样的公共名称服务器还增加了安全性,因为它可以过滤掉已知的恶意域。
我为一家小公司安装了 Windows Server 2016,因此我不需要在此安装上安装域控制器,对于 RDS,我只需要 RD 许可和 RD 会话主机角色。但只有这些角色没有远程桌面网关,许多教程中都使用它在终端服务器上安装 SSL 证书(例如:https : //ryanmangansitblog.com/2013/03/27/deploying-remote-desktop-gateway- rds-2012/ )。
所以总而言之,我只是没有远程桌面网关的接口来安装 SSL 证书。
是否有任何解决方法来处理它并在我的 RDS 上安装 SSL 证书?
windows ssl remote-desktop-services windows-server-2012-r2 windows-server-2016
我刚刚检查了SSL 服务器测试是否在我的服务器上正确实施了 SSL 证书。我得到了一个档次的一个在他们的排名,但你可以得到一个A +,如果你已经激活HSTS。经过一番搜索,我发现 Google 可能会将 HSTS 视为排名因素。因此,它似乎与 SEO 相关。在实施 HSTS 之前,我有一些问题。
问题 1
如果某些外部 javascript 加载例如我网站上的 http(而不是 https)上的图像,会发生什么情况?HSTS 会阻止整个页面加载还是只阻止特定的“不安全”内容?
问题2
目前(没有 HSTS),如果资源是通过 http 加载的,我会收到“混合内容”警告。如果激活 HSTS,“混合内容”是否真的存在?