返回博客
安全
2019年8月21日
8分钟
4.1K 次浏览

CentOS 7 更改SSH端口并禁用root登录

提高服务器安全性的实用教程:修改SSH默认端口、禁用root直接登录,并配置SELinux和防火墙规则。

CentOS 7 更改SSH端口并禁用root登录

概览

提高服务器安全性的实用教程:修改SSH默认端口、禁用root直接登录,并配置SELinux和防火墙规则。

正文

前言

服务器默认 SSH 端口是 22,默认登录用户是拥有最高权限的 root。为了提高安全性,可以使用密钥登录,或修改 SSH 端口并创建普通用户。无论采用哪种方式,都应禁用 root 直接登录。

yum list installed | grep ssh
yum install openssh-server

新增用户

禁用 root 前先创建其他用户,否则禁止 root 后将无法登录:

adduser testuser
passwd testuser

输入密码时终端不会显示字符,回车后再次确认即可。

禁用 root 用户登录

vim /etc/ssh/sshd_config

找到 #PermitRootLogin yes,去掉注释并改为:

PermitRootLogin no

保存退出后重启 SSH:

systemctl restart sshd

修改 SSH 登录端口

以下操作需要 root 权限,非 root 用户先执行 su root。先查看 SSH 端口:

semanage port -l | grep ssh

如果提示找不到 semanage,安装其依赖:

yum provides semanage
yum install policycoreutils-python

向 SELinux 添加自定义 SSH 端口(示例为 10086):

semanage port -a -t ssh_port_t -p tcp 10086
semanage port -l | grep ssh

修改 SSH 配置,暂时保留 22 端口,确认新端口可用后再关闭 22:

vim /etc/ssh/sshd_config
Port 22
Port 10086
systemctl restart sshd

打开防火墙端口

firewall-cmd --zone=public --add-port=10086/tcp --permanent
firewall-cmd --reload
firewall-cmd --zone=public --list-ports

使用非 22 端口登录成功后,再删除 22 端口:

firewall-cmd --zone=public --remove-port=22/tcp --permanent
firewall-cmd --reload
firewall-cmd --zone=public --list-ports

也可以把 /etc/ssh/sshd_config 中的 Port 22 注释掉,然后重启 sshd 服务。

要点

01

完整介绍从准备到完成的配置过程 (安全)

02

将操作拆分为适合在真实服务器上执行的小步骤

03

包含验证方法和需要注意的常见问题

说明

本文保持简洁,加载速度快,方便在桌面端和移动端浏览。

博客列表中的原始链接现在可以正常打开,不会再跳转到 404 页面。

最近文章