memcached
Memcached是一套常用的key-value缓存系统,由于它本身没有权限控制模块,所以对公网开放的Memcache服务很容易被攻击者扫描发现,攻击者通过命令交互可直接读取Memcached中的敏感信息。
真·控制
- 调用端限制
# 通过 IPtalbes 对 memcached 服务端口进行访问限制控制。只允许指定的IP地址。 |
- 使用端限制
# 如果Memcached没有在公网开放的必要,可在Memcached启动时指定绑定的IP地址为 127.0.0.1 。 |
伪·控制
- 最小化权限
使用普通权限账号运行,指定Memcached用户。例如,在Linux环境中运行以下命令来运行Memcached: |
- 修改默认端口
# 修改默认11211监听端口为11222端口。在Linux环境中运行以下命令: |
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 实例
创建配置文件
CentOS 下的默认地址:
/etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""再 Copy 出一个 memcached1 文件,端口改为 11311
创建对应的 Service 文件,参考: linux-service
[Unit]
Description=Memcached
Before=httpd.service
After=network.target
[Service]
Type=simple
EnvironmentFile=-/etc/sysconfig/memcached
ExecStart=/usr/bin/memcached -u $USER -p PORT -m $CACHSIZE -c $MAXCONN $OPTIONS
[Install]
WantedBy=multi-user.target再 Copy 出一个 memcached1.service 文件,配置文件行改为
EnvironmentFile=-/etc/sysconfig/memcached1
修改下默认的启动命令参数,加上 bind 参数
ExecStart=/usr/bin/memcached -l 127.0.0.1 -u $USER -p PORT -m $CACHSIZE -c $MAXCONN $OPTIONS
ExecStart=/usr/bin/memcached1 -l 127.0.0.1 -u $USER -p PORT -m $CACHSIZE -c $MAXCONN $OPTIONS
启动和管理实例
systemctl stats/start/stop memcached.service