目录
一、SSH远程管理
1.1 配置OpenSSH服务端
1.1.1 SSH协议介绍
1.1.2 服务监听选项
1.1.3 用户登录控制
1.1.4 登录验证方式
1.2 使用SSH客户端程序
1.3 密钥对验证的SSH体系
二、TCP Wrapppers访问控制
2.1 TCP Wrappers概述
2.1.1 TCP Wrappers简介
2.1.2 TCP Wrappers保护机制的实现方式
2.2 TCP Wrappers访问策略
2.3 TCP Wrappers 机制的基本原则
一、SSH远程管理
1.1 配置OpenSSH服务端
1.1.1 SSH协议介绍
- SSH(Secure Shell)协议
- 是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。
- SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令。因此SSH协议具有很好的安全性。
- OpenSSH
- 服务名称:sshd
- 服务端主程序:/usr/sbin/sshd
- 服务端配置文件:/etc/ssh/sshd_config
- 默认端口号:22
- OpenSSH 是实现 SSH 协议的开源软件项目,系统默认已安装openssh相关软件包,并已将 sshd 服务添加为开机自启动,执行“systemctl start sshd”命令即可启动 sshd 服务
1.1.2 服务监听选项
- 端口号、协议版本、监听IP地址
- 禁用反向解析
vim /etc/ssh/sshd_config
Port 22 #监听端口为 22
ListenAddress 0.0.0.0 #监听地址为任意网段,也可以指定OpenSSH服务器的具
体IP
UseDNS no #禁用 DNS 反向解析,以提高服务器的响应速度
根本目的是节省资源,优化资源使用
1.1.3 用户登录控制
- 禁用root用户、空密码用户
- 限制登录验证时间、重试次数
- AllowUsers、DenyUers
vim /etc/ssh/sshd_config
LoginGraceTime 2m #登录验证时间为 2 分钟
PermitRootLogin no #禁止 root 用户登录
MaxAuthTries 6 #最大重试次数为 6
PermitEmptyPasswords no #禁止空密码用户登录
1.1.4 登录验证方式
- 密码验证:对服务器中本地系统用户的登录名称、密码进行验证。简便,但可能会被暴力破解
- 密钥对验证:要求提供相匹配的密钥信息才能通过验证。通常先在客户端中创建一对密钥文件(公钥、私钥),
然后将公钥文件放到服务器中的指定位置。远程登录时,系统将使用公钥、私钥进行加密/解密关联验证。能增强安全性,
且可以免交互登录。
vim /etc/ssh/sshd_config
PasswordAuthentication yes #启用密码验证
PubkeyAuthentication yes #启用密钥对验证
AuthorizedKeysFile .ssh/authorized_keys #指定公钥库文件
1.2 使用SSH客户端程序
- SSH命令------远程安全登录
ssh user@host
ssh [选项] zhangsan@192.168.80.10
当用户第一次登录SSH服务器时,必须接受服务器发来的ECDSA密钥(根据提示输入“yes”)后才能继续验证。接收的密钥信息将保存到~/.ssh/known_hosts 文件中。密码验证成功以后,即可登录目标服务器的命令行环境中了。示列:
-p:指定非默认的端口号,缺省时默认使用 22端口
ssh -p 2345 zhangsan@192.168.80.10 ###通过2345端口以zhangsn的身份访问192.168.80.10
- SCP命令------远程安全复制
格式1:scp user@host:file1 file2
格式2:scp file1 user@host:file2
#下行复制
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 目录复制到远程主机
- sftp命令------安全FTP上下载
sftp user@host
由于使用了加密/解密技术,所以传输效率比普通的FTP要低,但安全性更高。操作语法sftp与ftp几乎一样。
sftp zhangsan@192.168.80.10
Connecting to 192.168.80.10...
tsengyia@172.16.16.22's password: #输入密码
sftp> ls
sftp> get 文件名 #下载文件到ftp目录
sftp> put 文件名 #上传文件到ftp目录
sftp> quit #退出
1.3 密钥对验证的SSH体系
整体实现过程
- 创建密钥对
通过ssh-keygen工具为当前用户创建密钥对文件。可用的加密算法为RSA、ECDSA或DSA等(ssh-keygen命令的“-t”选项用于指定算法类型)。
[root@localhost ~]# ssh-keygen -t rsa #创建RSA类型的密钥对文件
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #指定私钥位置,直接回车使
用默认位置
Enter passphrase (empty for no passphrase): #设置私钥的密码
Enter same passphrase again: #确认输入
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:gABCi4HBqN/fhEqSB0ZZT7lD5rF0RtmAN8BcHC/Z0bc root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
|X+.o.ooB==.. |
|=o+. +X B+... . |
|oo .=oBo.o . . |
|. o =. . E |
| o + oS |
| + + . . |
| + o o |
| . . . |
| |
+----[SHA256]-----+
[root@localhost .ssh]# ll
总用量 12
-rw-------. 1 root root 408 8月 19 15:10 authorized_keys
-rw-------. 1 root root 1675 8月 19 19:54 id_rsa #是私钥文件,权限默认为
600
-rw-r--r--. 1 root root 408 8月 19 19:54 id_rsa.pub #是公钥文件,用来提供给
SSH 服务器
2. 上传公钥文件 并导入
scp ~/.ssh/id_ecdsa.pub root@192.168.80.10:/opt
或者
cd ~/.ssh/
ssh-copy-id root@192.168.80.10
#此方法可直接在服务器的/home/zhangsan/.ssh/目录中导入公钥文本
3. 使用密钥对验证
密钥对验证成功 免交互
二、TCP Wrapppers访问控制
2.1 TCP Wrappers概述
2.1.1 TCP Wrappers简介
- TCP Wrappers 将TCP服务程序“包裹”起来,代为监听TCP服务程序的端口,增加了一个安全检测过程,外来的连接请求必须先通过这层安全检测,获得许可后才能访问真正的服务程序。
2.1.2 TCP Wrappers保护机制的实现方式
- 直接使用 tcpd 程序对其他服务程序进行保护,需要运行 tcpd程序。
- 由其他网络服务程序调用 libwrap.so.*链接库,不需要运行 tcpd 程序。此方式的应用更加广泛,也更有效率。
2.2 TCP Wrappers访问策略
- TCP Wrappers 机制的保护对象为各种网络服务程序,针对访问服务的客户端地址进行访问控制。
- 对应的两个策略文件为/etc/hosts.allow 和/etc/hosts.deny,分别用来设置允许和拒绝的策略。
格式:
<服务程序列表>:<客户端地址列表>(1)服务程序列表
ALL:代表所有的服务。
单个服务程序:如“vsftpd”。
多个服务程序组成的列表:如“vsftpd,sshd”。
(2)客户端地址列表
ALL:代表任何客户端地址。
LOCAL:代表本机地址。
多个地址以逗号分隔
允许使用通配符 “*” 和 “?” ,前者代表任意长度字符,后者仅代表一个字符
网段地址,如 192.168.80. 或者 192.168.80.0/255.255.255.0
区域地址,如 “.benet.com”匹配 benet.com 域中的所有主机。
2.3 TCP Wrappers 机制的基本原则
- 首先检查/etc/hosts.allow文件,如果找到相匹配的策略,则允许访问;
- 否则继续检查/etc/hosts.deny文件,如果找到相匹配的策略,则拒绝访问;
- 如果检查上述两个文件都找不到相匹配的策略,则允许访问。
“允许所有,拒绝个别”
只需在/etc/hosts.deny文件中添加相应的拒绝策略“允许个别,拒绝所有”
除了在/etc/hosts.allow中添加允许策略之外,还需要在/etc/hosts.deny文件中设置“ALL:ALL”的拒绝策略。