远程服务器默认的ssh登录端口是22,经常被各种扫描器扫描,一天不登录再登录上来后,看到几千几万个错误登录记录是常事,一个不巧密码简单被破解就徒呼奈何了。
就算密码/密匙够用,整天看着登录记录也是烦心。
将 22 的默认端口改为其他端口可以大大减少这些麻烦。
下面是把 22 端口改成 12345端口的示范,命令均使用管理员身份。
1. 备份ssh 配置
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.back
2. 修改ssh 配置文件
vi /etc/ssh/sshd_config
# vi 编辑器里 \ 查找 Port 22, 一般默认是用 # 注释掉的
# 下面增加两行,22 端口保留(后面用防火墙关掉),新开ssh监听端口12345
Port 22
Port 12345
# 之后用vi命令 :wq 保存退出
3. 重启ssh 服务
systemctl restart sshd
其他可能的重启 ssh服务方法
/etc/init.d/sshd restart # centos6 系统重启ssh服务
或者
/etc/init.d/ssh restart
systemctl restart sshd # centos7 系统重启ssh服务
4. 修改 iptables 防火墙规则
4.1 开放 12345 端口
iptables -A INPUT -p tcp --dport 12345 -j ACCEPT
4.2 然后 ssh登陆12345端口,看看能否登陆成功,若能登陆成功再继续下步
4.3 关闭 22 端口
iptables -A INPUT -p tcp --dport 22 -j DROP
4.4 测试, 此时应该ssh登陆22端口失败,登陆12345端口成功
4.5 测试无误后,保留iptables设置
service iptables save
注,如未安装iptables, 按如下安装
service iptables status # 检查是否安装了iptables
yum install -y iptables # yum 安装 iptables
yum update iptables
yum install iptables-services
systemctl start iptables.service #启动防火墙
systemctl enable iptables.service #设置开机自启动
刚安装 iptables后,先清空所有规则,防止远程无法登陆的悲剧
iptables -P INPUT ACCEPT # 允许所有INPUT请求
iptables -F # 清空所有默认规则
iptables -X # 清空所有自定义规则
iptables -Z # 所有计数器归0