SSH服务端配置、优化加速、安全防护

CentOS7自带的SSH服务是OpenSSH中的一个独立守护进程SSHD。由于使用telnet在网络中是明文传输所以用其管理服务器是非常不安全的不安全,SSH协议族可以用来对服务器的管理以及在计算机之间传送文件。
一、配置文件
- 服务器配置文件 /etc/ssh/sshd_config
- 日志文件 /var/log/secure
二、配置文件详解
Port 22 #默认端口
ListenAddress IP #监听服务器端的IP,ss -ntl 查看22端口绑定的iP地址
LoginGraceTime 2m #登录时不输入密码时超时时间
HostKey # HostKey本地服务端的公钥路径
UseDNS no #禁止将IP逆向解析为主机名,然后比对正向解析的结果,防止客户端欺骗
PermitRootLogin yes #是否允许root使用SSH远程登录
MaxAuthTries 6 #密码错误的次数6/2=3(MAN帮助中写明要除2)次后断开连接
MaxSessions 10 #最大的会话连接数(连接未登录的会话最大值,默认拒绝旧的连接未登录的会话)
StrictModes yes #检查用户家目录中ssh相关的配置文件是否正确
PubkeyAuthentication yes #是否使用基于key验证登录
AuthorizedKeysFile .ssh/authorized_keys #key验证登录的客户端公钥路径
PasswordAuthentication yes #是否允许使用密码登录
PermitEmptyPasswords no #用户使用空口令登录
GatewayPorts no #启用网关功能,开启后可以将建立的SSH隧道(端口转发)共享出去
ClientAliveCountMax 3 #探测3次客户端是否为空闲会话,↓3*10分钟后断开连接
ClientAliveInterval 10 #空闲会话时长,每10分钟探测一次
MaxStartups 10:30:100 #start:rate:full;当连接但为进行认证的用户超过10个,drop30%(rate/full)的连接当连接但未登录的连接达到100个后,新建立的连接将被拒绝
Banner /path/file #认证前输出的登录提示信息,指定文件路径
GSSAPIAuthentication no
AllowUsers username #白名单,如果白名单有用户只有白名单的用户可以登陆
DenyUsers #黑名单,被拒绝的用户,如果即允许又拒绝则拒绝生效
AllowGroups #组白名单
DenyGroups #组黑名单
三、免密登录(基于KEY验证登录)
在客户端成功密钥对,然后将公钥复制到要免密登录的服务器即可。
注:名称只能为 authorized_keys ,添加多个公钥信息可以直接追加>> .ssh/authorized_keys
ssh-keygen -t rsa -p “1234” #创建密钥对,-t类型为rsa,-p私钥密码为1234
ssh-copy-id -i ~/.ssh/id_rsa.pub IP #-i指定公钥路径后将公钥复制到远程IP ~/.ssh/authorized_keys
四、常见故障
- 提示 ssh_exchange_identification: Connection closed by remote host
多数情况为配置文件出错,可以使用sshd -T对配置文件进行逐一检查 - 提示:server refused our key 免密登录被拒绝
使用免密登录 公钥文件的权限不正确所以会拒绝登录,检查客户端复制到服务端的公钥信息文件权限是否正确
五、优化加速
服务器端修改配置文件中一下两项进行修改
vim /etc/ssh/sshd_conf
UseDNS no
GSSAPIAuthentication no
UseDNS 会对客户端进行DNS反向解析,然后在比对正向解析的结果查看是否一致。
GSSAPIAuthentication大多数情况下使用密码验证或者秘钥验证所以关闭GSSAPI验证即可
六、日志分析
查看方式
手动查看日志文件/var/log/secure
systemctl查看日志文件systemctl suts sshd常见警告
提示:Authentication refused:bad ownership or modes for diectory
ssh连接的用户的家目录下.ssh目录所有者或者权限不正确(正确为700),sshd会发出警告但依然允许登录
七、安全相关
- DOS
SSH也可能成为DOS攻击的对象,例如恶意用户连接SSH但不输入密码进行验证,由于设置了MaxStartups会导致正常用户无法进行登录。针对此情况建议:
- 修改默认端口
- MaxStartups调大一些例如
MaxStartups 100:30:1000 - LoginGraceTime 10 调整连接超时未10秒
- MaxSessions 10 设置连接但未登录的用户最大值为10
- 其他优化
- 限制可登录用户
- 设定空闲会话超时时长
- 充分利用防火墙设置ssh访问策略
- 仅监听指定IP的ssh
- 禁止使用空口令登录
- 禁止使用root直接进行登录
- 做好日志分析
- 加强用户登录的密码口令
SSH服务端配置、优化加速、安全防护的更多相关文章
- Rsync同步部署web服务端配置
Rsync同步部署web服务端配置 1,参数详解: -v, --verbose 详细模式输出. -q, --quiet 精简输出模式. -c, --checksum 打开校验开关,强制对文件传输进行校 ...
- Oracle10g客户端链接服务端配置
Oracle10g客户端工具plsql链接服务端配置 Oracle10g客户端工具比如plsql,在网络中链接服务端问题比较多中国菜刀,经常出现很多莫名其妙的问题.实际上不是plsql的配置,问题还是 ...
- mpush 服务端配置 for windows 服务自动运行
mpush 服务端配置 以下安装部分是参照官方的步骤, 一.安装jdk1.8并配置环境变量 示例: http://www.cnblogs.com/endv/p/6439860.html 二.Wind ...
- 【试水CAS-4.0.3】第06节_CAS服务端配置HTTPS
完整版见https://jadyer.github.io/2012/05/30/tomcat-https/ /** * @see CAS服务端配置HTTPS * @see -------------- ...
- Orleans[NET Core 3.1] 学习笔记(三)( 3 )服务端配置
服务端配置 Silo通过SiloHostBuilder和许多补充选项类以编程方式进行配置. Silo配置有几个关键方面: Orleans集群信息 集群提供程序(不知道咋翻译) Silo到Silo和Cl ...
- day28 rsync服务端配置和客户端
2. rsync守护进程部署方式 客户端---服务端 上厕所 4 rsync守护进程服务端配置: 第一个历程: 下载安装软件 rpm -qa|grep rsync yum install -y rsy ...
- Java服务端性能优化
<Java程序性能优化>说性能优化包含五个层次:设计调优.代码调优.JVM调优.数据库调优.操作系统调优. 常用的几个代码优化方案: 使用单例 对于IO处理.数据库连接.配置文件解析加载等 ...
- ssh-修改ssh服务端口号
在启动selinux的状态下修改ssh的端口号 0.启动selinux setenforce 1 getenforce 1.修改sshd_config的Port为2234 查看2234 ...
- MFC ADO连接Oracle12c数据库 服务端配置
要想客户端访问服务器端的oracle数据库的话,还需要服务端设置下监听程序及本地网络服务名配置. 发现百度文库上面有这方面的文档,我就不重复写了.请参照一下网址: http://wenku.baidu ...
随机推荐
- OkHttp实现全局过期token自动刷新
#遇到问题: 当前开发的 App 遇到一个问题: 当请求某个接口时,由于 token 已经失效,所以接口会报错.但是产品经理希望 app 能够马上刷新 token ,然后重复请求刚才那个接口,这个过程 ...
- 豹哥嵌入式讲堂:ARM知识概要杂辑(2)- 第一款Cortex-M处理器
1.天生荣耀:ARM Cortex-M处理器由来 ARM公司自2004年推出ARMv7内核架构时,摒弃了以往"ARM+数字"这种处理器命名方法(ARM11之前的处理器统称经典处理器 ...
- Unity3d 基本设计开发 原则(提高代码可读性)
参考:http://blog.csdn.net/qq_34134078/article/details/51780356 1.单一原则 即:明确类的定义.通俗来讲,让他们只做一件事,而不是多件事. 提 ...
- .Net 更容易的使用配置文件 SuperConfig
一.原始配置文件的问题 我们在做开发时,不管是B/S还是C/S,现在几乎所有的项目都会碰到使用配置文件,简单点的如链接字符串.上传路径啊,一些API的接口地址等等.复杂点就更多了,如ActiveMQ的 ...
- 使用postMessage实现跨域 解决'Failed to execute 'postMessage' on 'DOMWindow''
使用iframe+postMessage解决跨域问题,首先来过一遍其中的原理咯 原理: 发送方使用postMessage方法向接收方推送消息,第一个参数为推送的内容,第二个参数是允许被访问的域名: 接 ...
- 面向对象编程之super内置函数的用法
先来看一段代码: 定义一个名叫People的父类,又定义了一个叫Teacher的老师类和一个叫Student的学生类 来继承People的类,并根据这两个子类实例化出两个对象s1和t1. class ...
- 配置apache使之支持浏览器端的缓存
当直接在浏览器中输入一个URL,或者点击一个链接的时候,那么浏览器缓存就会起作用,如果缓存没有过期,那么浏览器会从本地读取资源,不会发起HTTP请求,如果缓存过期,那么浏览器会发起新的浏览器请求. 一 ...
- RMI基础
远程方法调用(Remote Method Invocation,RMI)从JDK1.1就已经实现,它大大增强了Java开发分布式应用的能力.可以实现通过网络完成不同JVM间的通信,不仅可以传递基本的数 ...
- python基础 列表 的用法及介绍
列表 首先定义一个列表 声明列表 列表名字=[值1,值2] list=[1,2,3,4,5] 这是一个列表,列表中有五个元素(1,2,3,4,5) 显示list列表 print list 输出 ...
- spring security 4 filter 顺序及作用
Spring Security 有两个作用:认证和授权 一.Srping security 4 filter 别名及顺序 spring security 4 标准filter别名和顺序,因为经常要用就 ...