CentOS 7 服务器提高安全性的必要措施

本文记录了 CentOS 7 云服务器上,提高服务器安全性的一些必要措施。

前言

本来我对 Linux 服务器的安全性并不是很在意,直到有一回腾讯云给我发了服务器被异地登录的消息。

虽然我的 Linux 服务器没啥重要内容,但总归还是觉得不妙,于是重装系统后果断着手提升服务器安全等级。

文中使用的是腾讯云 Linux 服务器,系统镜像为 CentOS 7.6 的版本。

文中使用的命令均为 root 用户执行。

操作步骤

此部分为具体的操作步骤,根据实际情况自行取舍。

更换 SSH 端口

为 Linux 服务器上的所有用户修改 SSH 登录端口。

  1. 在 Linux 服务器上编辑 /etc/ssh/sshd_config 文件
    vi /etc/ssh/sshd_config
    
  2. 将其中的 Port 取消注释,并修改值为其他端口号
    • 以下为修改后的结果示例,部分内容省略
      ......
      # If you want to change the port on a SELinux system, you have to tell
      # SELinux about this change.
      # semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
      #
      Port 5678
      #AddressFamily any
      #ListenAddress 0.0.0.0
      #ListenAddress ::
      ......
      
  3. 重新启动 SSH 服务
    systemctl restart sshd
    

在此之后,使用 SSH 登录该 Linux 服务器都需要添加 -p 参数,例如:

ssh dancying@192.168.45.135 -p 5678

使用 SSH 秘钥登录和禁用密码登录

为 Linux 服务器上的 dancying 用户配置秘钥登录,并禁止 dancying 用户使用密码登录。

  1. 在 Windows 终端执行以下命令生成用户秘钥
    ssh-keygen -t ed25519
    

    在 Windows 用户目录下的 .ssh 文件夹中会生成 id_ed25519 文件和 id_ed25519.pub 文件

  2. dancying 用户的身份登录 Linux 服务器,并创建 ~/.ssh 文件夹
    mkdir ~/.ssh
    
  3. 修改 ~/.ssh 文件夹权限为 rwx------ ,然后进入 ~/.ssh 文件夹
    chmod 700 ~/.ssh/ && cd ~/.ssh/
    
  4. 创建并编辑 authorized_keys 文件
    vi authorized_keys
    
  5. id_ed25519.pub 文件的内容复制粘贴至 authorized_keys 文件中,保存后退出

    可以使用文本编辑器打开 id_ed25519.pub 文件

  6. 修改 authorized_keys 文件的权限为 rw-------
    chmod 600 authorized_keys
    
  7. 重新启动 SSH 服务
    systemctl restart sshd
    
  8. 当确认 dancying 用户可以秘钥登录后,编辑 /etc/ssh/sshd_config 文件
    vi /etc/ssh/sshd_config
    
  9. PasswordAuthentication 取消注释,并修改值为 no
    • 以下为修改后的结果示例,部分内容省略
      ......
      # To disable tunneled clear text passwords, change to no here!
      #PasswordAuthentication yes
      #PermitEmptyPasswords no
      PasswordAuthentication no
      ......
      
  10. 重新启动 SSH 服务
    systemctl restart sshd
    

禁用 ROOT 远程登录

为 Linux 服务器上的 root 用户禁止 SSH 登录。

  1. 编辑 /etc/ssh/sshd_config 文件
    vi /etc/ssh/sshd_config
    
  2. PermitRootLogin 取消注释,并把值改为 no
    • 以下为修改后的结果示例,部分内容省略
      ......
      # Authentication:
      
      #LoginGraceTime 2m
      PermitRootLogin no
      #StrictModes yes
      #MaxAuthTries 6
      #MaxSessions 10
      ......
      
  3. 重新启动 SSH 服务
    systemctl restart sshd
    

禁止 root 用户 SSH 登录后,只能通过其他用户切换至 root 用户:

su root

更换软件默认端口

为需要外部访问的软件更换默认端口,如数据库 MariaDB 等软件。

更换 MariaDB 默认端口

  1. 编辑 /etc/my.cnf.d/server.cnf 文件
    vi /etc/my.cnf.d/server.cnf
    
  2. [mysql] 部分添加 port 键和值
    • 以下为修改后的结果示例,部分内容省略
      ......
      # This group is read by both MariaDB and MySQL servers
      [mysqld]
      port = 5679
      ......
      
  3. 重新启动 MariaDB
    systemctl restart mariadb
    

启用 CentOS 7 自带的 firewall 防火墙

在 CentOS 7 系统中自带 firewall 防火墙,但是腾讯云提供的 CentOS 7 镜像中 firewall 为关闭状态。

  1. 开启 firewalld 防火墙服务
    systemctl start firewalld
    
  2. 将 firewalld 防火墙服务加入开机自启
    systemctl enable firewalld
    
  3. 开放或关闭 firewalld 防火墙端口例子
    • 开放 firewalld 防火墙的 5678 端口
      firewall-cmd --zone=public --add-port=5678/tcp --permanent
      
    • 关闭 firewalld 防火墙的 3306 端口
      firewall-cmd --zone=public --remove-port=3306/tcp --permanent
      
  4. 重新载入 firewalld 防火墙服务
    systemctl reload firewalld
    

    每次开放端口或关闭端口后都需要重新载入防火墙服务才能生效

查看 firewalld 防火墙已开放的端口可以执行以下命令:

firewall-cmd --zone=public --list-ports

总结

服务器安全无小事,按照文中操作已经能让服务器的安全性大大提高,除非有人铁了心要搞你的服务器。

参考链接

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇