购买了服务器后的第一件事,修改默认的ssh端口,避免被人扫描和爆破。更加安全的方法是使用证书和加密实现无密码登录,只允许使用加密密钥的计算机进行登录。


准备工作:服务器一台,root用户登录。

禁用22端口登录

备份ssh文件

cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bakcp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

修改配置文件

vim /etc/ssh/sshd_config

将端口修改为你要的值,建议在1024-65535之间,我这里改为2244

# 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 22
Port 2244
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

保存文件,注意不要退出登录。

SELinux允许新端口

  • 安装semanage
yum -y install policycoreutils-python
  • 使用semanage允许新端口
sudo semanage port -a -t ssh_port_t -p tcp 2244

防火墙允许新端口通过

  • 执行命令
sudo firewall-cmd --permanent --zone=public --add-port=2244/tcp

如果提示FirewallD is not running则是未开启firewall,通过如下命令开启

systemctl enable firewalld
systemctl start firewalld

查看防火墙状态

systemctl status firewalld

# 或者以下命令
firewall-cmd --state
  • 重新加载防火墙配置
sudo firewall-cmd --reload

重启ssh服务

  • 重启ssh服务
systemctl restart sshd.service
  • 查看ssh状态,检查端口是否生效
systemctl status sshd.service

成功生效出现

   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2020-04-12 17:22:39 CST; 23s ago

或者使用ss -tnlp | grep ssh验证ssh是否在新端口上运行

在服务器控制台新建安全组,允许你的端口登录

退出,尝试使用新端口登录

ssh root@your-ip -p 2244

禁用22端口

使用netstat -nlpt 查看监听的端口,发现22端口还在。

  • 修改配置文件,注释22端口
vim /etc/ssh/sshd_config
  • 重新启动ssh服务
systemctl restart sshd.service
  • 禁用22端口
firewall-cmd --zone=public --remove-port=22/tcp --permanent
  • 刷新
firewall-cmd --reload

注意: 操作之前必须确定已经把ssh端口换成别的了,不然重启之后就尴尬了。

测试使用22端口登录

成功禁用出现以下提示

Connecting to your-server-ip:22...
Could not connect to 'your-server-ip' (port 22): Connection failed.

禁止使用root用户登录

修改配置文件中PermitRootLogin的值

  • yes 允许root登录ssh
  • no 不允许

重启sshd服务

systemctl restart sshd.service

普通用户登陆后可以使用su -进行提权。

解决xxx is not in the sudoers file

  • 创建用户
useradd yourname
passwd yourpassword
  • 设置用户权限
    解决"xxx is not in the sudoers file. This incident will be reported",其中XXX是你的用户名,没有权限使用sudo,修改一下/etc/sudoers文件就行

    • root用户登录
    • 给文件添加写权限
    chmod u+w /etc/sudoers
    • 编辑/etc/sudoers文件
     vim /etc/sudoers

    在下面的root下面一行yourname ALL=(ALL) ALL

    ## Allow root to run any commands anywhere 
     root    ALL=(ALL)       ALL
    • 撤销sudoers权限
    chmod u-w /etc/sudoers

好了,然后就达到了我们的目的了。