单位遇到的一次网络攻击及分析
2020-12-30西安王震华
■ 西安 王震华
笔者单位的核心防火墙启用了VRRP主备模式,但近期发现不规律的网络中断,经过一段时间观察和登录核心防火墙查看日志,发现核心防火墙会出现主备状态翻滚。在防火墙区域启用流量分析工具,发现DMZ区一台Linux服务器会随机性向外发送大量数据包,不断建立TCP连接,最大流量可达8Gb/s,阻塞上行带宽。
此服务器操作系统版本为RedHat 6.5,上面部署了业务系统,部署时开放了用户自定义的Tomcat和Nginx负载均衡端口。此系统使用不多,系统本身不可能耗费太多网络资源,因此笔者认为遭到非法流量攻击的可能性较大。
初步分析网络攻击情况
首先使用“sar -n DEV 210”命令,意为间隔2秒统计一次网络信息,总共统计10次。发现txpck/s即每秒发送的数据包数值较大,服务器确实出现大量发包的问题,因此笔者怀疑是被植入了Rootkit恶意软件。
先使用Wondershaper工具对服务器上传速度作出限制,以免影响其他服务器正常使用。接着使用Rootkit检测工具Rkhunter对系统文件进行分析,并对服务器系统命令和可信版本MD5值做出对比,发现/usr/bin/.sshd被人为修改,并在系统中添加了root权限账户。
进一步分析
首先分析/var/log下的日志文件,使用last命令获得用户最近登录信息,发现root用户于某日15:10通 过ip(:2.0)登录系统。其他日志IP均为合法地址,笔者怀疑该用户通过其他方式登录系统。使用“netstat-ntlp”命令对系统中开启的端口进行排查,发现VNC占用了5902端口及相应其他端口。通过“service vncserver status”命令查看VNC处于开启状态。查看VNC配置文件后发现VNC用户为默认的“2:root”,登录口令为默认“123456”,为了验证VNC登录的IP地址,下载VNC Viewer后通过图形界面登录系统,使用last命令查看系统后发现新登录的IP为(:2.0),通过外网可以Telnet通此端口,由此可以判断非法攻击者通过扫描不同IP网段的5902端口后发现此端口开启,并使用默认的用户名和口令进行系统登录,然后植入Rootkit。
对RedHat 6.5的默认防火墙软件iptables配置进行查看后发现,配置文件中:INPUT ACCEPT [0:0],防火墙软件对所有的input链默认同意,用户未将其改为:INPUT DROP [0:0]后,并自定义规则。
系统被Rootkit攻击后,相关文件会自启动并且受到保护,因此系统变得不再安全,通过更换操作系统,才能彻底解决问题。
受到网络攻击后的总结
在经历了此次网络攻击后,笔者总结了以下几点经验教训。
1.部署系统时应该尽量使用较高版本的操作系统,仔细检查系统中存在的端口和默认开启的应用。
2.在应用防火墙中对开启的端口做出限制,只放行自己开启服务的端口,避免其他端口映射到互联网上。
3.禁止root用户直接通过SSH登录到系统上,避免使用密码登录。应该使用专门的登录账户登录通过私钥进行登录,然后通过su命令进行切换。
具体的安全防护措施(以Centos 7.5为例)如下:
1.只允许用户通过DMZ区SSH登录,禁止通过其他网段SSH登录。
(1)修改/etc/hosts.allow文件:
sshd:192.*.*.*:allow
(2)修改/etc/hosts.deny文件:
sshd:all
2.创建登录用户,采用私钥的方式进行登录,禁止root用户通过SSH登录,更改SSH默认端口。
(1)增加用户并创建密码:
useradd XXX passwd XXX
(2)在用户目录下新建.ssh目录,并将其目录权限改为700(仅用户自身有读写操作权限):
mkdir .ssh
chmod 777 .ssh
(3)进入.ssh目录,使用ssh-keygen命令生成RSA密钥对:
ssh-keygen
(4)在.ssh目录中新建一个文件名为authorized_keys,将公钥内容拷贝到该文件,并将文件权限改为600(仅用户自身有读写权限):
touch authorized_keys
cat id_rsa.pub >>authorized_keys
chmod 600 authorzied_keys
(5)修改sshd_config配置:
禁用root账户登录
PermitRootLogin no
是否:sshd去检查用户家目录或相关档案的权限数据
StrictModes no
是否允许用户自行使用成对的密钥系统进行登入行为
RSAAuthentication yes
PubkeyAuthentication yes
将自制的公钥数据就放置于用户家目录下的.ssh/authorized_keys内。
AuthorizedKeysFile.ssh/authorized_keys
禁用密码登录
PasswordAuthentication no
更改SSH端口
port xxxx;
修改完毕后重启sshd服务
systemctl restart sshd
3.开启Firewalld防火墙,并自定义规则,放行应用端口。
(1)开启防火墙:
systemctl start firewalld
(2)开启端口:
firewall-cmd--zone=public --addport=XXX/tcp–permanent