我一直在做关于保护 linux web 服务器的“广泛”研究。除了所谓的“基础”(删除未使用的服务、强化 ssh、iptables 等)之外,包括反 rootkits (Tripwire) 和反病毒 (ClamAV) 是否明智?这些对于网络服务器来说是否太过分了?我知道这是一个非常模糊的问题,但我很好奇其他人的意见。
我未来的环境: - ubuntu 10.04 - fail2ban - nginx 0.8.x - php 5.3.x (suhosin, apc, memcached) - mongodb 1.6.x
可能的应用: - 网络服务 - 用户上传的网络应用程序(图片、pdf 等) - 典型网站(表格等)
如果您有任何其他提示,请随时添加!
谢谢
随着nginx我可以指定Access-Control-Allow-Origin使用像一个通配符*.mydomain.com?
它看起来像:
add_header Access-Control-Allow-Origin *.mydomain.com;
Run Code Online (Sandbox Code Playgroud)
谢谢。
任何人都可以解释(或知道来源)提供有关limits.conf 中项目的详细信息吗?手册页没有提供太多细节。
例如它说:
rtprio
maximum realtime priority allowed for non-privileged processes (Linux 2.6.12 and higher)
priority
the priority to run user process with (negative values boost process priority)
Run Code Online (Sandbox Code Playgroud)
这些有什么不同?他们可以采取什么价值观?他们默认是什么?
有些项目是显而易见的,但我在哪里可以找到更好的解释(默认值、范围、它们的实际含义等):
data
maximum data size (KB)
fsize
maximum filesize (KB)
memlock
maximum locked-in-memory address space (KB)
cpu
maximum CPU time (minutes)
nice
maximum nice priority allowed to raise to (Linux 2.6.12 and higher) values: [-20,19]
Run Code Online (Sandbox Code Playgroud)
超过 CPU 时会发生什么?进程被杀死?只有一个进程或整个用户被禁止使用 CPU?这是一个会话还是每分钟的最长时间?
我试图找到答案,但我能找到的只是一个几乎没有提供任何细节的手册页。
Citrix Netscaler 有一个有趣的属性,它将信息嵌入到发送到主机的 TCP 数据包中。此属性以这样一种方式回传给 Netscaler,Netscaler 可以使用它来确定这必须采用哪个虚拟服务器、主机和路由。
向主机回显专有信息的能力具有有趣的应用。
Citrix Netscaler 如何实现这一点(它在哪里填充位),以及数据包中的哪些其他位置 Netscaler(或类似设备)理论上可以填充数据?
哪些设备会(或不会)允许此自定义数据原封不动地通过?
欢迎来到心血来潮之后的世界。我们已经修补了我们的服务器并正在更换我们的 SSL 证书。但仅仅因为我们的服务器是固定的,并不意味着互联网的其余部分是固定的。我们有员工,他们使用互联网交换信用卡号和登录凭据等机密。他们正在向我们寻求建议。
我们可以建议我们的客户使用Heartbleed 测试页面来查看他们想要访问的站点是否存在漏洞。如果一个站点返回正面,则不要与其交换机密。但是,如果一个网站没有不对Heartnet返回正数,然后根据情况可以是任意的:
有没有什么办法,我们可以给我们的员工,他们输入他们的信用卡号码前到表单,告诉良好的从场景坏的呢?
我们如何指导我们的员工尽量减少他们接触受 Heartbleed 破坏的服务器的风险?
我想阻止其他人在 nmap 标准扫描(非特权)中看到我的端口被过滤。假设我打开了以下端口:22、3306、995 和配置如下的防火墙:
-A INPUT -p tcp -m tcp --dport 22 -j DROP
-A INPUT -p tcp -m tcp --dport 3306 -j DROP
-A INPUT -p tcp -m tcp --dport 995 -j DROP
Run Code Online (Sandbox Code Playgroud)
这是 nmap 扫描的结果:
[+] Nmap scan report for X.X.X.X
Host is up (0.040s latency).
Not shown: 90 closed ports
PORT STATE SERVICE
22/tcp filtered ssh
995/tcp filtered pop3s
3306/tcp filtered mysql
Run Code Online (Sandbox Code Playgroud)
它将这些端口显示为已过滤,因为我的服务器没有为 SYN 回复 RST。有没有办法修改这种行为?例如:如果 iptables 防火墙阻止了一个端口,则为 SYN 回复 RST,而不是保持沉默(不回复任何内容)?
我正在使用 Ubuntu Server 16.04 打包的 Asterisk 13.1.0 来运行纯 VoIP 电话系统。Asterisk 有一个模块——phoneprov允许它模板化特定行的配置文件并从其内置的 HTTP 服务器提供它们。我想用它来配置我的 Polycom IP 电话,但我不知道如何安全地这样做。更复杂的是,我已经在使用内置的 HTTP 服务器进行 SIP over WebSockets。
据我所知,该phoneprov模块根本没有身份验证或授权机制。它似乎只是向任何询问的人提供任何文件。由于生成的配置文件包含注册为一行所需的所有凭据,因此可以向内置 HTTP 服务器发出 HTTP 请求的任何人都可以注册为通过phoneprov. 这似乎是一个太明显的安全问题,不可能存在于像 Asterisk 这样备受瞩目的软件中,而在文档中甚至(据我所知)在整个 Internet 上都没有看到它。我在这里错过了什么吗?
至少在我看来,验证用于配置的硬件 IP 电话的理想方法是通过 TLS 客户端证书。几乎所有主要制造商的手机都带有由私有 CA 签署的客户端证书,该证书通过 MAC 地址识别手机。由于配置文件也由 MAC 地址提供服务,因此将证书中的 MAC 与 URL 中的 MAC 进行匹配并以这种方式控制访问非常简单。
这就是我的基于 nginx 的配置服务器(它处理除线路凭据之外的所有配置)所做的。然而,Asterisk 永远不支持 TLS 客户端身份验证。它有一个 TCP 和 TLS 套接字侦听器的常见实现,我通过阅读源代码确认它不支持请求客户端证书。
更正:Asterisk 的tcpctls系统确实支持客户端证书验证,但它只能验证客户端证书是否有效以及(可选)是否commonName与客户端的主机名匹配。虽然可以为 Asterisk HTTP 服务器启用该选项,但它对保护没有多大帮助,phoneprov因为该模块不使用主机名(或其他任何内容)进行授权。它也会通过 …
我正在使用 Fail2Ban 并根据需要对其进行了配置。这是从 nginx/error.log 读取日志,并根据有关 maxretry 和计时集的配置进行操作。问题是这是否可能根据状态代码有不同的规则?
例如,我想阻止任何人404 Status code在 5 分钟内获得 10 ,但阻止任何人获得 3 403 Status code。
任何帮助将不胜感激,提前致谢。
昨天我们的 Digital Ocean 服务器遇到了类似攻击的问题。出站流量突然增加到700Mbps,而入站流量一直保持在0.1Mbps左右,甚至没有增加一次。流量持续了几分钟,直到假设我们正在执行 DoS(这是合理的),Digital Ocean 将我们的服务器从网络上切断。
我有两个假设:要么有人黑进了我们的服务器(在攻击之后我意识到我的同事已经启用了使用密码的 SSH 登录),要么存在某种我不知道的攻击。
任何人都可以为我清除这种情况吗?如果确实有一种DoS,流量看起来像那样,请教育我。
我想测试 ssh 服务器是否允许密码并立即关闭连接而不实际尝试登录。
像这样的东西:
allows_password=$(ssh --some-option example.com)
if [ -z "$allows_password" ]; then
echo "Insecure Server Options"
else
echo "Insecure Password Access is not Allowed, Great!"
fi
Run Code Online (Sandbox Code Playgroud)
我实际上以前做过一次,但我找不到旧的脚本或文档。失落的一天。:-/