menu Chancel's blog
rss_feed
Chancel's blog
我就是这样的人

Linux VPS安全设置(CentOS)

作者:Chancel, 更新:2019 Apr 28, 字数:2255, 已阅:708

这篇文章更新于 1499 天前,文中部分信息可能失效,请自行甄别无效内容。

VPS是暴露在公网中的主机,如果按照默认设置,很容易被一些软件扫描以及攻击,此时需要做一点简单的防御措施(可以杜绝大部分自动扫描登录的攻击):更改SSH端口、禁止密码登录、使用证书登录等

安全设置步骤

1.更改SSH端口

  • 先开放防火墙相关端口,防止等会无法进入就比较麻烦了,开放之后记得保存防火墙设置

    firewall-cmd --zone=public --add-port=6666/tcp --permanen
    firewall-cmd --reload
    
  • 修改配置文件:/etc/sshd_config

    • 主要是修改中的port字段,去掉#注释,再更改为你需要的端口
    # SELinux about this change.
    # semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
    Port 6666
    #ListenAddress 0.0.0.0
    #ListenAddress ::
    
  • 修改完成以后尝试重启sshd服务

    systemctl restart sshd
    
  • 此时保险起见另外起一个ssh会话尝试连接刚刚更改的端口,如果失败记得检查防火墙设置

2.创建一个普通用户并授权

  • 添加用户chancel,并设置密码

    adduser chancel
    passwd chancel
    
  • 授权用户Chancel允许使用sudo来暂时提权,sudo时根据需求选择是否需要输入密码

    chmod u+w /etc/sudoers
    vim /etc/sudoers
    
    # 授权给用户/用户组sudo权限,但需要输入密码
    youuser ALL=(ALL) ALL 
    %youuser ALL=(ALL) ALL 
    # 授权给用户/用户组sudo权限,无需输入密码
    youuser ALL=(ALL) NOPASSWD: ALL 
    %youuser ALL=(ALL) NOPASSWD: ALL
    
    chmod u-w /etc/sudoers
    

3.使用证书登录

  • 使用本地linux系统生成密钥,或使用其他第三方工具生成密钥

    ssh-keygen -t rsa -p 'passwd'
    
  • 查看生成完成的公钥

    cat id_rsa.pub
    
  • 将公钥拷贝到目标服务器的用户目录下的.ssh目录

    scp .ssh/id_rsa.pub user@ip:/home/chancel/chancel.pub
    
  • 登录到用户目录并将公钥追加到authorized_keys中

    cat chancel.pub >> .ssh/authorized_keys
    

4.不允许root登录/密码登录

远程允许root用户登录存在许多风险,最好是使用普通账户进行操作

  • 禁止root用户登录/密码登录

    • 打开文件/etc/sshd_config,修改PermitRootLogin和**PasswordAuthentication **的值为NO
    # override default of no subsystems
    Subsystem       sftp    /usr/libexec/openssh/sftp-server
    # Example of overriding settings on a per-user basis
    #Match User anoncvs
    #       X11Forwarding no
    #       AllowTcpForwarding no
    #       PermitTTY no
    #       ForceCommand cvs server
    UseDNS no
    AddressFamily inet
    PermitRootLogin no
    SyslogFacility AUTHPRIV
    PasswordAuthentication no
    

设置效果

以上步骤均完成后,你的服务器应该有如下特征

  • 只能通过特定端口访问你的服务器
  • 只能使用特定用户进行登录,Root用户无法登录
  • 特定用户可短时使用sudo获取提权
  • 只能使用证书进行登录,密码登录会被拒绝

如果想进一步加固还有如下可优化

  • 更改Mariadb默认端口3306,不允许外界访问Mariadb,只允许SSH通道远程访问Mariadb
  • 关闭22端口,避免被尝试登录
  • 将常用端口全部更改至10000以上端口并使用nmap扫描10000以下端口查看是否有忘了关闭的端口

[[replyMessage== null?"发表评论":"发表评论 @ " + replyMessage.m_author]]

account_circle
email
web_asset
textsms

评论列表([[messageResponse.total]])

还没有可以显示的留言...
[[messageItem.m_author]] [[messageItem.m_author]]
[[messageItem.create_time]]
[[getEnviron(messageItem.m_environ)]]
[[subMessage.m_author]] [[subMessage.m_author]] @ [[subMessage.parent_message.m_author]] [[subMessage.parent_message.m_author]]
[[subMessage.create_time]]
[[getEnviron(messageItem.m_environ)]]
目录