以前用的VPS快到期了,换了个低端Ubuntu VPS,一个月大约35元人民币。
之前用的是windows VPS,1G RAM、2CPU、7个IP,配置更高,流量也更多,方便跑自己写的小程序。
下面简述我对VPS做过的一些安全配置:
1. 修改SSH端口号
ssh连接之后,输入:
vi /etc/ssh/sshd_config
将Port 22修改为监听另一个端口号即可,比如55555。
修改后重启一下ssh服务:
service ssh restart
以后就可以使用对应的55555端口连接ssh了。
2. 禁止root远程登录ssh
首先建一个普通用户, somebody是某个方便你记忆的用户名:
useradd somebody
设置密码:
passwd somebody
添加好用户,再禁用root,在终端输入:
vi /etc/ssh/sshd_config
找到 “PermitRootLogin yes”,将yes修改为no。
同样的,重启ssh服务,之后root就不能远程登录了。
平日使用上面建立的somebody远程登录ssh,需要权限的时候,键入su切换到root身份即可。
3. 对访问wp-login.php进行身份认证
如果不需要让用户自主注册,可以不允许访客直接访问wp-login.php这个登陆页。
改名是个方法,也可以配置身份认证。下面的方法适用apache:
首先创建一个文件,保存认证信息,输入命令:
htpasswd -c /var/somewhere/auth-test testuser
认证信息的保存路径是/var/somewhere/auth-test,用户名为testuser。
然后在web站点的根目录下,创建或追加.htaccess文件,内容如下:
<filesMatch “wp\-login\.php”>
AuthUserFile /var/somewhere/auth-test
AuthType Basic
AuthName “Blog Admin Auth”
require valid-user
</filesMatch>
这样, 在每次访问wp-login.php时,就需要先进行身份认证了。访问这里试试
3. 对访问wp-admin目录要求身份认证,并对某些文件例外
操作与上面类似,认证信息文件可以跟上面使用同一个,直接到wp-admin目录下创建.htaccess文件。
但比较麻烦的是,我们可能需要对某些文件例外,不要求认证。
比如/wp-admin/admin-ajax.php这个文件,就是WP Super Cache缓存插件会匿名使用到的。
所以我们仍然需要使用正则表达式来建立规则:
<filesMatch “^(?!.*?ajax).*$”>
AuthUserFile /var/somewhere/auth-test
AuthType Basic
AuthName “Blog Admin Auth”
require valid-user
</filesMatch>
上面的规则是说,包含ajax字符串的文件可以直接访问,而其他文件,则需要先进行身份认证。