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                  #组黑名单

1、限制用户SSH登录
只允许指定用户进行登录(白名单):
在/etc/ssh/sshd_config配置文件中设置AllowUsers选项,(配置完成需要重启 SSHD 服务)格式如下:

AllowUsers aliyun test@192.168.1.1
#允许 aliyun 和从 192.168.1.1 登录的 test 帐户通过 SSH 登录系统。

只拒绝指定用户进行登录(黑名单):
在/etc/ssh/sshd_config配置文件中设置DenyUsers选项,(配置完成需要重启SSHD服务)格式如下:

DenyUsers zhangsan aliyun #Linux系统账户
#拒绝 zhangsan、aliyun 帐户通过 SSH 登录系统
重启SSH
service sshd restart

2、限制IP SSH登录

说明:这里的IP是指客户端IP,不是服务器IP,下面的例子使用了hosts.allow文件的配置方式,目的是快,但也有不灵活的,建议改成iptables的方案。

除了可以禁止某个用户登录,我们还可以针对固定的IP进行禁止登录,linux 服务器通过设置/etc/hosts.allow和/etc/hosts.deny这个两个文件,hosts.allow许可大于hosts.deny可以限制或者允许某个或者某段IP地址远程 SSH 登录服务器,方法比较简单,且设置后立即生效,不需要重启SSHD服务,具体如下:

/etc/hosts.allow添加

sshd:192.168.0.1:allow #允许 192.168.0.1 这个IP地址SSH登录
sshd:192.168.0.:allow
#允许192.168.0.1/24这段IP地址的用户登录,多个网段可以以逗号隔开,比如192.168.0.,192.168.1.:allow

/etc/hosts.allow添加

sshd:ALL #允许全部的ssh登录

hosts.allow和hosts.deny两个文件同时设置规则的时候,hosts.allow文件中的规则优先级高,按照此方法设置后服务器只允许192.168.0.1这个IP地址的SSH登录,其它的IP都会拒绝。

/etc/hosts.deny添加

sshd:ALL #拒绝全部IP

三、免密登录(基于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直接进行登录
  • 做好日志分析
  • 加强用户登录的密码口令

原文:https://www.linuxidc.com/Linux/2017-09/146944.htm

SSH服务端配置、优化加速、安全防护相关推荐

  1. 最新华为交换机配置ssh服务端配置案例

    最新华为交换机配置ssh服务端配置案例 # aaa local-user dcrmyy password irreversible-cipher Huawei@123local-user dcrmyy ...

  2. linux ssh服务的优化,SSH服务端配置、优化加速、安全防护

    CentOS7自带的SSH服务是OpenSSH中的一个独立守护进程SSHD.由于使用telnet在网络中是明文传输所以用其管理服务器是非常不安全的不安全,SSH协议族可以用来对服务器的管理以及在计算机 ...

  3. Linux之SSH服务端配置文件安全设置

    远程访问安全-SSH 如何才能让ssh更加安全? ssh安全性和配置最佳实践: * 将root账户仅限制为控制台访问,不允许ssh登录 # vim /etc/ssh/sshd_config Permi ...

  4. Windows系统中使用SSH服务端和客户端

    Windows 下SSH 使用概览 Linux 系统一般自带SSH 的服务端和客户端, Windows系统在Windows 10(1809) 和 Windows Server 2019开始自带了Ope ...

  5. 【Linux】SSH远程终端连接工具(SSH基本用法、ssh服务认证类型、ssh服务常见配置、常见配置总结、远程拷贝scp命令)

    一.SSH远程终端连接工具 1.SSH简介 SSH是一种网络协议,用于计算机之间的加密登录.最早的时候,互联网通信都是明 文通信,一旦被截获,内容就暴露无疑.1995年,芬兰学者Tatu Ylonen ...

  6. DCN-s4600 ssh服务登录配置:

    DCN-s4600 ssh服务登录配置: 命名交换机和配置交换机远程登录账号与密码: 配置vlan1IP地址: 将et1/0/1端口加入vlan1: 开启交换机远程登录认证方式: 配置交换机全局模式多 ...

  7. NFS介绍、NFS服务端配置安装配置、 NFS配置选项、 客户端的配置

    NFS介绍 NFS是Network File System的缩写 ,是在网络层面,NFS(Network File System)网络文件系统会经常用到,用于在网络上共享存储.这样讲,你对NFS可能不 ...

  8. Linux centos7安装nfs及服务端配置

    安装 [root@hygon-vm ~]# rpm -qa nfs-utils [root@hygon-vm ~]# rpm -qa rpcbind [root@hygon-vm ~]# [root@ ...

  9. linux ssh服务端下载文件,Linux SSH服务端配置文件设置

    一 SSH概述 SSH 由 IETF 的网络小组(Network Working Group)所制定:SSH 为建立在应用层基础上的安全协议.SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安 ...

最新文章

  1. Host Only、NAT和Bridge三种网络连接
  2. 北方工业大学计算机科学与技术复试分数线,北方工业大学复试分数线
  3. 编写程序,输出所有3位数的水仙花数
  4. 卷积神经网络(CNN)新手指南
  5. php未登录跳到登陆页面,vue实现未登录跳转到登录页面的方法
  6. iOS之深入探究CADisplayLink和NSTimer的对比和内存溢出问题
  7. 为什么要使用路由重分发?
  8. 数据库中char, varchar, nvarchar的差异
  9. OSS在线迁移服务剖析
  10. 三方应用集成_华为携手利尔达完成业界首个5G工业智能网关预商用集成验证
  11. 应用程序虚拟化,序列化实验 Microsoft Desktop Optimization Pack 实现一个应用程
  12. 胡萝卜,是鸡蛋,还是咖啡豆
  13. CTR点击率预估实战分享
  14. paip.使用WORD进行拆分段落单个汉字转表格.txt
  15. 学习unity的几个网站
  16. 【深度】注册测绘师执业制度实施的现状分析
  17. SolidWorks一级减速器教程
  18. 卷积神经网络识别车辆(自建+迁移学习)
  19. 自考软件工程常考简答题历年真题
  20. JVM简笔—类的加载

热门文章

  1. 网络研讨会的邀请:丑女大翻身——用bbed工具对Oracle进行微整形
  2. 如何给信号加噪声,matlab
  3. 程序员的祖师爷到底有多么牛逼?
  4. BZOJ1930: [Shoi2003]pacman 吃豆豆
  5. 【BZOJ 1930】 [Shoi2003]pacman 吃豆豆 最大费用最大流
  6. 自动化办公:教你如何快速合并Excel文件
  7. 群策群力:传智“小马”齐过河——成都传智播客校园新闻
  8. Django框架初体验(二)
  9. Latex:跨页多图
  10. python如何录音_python实现录音功能