ssh服务介绍及配置

1、ssh介绍

一、什么是 ssh

ssh 是 Secure Shell 的缩写,是一个创建在应用层上的安全远程管理协议。ssh 是目前较为可靠的传输协议,专为远程登陆会话和其余网络服务提供安全性。利用 ssh 协议能够有效防止远程管理过程当中的信息泄露问题。 ssh可用于大多数UNIX和类UNIX操做系统中,可以实现字符界面的远程登陆管理,它默认使用22端口,采用密文的形式在网络中传输数据,相对于经过明文传输的Telnet协议,具备更高的安全性。linux

二、ssh的登陆验证

ssh 提供了基于帐户密码(口令)和密钥对两种登陆验证方式,这二者都是经过密文传输数据的。shell

帐户密码验证:

登陆格式
ssh 用户名@IP地址
密钥对验证:
  • 首先须要在 Client 上建立一对密钥,而且须要把公钥放在须要访问的 Server 上。
  • 当 Client 须要链接 Server 时,Client 端的软件就会向 Server 端发出登陆请求,请求使用密钥对中的的公钥进行安全验证
  • Server 收到请求以后,会在该用户的家目录下查询公钥文件,拿 Client 发送过来的公钥和本身家目录下的公钥 进行比较
  • 若是两个公钥一致,Server 就用公钥加密“challenge(质疑)”,并把它发送给 Client 软件。Client 收到加 密内容以后,使用本地的私钥进行解密,再把解密结果发送给 Server 端,Server 端验证成功后,容许登陆。

2、ssh服务

一、环境准备

准备好两台Linux操做系统的主机,且将其主机名更改成不一样,便于后面的密钥对登陆。
centos6 更改主机名vim

[root@centos ~]# vim /etc/sysconfig/network
HOSTNAME=centos-11

临时关闭防御功能:windows

iptables -F #清空防火墙规则 
 setenforce 0 #临时关闭SELinux

永久关闭防御功能:centos

chkconfig iptables off         #设置防火墙开机不自启动 
 sed -i ‘7s/enforcing/disabled/’ /etc/selinux/config  #永久关闭SELinux 
 #注意:以上两条命令执行后,须要重启服务器才能生效
二、密钥对登陆配置
一、linux主机间进行密钥对登陆

一、客户端生成密钥对文件 ssh-keygen -t rsa -b 2048
-t 指定加密类型(rsa/dsa等)
-b 指定密钥对加密长度
询问1:执行过程当中会询问保存位置,通常默认保存在当前用户家目录下的.ssh/目录下
询问2:是否对密钥文件进行加密
加密:若加密,则在调用密钥文件时须要先验证密钥的密码,密码正确才能使用密钥文件
不加密:若不加密,则密钥文件能够直接被调用,整个登陆验证过程无需输入任何密码,即为免密登陆安全

[root@centos-11 ~]# ssh-keygen -t rsa -b 2048

二、将公钥文件上传至服务器端 ssh-copy-id 用户名@服务器IP地址服务器

[root@centos-11 ~]# ssh-copy-id root@10.10.10.12
#该用户名和要用来登陆服务器的用户名一致

三、客户端尝试登陆服务器 ssh 用户名@服务器IP地址网络

[root@centos-11 ~]# ssh root@10.10.10.12
Last login: Fri Dec 20 20:41:00 2019 from 10.10.10.1
#密钥对验证优先级大于帐户密码验证
二、windows 密钥对登陆 linux主机

因为Windows不能直接生成密钥对,因此须要借助工具。我使用的是xshell
一、使用Xshell自带的密钥对生成向导生成密钥对

一直下一步,其中有一步是,设置密码为本地私钥。看状况进行选择。最后一步复制公钥无需保存。
app

二、将公钥导入Linux主机的指定用户下的指定公钥配置文件内 后面用哪一个用户登陆就放在谁的用户家目录下,找到 .ssh 目录,而后在里面建立 authorized_keys 文件,而且将公钥写入。ssh

[root@centos-12 ~]# vim .ssh/authorized_keys
#粘贴你刚才复制的公钥信息,另起一行

三、使用windows尝试登陆指定用户

三、禁止root用户远程登陆

root 在系统中是一个能够随心所欲的角色,咱们能够在平时的操做中用普通用户操做,在有须要修改一些系统设置的时候再从普通用户切换到 root 用户,这样能够最大限度的避免由于误操做而对系统形成破坏,同时也能够避免黑客在暴力破解后直接使用 root 用户登陆系统,通常在远程登陆管理上咱们会禁止直接使用 root 用户登陆。

配置文件:/etc/ssh/sshd_config 
选项:  
PermitRootLogin no
四、修改默认端口
修改默认端口:ssh 做为一个用来远程管理服务器的工具,须要特别的安全,默认状况下使用TCP的22端口,若不进行修改,很容易被利用遭到攻击,因此咱们通常都会修改端口,尽可能修改一个高位端口(范围1-65535)
配置文件:/etc/ssh/sshd_config 
 Port 55235
linux 主机登陆
    ssh -p 55235 root@10.10.10.12
xshell 登陆
    ssh root@10.10.10.12:55235
五、ssh服务相关服务
scp:安全的远程文件复制命令

scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,相似于命令有cp,scp传输是加密的,因此可能会稍微影响一点速度。另外,scp还很是不占资源,不会提升多少系统负荷。

格式:
scp 本地文件 用户名@服务器IP:目录 
scp test.txt root@10.10.10.12:/tmp    
 -P 端口   #若端口不是默认22,则须要使用此格式指定端口
sftp:安全的文件传输协议

sftp是Secure FileTransferProtocol的缩写,安全文件传送协议。sftp与ftp有着几乎同样的语法和功能。因为这种传输方式使用了加密/解密技术,因此sftp比ftp更安全一些,但传输效率比普通的FTP要低得多.

格式:
sftp 用户名@服务器IP  
-oPort=端口  #若端口不是默认22,则须要使用此格式指定端口 
交互命令: 
help:查看在交互模式下支持哪些命令 
pwd/lpwd:pwd是查看服务器所在路径;lpwd是查看客户端所在路径 
ls/lls:ls是查看服务器当前目录下的文件列表;lls是查看客户机当前所在路径的全部文件列表 
put:将客户机中的指定文件上传到服务器端 
get:将服务器端的指定文件下载到客户机的当前所在目录 
rm:删除掉服务器端的指定文件 
quit:退出sftp的交互模式,断开和服务器之间的链接
6 TCP Wrappers(简单防火墙)
一、介绍

TCP_Wrappers是一个工做在第四层(传输层)的的安全工具,对有状态链接(TCP)的特定服务进行安全检测并实现访问控制,界定方式是凡是调用libwrap.so库文件的的程序就能够受TCP_Wrappers的安全控制。它的主要功能就是控制谁能够访问,常见的程序有rpcbind、vsftpd、sshd,telnet。
简单来讲 TCP Wrappers 只对走tcp协议的一些服务起到控制做用。
判断方式:

1. 查看对应服务命令所在位置 which sshd 
2. 查看指定命令执行时是否调用libwrap.so文件 ldd /usr/sbin/sshd | grep libwrap.so
[root@centos-12 ~]# which sshd
/usr/sbin/sshd
[root@centos-12 ~]# ldd /usr/sbin/sshd | grep libwrap.so
    libwrap.so.0 => /lib64/libwrap.so.0 (0x00007fd38c0d1000)
二、工做原理

以ssh为例,每当有ssh的链接请求时,先读取系统管理员所设置的访问控制文件,符合要求,则会把此次链接原封不动的转给ssh进程,由ssh完成后续工做;若是此次链接发起的ip不符合访问控制文件中的设置,则会中断链接请求,拒绝提供ssh服务。

三、配置

TCP_Wrappers的使用主要是依靠两个配置文件/etc/hosts.allow, /etc/hosts.deny,以此实现访问控制,默认状况下,/etc/hosts.allow,/etc/hosts.deny什么都没有添加,此时没有限制 。

service_list@host: client_list 
配置文件编写规则: 
    service_list: 是程序(服务)的列表,能够是多个,多个时,使用,隔开
    @host:设置容许或禁止他人从本身的哪一个网口进入。这一项不写,就表明所有 
    client_list:是访问者的地址,若是须要控制的用户较多,可使用空格或,隔开
    内置ACL:ALL(全部主机)、LOCAL(本地主机)

以ssh服务代码示例:

拒绝单个 IP 使用 ssh 远程链接: 
配置文件: 
    hosts.allow:空着 
    hosts.deny:sshd:10.10.10.1
拒绝某一网段使用 ssh 远程链接: 
    hosts.allow:空着 
    hosts.deny:sshd:10.10.10. 
仅容许某一 IP 使用 ssh 远程链接: 
    hosts.allow:sshd:10.10.10.11
    hosts.deny:sshd:ALL
相关文章
相关标签/搜索