使用checkbot检测

checkbot是一个Chrome插件,可以检测安全,下载地址:https://www.checkbot.io/,如果有安全问题,会有如下提示:

修复clickjack protection, XSS Protection的安全问题:

解决方法:安装HTTP Headers插件,然后按照图中配置

X-Frame-Options:SAMEORING

X-XSS-Protection: 选择 mode=block

X-Content-Type-Options: nosniff

Strict-Trasport-Security: 选择includeSubDomains,Prload,Max-Age选择1年。

配置成功以后,可以继续使用Checkbot测试一下,或者使用浏览器的开发模式自己检查一下Header。

宝塔面板的配置

关闭无用的端口

比如FTP不用的话,就关闭掉。检查其余端口,不需要的不要放行。

步骤:宝塔后台——>安全——>放行端口这个地方,删除FTP的端口。

开启防火墙

搜索“免费防火墙”,可以看到一个Nginx免费防火墙,然后安装。

Nginx免费防火墙:

Nginx免费防火墙配置:

初级防御:开启CC防御和常见扫描器防御,一般不会影响到网站的功能。

高级防御:开启GET-URL过滤,开启GET-参数过滤,开启POST过滤,开启User-Agent过滤,开启常见扫描器。禁止海外访问一定要注意,如果面向国外的电商站,一定不要勾选这个,否则国外客户就访问不了了。

注意:这一步措施执行后,一定要测试一下自己的站,如果遇到Elementor不能使用,爬虫不能爬取等,就先不要开启了。

PHP组件安装bt_safe插件防止跨站攻击

PHP文件配置

关闭php-display errors

步骤:在宝塔面板中,找到PHP,然后打开管理面板,点击”配置文件“,搜索”display_erros”,这个地方改为Off,display_erros=Off。

改完以后,在服务这个位置“重启一下PHP服务器”。

如何检测PHP配置信息是否正确?

可以使用php-info这个界面去看配置是否成功

在管理界面的左下角,有一个phpinfo,然后点击“查看phpinfo()”,就会出来一个信息界面,在这个界面中去搜索自己的配置,就能看到对应的结果。

WordPress后台配置

安装“Wordfence防火墙”插件

很出名的一个WordPress防火墙插件,可以屏蔽一些登录尝试等。免费版就可以预防,配置好邮件通知,会经常通知你。

安装WPS Hide Login插件

这个插件可以更改WordPress后台登录地址。登录WordPress后台,点击设置,选择WPS Hide Login,然后在登录地址这个地方,填写自己期望的地址,点击保存,下次登录的时候就会使用这个新地址才能登录后台。这样可以防止一些针对WordPress登录的暴力破解。

CloudFlare的安全配置

开启CloudFlare的UnderAttack模式.

遇到攻击的时候开启,这样访问网站的时候就会遇到一个质询页面。俗称5秒盾。

步骤:进入https://dash.cloudflare.com/,选择域名,点击概述,就在右侧有一个“Under Attack模式”,点击开启即可,攻击结束以后,可以关闭这个模式。关闭的时候会让你选择安全等级,默认是“中”。

CloudFlare设置防火墙规则,过滤访问wp-login.php和xmlrpc.php。

打开Cloudflare,点击防火墙,点击防火墙规则。

创建防火墙规则。

字段选择URL路径,运算符选择“包含”,值填写“wp-login.php”。后面选择OR。

然后字段继续选择URL路径,运算符选择包含,值填写xmlrpc.php。

操作选择:JS质询或者质询(Captcha)

如图:

CloudFlare设置HSTS

CloudFlare说:HTTP 严格传输安全 (HSTS),对您的网站强制执行 Web 安全策略。

注意:一定要把网址启用SSL以后再配置这个,否则会导致网站不可用。

配置步骤:CloudFlare首页—>SSL/TLS—>边缘证书—>HTTP 严格传输安全 (HSTS),然后点击更改HSTS设置。

  • 启用 HSTS (Strict-Transport-Security):勾选上。
  • 最长期限标头 (max-age)选择推荐的6个月。
  • 将 HSTS 策略应用于子域 (includeSubDomains):如果没有二级域名的话,可以勾选。或者二级域名都已经启用SSL,也可以勾选。如果有的域名没有启用SSL,勾选了这个会导致二级域名无法访问。
  • 预加载:勾选上。
  • 无嗅探标头:勾选上。

宝塔默认网站的设置

1. 防止其余域名解析到你的IP上

防止别人的域名解析到你的IP上,比如你的IP是8.8.8.8,那么别人在域名中配置A记录为8.8.8.8,就会镜像到你的网站上。如果使用的是宝塔的话,那么宝塔会有一个默认设置,如下图所示:

直接在浏览器中输入http://8.8.8.8(请将8.8.8.8替换为自己的IP),应该会有如下反应:

2. 防止网站的SSL证书暴露域名

使用https访问可以获取IP对应的域名

我们输入https,双斜杠加上IP的时候,就会看到如上结果,这个时候就会显示“它的安全证书来自xxxxx.com”,这个时候就暴露了这个证书是来自这个域名的了。

例如,输入:https://8.8.8.8,会看到如下结果:

如何解决https证书暴露域名的问题?

步骤:设置一个假的网站,将其设置为默认网站,上传一个假的证书

生成一个假网站证书:

点击:https://myssl.com/create_test_cert.html

点击刚才创建的假网站,选择SSL,填入我们做好的证书:

私钥填入秘钥这个位置,证书链填入证书这个位置。

这个时候我们再用https://8.8.8.8访问自己的网站:

这个时候我们看到,已经不显示域名信息了。点击继续访问,访问到了一个默认网页。

如何不让防止默认网站显示index.html?

是否可以直接返回一个错误码?

进入刚才的默认网站,点击”配置文件“,在配置中,servername后面加一行 return 500;

return 500 error for default website

再访问网站如下显示:

安全工具

检测自己网站的IP是否泄露:

https://search.censys.io/ (这个网站可能每天会扫IP,如果被记录了,修复一下漏洞,过几天就没有了)

https://fofa.so/

https://dnsdb.io/

附录:

还有几个知识点没有研究明白,比如:

Cloudflare需要自己写规则。搜索页要加验证码,最好用Google搜索,这个解决好,CC攻击等于白费力气。——论坛里请教,大佬告知的,有时间了再学习学习。