自学内容网 自学内容网

​​三SSH

==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]]


原文地址:https://blog.csdn.net/gsdgdg00/article/details/142584289

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!