我很快就要启动一个网站,但我希望它是安全的/私密的,以便进行测试。它现在在它的真实域上;我已经添加了 htaccess 身份验证(使用 htpasswd)。我在 apache2 / Ubuntu 16.04 上
我想到a2dissite
在一天结束时每当我完成工作时就使用它,这样就甚至不可能访问域/显示页面。
我在我的 apache2 配置文件中启用了这些:
ServerTokens Prod
ServerSignature Off
TraceEnable off
和 :
<Directory /var/www/html>
Options -Indexes
</Directory>
还可以做些什么来增强安全性甚至使网站完全私密?
编辑 - 我还需要通过 htaccess + htpasswd 进行身份验证,我忘了说,这是先完成的。
答案1
我不会这样做a2dissite
,因为它会默认VirtualHost
替换已指向 DNS 中服务器的域名,这可能会影响您的 SEO。此外HTTP 基本身份验证:
- 您可以限制对用于构建站点的 IP 地址或块的访问。
- 即使在开发过程中,我也会强制使用 HSTS 进行 TLS。
例如
<VirtualHost *:80>
ServerName example.com
Redirect permanent / https://example.com/
</VirtualHost>
<VirtualHost *:443>
ServerName example.com
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
</IfModule>
<Location />
<RequireAny>
Require ip 192.0.2.100
Require ip 198.51.100.0/24
</RequireAny>
</Location>
</VirtualHost>
答案2
限制访问的方法有很多,下面是一个例子,它允许任何一种
经过身份验证的、属于“my_valid_group”组的成员的用户
或者来自本地主机:客户端 IP 127.0.0.0/8 或 ::1 或与服务器相同的 IP
或来自特定主机名(如动态 DNS 主机),无需匹配反向查找,如下所述
forward-dns
<Location />
AuthType Basic
AuthName "This requires user name and password"
AuthUserFile /etc/apache2/.htpasswd
AuthGroupFile /etc/apache2/.htgroup
# <RequireAny> # this is not needed: it's the default
# users listed in AuthUserFile + in the group in AuthGroupFile
Require group my_valid_group
Require local
Require forward-dns myhost.dynamic.example.com
# </RequireAny>
</Location>
其他可能性:
Require ip ...
就像 Esa Jokinen 的回答一样Require host example.com
:“仅当正向和反向 DNS 一致并且主机名与 [字符串结尾] 匹配时才允许访问。”Require env ...
SetEnv
:检查先前使用或设置的环境变量SetEnvIf
ETC。
答案3
使用netsparker测试一些基本的东西,或者你可以雇佣一个渗透测试人员(更贵)。但是有免费的漏洞赏金计划,你可以把你的网站放在那里,让渗透测试人员报告漏洞。(我认为这有点冒险,因为你不知道谁会看到你的程序。一个道德黑客或只是一个试图破坏你的系统的孩子)。