Linux云架构基础2.1——sshd远程服务

SSH简介

SSH(Secure Shell)是一种能够提供安全远程登录会话的协议,使用ssh可以在远程linux中执行命令,两种安全验证的方法:
  (1)基于口令的安全验证:经过验证帐号与密码即可登录到远程主机
  (2)基于**的安全验证:需要在本地生成“**对”后将公钥传输至服务器,进行公共**的比较。
Telnet同样也是一种远程登录工具,但是他是基于明文传输,并不安全。

OpenSSH软件包

SSH的安装需要安装以下安装包

openssh-7.4p1-16.el7.x86_64 (服务端和客户端都需要安装的,包含ssh所需的组件)

openssh-clients-7.4p1-16.el7.x86_64 (客户端安装软件包)

openssh-server-7.4p1-16.el7.x86_64 (服务端安装软件包)

rpm -pqi 软件包(查看软件rpm包的作用)

rpm -ql 软件名 (查看软件所产生的文件目录)

ssh的安装

两种安装方式
yum安装
yum install openssh openssh-clients openssh-server -y
rpm 安装
rpm -ivh xxxx.rpm
使用rpm -aq | grep openssh命令查看安装了哪些openssh相关软件

Linux云架构基础2.1——sshd远程服务
OpenSSH常用配置文件

/etc/ssh/ssh_config 客户端配置文件

/etc/ssh/sshd_config 服务端配置文件

ssh相关指令

开启ssh服务命令

systemctl start/restart/stop/status sshd

/etc/init.d/sshd start/restart/stop/status

开机启动 chkconfig sshd on

查看开机启动 chkconfig --list sshd

ssh远程连接服务器

  1. 首先确定是否能ping通

  2. 第一次连接会生成RSA,并将主机的信息存储在/root(谁登录就是谁的家目录)/.ssh/known_hosts文件中

ssh的配置文件

/etc/ssh/ssh_config 客户端配置文件

/etc/ssh/sshd_config 服务端配置文件

—配置文件位置 /etc/ssh/sshd_config

—配置文件中,#号注释的是文件,带有端口号的是默认,默认端口号

—端口号可以多个,netstat -anutp (发现开启2个端口号)

—修改完配置文件之后一定要重启,inode号已经变了

—是否需要密码认证PasswordAuthentication yes

—LoginGraceTime 2m (输入密码未登陆多长时间退出)

—PrintMotd yes 登陆之后显示的内容vim /etc/PrintMotd,打印内容

—PrintLastLog yes 显示上次登陆的时间

—Protocol 2 选择的SSH协议版本,一般用协议2,如果想要支持协议1,设置为Protocol 2,1即可。

小故事
《黑客帝国:重装上阵》中使用sshd的配置文件原理来进行暴力**root用户密码,其中入侵核电站的方法SSH CRC-32漏洞,将核电站Root密码更改,成功登陆,感兴趣的同学可以去瞅瞅。

ssh的默认的日志

ls /var/log/secure

ssh连接登录的信息都被记录在/var/log下的secure文件中

通过秘钥对进行sshd服务认证

ssh通信主要基于两种通信方式

一种是基于密码登录,ssh连接用户时输入密码即可登录

另一种是基于秘钥对登录,这里使用的是rsa公私钥算法,算法的原理是,ssh主机在本地生成一对秘钥对(公钥和私钥),主机将私钥发送给需要连接本机的远程主机即可。下面为步骤

—使用ssh-****** 生成**对
ssh-******
—将公钥分发到需要连接的远程主机
ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.238…
—测试远程连接即可,连接远程主机的root用户
ssh [email protected]

登录警告信息

当其他用户成功**或者其他用户登录时,我们可以编辑ssh警告信息,来吓唬一下他们,实现方法如下。
提示信息被放在/etc/motd ,在此文件中添加需要警告的信息即可。
Linux云架构基础2.1——sshd远程服务

scp服务器之间的拷贝

scp是基于ssh登录并且复制数据,远程复制过程安全,操作简单

scp 本服务器绝对地址 [email protected]:/tmp

scp [email protected]:/etc/passwd/ /opt

拷贝目录(加r)

scp /etc/hosts 192…:/opt

防暴力**

使用ssh远程连接时存在一些安全隐患,比如有人恶意登录,恶意**你的主机,导致主机或者网站访问速度过慢,此时需要采取措施预防这些问题。
方法如下:

  1. 密码复杂
    ​ 长度大于8位,最好大于14位,最好有数字、大小写英文
  2. 修改默认端口号(/etc/ssh/sshd_config)
  3. 不使用root用户登录(禁用root用户,不太方便)

​ 限制root用户登录,root用户一登录上去就被退出
Linux云架构基础2.1——sshd远程服务
创建普通用户zhang,设置为超级管理员

Linux云架构基础2.1——sshd远程服务

此时登录的用户为zhang,但是显示为root用户,被他人尝试暴力**登录时需要先**出此用户的用户名及密码,这一点不是那么容易的,就保障了系统的安全。

Linux云架构基础2.1——sshd远程服务

在ssh配置文件中可以禁止root用户登录,PermitRootLogin no

此时上方设置的zhang用户也不能登录,因为zhang用户被设置为管理员用户,此时此时则不能登录。

以上,一般小公司就解决了暴力**的问题,以下需要使用开源软件来实现。

  1. 还有情况,暴力**的时候,一直不断的被尝试登录,此时需要找出此暴力**的ip并将此ip禁止即可,在日志文件lastb中即可查看登录的用户信息。

  2. 登录信息会被记录在登录信息文件中,此时如果文件的内容太大则会浪费系统空间,,说明还没有被**,禁用对应ip地址即可。

​ ll -h /var/log/btmp

实战背景

​ 公司公网网站一直被他人暴力**sshd的服务密码,虽未**成功,但是导致系统的负载过高。由于在暴力**的时候,系统不断登录尝试密码认证用户,从而增加系统资源的额外开销,导致网站访问速度过慢。

​ 此时使用fail2ban防暴力**工具,在另一篇文档中有涉及,链接如下: