增加安全性的措施

来自Tencent的建议自建数据库加固方法:

  1. 密码强化,使用复杂密码设置,防止被破解。
  2. 不推荐使用默认的端口3306, 换一个其他不常用的端口,避免通过端口进行攻击;
  3. 不推荐开启远程访问, my.cnf 配置文件中添加 bind-address =127.0.0.1, 仅配置本地访问。
  4. 如果有远程访问的需求,建议收敛账户的主机Host配置,允许特定安全网段访问数据库。
  5. 使用云主机的安全组功能,限制访问来源和端口。
  6. 定期修改账户密码,使用12位以上大小写字母、数字、特殊字符。
  7. 数据库开启bin-log日志可以参考:https://blog.csdn.net/king_kgh/article/details/74800513

服务器开启防火墙

0.如果没有ufw,则需要安装
$ sudo apt-get install ufw
1.查看防火墙状态(inactive状态是防火墙关闭状态 active是开启状态)
$ sudo ufw status
2.开启防火墙
$ sudo ufw enable
3.关闭防火墙
$ sudo ufw disable
4.ubuntu其他防火墙命令

sudo ufw default allow/deny:外来访问默认允许/拒绝
sudo ufw allow/deny 20:允许/拒绝 访问20端口,20后可跟/tcp或/udp,表示tcp或udp封包。(eg:sudo ufw allow 22/tcp)
sudo ufw allow/deny servicename:ufw从/etc/services中找到对应service的端口,进行过滤。
sudo ufw allow proto tcp from 10.0.1.0/10 to 本机ip port 25:允许自10.0.1.0/10的tcp封包访问本机的25端口。
ufw delete allow/deny 20:删除以前定义的"允许/拒绝访问20端口"的规则
sudo ufw allow from 192.168.1.100 允许此ip访问本机的所有端口

5.拦截特定IP地址
$ sudo ufw deny from {ip-address-here} to any
显示包含已设规则的防火墙状态
输入:
$ sudo ufw status numbered或 sudo ufw status
6.拦截特定IP及端口
$ sudo ufw deny from {ip-address-here} to any port {port-number-here}

Nginx防护URL侵入

在nginx.conf文件加入如下代码,并重启nginx服务docker restart 容器id

if ($request_uri ~* ^(.*)think|invoke|gs.gif|.exe|.do|captcha|myadmin|sql|FxCodeShell|.jsp|public|/?XDEBUG) {
        return 403;
}

if ($query_string ~* ^(.*)FxCodeShell.jsp) {
        return 403;
}

如图:

WebShell安全防护

webshell就是以aspphp、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门。黑客在入侵了一个网站后,通常会将asp或php后门文件与网站服务器WEB目录下正常的网页文件混在一起,然后就可以使用浏览器来访问asp或者php后门,得到一个命令执行环境,以达到控制网站服务器的目的。

防范webshell的最有效方法就是:可写目录不给执行权限,有执行权限的目录不给写权限。
其次:
1.对asp上传程序的调用一定要进行身份认证,并只允许信任的人使用上传程序。
2.利用白名单上传文件,不在白名单内的一律禁止上传。
3.限制上传文件的后缀名验证