==ssh密钥对登录原理 :首先,客户端事先生成一对密钥,并将公钥保存在服务器上的授权文件中。接下来,客户端不用密码,而是用密钥对来验证身份。客户端用服务器的公钥来加密自己的公钥,然后把加密后的信息发送给服务器。服务器用自己的私钥解密这些信息,得到客户端的公钥,并检查是否与服务器存储的客户端公钥匹配。如果匹配,服务器会进一步确认这个公钥是客户端创建的,于是发送一个加密的质询信息给客户端,让客户端用它的私钥来解密。如果客户端能正确解密并用服务器的公钥重新加密后发回,服务器就能确认这个公钥属于客户端,从而验证了客户端的身份。==
SFTP,SCP基于SSH协议
Linux基于Unix,提供多种类Unix系统选择。
AIX和HPUX是Unix系统,区别于Mac OS。
BSD 一种unix的操作系统
跳板机 提供临时的、免密登录至后台服务器的服务
堡垒机 在跳板机的基础上提供了身份验证、授权控制等功能,有效防止内部误操作,此外提供安全审计、追溯和事故分析的功能,以便于故障定位和责任认定
jumpserver 开源的堡垒机
撞 库:由于数据库之间的数据相似,就会出现撞库
伪设备文件:
/dev/zero /dev/null /dev/urandom 生成随机字符的文件
生成随机密钥脚本
``` shell
#!/bin/bash
read -p "请输入要生成密码的长度: " len
read -p "请输入要生成密码的个数: " num
for ((;;))
do
#这个是生成随机字符,tr -dc就是来保留或者过滤字符串的过滤组分
pass=$(head -5 /dev/urandom | tr -dc a-zA-Z0-9\@\_\(\-\* | cut -c 1-$len)
xpass=$(echo $pass | awk '/[a-z]/&&/[A-Z]/&&/[0-9]/&&/[\@\_\(\-\*]/{printf $1"\n"}') #输出指定规格的密码
#对密码规格要求的判断
if [ -n $xpass ]
then
passwd=(${passwd[*]} $xpass)
fi
if [ ${#passwd[*]} -eq $num ]
then
for i in ${passwd[*]}
do
echo $i
done
break
fi
done
```
``` shell
#两种死循环
for ((;;))
while true
```
### SSH命令
SSH(Secure SHell)是一个命令行程序,用于安全地管理远程计算机。以下是几个常用的SSH命令:
- **远程登录**:
``` shell
ssh 用户名@服务器IP地址
```
例如:
``` shell
ssh root@192.168.88.20
```
- **密钥对验证**:
1. **生成密钥对**:
``` shell
ssh-keygen -t rsa -b 2048
```
`-t`指定加密算法,`-b`指定密钥长度。
2. **将公钥上传至服务器**:
``` shell
ssh-copy-id 用户名@服务器IP地址
```
`-i`指定公钥文件的位置。
3. **使用密钥对登录**:
``` shell
ssh -p 端口号 用户名@服务器IP地址
```
- **安全的远程文件复制**:
```
scp 本地文件 用户名@服务器IP地址:远程目录
```
如果SSH服务使用非默认端口,则需指定端口:
```
scp -P 端口号 本地文件 用户名@服务器IP地址:远程目录
```
### SSH配置文件
SSH的主要配置文件位于`/etc/ssh/sshd_config`。**root和普通用户的.ssh目录 700 和authorized_keys 文件是600权限**以下是几个关键的配置项:
- **禁止密码登录**:不推荐设置
``` shell
PasswordAuthentication no
```
这一行取消注释后,将不允许使用密码进行登录。
- **禁止root远程登录**: 推荐在练习时使用 记得想创建一个用户 并用visudo设置权限
```
PermitRootLogin no
```
此配置项设置为`no`后,root账户将不能通过SSH远程登录。
- **修改默认监听端口**:
- ps :建议在生产环境中修改默认的SSH端口号。
配置文件 /etc/ssh/sshd_config 在这个文件加注释的代码如果修改是会按默认配置生效
```
Port 新端口号
```
修改后的端口号需要在客户端连接时指定:
```
ssh -p 新端口号 用户名@服务器IP地址
```
- **修改SSH监听IP**:使用场景:部署服务时,使用公网接口连接至公网交换机并通过路由器接入互联网,提供对外服务;而内网接口则仅限于用于服务器间的数据传输、备份等内部通信。在进行监听IP设置时,对于内外网分离场景下的服务器,应确保SSH等服务只监听内网接口,有效阻止了互联网用户直接访问内部系统。(内外网分离才使用)
```
ListenAddress IP地址
```
这样可以限定SSH服务只监听特定的IP地址。
实验 请提前准备2个网卡 并把ens33的网卡信息复制给ens36 假设地址是192.168.90.120
``` shell
vim /etc/ssh/sshd_config
ListenAddress 192.168.90.120
这样就只让ssh监听192.168.90.120主有这个IP才可以远程登录
```
#### TCP Wrappers
是一个用于控制访问的框架,它允许系统管理员定义哪些主机可以访问特定的服务。
#### TCP Wrappers的工作原理
![[Pasted image 20240911160842.png]]
黑名单:放行所有,拒绝个别 适合开放性服务器:apache、nginx、iis
白名单:拒绝所有,放行个别 适合 非开放性服务:ssh,telnet
白名单优先级比黑名单高![[Pasted image 20240911204806.png]]
libwrap.so.0 这是受防火墙过滤的函数文件
#### 配置文件编写规则
配置文件的每一行遵循以下格式:
```
service_list @ host : client_list
```
其中:
- `service_list`:是程序(服务)的列表,可以是多个,多个时用逗号隔开。
- `@ host`:设置允许或禁止他人从自己的哪个网口进入。如果不写,则代表全部。
- `client_list`:是访问者的地址,如果需要控制的用户较多,可以使用空格或逗号隔开。
### 示例配置
- **拒绝单个IP使用SSH远程连接**:
```
hosts.deny: sshd:192.168.88.20
```
`hosts.allow`文件为空。
- **拒绝某一网段使用SSH远程连接**:
```
hosts.deny: sshd:192.168.88.
```
`hosts.allow`文件为空。
- **仅允许某一IP使用SSH远程连接**:
```
hosts.allow: sshd:192.168.88.20
hosts.deny: sshd:ALL
```
### 判断方式
- **查看对应服务命令所在位置**:
```
which sshd
```
- **查看指定命令执行时是否调用libwrap.so文件**:
```
#ldd用来查看服务调用了哪些函数文件 即.so结尾的文件
ldd /usr/sbin/sshd | grep libwrap.so
```
防火墙规则![[Pasted image 20240911215713.png]]
ACL 访问控制列表 来限制特定用户的上网行为
## DHCP
是一个工作在应用层的局域网网络协议,使用UDP不可靠传输协议工作,dhcp主要在工作中主要用于批量装机 端口 67 tftp 69端口 dhcp服务日志保存在 /var/log/messages中
![[Pasted image 20240918095558.png]]
服务器连接原理:==首先客户端通过广播DHCP Discover数据包来寻找可用的DHCP服务器;服务器接收到请求后,从其可用的IP地址池中选择一个地址,并通过DHCP Offer数据包将此地址及相关配置信息发送给客户端;客户端收到并决定接受后,会发送DHCP Request确认;最后,DHCP服务器通过发送DHCP ACK数据包正式确认分配,客户端据此设置其IP,网关等网络参数并开始通信。但是如果此时无DHCP服务器可用,DHCP客户机会使用169.254.0.0/16中随机的一个地址,并且每隔5分钟再进行尝试。==
如何处理客户端的续租和释放IP地址的情况?
设备默认有最长租约时间和默认租约时间,续租周期通常是基于默认租约时间的50%,例如十分钟的有效租期对应于每五分钟进行一次续租尝试。如果续租失败,设备将会等待一段时间后再尝试续租,若连续多次续租失败,则将使用剩余的最大租约时间继续使用IP地址,直至到期或释放。
搭建DHCP服务器实验
``` shell
yum -y install dhcp 安装DHCP服务
cd /etc/dhcp/ dhcp服务的配置文件目录
vi dhcpd.conf dhcp规则文件 发现是空的提示到/usr/share/doc/dhcp下拿
cp -a /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example ./dhcpd.conf 直接把规则复制过来
在vim dhcpd.conf
写入的规则
注意: 全局和局部的配置 至少要声明一个地址池和本机网段相同也就是这个 192.168.90.230 192.168.90.249地址池
subnet 192.168.90.0 netmask 255.255.255.0 {
range 192.168.90.230 192.168.90.249;
option domain-name-servers 223.5.5.5,8.8.8.8;
option routers 192.168.90.2;
option broadcast-address 192.168.90.255;
default-lease-time 600;
max-lease-time 7200;
}
systemctl enable --now dhcpd 启动DHCP服务
netstat -anpu | grep :67 查看服务是否正常启动
tail -f /var/log/messages 查看DHCP服务租约日志的文件
```
规则文件解释
![[1726058296182.jpg]]
注意事项
![[Pasted image 20240911203801.png]]