由于最近网站服务器被暴力破解过一次导致数据库文件丢失被威胁过一次。
虽然好在本地有数据库备份成功备份没有太大影响,但是这不得不让我们开始留心服务器以及网站的安全方面有所欠缺。
经过一番学习以及交流讨论主要发现一些问题:一开始服务器端口并没有限制属于完全开放的状态,这使得安全性大大降低。并且因为我们之前需要通过Xshell软件进行SSH连接开放了22端口这样就使网站风险提升。同时其他一些业务端口的开启也会增加风险。
以下是一些常用的端口解析:
21端口:21端口主要用于FTP(File Transfer Protocol,文件传输协议)服务。
端口说明:21端口主要用于FTP(File Transfer Protocol,文件传输协议)服务,FTP服务主要是为了在两台计算机之间实现文件的上传与下载,一台计算机作为FTP客户端,另一台计算机作为FTP服务器,可以采用匿名(anonymous)登录和授权用户名与密码登录两种方式登录FTP服务器。目前,通过FTP Windows中可以通过Internet信息服务(IIS)来提供FTP连接和管理,也可以单独安装FTP服务器软件来实现FTP功能,比如常见的FTP Serv-U。
操作建议:因为有的FTP服务器可以通过匿名登录,所以常常会被黑客利用。另外,21端口还会被一些木马利用。如果不架设FTP服务器,建议关闭21端口。
22端口:22端口主要用于SSH(安全外壳协议)
端口说明:安全外壳(SSH)用来加密网管会话,该加密基于RSA,基于TCP端口号22
操作建议:这一服务有许多弱点。如果配置成特定的模式,许多使用RSAREF库的版本有不少漏洞。(建议在其它端口运行SSH)
23端口:23端口主要用于Telnet(远程登录)服务,是Internet上普遍采用的登录和仿真程序。
端口说明:23端口主要用于Telnet(远程登录)服务,是Internet上普遍采用的登录和仿真程序。同样需要设置客户端和服务器端,开启Telnet服务的客户端就可以登录远程Telnet服务器,采用授权用户名和密码登录。登录之后,允许用户使用命令提示符窗口进行相应的操作。在Windows中可以在命令提示符窗口中,键入“Telnet”命令来使用Telnet远程登录。
操作建议:利用Telnet服务,黑客可以搜索远程登录Unix的服务,扫描操作系统的类型。而且在Windows 2000中Telnet服务存在多个严重的漏洞,比如提升权限、拒绝服务等,可以让远程服务器崩溃。Telnet服务的23端口也是TTS(Tiny Telnet Server)木马的缺省端口。所以,建议关闭23端口。
根据以上操作建议,通过腾讯云的安全组-修改规则中关闭端口。
虽然前面的方法一可以使得安全性有所提高但却有一个问题就是使得用软件进行SSH远程连接变得十分不方便,每次用时需要开启,不用时需关闭,于是考虑修改服务器的22端口以防暴力破解,同时也可以使得我们可以正常通过SSH进行远程连接。
cat /var/log/secure | awk '/Failed/{print $(NF-3)}' | sort | uniq -c | awk '{print $2" = "$1;}'
如果发现很多数据, 说明很多软件在登录破解你的服务器, 如果没有错误数据, 那倒问题不大。
首先修改配置文件
vi /etc/ssh/sshd_config #vi打开文件后,按 I键 进入编辑模式,然后按下面的要求添加端口配置,最后按 ESC键 退出编辑模式并输入 :wq 保存并退出vi编辑器
找到#Port 22一段,这里是标识默认使用22端口,修改为如下(新增2666端口):
保存退出
然后我们重启SSH。
/etc/init.d/ssh restart #如果提示服务不存在,那就用 /etc/init.d/sshd restart# CentOS7 则用 systemctl restart sshd.service
这样SSH端口将同时工作与22和2666上。
首先我们添加防火墙规则(示例端口为 2666,自己改):
`iptables -I INPUT -p tcp --dport 2666 -j ACCEPT`
如果不清楚你们是否配置了防火墙开机启动和开机启动读取防火墙配置文件,所以我这里也写上步骤,建议你们都做一下,避免重启VPS后,SSH端口防火墙没有开放导致无法连接服务器。
Ubuntu 系统:
iptables-save > /etc/iptables.up.rulesecho -e '#!/bin/bash\n/sbin/iptables-restore < /etc/iptables.up.rules' > /etc/network/if-pre-up.d/iptableschmod +x /etc/network/if-pre-up.d/iptables
以后需要保存防火墙规则只需要执行:
iptables-save > /etc/iptables.up.rule
测试成功:
取消默认SSH端口 22
vi /etc/ssh/sshd_config
我们再打开SSH配置文件,删除 Port 22 这一行,然后重启SSH即可。
/etc/init.d/ssh restart #如果提示服务不存在,那就用 /etc/init.d/sshd restart# CentOS7 则用 systemctl restart sshd.service。
现在请使用ssh工具连接2666端口,来测试是否成功。如果连接成功了,则再次编辑sshd_config的设置,将里边的Port22删除,即可。
之所以先设置成两个端口,测试成功后再关闭一个端口,是为了方式在修改conf的过程中,万一出现掉线、断网、误操作等未知情况时候,还能通过另外一个端口连接上去调试以免发生连接不上必须派人去机房,导致问题更加复杂麻烦。
至此端口这方面维护完毕。
接下来考虑假如网站被DDos攻击的预防方法
首先对CDN做一个基本的介绍:内容分发网络(Content Delivery Network,CDN),是在现有 Internet 中增加的一层新的网络架构,由遍布全球的高性能加速节点构成。这些高性能的服务节点都会按照一定的缓存策略存储您的业务内容,当您的用户向您的某一业务内容发起请求时,请求会被调度至最接近用户的服务节点,直接由服务节点快速响应,有效降低用户访问延迟,提升可用性。
表面上看这是一个单纯的对网站访问加速作用,但是当有人想通过域名查询IP的时候网站配置了CDN后出了会访问本站服务器还会访问腾讯云本身为了加速配置的服务节点的IP从而可以迷惑对方使他不知道攻击哪个IP。
未配置CDN:
根据腾讯云文档配置CDN(因腾讯云文档对如何配置CDN有详细介绍,在此不再赘述):
配置成功:
通过域名查询:
至此全部完成。