突然收到邮件提示服务器由于发送大量stmp信息被暂停(suspend),应该是被恶意攻击并植入了木马之类。因此远程ssh登录进去,安装杀毒软件和防火墙,来加强一下防范。国内的云服务器如阿里云一般都有统一的安全组配置,在vps外部增加了一层防御,但是海外的服务器就可能是处于裸奔状态了,而这一次的服务器中招极有可能就是在裸奔情况下被攻击的。
1. 杀毒软件ClamAV
1.1 ClamAV的安装与配置
和大部分软件一样,在CentOS下首先要安装EPEL源才能进行ClamAV软件安装。 Cla所以要首先安装EPEL,可以采用两种方法:
第一种,通过命令行:
[root@server_for_product ~]# yum install epel-release
第二种,使用下载好的安装包:
[root@server_for_product ~]
[root@server_for_product tmp]# wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
ls *.rpm
[root@server_for_product tmp]# yum install epel-release-7.noarch.rpm
[root@server_for_product ~]# yum repolist
看到以下字样就代表安装完成
epel/x86_64 Extra Packages for Enterprise Linux 7 – x86_64
查看EPEL源含有的安装包
[root@server_for_product ~]# yum –disablerepo=”*” –enablerepo=”epel” list available | less
1.2 安装ClamAV
在安装了EPEL源后,运行下面的命令安装ClamAV
[root@server_for_product ~]# yum install clamav-server clamav-data clamav-update clamav-filesystem clamav clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd -y
在两个配置文件/etc/freshclam.conf和/etc/clamd.d/scan.conf中移除“Example”字符
[root@server_for_product ~]#sed -i -e “s/^Example/#Example/” /etc/freshclam.conf
[root@server_for_product ~]#sed -i -e “s/^Example/#Example/” /etc/clamd.d/scan.conf
手动更新病毒库
[root@server_for_product ~]# freshclam
1.3 使用ClamAV扫描服务器
扫描所有用户的主目录:
[root@zabbix-agent ~]# clamscan -r /home
扫描您计算机上的所有文件并且显示所有的文件的扫描结果:
[root@zabbix-agent ~]# clamscan -r /
扫描计算机上的所有文件并且显示有问题的文件的扫描结果 :
[root@zabbix-agent ~]# clamscan -r –bell -i /
查杀当前目录并删除感染的文件:
[root@zabbix-agent ~]# clamscan -r –remove
1.4 ClamAV开机启动设置
考虑到资源占用的情况,我并没有把ClamAV设置为开机自动启动,但是有这样需要的时候是可以设置为开机自启动的。
配置开机启动:
[root@server_for_product ~]# systemctl enable clamd@scan
[root@server_for_product ~]# ln -s ‘/usr/lib/systemd/system/clamd@scan.service’ ‘/etc/systemd/system/multi-user.target.wants/clamd@scan.service’
启动并检查服务状态:
[root@server_for_product ~]# systemctl start clamd@scan
[root@server_for_product ~]# systemctl status clamd@scan
看到active字样就表示成功。
1.5 ClamAV使用cron进行计划扫描设置
如果要设置定时扫描系统,也可以利用linux下的cron命令来实现,格式如下:
* * * * * command
第1列表示分钟1~59每分钟用*或者*/1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列表示星期0~6(0表示星期天)
第6列要运行的命令
例如:
[root@zabbix-agent ~]# crontab -e |
0 23 * * 6 /usr/bin/clamscan –infected -r / -l /var/log/clamscan.log |
[root@zabbix-agent ~]# vim /etc/crontab |
0 23 * * 6 /usr/bin/clamscan –infected -r / -l /var/log/clamscan.log |
[root@zabbix-agent ~]# crontab -l -u root |
0 23 * * 6 /usr/bin/clamscan –infected -r / -l /var/log/clamscan.log |
[root@zabbix-agent ~]# systemctl start crond.service[root@zabbix-agent ~]# systemctl status crond.service |
[root@zabbix-agent ~]# systemctl enable crond.service |
2. 防火墙软件firewalld
2.1 安装防火墙软件
在 centos7中已经将防火墙改为firewalld, 但默认的centos7 minimal是不自带firewalld,因此如果系统中没有安装防火墙,需要先安装一下。
# yum install -y firewalld
安装完防火墙之后需要启动防火墙。这里要注意的是,如果是通过远程ssh方式登录服务器,贸然启用防火墙可能是给自己挖了个坑,因为从此之后自己可能没有办法再ssh进服务器了。因此,在启用防火墙之前必须有PlanB,要么云服务器的供应商有网页版的登录工具可以进去开启端口,要么先找到配置文件把ssh端口写进去。
2.2 systemctl服务管理工具
systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。
启动一个服务:systemctl start firewalld.service
关闭一个服务:systemctl stop firewalld.service
重启一个服务:systemctl restart firewalld.service
显示一个服务的状态:systemctl status firewalld.service
在开机时启用一个服务:systemctl enable firewalld.service
在开机时禁用一个服务:systemctl disable firewalld.service
查看服务是否开机启动:systemctl is-enabled firewalld.service
查看已启动的服务列表:systemctl list-unit-files|grep enabled
查看启动失败的服务列表:systemctl –failed
2.3 使用systemctl管理防火墙
启动: systemctl start firewalld
关闭: systemctl stop firewalld
查看状态: systemctl status firewalld
开机禁用 : systemctl disable firewalld
开机启用 : systemctl enable firewalld
2.4 使用防火墙firewall-cmd命令管理防火墙
查看版本: firewall-cmd –version
查看帮助: firewall-cmd –help
显示状态: firewall-cmd –state
查看所有打开的端口: firewall-cmd –zone=public –list-ports
更新防火墙规则: firewall-cmd –reload
查看区域信息: firewall-cmd –get-active-zones
查看指定接口所属区域: firewall-cmd –get-zone-of-interface=eth0
拒绝所有包:firewall-cmd –panic-on
取消拒绝状态: firewall-cmd –panic-off
查看是否拒绝: firewall-cmd –query-panic
2.5 打开指定端口,查看状态示例
# firewall-cmd –remove-port=9200/tcp –permanent
# firewall-cmd –add-port=9300/tcp –permanent
# firewall-cmd –reload #重新加载
# firewall-cmd –list-all
#查看防火墙配置,可知9200端口已经被禁用
# firewall-cmd –get-services
# firewall-cmd –add-service=http –permanent
# firewall-cmd –reload