0%

服务器安全设置

Preface

在上个月月底的时候,阿里云通知我服务器在美国被异地登陆了,今天有时间整理了一些关于服务器安全的设置。

Locate the Matter

  • 当时我正好在用服务器,感觉异常的卡,用htop监控程序查看发现cpu正在被两个一样的进程100%占用,Command是/usr/sbin/ApacheX,去目录下找了下,没有该脚本,网上搜了也没该进程的信息。现在看来应该是黑客伪造的

  • 查看日志,vi /var/log/auth.log,发现下面几行
    -----2017-10-31---11.24.57-1

  • 很奇怪,我平时都是用ssh连接服务器的,正常应该是这样的
    -----2017-11-08---11.12.08

  • 居然被人用密码登录了,一查IP,果然是美国的。当初测试切换用户时嫌麻烦修改了密码,直接用的root,被人试出来了。

Solve

  • 执行passwd修改密码,不加参数默认当前用户,加参数指定用户

  • 修改ssh配置文件sshd_config,友情提示修改配置时开启多个窗口,以免登不上去还能用别的窗口修改回来

    1
    vi /etc/ssh/sshd_config

    SSHD配置文件详解

  • 修改ssh端口,为防止黑客暴力破解22端口

    1
    Port xxx

Tips

  1. 现在你需要使用ssh {user}@{IP} -p {port}来登录你的服务器。如果觉得麻烦,可以!ssh执行上一次的ssh命令,或者history | grep ssh粘贴命令。
  2. 传输文件时使用scp -P {port}来指定端口。scp(secure copy)通过ssh端口就行加密传输。
  3. ssh_config是针对客户端的配置文件,sshd_config是针对服务器端的配置文件,服务器后台运行的也是sshd守护进程(Daemon)。
  • 启用ssh密钥认证,指定密钥存放路径

    1
    2
    3
    RSAAuthentication    yes
    PubkeyAuthentication yes
    AuthorizedKeysFile /root/.ssh/authorized_keys /home/s1mple/.ssh/authorized_keys
  • 禁用密码登录,只允许ssh登录

    1
    2
    3
    PasswordAuthentication no
    UseLogin no
    PermitRootLogin yes
  • 另外,阿里云的服务器在你终端一段时间没有指令输入会断开,可以这样避免

    1
    ClientAliveInterval  30

    每30s发送一个心跳包

  • 修改完成后service sshd restart使配置生效

About SSH

SSH(Secure Shell)协议,专为远程登录会话提供安全性的协议,传输的数据都进行了加密。SSH提供两种级别的安全验证,第一种是基于口令的安全验证。第二种是基于密匙的安全验证,较之第一种不需要传输口令,但速度稍慢一些。

基于密钥的安全验证

客户端创建一对密钥,公钥存放在服务器上,当你想通过ssh远程连接服务器时进行公钥比对。如果一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端。客户端收到“质询”之后就可以用你的私钥解密再把它发送给服务器。
这个配对密钥类似Https协议中的对称密钥。是基于RSA算法的。

  • 在本地执行ssh-keygen生成配对密钥,在你的~/.ssh目录下会生成两个文件,id_rsa私钥,id_rsa.pub公钥。

  • 将公钥拷贝到服务器的~/.ssh/authorized_keys文件中

  • authorized_keys增加不可修改、删除的权限

    1
    chattr +i authorized_keys