Linux-远程访问及控制
系列文章目录
` 提示:仅用于个人学习,进行查漏补缺使用。
1.Linux-网络设置
2.Linux-DHCP服务、vsftp
3.Linux-DNS域名解析服务
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 系列文章目录
- 前言
- 一、DNS整体的数据流向
- 二、SSH远程管理
- 概述
- 数据传输
- SSH常用工具
- 配置OpenSSH服务端
- sshd服务支持两种验证方式
- 使用SSH客户端程序
- sshd服务支持两种验证方式:
- TCP Wrappers访问控制
- 1.概述
- 2.TCP Wrappers 保护机制的两种实现方式
- 3.TCP Wrappers 的访问策略
- 4.TCP Wrappers 机制的基本原则:
- 三、补充:
- 1.对称密钥(Symmetric Key)和非对称密钥(Asymmetric Key)是密码学中两种常用的加密方法,它们在加密和解密过程中使用密钥的方式上有显著的区别。
- 2.HTTP过渡到HTTPS好的,简单来说,从HTTP过渡到HTTPS主要包括以下几个步骤:
- 3.如何使用密钥文件ssh登录服务器?使用密钥文件通过SSH登录服务器通常涉及以下步骤:
前言
本章大概内容有:
DNS整体的数据流向、SSH远程管理、TCP Wrappers访问控制、补充(对称密钥与非对称密钥)等
提示:以下是本篇文章正文内容,下面案例可供参考
一、DNS整体的数据流向
- 服务端A:解析外网地址:
- 整体的数据流向:
- 1、加载缓存-》无缓存
- 2、就近原则-》加载/etc/hosts
- 3、找DNS客户端配置文件/etc/resolv.conf 或者 ifcfg-ens33网卡设备
- ① 在以上内容中,均自上而下读取配置 通常我们使用的DNS服务器,要么是内网,如果是访问国内网站,可以使用114.114.114.114 ,访问国外网站,我们就需要定向使用外网DNS 8.8.8.8 或者此处,我们指向一个DNS的代理服务器
- ②向外部DNS服务器的53端口,建立TCP的三次握手请求。
- ③ 客户端会从建立的TCP三次握手的长连接通道中,发送数据包(包含了请求头、请求行、请求体,其中包含的是域名-1p之间请求方式)
- ④在建立DNS连接的过程中,如果不是官方的DNS,是内网的DNS,在请求建立连接的时候,被拒绝了,或者访问失败,需要考虑2个问题:
1. 该内网DNS是否做了拒绝的配置-》 /etc/named.conf “options xxx” allow-query {any;};
2. 确定好内网DNS的网卡IP是否正确(万一DNS有多张网卡,要确定好该DNS监听的IP是多少)-》 /etc/named.conf “options xxx”
- 4、找寻到最近的根域服务器之后,尝试建立三次握手请求,然后进行迭代、递归的过程
- ①迭代和递归任务请求:是UDP协议
- ②DNS 服务器,如作为缓存和索引服务器的话,会将请求转给根域服务器、或者有看本地缓存,如本地缓存包含请求的内容结里,则直接返回给客户端,此时,客户端得到的解析结果,会保存在本地缓冲中,并标记为非权威解析
- ③如果本地解析不到,正常导引到最近的根域服务器
- ④ DNS服务器,如本是根域服务器,在解析了根域的信息之后,会根据迭代和递归的方式,逐步找寻顶级域、二级域、子域服务器、主机名服务器、来分别解析DNS请求的域名的方式(P SOA A等等)
- ⑤ 解析完成后,将结果传递回客户端,进行四次挥手过程,如该客户端是DNS缓存服务器,DNS缓存服务器会先更新本地缓存,然后将结果回应给客户端(主机)Ps 更新本地缓存: DNS缓存服务器、缓存机制是可以配置、控制的,例如:缓存的TTT生命周期、缓存的rT生命周期,缓存的命中率(访问频次-高热数据)缓存数据淘汰机曲
- ⑥ 解析完成后,将结果传递回客户端,如该客户端是主机的话,进行四次挥手过程,主机就会将结果放在缓存中,(也是有IL的),同时,如果服务器重启了。这一部分缓存是会丢失的Ps:这一部分缓存是会丢失:重启后不会“丢失"的缓存,例如:YUM缓存
- ⑦)然后在向请求到的域名-IR之间的 IR地址发送TCR三次握手连接请求果无法建立连接,会返回给客户端用户态/终端上
- ⑧ 我们需要考虑
- 1、是否为网络问题-》ping、tracroute、mcpdump等工具来检测网络健康状态
- 2、DNS服务 是否需要更换-》/etc/resolv.conf 或 ifcfg-ens33
- 3、例外情况,我们可以在网上负责解析域名-ip网页,找寻IP地址,然后定向写在/etc/hosts中
- 4、再次尝试连接
二、SSH远程管理
概述
- SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。
- SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令。因此SSH协议具有很好的安全性。
数据传输
SSH客户端<----------------------网络------------------------>SSH服务端
数据传输是加密的,可以防止信息泄漏
数据传输是压缩的,可以提高传输速度
SSH常用工具
- SSH客户端:Putty、Xshell、CRT
- SSH服务端:OpenSSH
- OpenSSH是实现 SSH 协议的开源软件项目,适用于各种 UNIX、Linux 操作系统。
- CentOS 7系统默认已安装openssh相关软件包,并已将 sshd 服务添加为开机自启动。
- 执行“systemctl start sshd”命令即可启动 sshd 服务
- sshd 服务默认使用的是TCP的 22端口
- sshd 服务的默认配置文件是/etc/ssh/sshd_config
- ssh_config和sshd_config都是ssh服务器的配置文件,二者区别在于前者是针对客户端的配置文件,后者则是针对服务端的配置文件。
配置OpenSSH服务端
###sshd_config配置文件的常用选项设置
vim /etc/ssh/sshd_config
Port 22 #监听端口为 22
ListenAddress 0.0.0.0 #监听地址为任意网段,也可以指定OpenSSH服务器的具体IPLoginGraceTime 2m #登录验证时间为 2 分钟
PermitRootLogin yes #禁止 root 用户登录
MaxAuthTries 6 #最大重试次数为 6PermitEmptyPasswords no #禁止空密码用户登录
UseDNS no #禁用 DNS 反向解析,以加快远程连接速度,根本目的减少资源的使用#只允许zhangsan、lisi、wangwu用户登录,且其中wangwu用户仅能够从IP地址为61.23.24.25 的主机远程登录
AllowUsers zhangsan lisi wangwu@61.23.24.25 #多个用户以空格分隔
#禁止某些用户登录,用法于AllowUsers 类似(注意不要同时使用)
DenyUsers wangwu
sshd服务支持两种验证方式
1.密码验证
- 对服务器中本地系统用户的登录名称、密码进行验证。简便,但可能会被暴力破解
2.密钥对验证
- 要求提供相匹配的密钥信息才能通过验证。通常先在客户端中创建一对密钥文件(公钥、私钥),然后将公钥文件放到服务器中的指定位置。远程登录时,系统将使用公钥、私钥进行加密/解密关联验证。能增强安全性,且可以免交互登录。
公钥和私钥的关系
- 公钥和私钥是成对生成的,这两个密钥互不相同,可以互相加密和解密。
- 不能根据一个密钥来推算出另一个密钥。
- 公钥对外公开,私钥只有私钥的持有人才知道。
- 当密码验证、密钥对验证都启用时,服务器将优先使用密钥对验证。可根据实际情况设置验证方式。
vim /etc/ssh/sshd_config
PasswordAuthentication yes #启用密码验证
PubkeyAuthentication yes #启用密钥对验证
AuthorizedKeysFile .ssh/authorized_keys #指定公钥库文件
使用SSH客户端程序
- ssh 远程登录
ssh [选项] lisi@10.0.0.128
- 当用户第一次登录SSH服务器时,必须接受服务器发来的ECDSA密钥(根据提示输入“yes”)后才能继续验证。接收的密钥信息将保存到~/.ssh/known_hosts 文件中。密码验证成功以后,即可登录目标服务器的命令行环境中了。
补:
- **-P:**指定非默认的端口号,缺省时默认使用 22端口 —[P大写]
- ssh -P 2345 zhangsan@192.168.80.10
2.scp 远程复制
#下行复制
scp 128.txt root@server2:/mnt
#将远程主机中的/etc/passwd文件复制到本机
#上行复制
scp -r /etc/ssh/ root@10.0.0.20:/opt
#将本机的/etc/ssh 目录复制到远程主机
scp -rP 10022 root@10.0.0.20:/opt #这里的"P"是大P,指的是端口
PS:__root@server2中的‘server2’指的是 名字[可为主机名、域名等而且可以是多个]
vim /etc/hosts
10.0.0.20 server2
10.0.0.30 server2 www.cat.com(除非是虚拟主机的域名,否则一个域名只能对应一个ip)
3.sftp 安全 FTP
###由于使用了加密/解密技术,所以传输效率比普通的FTP要低,但安全性更高。操作语法sftp与ftp几乎一样。
sftp zhangsan@10.0.0.20
Connecting to 10.0.0.20...
server2@10.0.0.20's password: #输入密码
sftp> ls
sftp> get 文件名 #下载文件到ftp目录
sftp> put 文件名 #上传文件到ftp目录
sftp> quit #退出
sshd服务支持两种验证方式:
1.密码验证
- 对服务器中本地系统用户的登录名称、密码进行验证。简便,但可能会被暴力破解
2.密钥对验证
- 要求提供相匹配的密钥信息才能通过验证。通常先在客户端中创建一对密钥文件(公钥、私钥)【不绝对】,然后将公钥文件放到服务器中的指定位置。远程登录时,系统将使用公钥、私钥进行加密/解密关联验证。能增强安全性,且可以免交互登录。
公钥和私钥的关系:
- 公钥和私钥是成对生成的,这两个密钥互不相同,可以互相加密和解密。
- 不能根据一个密钥来推算出另一个密钥。
- 公钥对外公开,私钥只有私钥的持有人才知道。
当密码验证、密钥对验证都启用时,服务器将优先使用密钥对验证。可根据实际情况设置验证方式。
密钥登录的过程:
- ssh客户端通过ssh-keygen生成自己的公钥和私钥,将公钥发送给ssh服务端,并且放在指定的位置。
- 公钥发送完毕后。ssh客户端再向ssh 服务端进行登录请求。
- ssh服务端收到ssh客户端的登录请求后,ssh服务端用对应的公钥加密一些随机数返回给ssh客户端
- ssh客户端收加密的随机数后使用私钥对其进行解密,再将解密的结果发送给ssh服务端进行验证。
- ssh服务端接收到ssh客户端发送过来的解密数据,将其与原数据进行比对,保持一致则允许用户进行登录
- 步骤1.编辑服务端主配置文件,如下配置
vim /etc/ssh/sshd_config #编辑服务端主配置文件
PasswordAuthentication yes #启用密码验证
PubkeyAuthentication yes #启用密钥对验证
AuthorizedKeysFile.ssh/authorized_keys #指定公钥库文件
- 步骤2.在客户端创建密钥对
- 通过ssh-keygen工具为当前用户创建密钥对文件。可用的加密算法为RSA、ECDSA或DSA等(ssh-keygen命令的“-t”选项用于指定算法类型)
useradd admin
echo "123123" | passwd --stdin admin
su - admincd /etc/ssh
ssh-keygen -t ecdsa #用ecdsa算法生成密钥
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 服务器
- 步骤3.将公钥文件上传至服务器
scp ~/.ssh/id_ecdsa.pub root@10.0.0:/opt或
#此方法可直接在服务器的/home/zhangsan/.ssh/目录中导入公钥文本
cd ~/.ssh/
ssh-copy-id -i id_ecdsa.pub zhangsan@192.168.80.10ssh-copy-id root@10.0.0.20
- 步骤4.在客户端中也生成公钥上传至服务器,实现双端免登录
ssh root@10.0.0.128 #发现连接需要输入密码
cd /mnt/
ssh-keygen -t rsa #生成非对称密钥
ssh-copy-id root@10.0.0.128 #复制密钥到服务器端
ssh root@10.0.0.128 #连接服务端
TCP Wrappers访问控制
1.概述
- TCP Wrappers(TCP封套) 是一个简单的防火墙机制。用来将TCP服务程序“包裹”起来,代为监听TCP服务程序的端口,增加了一个安全检测过程,外来的连接请求必须先通过这层安全检测,获得许可后才能访问真正的服务程序。
- 大多数 Linux 发行版,TCP Wrappers 是默认提供的功能。rpm -q tcp_wrappers
2.TCP Wrappers 保护机制的两种实现方式
-
1.直接使用 tcpd 程序对其他服务程序进行保护,需要运行 tcpd 程序。
-
2.由其他网络服务程序调用 libwrap.so.* 动态函数库,不需要运行 tcpd 程序。此方式的应用更加广泛,也更有效率。
-
由于支持 TCP Wrappers 的服务必定包含 libwrap 这一个动态函数库,因此可以使用 ldd 来查看服务即可
ldd $(which sshd) | grep libwraplibwrap.so.0 => /lib64/libwrap.so.0 (0x00007f91d0bdb000)ldd $(which vsftpd) | grep libwraplibwrap.so.0 => /lib64/libwrap.so.0 (0x00007f4304f3b000)ldd $(which xinetd) | grep libwraplibwrap.so.0 => /lib64/libwrap.so.0 (0x00007f8b17ec6000)
3.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 (掩码只支持 netmask 的地址显示方式)
区域地址,如 “.benet.com”匹配 benet.com 域中的所有主机。
4.TCP Wrappers 机制的基本原则:
- 首先检查/etc/hosts.allow文件,如果找到相匹配的策略,则允许访问;
- 否则继续检查/etc/hosts.deny文件,如果找到相匹配的策略,则拒绝访问;
- 如果检查上述两个文件都找不到相匹配的策略,则允许访问。
“允许所有,拒绝个别”
- 只需在/etc/hosts.deny文件中添加相应的拒绝策略
“允许个别,拒绝所有”
- 除了在/etc/hosts.allow中添加允许策略之外,还需要在/etc/hosts.deny文件中设置“ALL:ALL”的拒绝策略。
实例:
若只希望从IP地址为12.0.0.1的主机或者位于192.168.80.0/24网段的主机访问sshd服务,其他地址被拒绝。
三、补充:
1.对称密钥(Symmetric Key)和非对称密钥(Asymmetric Key)是密码学中两种常用的加密方法,它们在加密和解密过程中使用密钥的方式上有显著的区别。
- 对称密钥:
- 对称密钥加密算法使用相同的密钥进行加密和解密。这意味着发送方和接收方必须共享同一个密钥,这个密钥在加密明文时使用,同样用于解密得到的密文。
- 非对称密钥:
- 非对称钥加密算法使用一对密钥:公钥和私钥。公钥用于加密信息,而私钥用于解密。公钥可以公开,任何人都可以使用公钥加密信息,但只有持有对应私钥的人才能解密这些信息。
- 区别如下:
| 特性 | 对称密钥 | 非对称密钥 |
| — | — | — |
| 密钥的使用 | 加密和解密使用相同的密钥 | 加密使用公钥,解密使用私钥 |
| 密钥分发 | 需要在发送者和接收者之间安全地共享密钥 | 公钥可以公开分发,私钥必须保持安全 |
| 安全性 | 安全性完全依赖于密钥的保密性 | 安全性依赖于私钥的保密性,公钥的公开并不会威胁到安全性 |
| 性能 | 加密和解密速度快,适合处理大量数据 | 加密和解密速度较慢,不适合处理大量数据,适用于安全性要求高的场合 |
| 算法类型 | 通常采用分组加密技术,如AES | 基于特殊的数学函数,如单向陷门函数,如RSA |
这个表格概述了对称密钥和非对称密钥在关键方面的差异。在对称密钥体系中,相同密钥用于加密和解密,需要安全地共享密钥,适合高效处理大量数据。而非对称密钥体系中,公钥和私钥成对使用,公钥可以公开,私钥保持私密,适合安全性和认证,但效率较低。例如,在SSH协议中,对称加密用于实际的数据加密,而非对称加密用于安全地交换对称密钥。这种组合方式既能发挥两种加密技术的优势,又能应对各自的安全挑战。
一个简单的比喻来理解:
想象一下,你有一个特别的房间,房间有两扇门,每扇门都有一个特殊的钥匙。在对称密钥的情况下,这把钥匙既是开启房门的钥匙,也是锁门的钥匙。你只需要小心地保管这把钥匙,确保它不被别人拿到。当你想要发送秘密信息时,你会用这把钥匙锁上房间,并把钥匙通过安全渠道发送给对方。对方拿到钥匙后,就可以打开房间并读取信息。这个比喻中,密钥就像是一把万能钥匙,既能锁也能开。
而非对称密钥的情况则不同。这里有两把不同的钥匙,一把是公钥,另一把是私钥。公钥可以随意分发,就像是一把只能用来锁门的钥匙。当你想要发送信息时,你会用公钥锁上房间,并将这个锁过的信息发送给对方。对方拿着私钥,就像是一把专门用来开门的钥匙,可以打开房间并读取信息。在这个比喻中,即使公钥被公开,也没有人能用它打开房间,因为只有私钥才能解锁。
简而言之,对称密钥就像是一把全能钥匙,非对称密钥则像是一对不同的钥匙,公钥用来锁,私钥用来开。
2.HTTP过渡到HTTPS好的,简单来说,从HTTP过渡到HTTPS主要包括以下几个步骤:
- 买一个SSL证书:这就像是为你的网站买一把锁。
- 服务器配置:把这把锁安装到你的服务器上,并确保它能正常工作。
- 重定向:修改服务器设置,让所有HTTP请求都自动转到HTTPS。
- 更新链接:检查网站上的所有链接,确保它们都使用HTTPS。
- 更新DNS设置:如果你使用的是外部服务,确保DNS设置正确指向你的HTTPS服务器。
- 测试:检查网站是否所有内容都能通过HTTPS正常显示。
- 持续监控:定期检查SSL证书的有效期,确保网站安全。
这样做可以保证你的网站通信是安全的,防止数据被窃取。
**PS:**证书-》ca证书-》 账户密码、密钥、配置文件
- 配置文件:
- 1.定义资源类型
- 2.定义时区
- 3.加密方法:rsa
- ca.pem ca-cert.pem 申请官方认证
- server.pem server-key.pem 服务端
- client.pem client-key.pem 客户端
3.如何使用密钥文件ssh登录服务器?使用密钥文件通过SSH登录服务器通常涉及以下步骤:
简略:
- 生成密钥对:在本地电脑上使用
ssh-keygen
生成密钥对。 - 上传公钥到服务器:将生成的公钥(通常是
.pub
文件)上传到服务器的~/.ssh/authorized_keys
文件中。 - 配置SSH服务器:在服务器上修改
sshd_config
文件,启用PubkeyAuthentication
。 - 设置SSH客户端:在本地电脑的SSH客户端中指定私钥文件路径。
- 连接服务器:通过SSH客户端连接到服务器,选择信任服务器端的提示。
- 验证登录:确认是否能够成功登录服务器,不需要输入密码。
- 保持安全:确保私钥安全,定期更换私钥。
按照这些步骤操作,你就可以使用密钥文件通过SSH安全地登录服务器了。
补充:
- 生成密钥对:
- 在本地计算机上,使用SSH密钥生成工具(如ssh-keygen)生成一对密钥。通常,你可以选择RSA或Ed25519算法。
- 生成后,你会得到一个私钥(通常名为id_rsa或id_ed25519)和一个公钥(通常名为id_rsa.pub或id_ed25519.pub)。
- 将公钥上传到服务器:
- 确保你的公钥文件在服务器上是可访问的,通常需要将公钥文件复制到服务器上的~/.ssh目录中,并且命名为authorized_keys。
- 如果你使用的是Linux服务器,可以使用
scp
或ssh
命令将公钥文件上传到服务器。
- 配置SSH服务器:
- 在服务器上,你需要确保SSH服务允许使用公钥进行认证。这通常编辑SSH配置文件(通常是/etc/ssh/sshd_config)并启用PubkeyAuthentication。
- 你可能还需要确保SSH服务没有禁用密码认证,以防万一密钥登录失败。
- 在本地计算机上配置SSH客户端:
- 确保你的SSH客户端配置了正确的私钥路径。大多数SSH客户端都会要求你指定私钥文件的位置。
- 连接到服务器:
- 使用SSH客户端软件(如PuTTY、SSH命令行工具或Xshell)连接到服务器。
- 在连接时,选择“Yes”或“OK”以信任服务器端的提示,并指定私钥文件路径。
- 验证登录:
- 如果你能够成功登录服务器,而不需要输入密码,那么密钥登录配置就是成功的。
- 安全措施:
- 确保私钥文件的安全,不要泄露给他人,并且定期更换私钥以提高安全性。