1、创建私有CA并进行证书申请。
CA自颁发过程:
- CA生成私钥
- 用自己的私钥为自己的申请书签名
- 签名好的证书其实就是公钥,证书和私钥搭配使用
cd /etc/pki/CA 进入到保存证书的目录下
(umask 066; openssl genrsa -out private/cakey.pem 2048) 生成CA的私钥
用CA私钥为CA的申请书签名
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 3650 -out /etc/pki/CA/cacert.pem
Country Name (2 letter code) [XX]:CN 输入国家简称,只能输2个字符
State or Province Name (full name) []:beijing 输入省级名字
Locality Name (eg, city) [Default City]:beijing 输入城市名字
Organization Name (eg, company) [Default Company Ltd]:test 输入组织名字
Organizational Unit Name (eg, section) []:test 输入部门名称
输入CA的域名
Common Name (eg, your name or your server's hostname) []:www.test.io
输入邮箱地址,可以不写
Email Address []:
openssl x509 -in cacert.pem -noout -text 查看CA证书的详细信息
CA为服务器颁发证书过程
- 服务器生成私钥
- 服务器用私钥生成申请书
- 服务器将申请书发给CA机构
- CA机构签名,返回证书给服务器
- 注意:国家,省份,公司名字必须和CA机构的一致,要不然证书不能使用
一 服务器配置
(umask 066; openssl genrsa -out web.key 2048) 服务器生成私钥
openssl req -new -key web.key -out web.csr 服务器用私钥生成证书申请书
注意:国家和省份和公司名字必须和CA机构的一致,要不然会不能使用证书
Country Name (2 letter code) [XX]:CN 输入国家简称,最大2个字符
State or Province Name (full name) []:beijing 输入省份名
Locality Name (eg, city) [Default City]:beijing 输入城市名
Organization Name (eg, company) [Default Company Ltd]:test 输入公司或组织名
Organizational Unit Name (eg, section) []:test 输入部门名
输入服务器的域名
Common Name (eg, your name or your server's hostname) []:www.web.io
输入邮箱地址,可不写
Email Address []:
输入密码,可不写
A challenge password []:
输入公司名,可不写
An optional company name []:
将服务器的证书申请书发给CA机构
二 CA机构收到后配置:
cd /etc/pki/CA 进入CA的证书配置目录
ls
其中web.csr就是服务器的证书申请书
touch /etc/pki/CA/index.txt 创建索引
echo 01 >/etc/pki/CA/serial 创建证书编号
CA对证书申请书进行签名:
openssl ca -in web.csr -out /etc/pki/CA/certs/web.crt -days 365
确认证书申请书的信息,按y确定
Certificate is to be certified until Aug 29 11:24:46 2022 GMT (365 days)
Sign the certificate? [y/n]:y
确认提交签名,按y确定
1 out of 1 certificate requests certified, commit? [y/n]y
查看签名好的证书信息:
openssl x509 -in /etc/pki/CA/certs/web.crt -noout -text
可以用工具放到Windows系统下查看
yum install -y lrzsz 安装工具,使得centos可以传小型文件到Windows
sz /etc/pki/CA/certs/web.crt sz是下载到Windows,rz是上传到centos系统
查看证书信息
CA机构域名 : www.test.io
web服务器域名:www.web.io
2、总结ssh常用参数、用法
ssh --help 查看ssh的帮助信息
- 默认参数远程
ssh 192.168.116.130 远程linux服务器
省略了root@192.168.116.130 ,如果不是root账户需要指定账户名
- 指定账户远程
ssh aa@192.168.116.130
- -t 多层跳转远程
远程192.168.116.145需要经过192.168.116.130才能远程
最后的ssh不用加-t
ssh -t 192.168.116.130 ssh 192.168.116.145
- -p 指定远程端口远程
被远程服务器配置
vi /etc/ssh/sshd_config 修改被远程主机的端口
原本为默认端口: #Port 22
修改为 Port 1234
重启ssh服务
systemctl restart sshd
ssh aa@192.168.116.130 没有指定端口,默认就是22端口
ssh -p 1234 aa@192.168.116.130 指定被远程主机的端口进行远程
- -o StrictHostKeyChecking=no 跳过验证进行远程
ssh 192.168.116.145 默认会提示确认服务器的ID
ssh -o StrictHostKeyChecking=no 192.168.116.145 设为no跳过确认步骤,直接输入密码
- -b 指定源IP远程
如果本地服务器配置了多个IP,那么可以指定使用哪个IP进行远程。
指定使用本机的192.168.116.148 远程到 192.168.116.145
ssh -b 192.168.116.148 192.168.116.145
3、总结sshd服务常用参数。
服务名称:sshd
被别人远程的配置文件:/etc/ssh/sshd_config
自己远程别人使用的配置文件:/etc/ssh/ssh_config
被别人远程配置参数:
/etc/ssh/sshd_config
#Port 22 默认被别人远程的端口,可以删除#后,把22修改为其他端口
#PermitRootLogin yes 是否禁止root账户进行远程,centos默认关闭,Ubuntu默认开启
PubkeyAuthentication yes 是否使用公钥和私钥方式进行登录,默认开启
MaxSessions 10 最大连接到服务器的窗口数量
PermitEmptyPasswords no 是否使用空密码登录,默认为no
PasswordAuthentication yes 是否使用账户密码方式登录系统,默认开启
UseDNS yes 是否使用DNS解析,可以改为no,减少ssh远程时间
GSSAPIAuthentication yes 是否开启GSSAPI认证,可以改为no,减少ssh远程时间
#ClientAliveInterval 0 登录后多少时间内没操作就计数,和下面参数搭配使用
#ClientAliveCountMax 3 超时多少次就注销登录,如3次超过上面设置的时间就注销
#ListenAddress 0.0.0.0 监听远程的地址,如果想要指定某个IP才能进行远程,配置这个
/etc/ssh/ssh_config
远程别人时使用的配置文件
# Port 22 用ssh远程时,不用指定22端口,实际就是用这里的参数的22端口
# StrictHostKeyChecking ask 第一次远程主机时,提示yes或no,改为no就不用输入yes或no了,直接到达输密码界面
# IdentityFile ~/.ssh/identity 和对端远程使用到的算法文件
# IdentityFile ~/.ssh/id_rsa
# IdentityFile ~/.ssh/id_dsa
# IdentityFile ~/.ssh/id_ecdsa
# IdentityFile ~/.ssh/id_ed25519
4、搭建dhcp服务,实现ip地址申请分发
DHCP分配地址原理:
环境:
系统/功能 | IP |
---|---|
centos 7.8/DHCP服务器 | 10.0.0.1 |
centos 7.8/客户端 | 自动获取IP |
抓包分析:
- 客户端向网络发送DHCP DISCOVER包,请求网络上的DHCP服务器分配地址
- DHCP服务器收到请求后,分配地址并发送DHCP OFFER分给客户端,让客户端确认是否要这个地址
可以看到有客户端的IP地址
- 客户端返回DHCP REQUEST包,表示确认使用这个IP地址
0.0.0.0 表示客户端还没正式启用这个地址
- 服务器收到客户端的确认后,发送DHCP ACK,正式把地址分配给客户端
DHCP服务器配置:
先设置为nat模式,下载dhcp软件
yum install -y dhcp 安装DHCP服务
安装后,默认提供一个DHCP配置模板文件
rpm -ql dhcp
将模板文件复制到DHCP的配置目录下
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/ 复制文件
cd /etc/dhcp/ 进入配置目录
mv dhcpd.conf.example dhcpd.conf 覆盖掉老的配置文件
mv:是否覆盖"dhcpd.conf"? y
编辑DHCP配置文件
vi dhcpd.conf
option domain-name "example.org"; 设置DHCP的域名
option domain-name-servers 114.114.114.114; 设置DHCP的DNS
default-lease-time 600; 设置默认租约时长
max-lease-time 7200; 设置最大租约时长
subnet 10.0.0.0 netmask 255.255.255.0 { 设置DHCP分配的网段
option routers 10.0.0.1; 设置网段的网关
range 10.0.0.100 10.0.0.200; 设置分配的DHCP的IP段
}
systemctl enable dhcpd 设置开启自启DHCP服务
设置IP
vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=1343ea28-e2cd-4f53-b545-5c6bbd7bcf07
DEVICE=ens33
ONBOOT=yes
IPADDR=10.0.0.1
NETMASK=255.255.255.0
关机后改为主机模式
虚拟机选择虚拟网络编辑器
注意:虚拟网络编辑器这里不能打钩使用本地DHCP服务进行地址分配。默认主机模式是没打钩的
开机后,确认端口打开,服务正常运行
ss -unl 67端口为DHCP服务端的端口,68为客户端
systemctl status dhcpd
客户端配置
设置连接模式为主机模式
设置网卡为DHCP自动获取IP
vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp 设置DHCP模式
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=7b636dc1-fa52-4fc5-a424-e8cd83fa0bfd
DEVICE=ens33
ONBOOT=yes 要设置这个,要不然获取不到IP
重启网卡,确认获取到DHCP服务器分配的IP
systemctl restart network
服务器可以看到分配的IP
cat /var/lib/dhcpd/dhcpd.leases