linux安全设置

我们在学会了VPS的安装和建站之后,肯定需要附带学习VPS的安全设置。因为VPS和主机不同,主机商可能会给我们备份,而且主机的安全性都有主机商承担。但是,如果现在我们在使用VPS,那VPS的安全性主机商是不承担的,既然我们选择使用VPS,就一定要做好安全维护。接下来就以Centos7为例进行讲解:

修改SSH端口

不管我们的网站是不是出名,很多黑客选手或者同行都是用软件直接扫描网站VPS/主机端口的,一般的大家都知道VPS端口为22,如果我们修改了端口至少先找不到端口,很多时候由于我们的端口是默认,即便主机安全也会留下大量的日志文件。这些文件就是被暴利破解的错误记录。

修改SSH端口的方法:登陆SSH,然后通过vi /etc/ssh/sshd_config 命令打开文件,修改其中的port后面的数字。

最后一步就是重启ssh,需要注意的是不同版本的linux是不同的命令。

Centos7: systemctl restart sshd

这个时候千万不要急着关闭当前ssh连接

因为你的VPS可能启动了防火墙,而你新设置的端口可能会被防火墙拦截

检查防火墙是否开发,以Centos7为例:

1
2
3
4
5
$ firewall-cmd --state
#如果没有开启,结果是
not running
#如果开启,结果是
running

永久开启端口:

1
2
3
4
5
6
#查看开启的端口号
$ firewall-cmd --zone=public --list-ports
#添加端口号
$ firewall-cmd --permanent --zone=public --add-port=[端口号]/tcp
#重启firewall
$ systemctl restart firewalld

保险起见,可以再打开一个ssh连接测试,成功后就可以关闭ssh连接了。

禁用root账号

一般的我们使用账户登陆都直接用ROOT登陆。如果我们把ROOT账户禁用,添加一个自己知道的账户,那VPS的安全入口基本完成。至少除了猜测密码还需要猜测用户名。

  • 第一步 新建用户
    1
    2
    3
    4
    #为登录名sam产生一个主目录/usr/sam
    $ useradd –d /usr/sam -m sam
    #为用户名设置密码
    $ passwd sam
    然后需要输入两次密码。
  • 第二步 设置禁止ROOT用户
    就是我们需要设置禁止ROOT用户,这需要编译文件的。我们可以通过VI命令操作

    1
    $ vi /etc/ssh/sshd_config

    和之前的设置端口一样,编译sshd_config文件,把PermitRootLogin中的YES改成NO
    Imgur
    保存退出,重启SSH:

    Centos7: systemctl restart sshd

  • 第三步,提权
    用我们新添加的用户名登陆,然后su root进行提权,让新用户有ROOT用户有的最高权限。

保险起见,还是应该打开一个新的ssh连接测试,成功后再关闭原来的ssh连接。

SSH禁止密码登录

如果担心密码被暴力破解,可以添加SSH登录,并且禁止密码登录。这样每次登录不要输入密码,并且更安全,唯一不足的地方就是换个电脑就要重新折腾一次将本地公钥内容追加到远程主机的授权文件(authorized_keys)中。

  • 本地生成密钥对
    1
    2
    # 在本机命令行控制台输入:
    $ ssh-keygen
    此时会在系统用户的.ssh目录下生成一对密钥文件:私钥文件id_rsa和公钥文件id_rsa_pub。
  • 将本地公钥内容追加到远程主机的授权文件(authorized_keys)中

本地查看id_rsa_pub文件内容,复制得到的公钥字符串,在远程服务器上编辑authorized_keys文件

1
$ vi ~/.ssh/authorized_keys

将刚刚得到的本地公钥字符串添加到该文件的末尾(如果是新建的文件就直接添加),编辑保存完成后,修改该文件的权限

1
$chmod 600 .ssh/authorized_keys
  • 修改ssh配置

编辑远程服务器上的sshd_config文件:

1
$vi /etc/ssh/sshd_config

找到如下选项并修改(通常情况下,前两项默认为no,地三项如果与此处不符,以此处为准):

1
2
3
4
5
#启用密钥验证
RSAAuthentication yes
PubkeyAuthentication yes
#指定公钥数据库文件
AuthorsizedKeysFile.ssh/authorized_keys

同时禁止密码登录

1
2
#将PasswordAuthentication yes 改为
PasswordAuthentication no

编辑保存完成后,重启ssh服务使得新配置生效:

1
$ systemctl restart sshd.service

配置epel源

具体请参见:http://fedoraproject.org/wiki/EPEL
通过wget命令下载RPM文件,然后安装。

1
2
3
RHEL/CentOS 7
$ wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
$ rpm -ivh epel-release-latest-7.noarch.rpm

如何检查epel是否安装成功?使用一下命令:

1
# yum repolist