CentOS 7 - Securing OpenSSH(一)
文章目录
- Securing OpenSSH
- 1. 使用强密码或用户名
- 2. 禁止超级用户登录
- 3. 限制用户登录
- 4. 禁用协议 1
- 5. 使用一个非标准的端口
- 参考
Securing OpenSSH
事实上,OpenSSH(或 Secure SHell)已经成为取代 telnet 协议的远程访问的标准。SSH 使得 telnet 这样的协议变得多余,这在很大程度上是因为连接是加密的,密码不再以明文的形式发送给所有人看。
但是,SSH 的默认安装并不完美,在运行 SSH 服务器时,有几个简单的步骤可以显著加强安装。
1. 使用强密码或用户名
如果你让 SSH 运行并暴露在外部世界,你首先会注意到的一件事是,你的服务器可能会记录到有黑客尝试猜测你的用户名和密码。通常,黑客会扫描 22 端口(SSH 服务侦听的默认端口),以找到运行 SSH 的机器,然后尝试对其进行强力攻击。使用适当的强密码,任何攻击都有可能在成功之前被记录下来并被注意到。
希望你已经使用了强密码,但如果你还没有,那么尝试选择包含:
- 最少 8 字符
- 大小写字母混合
- 字母与数字混合
- 包含特殊字符,例如:! " £ $ % ^ 等
强密码的好处并不是 SSH 特有的,而是对系统安全性的各个方面都有影响。
如果你不能绝对地阻止你的用户选择一个弱密码,那么考虑为你的用户账户使用一个随机生成或难以猜测的用户名。如果坏人无法猜出用户名,那么他们就无法暴力破解密码。这在一定程度上是安全的,然而,须知用户名的信息可能通过其他方式泄露,例如电子邮件。
2. 禁止超级用户登录
SSH 服务器设置存储在 /etc/ssh/sshd_config
文件中。要禁止超级用户通过 SSH 客户端登录,请确保你拥有以下条目:
# Prevent root logins:
PermitRootLogin no
重启 sshd 服务:
systemctl restart sshd
如果你需要超级用户权限,请使用普通用户登录,并使用 su
命令。
3. 限制用户登录
可以将 SSH 登录限制为需要远程访问的特定用户。如果系统上有很多用户帐户,那么将远程访问限制在真正需要的用户,从而限制普通用户使用弱密码的影响是有意义的。在 /etc/ssh/sshd_config
文件中添加 AllowUsers
行,后跟以空格分隔的用户名列表,例如:
AllowUsers alice bob
同样的地,你需要重启 sshd 服务。
4. 禁用协议 1
SSH 可以使用两个协议,协议 1 和协议 2。旧的协议 1 不太安全,除非您知道自己特别需要它,否则应该禁用它。在 /etc/ssh/sshd_config
文件中查找以下行,取消注释并按如下所示修改:
# Protocol 2,1
Protocol 2
然后,重启 sshd 服务。
5. 使用一个非标准的端口
默认情况下,SSH 监听 22 端口上传入的连接。黑客通过扫描 22 端口判断你的机器上是否运行 SSH 服务。一种有效的方法是在非标准端口上运行 SSH。任何未使用的端口都可以,不过大于 1024 的端口更合适。许多人选择 2222 作为替代端口(因为很容易记住),就像 8080 通常被称为替代 HTTP 端口一样。正因为这个原因,它可能不是最好的选择,因为任何扫描 22 端口的黑客也可能扫描 2222 端口。最好是随机选择一些不用于任何已知服务的端口。然后,可以在 /etc/ssh/sshd_config
配置文件中添加这样的一行进行修改:
# Run ssh on a non-standard port:
Port 2345
不要忘记对路由器的端口转发和任何适用的防火墙规则进行必要的更改。修改防火墙的 SSH 服务,复制 /usr/lib/firewalld/services/ssh.xml
文件到 /etc/firewalld/services/
目录下:
$ cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh-custom.xml
接着,修改 /etc/firewalld/services/ssh-custom.xml
文件中的端口配置,使其与 sshd_config
配置文件一致:
<port protocol="tcp" port="2345"/>
然后,移除 ssh 服务,添加 ssh-custom 服务,并重新加载防火墙规则使其生效:
$ firewall-cmd --permanent --remove-service='ssh'
$ firewall-cmd --permanent --add-service='ssh-custom'
$ firewall-cmd --reload
在 CentOS 6 之后,您还应该更新 selinux,正确标记所选择的端口,否则 sshd 将无法访问它。例如:
$ semanage port -a -t ssh_port_t -p tcp 2345
如果在执行以上命令时提示 -bash: semanage: command not found
,那么你需要安装 semanage
。
通过执行 yum whatprovides semanage
命令可以找出哪些包提供 semanage
:
$ yum whatprovides semanage
Loaded plugins: fastestmirror
Determining fastest mirrors* base: mirrors.ustc.edu.cn* extras: mirrors.ustc.edu.cn* updates: mirrors.ustc.edu.cn
base | 3.6 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/4): extras/7/x86_64/primary_db | 222 kB 00:00:03
(2/4): base/7/x86_64/group_gz | 153 kB 00:00:04
(3/4): updates/7/x86_64/primary_db | 4.7 MB 00:00:08
(4/4): base/7/x86_64/primary_db | 6.1 MB 00:00:12
base/7/x86_64/filelists_db | 7.2 MB 00:00:03
extras/7/x86_64/filelists_db | 224 kB 00:00:00
updates/7/x86_64/filelists_db | 2.7 MB 00:00:01
policycoreutils-python-2.5-34.el7.x86_64 : SELinux policy core python utilities
Repo : base
Matched from:
Filename : /usr/sbin/semanage
从以上查找结果(第 17 行)可知,policycoreutils-python
中包含 semanage
。接下来,安装 policycoreutils-python
:
$ yum install policycoreutils-python
安装完成之后,记得更新 selinux,正确标记所选择的端口。
最后,重启 sshd 服务。
以后,你再通过 SSH 客户端连接 SSH 服务器,就需要明确地指定端口了。
参考
Securing OpenSSH
Linux Troubleshooting – semanage command not found in CentOS 7/8 And RHEL 7/8
CentOS 7 - Securing OpenSSH(一)相关推荐
- centos 6.7 openssh 升级到openssh 7.1p
openssh 升级主要解决: OpenSSH(OpenBSD Secure Shell)是OpenBSD计划组所维护的一套用于安全访问远程计算机的连接工具.该工具是SSH协议的开源实现,支持对所有的 ...
- CentOS下升级openssh版本
前言 CentOS 6.x 和 7.x 的断裂带来很多麻烦,习惯SysV下面的init.d脚本后,转systemd很不适应,之前还花了点时间学systemd,但是可能是年龄大了,老是记不住命令,以后还 ...
- linux6.5 sftp,CentOS下实现SFTP CHROOT的几种方法
有些应用场景下需要限制用户只能使用SFTP,但不允许登陆系统SHELL.这里介绍几种方法来实现这样的需求. 一.通过MySecureShell实现 什么是MySecureShellMySecureSh ...
- 低版本openssh升级到OpenSSH 8.5p1版本的方法
openssh 低版本漏扫后漏洞问题修复方法说明: 问题说明: centos系统,openssh版本过低,有一些中高的漏洞需要通过升级openssh版本才能够进行解决,所以编写该方法进行说明: 该方法 ...
- openssh 低版本升级到OpenSSH 8.5p1版本的方法
openssh 低版本漏扫后漏洞问题修复方法说明: 问题说明: centos系统,openssh版本过低,有一些中高的漏洞需要通过升级openssh版本才能够进行解决,所以编写该方法进 ...
- ssh查找linux端口,linux – 查找当前连接的端口号SSH
我正在使用SSH连接创建一个本地模拟器(未连接到Internet).我已经开始使用特定范围的端口号进行sshd,并对一系列设备进行NAT处理.我必须找到当前连接的端口号. OS CentOS 5.5 ...
- 使用Git搭建自己的私有/个人Git仓库
使用Git搭建自己的私有/个人Git仓库 准备一下 安装Git 添加Git管理账户/账户和密码 配置Git的SSH访问 配置SSH访问 客户端生成ssh私钥上传服务器 服务器将上传的私钥添加到服务器的 ...
- Linux学习笔记本(不定期持续更新)
一.概述 2023年,打算系统自学一遍Linux,分享到这里来,和大家一起相互学习,探讨. 二.Linux基础知识 Linux学习环境搭建 学习每一门技术,系统环境很重要,好的系统环境能够极大提高学习 ...
- ssh 用密码连接不上、查看openSSH 的版本、CentOS - 升级openSSH,修复安全漏洞
一 ssh密码连接 1,检查ssh配置文件 #vim /etc/ssh/sshd_config 130 UseDNS no 131 AddressFamily inet 132 PermitRoot ...
- Docker Centos安装 Openssh
Docker Centos安装Openssh 环境介绍: Docker版本:1.5.0 镜像:docker.io:centos latest 操作步骤: 1.启动镜像 docker run -ti c ...
最新文章
- 迁移碰到数据库 Unknown collation: 'utf8mb4_unicode_ci'
- ASP.NET MVC 表单提交教程
- [译][python]ImportError:attempted relative import with no known parent package
- 阿里云服务器 宝塔面板 配置Python项目
- 高考特长计算机2017,2017年北京理工大学计算机学院申请竞赛获奖与特长生推荐.PDF...
- ?为什么要学这个技术(有什么优秀的地方,可以解决哪些问题?
- Servlet中获取请求行的数据
- javascript数组去重方法汇总
- Django Signal 代码布局
- 双层板在哪层覆铜_多层板的生产过程,与双层板有何不同?
- (转)基于Ajax的应用程序架构汇总
- 软件测试团队队名,电子设计大赛队名
- bzoj1036 [ZJOI2008]树的统计Count
- JAVA智能分析的简单聚众筹平台计算机毕业设计Mybatis+系统+数据库+调试部署
- 计算机视觉目标检测算法综述
- 2021年12月电子学会图形化四级编程题解析含答案:棕熊大战
- ubuntu14上nvidia 1080和 titan xp 驱动安装踩的坑
- Echarts - legend、tooltip、xAxis属性设置
- 超级马里奥(待完善)
- SAP MM移动平均价和标准价逻辑