阿里云ECS服务器实例提示有几个基线配置不当,其中一个风险等级为中危的memcached基线检测。
漏洞详细描述
检查项: memcached启动权限检测
当前值: root
加固建议: 创建memcached低权限账号(例如:useradd memcached),并在memcached启动时加上-u memcached。注意:在切换低权限账户启动时,需要将memcached文件目录使用chown -R memcached:memcached修改上述目录权限
解决方案
其实不记得什么时候安装过这个memcached的,但是既然提示了那就看看,首先确定下其安装:
[云入门_Yunrumen.com ~]# find / -name memcached
/usr/local/include/memcached
/usr/local/bin/memcached
[云入门_Yunrumen.com bin]# ps aux|grep memcached
root 1969 0.0 0.0 341360 604 ? Ssl 2017 8:20 /usr/local/bin/memcached
-d -m 256 -l 127.0.0.1 -p 11211 -u root
可以看到确实已经安装并启动,其中-u root说明了目前正是在以root权限运行,这也正是阿里云提示启动权限检测的原因了。其实-l 127.0.0.1已经限制了只能本机访问memcached,除非有人侵入了你的主机,否则是安全的,所以即便是提醒这是个中危风险,也可以选择忽略。想要更踏实,或者看着有个风险提示就碍眼,那就继续啦。
提醒,开始任何操作之前,请确保系统已经备份了哦!
下边开始修改root为一个低权限账号memcached。
首先添加用户:
[云入门_Yunrumen.com bin]# useradd -d /home/memcached -m memcached
更改属主和组:
[云入门_Yunrumen.com bin]# chown memcached:memcached /usr/local/bin/memcached
[云入门_Yunrumen.com bin]# ls -l /usr/local/bin/memcached
-rwxr-xr-x 1 memcached memcached 452521 Feb 27 2017 /usr/local/bin/memcached
然后停止memcached,命令如下:
[云入门_Yunrumen.com bin]# ps -ef |grep memcached
root 1969 1 0 2017 ? 00:08:21 /usr/local/bin/memcached -d -m 256 -l 127.
0.0.1 -p 11211 -u rootroot 19683 19477 0 01:09 pts/0 00:00:00 grep memcached
[云入门_Yunrumen.com bin]# kill 1969
[云入门_Yunrumen.com bin]# ps -ef |grep memcached
root 19685 19477 0 01:09 pts/0 00:00:00 grep memcached
最后重新启动memcached,命令如下:
[云入门_Yunrumen.com bin]# memcached -d -m 1024 -u memcached -l 127.0.0.1 -p 11222 -c 1024 -P /tmp/memcached.pid
检查启动成功:
[云入门_Yunrumen.com bin]# ps -ef |grep memcached
502 19693 1 0 01:16 ? 00:00:00 memcached -d -m 1024 -u memcached -l 127.0.0.1 -p 11222 -c 1024 -P /tmp/memcached.pidroot 19702 19477 0 01:16 pts/0 00:00:00 grep memcached
可以看到,使用memcached用户启动,占用内存1024兆,限制了只能本机访问,端口从默认的11221变成了11222,进程保存到 /tmp/memcached.pid。
关于memcached
Memcached是一套常用的key-value缓存系统,由于它本身没有权限控制模块,所以对公网开放的Memcache服务很容易被攻击者扫描发现,攻击者通过命令交互可直接读取Memcached中的敏感信息。
Memcached命令参数说明
- -d 是指启动一个守护进程。
- -m 是指分配给Memcached使用的内存数量,单位是MB,以上为1024MB。
- -u 是指运行Memcached的用户,推荐使用单独普通权限用户memcached,而不要使用root权限账户。
- -l 是指监听的服务器IP地址,例如指定服务器的IP地址为127.0.0.1。
- -p 是用来设置Memcached的监听端口,默认端口为11211。建议设置1024以上的端口。
- -c 是指最大运行的并发连接数,默认是1024。可按照您服务器的负载量来设定。
- -P 是指设置保存Memcached的pid文件,例如保存在 /tmp/memcached.pid 位置。
推荐学习资料:
Memcached系统防护加固,应对目前流行的Memcached 超大型DRDoS攻击
对于正在使用Memcached系统的用户,为了避免被攻击者利用,使Memcached成为攻击源,对外发起攻击流量,影响自身系统性能,我们提供如下几点建议。
1)在边界网络设备上配置URPF策略,过滤外发的虚假源IP报文;
2)在Memcached系统前进行深度检测,直接过滤报文特征中set key 0 900 64000的第三个字段过大的数据包,这样做可以在Memcached系统被修改利用成为攻击源前进行拦截;
3)对Memcached服务进行安全检查,查看Memcached服务是否监听UDP端口。查找Memcached进程,查看是否有-l参数,如果没有则默认为0.0.0.0。若Memcached服务不需要监听UDP,禁用UDP。