怎样修改SSH端口号

2018年9月13日 由 Amon

【介绍】

Linux服务器远程连接的SSH端口默认为22。

很多机器人进行端口扫描、暴力破解就是从22开始。若您的密码还设置过于简单,那么可能中招。

【服务商:Vultr】

参考:https://www.vultr.com/docs/changing-your-ssh-port-for-extra-security-on-centos-6-or-7
参考:https://blog.csdn.net/yanzi1225627/article/details/51470962

1. 修改SSH端口号

编辑 /etc/ssh/sshd_config :

#   Port 22
Port 2048

2. 然后更新防火墙设置:

如果是CentOS 6,使用 iptables 防火墙:

iptables -I INPUT -p tcp --dport 2048 --syn -j ACCEPT
service iptables save
semanage port -a -t ssh_port_t -p tcp 2048

如果是CentOS 7,使用 firewalld 防火墙:

firewall-cmd --zone=public --add-port=2048/tcp --permanent

如果需要删除:

firewall-cmd --zone=public --remove-port=2048/tcp --permanent

重载配置使之生效:

firewall-cmd --reload

查看已放行端口:

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

3. 重启SSH服务使之生效

service sshd restart

或者:

systemctl restart sshd.service
systemctl status sshd.service
systemctl stop sshd.service
systemctl start sshd.service

【服务商:阿里云】

如果是阿里云,需要在安全组规则中同步设置。

参考:https://help.aliyun.com/document_detail/25471.html?spm=5176.2020520101.0.d0.60c04df5KklC9G

实证成功。

【服务商:DigitalOcean.com】

如果是DigitalOcean.com,需要在 Firewall Cloud 中同步设置。

然鹅未遂。SELinux缘故?

参考:http://www.178linux.com/72697
参考:https://blog.csdn.net/woailyoo0000/article/details/79782986

1. 修改SSH端口号

编辑 /etc/ssh/sshd_config :

#   Port 22
Port 2048

2. 载入新的SSH设置:

systemctl restart sshd.service

报错;

Job for sshd.service failed because the control process exited with error code. See "systemctl status sshd.service" and "journalctl -xe" for details.

原因是selinux启用了,并且selinux允许的sshd-port跟设置的port不匹配造成的。

那么先关闭selinux,然后设置SSH端口放行,最后进行为sshd服务添加selinux放行端口。

3. 查看防火墙设置:

查看防火墙配置(CentOS7)

systemctl status firewalld

输出:

● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

查看防火墙配置(CentOS6)

iptables -L

输出:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

没有设置防火墙策略,那就不是防火墙的因素。

4. 关闭selinux,尝试重启sshd服务

查看selinux状态:

getenforce

输出:

Enforcing

关闭selinux:

setenforce 0

查看selinux状态:

getenforce

输出:

Permissive

重试重启SSH:

systemctl restart sshd

重启成功。

使用新端口SSH登入成功,

5. 重新开启selinux并修改selinux端口标签

启用selinux:

setenforce 1

查看selinux状态:

getenforce

输出:

Enforcing

查看selinux中sshd服务放行的端口号:

semanage port -l | grep ssh

输出:

ssh_port_t                     tcp      22

添加自定义sshd服务端口至selinux中:

semanage port -a -t ssh_port_t -p tcp 2048

查看selinux中sshd服务放行的端口号:

semanage port -l | grep ssh

输出:

ssh_port_t                     tcp      2048, 22

参考:https://www.v2ex.com/t/193637
参考:https://www.howtoing.com/how-to-troubleshoot-digitalocean-firewalls/
参考:https://www.digitalocean.com/community/questions/how-to-change-ssh-port-and-firewall-rule
参考:https://www.digitalocean.com/community/questions/custom-ssh-port-blocked-by-do

【参考】

参考:http://amon.org/fail2ban
参考:http://amon.org/firewalld