前言
新购入的服务器,往往用户名默认为root,ssh默认开放22端口,且配置SSH服务时往往同时允许密码和公钥二重登录。然而,许多非法服务器运行着暴力破解程序,通过访问用户名root的22默认端口,暴力获取获取您的服务器密码。
因此,不安全的默认配置会给您带来巨大风险。博主以自己的CVM配置为例,列出三道安全策略。
防线一:修改默认22端口
尽管攻击者可通过 Nmap 扫描到新的端口号,但这样的设置让攻击者的工作更加困难。
1.登录您的远程服务器打开sshd_config文件夹:
vim /etc/ssh/sshd_config
2.找到缺省注释的#Port 22端口:
请添加一个新端口(范围介于10000~65535,10000以下的端口易被系统或软件占用)
注意,在新端口配置成功以前,您需要保留22端口。
3.重启ssh服务:service sshd restart
service sshd restart
4-1.防火墙开启端口(iptables为例):
Centos 6默认使用iptables防火墙:
请阅读此链接:iptables开放指定端口——gerrylon007(CSDN博主)
4-2.防火墙开启端口(Firewalld为例):
1.先关闭selinux:
推荐阅读:Linux 下为何要关闭 SELinux?——知乎提问
vim /etc/selinux/config
2.修改 SELINUX=enforcing 为 SELINUX=disabled (永久关闭selinux)
您需要:
shutdown -r now //重启您的实例
重启后,运行命令:
getenforce
验证SELinux状态为disabled,表明SELinux已关闭。
2. 执行 setenforce 0 关闭selinux防火墙(临时关闭)
setenforce 0
3.对Firewalld防火墙进行开放11111端口操作:
firewall-cmd --permanent --zone=public --add-port=11111/tcp
firewall-cmd --reload
4.查看端口:
netstat -nptl|grep ssh
可知当前开启了 22 端口和 11111 端口:
如图所示:
大功告成!下面开始删除22端口(安全组规则设置也记得清除22端口哦):
1.先删除 /usr/lib/firewalld/services/ssh.xml 文件
rm -rf /usr/lib/firewalld/services/ssh.xml
2.firewalld 删除操作:
firewall-cmd --zone=public --remove-port=22/tcp --permanent
firewall-cmd --reload
3.最好重启一下ssh服务,我们可以输入以下命令验证:
iptables -L
如图可见:当前仅允许外部使用tcp协议访问10022端口。
值得一提的是,如果您在此时仍没有连接成功,大概有两种原因:
1.在您的云服务器控制台——安全组设置——开放11111端口;(极大概率)
2.切换您的网络运营商
防线二:禁用SSH的密码登录改用公钥登录
vim /etc/ssh/sshd_config
1.将 PasswordAuthentication yes 改为 PasswordAuthentication no
2. 记得重启您的ssh服务:service sshd restart
service sshd restart
防线三: 禁用root用户的远程操作
创建CVM实例时,云服务器厂商缺省分配为root用户。虽然方便,但以后难免会产生一些不必要的困扰,当然也不安全。因此我们最好在一开始就禁用root用户的远程登陆权限。
时间原因,博主并没有对此方案进行实践,因此请移步阅读:
Linux禁用root用户 - 我吃大西瓜 - 博客园 (cnblogs.com)
Linux 下 4 种禁用 Root 登陆的方法,你掌握了哪几种呢? - 腾讯云开发者社区-腾讯云 (tencent.com)
后记
如果想再次开启端口22怎么办?
firewall-cmd --zone=public --add-port=22/tcp --permanent
firewall-cmd --reload
输入:iptables -L可见此时有两个外部SSH入口:
如何联系我?[email protected]