VPS初级安全设置

下午收到阿里云短信,说有人正在暴力破解,进入系统之后,输入

cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}'

发现寡人的小机竟然也被人扫描了很多次,觉得有必要做一下安全方面的东西,非常简单,主要是ssh端口修改,禁止root远程登录,denyhosts安装,rsa密钥登录。

1、修改ssh端口

以centos为例,22端口是最常见的ssh端口,因此最容易被猜到,修改之后可以增加一定的安全性。

#sudo su
#vi /etc/ssh/sshd_config

将“#port 22″修改为“port 1234”(即去掉#,改端口号)

然后“service sshd restart”

退出,然后重新登录

为了保险起见,可以将“#port 22”修改为两行“port 22”“port 1234”,1234测试无误后再删掉”port 22″

2、禁用远程root登录

root登录直接就获得权限,而且root这个用户名太常见了。在禁用root登录前首先一定要先增加一个普通权限的用户,并设置密码:

useradd test
passwd test

然后禁止ROOT远程SSH登录:

vi /etc/ssh/sshd_config

把其中的

PermitRootLogin yes

改为

PermitRootLogin no

如果PermitRootLogin前面的有#的话也一定要删除掉,否则无法生效。

再重启sshd服务

service sshd restart

以后我们便可以通过普通权限的ssh账户连接我们的vps,如果需要管理权限的话,可以用下面命令提升到root权限

su root

如果root用户有另外一套密码的话会更加有效。

3、安装denyhosts

现在的linux一般都自带denyhosts了,如果没有,请参照CentOS/AWS编译安装LNMP环境的开头部分更新一下系统安装源。

安装之后修改下配置:

#yum install denyhosts
#vi /etc/denyhosts.conf

显示为,可根据自己需要修改。

SECURE_LOG = /var/log/secure
#ssh日志文件,根据该文件判断是否为非法IP
HOSTS_DENY = /etc/hosts.deny
#控制用户登录的文件
PURGE_DENY = 
#表示过多久后清除已经禁止的IP
BLOCK_SERVICE  = sshd
#表示禁止的服务名
DENY_THRESHOLD_INVALID = 5
#表示允许无效用户登录失败的次数
DENY_THRESHOLD_VALID = 10
#表示允许普通用户登录失败的次数
DENY_THRESHOLD_ROOT = 1
#表示允许root用户登录失败的次数
ADMIN_EMAIL = 
##管理员邮箱,会发邮件到这里

完了之后

/etc/init.d/denyhosts restart

查看可以用

# tail -f /var/log/denyhosts
# tail -f /var/log/secure

4、使用密钥登录,禁止密码登录

原来一直在用的AWS就是密钥登陆,安全性良好,阿里云默认是密码登录,需要自己配置密钥登录。

dsa和rsa的安全性能是一样的,用rsa和dsa密钥随你便~

[root@ test~]# su test ← 登录为一般用户centospub

[test@ test~]$ ssh-keygen -t rsa  ← 建立公钥与私钥
Generating public/private rsa key pair.
Enter file in which to save the key (/home/test/.ssh/id_rsa):  ← 钥匙的文件名,这里保持默认直接回车
Created directory '/home/test/.ssh'
Enter passphrase (empty for no passphrase):  ← 输入口令
Enter same passphrase again:   ← 再次输入口令
Your identification has been saved in /home/test/.ssh/id_rsa.
Your public key has been saved in /home/test/.ssh/id_rsa.pub.
The key fingerprint is:
tf:rs:e3:7s:28:59:5s:93:fe:33:84:01:cj:65:3b:8e xxx@xxxxx.com

上面生成过程中有无输入口令会影响今后登录在密钥之外是否需要输入口令

修改公钥文件名称、权限,并且导出私钥

[test@test ~]$ cd .ssh/  
[test@.ssh]$ ls  
id_rsa.pub id_rsa  
[test@.ssh]$ mv id_rsa.pub authorized_keys    
[test@ .ssh]$ chmod 400 authorized_keys

下载私钥之后,最好把服务器端的私钥删掉。 如果是用的putty,要用puttygen转换为ppk文件,如果是像我一样用的bitvise,则可以直接使用。 修改ssh配置文件

 #vi /etc/ssh/sshd_config
#Protocol 2,1 ← 找到此行将行头“#”删除,再将行末的“,1”删除,只允许SSH2方式的连接
 ↓
Protocol 2 ← 修改后变为此状态,仅使用SSH2

#ServerKeyBits 768 ← 找到这一行,将行首的“#”去掉,并将768改为1024
 ↓
ServerKeyBits 1024 ← 修改后变为此状态,将ServerKey强度改为1024比特

#PasswordAuthentication yes ← 找到这一行,将yes改为no
 ↓
PasswordAuthentication no ← 修改后变为此状态,不允许密码方式的登录

#PermitEmptyPasswords no  ← 找到此行将行头的“#”删除,不允许空密码登录
 ↓
PermitEmptyPasswords no  ← 修改后变为此状态,禁止空密码进行登录

重启sshd,至此完成安全设置。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.