目录
一: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服务程序,如果也没有匹配上则默认允许放通