目录
一.SSH远程管理
1.SSH与TELNET
SSH:密文 tcp / 22端口
TELNET:明文 tcp / 23端口
1.1.SSH优点
- 数据传输的过程是加密的,具有安全稳定的特点
- 数据传输的方式是压缩的,可以提高传输速度
2.SSH简介
- 是一种安全通道协议
- 对通信数据进行了加密处理,用于远程管理
2.1.OpenSSH
- 服务名称:sshd
- 服务端主程序:/usr/sbin/sshd
- 服务端配置文件:/etc/ssh/sshd_config
- 客户端配置文件:/etc/ssh/ssh_config
2.2.常用的SSH软件的介绍
- SSH客户端:putty(开源工具),xshell,CRT
- SSH服务端:openSSH(centos7系统默认安装)
- CentOS7 SSH服务启动自检命令: systemctl is-enabled sshd
网络
SSH客户端<--------------------------------------->SSH服务端
数据传输是加密的,可以防止信息泄漏
数据传输是压缩的,可以提高传输速度
注意:在生产环境中,为了保密等措施,Xshell、CRT等外国软件应用较少,多使用国产或开源的
终端工具
二.配置OpenSSH服务器
1.sshd_config配置文件的常用选项设置
vim /etc/ssh/sshd_config
Port 22 监听端口为 22
ListenAddress 0.0.0.0 监听地址为任意网段,也可以指定OpenSSH服务器的具体IP
LoginGraceTime 2m 登录验证时间为 2 分钟
PermitRootLogin no 禁止 root 用户登录
MaxAuthTries 6 最大重试次数为 6
PermitEmptyPasswords no 禁止空密码用户登录
UseDNS no 禁用 DNS 反向解析,以加快远程连接速度
AllowUsers zhangsan lisi wangwu
@61.23.24.25 只允许zhangsan、lisi、wangwu用户登录,且其中wangwu用户
仅能够从IP地址为61.23.24.25 的主机远程登录 多个用户以空
格分隔
DenyUsers zhangsan 禁止某些用户登录,用法于AllowUsers 类似(注意不要同时使
用)
2.sshd 服务支持两种验证方式
2.1.密码验证
对服务器中本地系统用户的登录名称、密码进行验证。简便,但可能会被暴力破解
2.2.密钥对验证
要求提供相匹配的密钥信息才能通过验证。通常先在客户端中创建一对密钥文件(公钥、私钥),
然后将公钥文件放到服务器中的指定位置。远程登录时,系统将使用公钥、私钥进行加密/解密关
联验证。能增强安全性,且可以免交互登录
2.3.公钥和私钥的关系
●公钥和私钥是成对生成的,这两个密钥互不相同,可以互相加密和解密。
●不能根据一个密钥来推算出另一个密钥。
●公钥对外公开,私钥只有私钥的持有人才知道。
当密码验证、密钥对验证都启用时,服务器将优先使用密钥对验证。可根据实际情况设置验证方式
vim /etc/ssh/sshd_config
PasswordAuthentication yes 启用密码验证
PubkeyAuthentication yes 启用密钥对验证
AuthorizedKeysFile .ssh/authorized_keys 指定公钥库文件
三.使用SSH客户端程序
1.ssh远程登录
ssh [-p 端口] 用户名@目标主机IP
ssh [-p 端口] 用户名@目标主机IP 命令 临时登录目标主机执行命令后退出
2.scp远程复制
scp [-P 端口] [-r] 本机文件/目录路径 ... 用户名@目标主机IP:绝对路径
将本地的文件/目录复制到目标主机
scp [-P 端口] [-r] 用户名@目标主机IP:绝对路径 本机路径
将目标主机的文件/目录复制到本机
3.sftp文件传输
sftp [-P 端口] 用户名@目标主机IP
> get put cd ls
四.SSH的验证方式
1.密码验证
使用账号和密码进行验证
PasswordAuthentication yes
2.密钥对验证
使用客户端创建的密钥对进行验证
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys 服务端的公钥文件默认保存路径
3.SSH密钥对的创建和使用
3.1.确保服务端开启了ssh密钥对验证
/etc/ssh/sshd_config --> PubkeyAuthentication yes
3.2.在客户端创建密钥对
ssh-keygen [-t rsa/dsa/ecdsa]
- 生成的密钥对默认存放在当前用户家目录的 .ssh/ 目录中
- 私钥是留给自己使用的
- 公钥(XXX.pub)是给服务端使用的
3.3.上传公钥至服务端
ssh-copy-id [-i 公钥文件] 用户名@目标主机IP
- 公钥信息会自动保存到服务端的 ~/.ssh/authorized_keys 文件里
3.4.客户端 ssh 远程登录,使用密钥对的密码进行验证
3.5.补充
密钥对在客户端是谁创建的,只能谁使用;密钥对上传给服务端的哪个用户,那么就只能使用那个
用户去登录
4.SSH密钥对免交互登录
4.1.使用空密码的密钥对
ssh-keygen 一路回车,不设置密码
ssh-copy-id
4.2.创建ssh会话代理(只能在当前会话中有效)
ssh-agent bash
ssh-add
五.TCP Wrappers机制
1.保护原理
TCP Wrappers(TCP封套) 是一个简单的防火墙机制。用来将TCP服务程序“包裹”起来,代为监
听TCP服务程序的端口,增加了一个安全检测过程,外来的连接请求必须先通过这层安全检测,获
得许可后才能访问真正的服务程序
大多数 Linux 发行版,TCP Wrappers 是默认提供的功能
2.TCP Wrappers保护机制的两种实现方式
- 方式1:通过tcpd程序对其他服务程序进行包装
- 方式2:由其他服务程序调用libwrap.so.*链接库(应用更广泛,更有效率)
2.1.方式2实际操作
支持
不支持
3.TCP Wrappers的运用
- /etc/hosts.allow 设置允许访问 tcp 服务程序的策略(白名单)
- /etc/hosts.deny 设置禁止访问 tcp 服务程序的策略(黑名单)
4.TCP Wrappers 的访问策略
- TCP Wrappers 机制的保护对象为各种网络服务程序,针对访问服务的客户端地址进行访问控制。
- 通过 /etc/hosts.allow,/etc/hosts.deny 这两个文件来管理的一个类似防火墙的机制,分别用来设置允许和拒绝的策略
4.1.格式
<服务程序列表>:<客户端地址列表>
服务程序列表
- ALL:代表所有的服务。
- 单个服务程序:如“vsftpd”。
- 多个服务程序组成的列表:如“vsftpd,sshd”
客户端地址列表
- ALL:代表任何客户端地址
- LOCAL:代表本机地址
- 多个地址以逗号分隔
允许使用通配符 “*” 和 “?” ,前者代表任意长度字符,后者仅代表一个字符
网段地址 如 “192.168.80.” 或者 192.168.80.0/255.255.255.0 (掩码只支持 netmask 的地址显示方式)
区域地址 如 “.benet.com”匹配 benet.com 域中的所有主机
5.TCP Wrappers 机制的基本原则
- 首先检查/etc/hosts.allow文件,如果找到相匹配的策略,则允许访问
- 否则继续检查/etc/hosts.deny文件,如果找到相匹配的策略,则拒绝访问
- 如果检查上述两个文件都找不到相匹配的策略,则允许访问
允许所有,拒绝个别”
只需在/etc/hosts.deny文件中添加相应的拒绝策略
“允许个别,拒绝所有”
除了在/etc/hosts.allow中添加允许策略之外,还需要在/etc/hosts.deny文件中设置“ALL:ALL”的拒绝
策略