远程登录--SSH 你值得拥有

SSH是一种安全协议,用于远程登录和其他网络服务,提供加密通信以防止信息泄露。它支持口令和密钥认证,其中密钥对验证更为安全。SSH服务的配置文件`/etc/ssh/sshd_config`包含多种安全设置,如禁止ROOT登录和空密码。TCP_Wrapper提供访问控制,通过`/etc/hosts.allow`和`/etc/hosts.deny`进行白名单和黑名单管理。
摘要由CSDN通过智能技术生成

目录

一:SSH服务详解

1.什么是SSH

2.SSH服务认证类型

1)基于口令认证

2)基于密钥认证

3.SSH安装

二: 配置ssh服务端

1.ssh配置文件

2. ssh配置文件主要条目介绍

 三:使用ssh客户端程序

1.使用ssh命令远程登录

​2.使用scp远程复制

(1)下行复制试例

(2)上行复制试例

 3.sftp安全FTP

四:配置密钥对验证

 五:TCP_wapper的原理和运用

1.TCP_wapper的工作原理

2.TCP_wapper的保护机制的两种实现机制

 3.TCP_Wrappers的运用

(1)设置白名单

(2)设置黑名单

总结:


一:SSH服务详解

1.什么是SSH

SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。

SSH是标准的网络协议,可用于大多数UNIX操作系统,能够实现字符界面的远程登录管理它默认使用22号端口采用密文的形式在网络中传输数据,它将客户端与服务端之间的消息通过加密保护起来,这样就无法被窃取或篡改了。相对于通过明文传输的Telnet,具有更高的安全性。

2.SSH服务认证类型

SSH提供了口令和密钥两种用户验证方式,这两者都是通过密文传输数据的。

1)基于口令认证

基于口令的安全验证的方式就是使用服务器中系统帐号对应的密码,只要知道服务器的SSH连接帐号和口令(当然也要知道对应服务器的 IP及开放的 SSH端口,默认为22 ),就可以通过 ssh客户端登录到这台远程主机。这要求输入的密码具有足够的复杂度才能具有更高的安全性(口令认证会受到“中间人”这种方式的攻击)。

2)基于密钥认证

基于密钥的安全验证必须为用户创建一对密钥(公钥和私钥),并把公钥放在需要访问的SSH服务器上,私钥存放在ssh客户端。当需要连接到SSH服务器上时,客户端软件就会向服务器发出请求,请求使用客户端的密钥进行安全验证。服务器收到请求之后,先在该用户的根目录下寻找公钥,然后把它和发送过来的公钥进行比较。如果两个密钥一致,服务器就用公钥加密“质询”,并把它发送给客户端软件。客户端收到质询之后,就可以用本地的私钥解密再把它发送给服务器。这种方式是相当安全的。

3.SSH安装

在RHEL或CENTOS系统中,OPENSSH服务由openssh、openssh-server、openssh-clients等软件包提供(默认已经安装)。

openssh:包含OpenSSH服务器及客户端需要的核心文件

openssh-clients:OpenSSH客户端软件包

openssh-server:OpenSSH服务器软件包

服务名:sshd
服务端主程序:/usr/sbin/sshd
客户端程序:/usr/bin/ssh
服务端主配置配置文件:/etc/ssh/sshd_config
客户端配置文件:/etc/ssh/ssh_config

二: 配置ssh服务端

1.ssh配置文件

sshd服务的配置文件默认位于/etc/ssh/sshd_config,正确调整相关配置项,可以进一步提高sshd远程登录的安全性

2. ssh配置文件主要条目介绍

(1)Port 22   

监听的端口(默认22),也可以使用多个Port,即重复使用 Port 这个配置项。

#例如想要开放sshd端口为 22和222,则添加如下内容

Port 22      Port 222

 (2)ListenAddress  0.0.0.0   监听的IP地址(默认监听所有IP)

设置sshd服务器绑定的IP地址,0.0.0.0 表示侦听所有地址, 这个值可以写成本地IP地址也可以写成所有地址。

 (3)SyslogFacility AUTHPRIV

当有人使用 SSH 登入系统的时候,SSH 会记录信息,这个信息要记录的类型为AUTHPRIV。

sshd服务日志存放在: /var/log/secure

 (4)LogLevel  INFO  日志记录的等级!INFO级别以上。 

(5)UseDNS   no    

禁用dns反向解析,一般来说,为了要判断客户端来源是正常合法的,因此会使用DNS去反查客户端的主机名,不过如果是在内网互连,设定为 no 会让联连接速度比较快。

(6)PermitRootLogin  no    禁止ROOT用户远程登录 

禁止root用户远程登录后,无法再登录 

 (7)PermitEmptyPasswords  no   禁止密码为空的用户远程登录

允许 密码为空用户登录后,将无密码验证 

(8)LoginGraceTime  2m  

限制用户登录验证过程的时间(默认为2分钟),即在多久时间内没有成功连上 SSH server 就强迫断线!若无单位则默认时间为秒。可以根据实际情况来修改实际

 (9)MaxAuthTries  6     限制用户登录验证过程的最大重试次数  

超过最大重试次数,将断开连接 

 (10)PubkeyAuthentication   yes     是否启用密钥对验证 

 (11)PasswordAuthentication   yes   是否启用密码验证

 (12)AuthorizedKeysFile    .ssh/authorized_keys   

 指定保存各用户公钥内容的数据文件位置,默认保存用户公钥信息的文件位于(服务器某个用户宿主目录下的)

 (13) PrintLastLog  yes    显示上次登入的信息,如上次登入的时间、地点等等,默认是yes

 (14)PrintMotd  yes  登入后是否显示出一些信息,即打印出 /etc/motd这个文档的内容。

 三:使用ssh客户端程序

1.使用ssh命令远程登录

方式1: ssh 用户名@服务器地址
方式2: ssh -l 用户名  服务器地址
方式3: ssh  服务器地址(缺省时会尝试以当前的本地用户名进行登录)
提示:如果SSH服务器使用非默认端口,则客户机在登录时必须时确指定端口号
ssh   -p  端口   用户名@服务器地址

拓展:
[root@localhost opt]# ssh 192.168.231.100 ifconfig
#远程登录该ip主机执行ifconfig命令后退出

 

 2.使用scp远程复制

下行复制
scp root@192.168.80.11:/etc/passwd /root/passwd10.txt#将远程主机中的/etc/passwd文件复制到本机

上行复制
scp -r /etc/ssh/ root@192.168.80.10:/opt      #将本机的/etc/ssh目录复制到远程主机

(1)下行复制试例

主机1创建文件和目录 

 主机2将主机1的文件复制到本机目录下

(2)上行复制试例

主机2将本地/etc/ssh/复制到主机1的opt目录下 

 主机1在opt目录下查看主机2的目录已复制到本机

 3.sftp安全FTP

由于使用了加密/解密技术,所以传输效率比普通的FTP要低,但安全性更高。

四:配置密钥对验证

1.在客户端创建创键密钥对,在自己的家目录.ssh中生成密钥

通过ssh-keygen工具为当前用户创建密钥对文件。可用的加密算法为RSA、ECDSA或DSA等(ssh-keygen命令的“-t”选项用于指定算法类型)。
useradd admin
echo "123123" | passwd --stdin admin
su - admin

ssh-keygen -t rsa
Generating public/private ecdsa key pair.
Enter file in which to save the key (/home/admin/.ssh/id_ecdsa): 	#指定私钥位置,直接回车使用默认位置
Created directory '/home/admin/.ssh'.			#生成的私钥、公钥文件默认存放在宿主目录中的隐藏目录.ssh/下
Enter passphrase (empty for no passphrase): 				#设置私钥的密码
Enter same passphrase again: 								#确认输入

ls -l .ssh/id_ecdsa*
#id_ecdsa是私钥文件,权限默认为600;id_ecdsa.pub是公钥文件,用来提供给 SSH 服务器



[root@192 ~]# cd /root/.ssh
[root@192 .ssh]# ls
id_rsa  id_rsa.pub

 

 2.将公钥文件上传至服务器

[root@192 .ssh]# scp id_rsa.pub root@192.168.231.100:/opt  #将文件复制到目标主机目录下

切换到服务端查看 

3. 在服务器中导入公钥文件

方法1:
[root@192 ~]# mkdir /root/.ssh/
[root@192 ~]# cd /opt
[root@192 opt]# vim /root/.ssh/authorized_keys

方法2:
ssh-copy-id -i 公钥文件 用户@服务端IP

 4.客户端登录测试

(1)客户端正常输入密码登录

(2)客户端设置ssh代理功能,实现免交互登录(只对当前会话有效)

[root@192 ~]# ssh-agent bash
[root@192 ~]# ssh-add


 五:TCP_wapper的原理和运用

1.TCP_wapper的工作原理

TCP_Wrappers是一个工作在第四层(传输层)的的安全工具,对有状态连接(TCP)的特定服务进行安全检测并实现访问控制,界定方式是凡是调用libwrap.so库文件的的程序就可以接受TCP_Wrappers的安全控制。它的主要功能就是控制谁可以访问,常见的程序有rpcbind、vsftpd、sshd,telnet。

2.TCP_wapper的保护机制的两种实现机制

(1)直接使用tcpd程旭对其他服务程序进行保护,需要运行tcpd程序。

(2)由其他网络服务程序调用libwrap.so.*链接库,不需要运行tcpd程序。此方式的应用更加广泛,也更有效率。

使用 ldd 命令可以查看程序libwrap.so.*链接库

ldd $(which ssh)
[root@localhost ~]# ldd $(which sshd)|grep wrap

 

 3.TCP_Wrappers的运用

/etc/hosts.allow 设置允许访问 tcp 服务程序的策略(白名单)

/etc/hosts.deny 设置禁止访问 tcp 服务程序的策略    (黑名单)

(1)设置白名单

vim   /etc/hosts.allow 
 
 sshd:ip地址     #允许该用户访问

 (2)设置黑名单

vim  /etc/hosts.deny
 
sshd:ALL        #不允许任何人访问

总结:

黑名单和白名单的设置原理:先看 hosts.allow 文件中的设置,匹配上则直接放通,如果没有匹配则 再去看 hosts.deny 文件中的设置,匹配上则禁止/拒绝访问指定的tcp服务程序,如果也没有匹配上则默认允许放通

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值