vps安全配置(一)
背景故事
本周一(2016.05.23)上午刘同学的服务器上的数据被清空,对方勒索3个比特比,目前比特比价格在2900+,3个比特币近9000大洋。 网络上没有绝对安全,能做的就是尽量提高黑客暴力猜解的成本。这里总结下关于ssh安全方面的设置。
一 配置说明
- 修改ssh默认端口
修改端口后,对方依旧可以靠扫描端口来尝试,不过服务器一般还会有http之类的端口,这里只是增加了扫描的成本。
- 禁止root远程登录
root用户是每个系统都存在的用户,如果不禁止root远程登录,土贼在暴力猜解时,只需要猜解密码而不需要猜解登录的用户名。
- 禁止使用密码登录
我们应该选择使用密钥认证方式来登录。密钥生成选择RSA或 ecdsa算法,我自己选择的是2048bit RSA算法。
- 禁止普通用户执行 su 命令
这条设置是如果普通用户权限被拿到 也无法执行更高权限的命令,而且便于与其他人合作时授予别人普通帐号权限。
- 设置一个sudo用户
禁止了root,禁止了su ,那么需要一个root权限的管理账户。
二 配置执行
说完配置原则,我们来看下具体执行。
首先使用root 用户的登录服务器,整个设置过程中都要保持root用户登录状态,验证完成后才能退出。
首先使用root 用户的登录服务器,整个设置过程中都要保持root用户登录状态,验证完成后才能退出。
首先使用root 用户的登录服务器,整个设置过程中都要保持root用户登录状态,验证完成后才能退出。
1 账户设置
1.1 添加用户
vps对于我而言主要是跑web程序,设置一个名为www的用户,设置一个管理员账户wbook。
useradd www
useradd wbook
#授权是基于wbook账户,也就是登录时我们使用wbook账户,然后切换到www账户运行程序。
passwd wbook
1.2 设置wbook为管理账户
vi /etc/sudoers
找到这两句,再之后添加一句wbook ALL=(ALL) ALL
,最终效果如下。
##Allow root to run any commands anywhere
root ALL=(ALL) ALL
wbook ALL=(ALL) ALL
验证一下 sudo -iH -u root
输入wbook密码切换到 root了没?
2 SSH设置
2.1 修改ssh的配置文件
vi /etc/ssh/sshd_config
. 貌似AWS EC2 只能使用22作为ssh端口,这个就不要改了,改了之后 sshd启动不了。
#修改端口为2002
Port 2002
#关闭root远程登录
PermitRootLogin no
#禁用密码登录
PasswordAuthentication no
#使用RSA 认证方式登录
RSAAuthentication yes
PubkeyAuthentication yes
保存配置,重启ssh :
centos 7 systemctl restart sshd.service
centos 7以下版本 service sshd restart
2.2 配置完成ssh,接下来再生成ssh key
在我本地电脑(本地电脑是centos6.7)上执行
ssh-keygen -t rsa -b 2048 -f ~/.ssh/do.pem -C "do.pem"
这时在.ssh目录下生成两个文件,一个是do.pem 一个是do.pem.pub。
将do.pem.pub内容复制到wbook账户 的.ssh/authorized_keys
可以scp ~/.ssh/do.pem.pu www@x.x.x.x:/home/wbook/.ssh/authorized_keys
也可以直接vim 复制粘贴。
改变本地do.pem的执行权限为400,否则会提示 文件权限too open
chmod 400 ~/.ssh/do.pem
2.3 禁止普通用户 执行su 命令
vi /etc/pam.d/su
, 将第六行前面的#去掉
auth required pam_wheel.so use_uid
执行:
echo "SU_WHEEL_ONLY yes" >> /etc/login.defs
删除wheel组成员,禁止所有用户 执行su
groupmems -g wheel -l #查看是否有用户可以执行su,如果有使用下面的命令删除该用户
groupmems -g wheel -d $USER #删除用户
至此,我们的设置就完成了。
说明:如果有其他需要合作的用户需要使用www程序,那么临时新增加一个用户,并将用户加入wheel组,按照2.2 配置登录权限。这样这位临时用户就可以通过su – www了。合作完成后 删除这个用户就可以了。