第八周作业

一、创建私有CA并进行证书申请。

前提条件:
(1)证书的(主要)格式参考文件:/etc/pki/tls/openssl.cnf

[ CA_default ]
 60 
 61 dir     = /etc/pki/CA      			 # Where everything is kept	所有东西都放在那里
 62 certs       = $dir/certs        			# Where the issued certs are kept	已发出的证书存放于何处
 63 crl_dir     = $dir/crl      			# Where the issued crl are kept	发布的crl保存在何处
 64 database    = $dir/index.txt    		# database index file.	数据库索引文件。
 65 #unique_subject = no          		  # Set to 'no' to allow creation of	设置为'no'以允许创建
 66                    				 # several certs with same subject.	同一科目的几张证书。
 67 new_certs_dir   = $dir/newcerts    		 # default place for new certs.		新证书的默认位置
 68 
 69 certificate = $dir/cacert.pem  		 #The CA certificate		CA证书
 70 serial      = $dir/serial       			# The current serial number	当前序列号
 71 crlnumber   = $dir/crlnumber    		# the current crl number	当前CRL编号
 72                    				 # must be commented out to leave a V1	 CRL必须注释掉以保留V1 CRL
 73 crl     = $dir/crl.pem   			  # The current CRL	当前CRL
 74 private_key = $dir/private/cakey.pem	# The private key
 75 RANDFILE = $dir/private/.rand 		# private random number file	私有随机数文件




 91 default_days    = 365           # how long to certify for
 92 default_crl_days= 30            # how long before next CRL
 93 default_md  = sha256        # use SHA-256 by default
 94 preserve    = no            # keep passed DN ordering

...
 99 policy      = policy_match
100 
101 # For the CA policy
102 [ policy_match ]
103 countryName     = match				 #match:要求申请填写的信息跟CA设置信息必须一致
104 stateOrProvinceName = match	 #match:要求申请填写的信息跟CA设置信息必须一致
105 organizationName    = match	     #match:要求申请填写的信息跟CA设置信息必须一致
106 organizationalUnitName  = optional
107 commonName      = supplied				#supplied:必须填写这项申请信息
108 emailAddress        = optional
109 
110 # For the 'anything' policy
111 # At this point in time, you must list all acceptable 'object'
112 # types.
113 [ policy_anything ]
114 countryName     = optional				#optional:可有可无,跟CA设置信息可不一致
115 stateOrProvinceName = optional
116 localityName        = optional
117 organizationName    = optional
118 organizationalUnitName  = optional
119 commonName      = supplied				#supplied:必须填写这项申请信息
120 emailAddress        = optional

(2)证书申请的步骤:

 1、生成证书申请请求
 2、RA核验
 3、CA签署
 4、获取证书

1.创建私有CA:(CentOS8)
CentOS8 上默认没有/etc/pki/CA目录,参考CentOS7建立该目录:
方法一:(CentOS7上执行)
scp -r /etc/pki/CA root@10.0.8.8:/etc/pki/CA

方法二:(CentOS8上执行)
mkdir -pv /etc/pki/CA/{certs,crl,newcerts,private}

(1)创建CA所需的文件(只需创建即可)

#生成证书索引数据库文件
touch    /etc/pki/CA/index.txt

#指定第一个证书颁发的证书序列号
echo  01 > /etc/pki/CA/serial

(2)生成CA私钥

cd  /etc/pku/CA
(umask 066; openssl genrsa -out private/cakey.pem 2048)   #()不开启子进程

(3)生成CA自签名证书

openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 3650 -out  /etc/pki/CA/cacert.pem


#选项说明:
-new:生成新证书签署请求
-x509:专用于CA生成自签证书
-key:生成请求时用到的私钥文件
-days n:证书的有效期限
-out /PATH/TO/SOMECERTFILE: 证书的保存路径

(4)在Windows上查看证书

sz  /etc/pki/CA/cacert.pem   #把自签名证书传到Windows上。修改后缀名为.crt

在这里插入图片描述

2.证书申请:

[10:16:20 root@CS8-VM8-10 data][#mkdir ./app2

#生成私钥文件
[10:16:30 root@CS8-VM8-10 data][#(umask 066; openssl genrsa -out   /data/app2/app2.key 2048)
Generating RSA private key, 2048 bit long modulus (2 primes)
...................+++++
............................................................................+++++
e is 65537 (0x010001)

#生成证书申请文件
[10:17:39 root@CS8-VM8-10 data][#openssl req -new -key /data/app2/app2.key -out /data/app2/app2.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
....

注:
countryName     = match				  #match:要求申请填写的信息跟CA设置信息必须一致 stateOrProvinceName = match	  #match:要求申请填写的信息跟CA设置信息必须一致
organizationName    = match	      #match:要求申请填写的信息跟CA设置信息必须一致
 commonName      = supplied		 #supplied:必须填写这项申请信息

3.补充:

#证书颁发
[10:19:52 root@CS8-VM8-10 data][#openssl ca -in /data/app2/app2.csr -out /etc/pki/CA/certs/app2.crt -days 365 
Using configuration from /etc/pki/tls/openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 2 (0x2)
        Validity
            Not Before: Apr 30 02:21:26 2022 GMT
            Not After : Apr 30 02:21:26 2023 GMT
...
#证书查看
[10:29:32 root@CS8-VM8-10 ~][#cat /etc/pki/CA/certs/app2.crt 
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 2 (0x2)
        Signature Algorithm: sha256WithRSAEncryption
      
        Validity
            Not Before: Apr 30 02:21:26 2022 GMT
            Not After : Apr 30 02:21:26 2023 GMT
[10:29:56 root@CS8-VM8-10 ~][#openssl x509 -in /etc/pki/CA/certs/app2.crt -noout -text
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 2 (0x2)
...
openssl x509 -in /etc/pki/CA/certs/app2.crt -noout -issuer/-subject/-dates/-serial


二、总结ssh常用参数、用法

ssh命令是ssh客户端,允许实现对远程系统经验证地加密安全访问。

当用户远程连接ssh服务器时,会复制ssh服务器/etc/ssh/ssh_host*key.pub文件中的公钥到客户机的~/.ssh/know_hosts中。下次连接时,会自动匹配相对应的私钥,不能匹配,将拒绝连接。

一、ssh基于客户端的用法和参数

ssh客户端配置文件: /etc/ssh/ssh_config

...
#   StrictHostKeyChecking ask           
 StrictHostKeyChecking    no    #首次登录不显示检查提示
#   IdentityFile ~/.ssh/id_rsa
#   IdentityFile ~/.ssh/id_dsa
#   IdentityFile ~/.ssh/id_ecdsa
#   IdentityFile ~/.ssh/id_ed25519
#   Port 22
....

格式:

ssh    [user@]host      [COMMAND]
ssh    [-l user] host        [COMMAND]

常见选项:

-p port #远程服务器监听的端口
-b #指定连接的源IP
-v #调试模式
-C #压缩方式
-X #支持x11转发  (图形:在字符界面中打开firefox)
-t #强制伪tty分配,如:ssh -t remoteserver1 ssh -t remoteserver2   ssh    remoteserver3
(例:ssh -t 10.0.0.8 ssh -t 10.0.0.7 ssh 10.0.0.6,要知道各自密码。8不能直接连接6,通过7间接连接。)
-o option   如:-o StrictHostKeyChecking=no 
-i <file>  #指定私钥文件路径,实现基于key验证,默认使用文件: ~/.ssh/id_dsa, 
~/.ssh/id_ecdsa, ~/.ssh/id_ed25519,~/.ssh/id_rsa等

远程执行命令 :

ssh    10.0.0.8   /bin/bash  < test.sh     #远程执行脚本

二、ssh实心基于密钥的登录方式:

#在客户端生成密钥对
[15:53:37 root@CS7-VM8-10 ~]#ssh-keygen
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:9ddpaca/BXoyiNGNBUCvrvXFEnB4HBXHS2xUrHU4D5I root@CS7-VM8-10.0.8.7
The key's randomart image is:
+---[RSA 2048]----+
|       .o.o.o*o+.|
.....

[15:54:22 root@CS7-VM8-10 ~]#ll .ssh
total 12
-rw-------. 1 root root 1675 Apr 30 15:54 id_rsa
-rw-r--r--. 1 root root  403 Apr 30 15:54 id_rsa.pub


#把公钥文件传输至远程服务器对应用户的家目录
[15:54:46 root@CS7-VM8-10 ~]#ssh-copy-id  -i .ssh/id_rsa.pub 10.0.8.8
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: ".ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempt...
...

[15:56:51 root@CS8-VM8-10 .ssh][#ll
total 8
-rw-------. 1 root root 403 Apr 30 15:55 authorized_keys

[15:58:13 root@CS7-VM8-10 ~]#ssh 10.0.8.8
静以修身,俭以养德。
淡泊明志,宁静致远。
自强不息,厚德载物。
Activate the web console with: systemctl enable --now cockpit.socket

Last login: Sat Apr 30 15:53:24 2022 from 10.0.8.7
[15:58:41 root@CS8-VM8-10 ~][#


二、ssh基于客户端的工具
(1)scp

scp [options] SRC... DEST/

方式:

scp [options] [user@]host:/sourcefile /destpath
scp [options] /sourcefile [user@]host:/destpath
scp [options] [user@]host1:/sourcetpath [user@]host2:/destpath

选项:

-C 压缩数据流
-r 递归复制
-p 保持原文件的属性信息
-q 静默模式
-P PORT 指明remote host的监听的端口

例:

scp   a.txt     10.0.8.8:/data       #当前目录下的文件a.txt,复制到远程主机10.0.8.8的/date目录下
scp -r  /data 10.0.8.123:/test   # #当前文件夹/data,复制到远程主机10.0.8.8的/test目录下

(2)rsync
rsync工具可以基于ssh和rsync协议实现高效率的远程系统之间复制文件,使用安全的shell连接做为传输方式,比scp更快,基于增量数据同步,即只复制两方不同的文件,此工具来自于rsync包.

注意:通信两端主机都需要安装 rsync 软件

rsync  -av /etc server1:/tmp #复制目录和目录下文件
rsync  -av /etc/ server1:/tmp #只复制目录下文

支持的选项:

-n 模拟复制过程
-v 显示详细过程
-r 递归复制目录树
-p 保留权限
-t 保留修改时间戳
-g 保留组信息
-o 保留所有者信息
-l 将软链接文件本身进行复制(默认)
-L 将软链接文件指向的文件复制
-u 如果接收者的文件比发送者的文件较新,将忽略同步
-z 压缩,节约网络带宽
-a 存档,相当于-rlptgoD,但不保留ACL(-A)和SELinux属性(-X)
--delete 源数据删除,目标数据也自动同步删除

(3)sftp(略)
交互式文件传输工具,用法和传统的ftp工具相似,利用ssh服务实现安全的文件上传和下载

三、总结sshd服务常用参数。

一、ssh高级应用:
(1)ssh本地端口转发
(2)ssh远程端口转发
(3)ssh动态端口转发

二、ssh服务器配置:
服务器端:sshd
服务器端的配置文件: /etc/ssh/sshd_config
服务器端的配置文件帮助:man 5 sshd_config
常用参数:

port        #生产建议修改
ListenAddress ip
LoginGraceTime 2m
PermitRootLogin yes 									#默认ubuntu不允许root远程ssh登录
StrictModes yes   										#检查.ssh/文件的所有者,权限等
MaxAuthTries   6   			  							#pecifies the maximum number of authentication 
attempts permitted per connection. Once the number of failures reaches half this 
value, additional failures are logged. The default is 6.
MaxSessions  10      				  							 #同一个连接最大会话
PubkeyAuthentication yes     								#基于key验证
PermitEmptyPasswords no     							 #空密码连接
PasswordAuthentication yes  								 #基于用户名和密码连接
GatewayPorts no
ClientAliveInterval 10 											#单位:秒
ClientAliveCountMax 3										 #默认3
UseDNS yes														 #提高速度可改为no
GSSAPIAuthentication yes									 #提高速度可改为no
MaxStartups   														 #未认证连接最大值,默认值10
Banner /path/file

ssh服务:

建议使用非默认端口
禁止使用protocol version 1
限制可登录用户
设定空闲会话超时时长
利用防火墙设置ssh访问策略
仅监听特定的IP地址
基于口令认证时,使用强密码策略,比如:tr -dc A-Za-z0-9_ < /dev/urandom | head -c 12| 
xargs
使用基于密钥的认证
禁止使用空密码
禁止root用户直接登录
限制ssh的访问频度和并发在线数
经常分析日志

四、搭建dhcp服务,实现ip地址申请分发

首先要关闭虚拟机内自带的dhcp服务,避免与实验冲突。
在这里插入图片描述

服务器端的配置:(CentOS8)

1.安装dhcp服务:yum  install -y  dhcp-server
dhcp(CentOS 7 之前版本) 或 dhcp-server(CentOS 8 中的包名)

2.安装成功后直接启动服务会失败,要修改配置文件。
[16:02:32 root@CS8-VM8-10 dhcpd][#rpm -ql dhcp-server
...
/etc/dhcp
/etc/dhcp/dhcpd.conf
/usr/lib/systemd/system/dhcpd.service
/usr/share/doc/dhcp-server/dhcpd.conf.example
...

3.修改配置文件/etc/dhcp/dhcpd.conf ,参照文件/usr/share/doc/dhcp-server/dhcpd.conf.example的格式。
修改的部分:
option domain-name-servers 8.8.8.8, 180.76.76.76;     #dns域名解析
default-lease-time 86400;    #默认有效期(以秒为 单位)
max-lease-time 107200;  

subnet 10.0.8.0 netmask 255.255.255.0 {   #网段和子网掩码
	range 10.0.8.100 10.0.8.200;   #划分ip的地址范围
	option routers 10.0.8.2;			#网关
}

host testhost {    #固定地址的分发
	hardware ethernet  00:0c:29:2d:4d:18;     #客户端的网卡地址00:0c:29:2d:4d:18
	fixed-address 10.0.8.123;			#将客户端的对应的网卡地址划分固定ip地址10.0.8.123
}

4.启动服务
systemctl restart  dhcpd

客户端(1)的配置:划分固定地址

2022-05-05 15:25:56  cd  /etc/sysconfig/network-scripts/
  342  2022-05-05 15:25:57 ll
  343  2022-05-05 15:25:59 cat ifcfg-eth0 
  344  2022-05-05 15:26:23 vim ifcfg-eth0 
  345  2022-05-05 15:26:43 cat ifcfg-eth0 
  DEVICE=eth0
  BOOTPROTO=dhcp
  346  2022-05-05 15:26:52 nmcli con
  347  2022-05-05 15:27:00 nmcli con reload
  348  2022-05-05 15:27:30 nmcli con up "System eth0"
  
[16:18:21 root@CS8-VM8-10 network-scripts][#ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:2d:4d:18 brd ff:ff:ff:ff:ff:ff
    inet 10.0.8.123/24 brd 10.0.8.255 scope global dynamic noprefixroute eth0
       valid_lft 84692sec preferred_lft 84692sec
    inet6 fe80::20c:29ff:fe2d:4d18/64 scope link 
       valid_lft forever preferred_lft forever


客户端(2)的配置:划分随机地址(在地址范围内)

  431  2022-05-05 15:36:57 nmcli con
  432  2022-05-05 15:37:02 nmcli con reload
  433  2022-05-05 15:37:15 nmcli con up "eth0"
  434  2022-05-05 15:37:20 ip a

[16:31:29 root@CS7-VM8-10 ~]#ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:0b:70:49 brd ff:ff:ff:ff:ff:ff
    #这是以前固定有的ip地址
    inet 10.0.8.7/24 brd 10.0.8.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    #这是搭建好dhcp服务后划分的ip地址
    inet 10.0.8.102/24 brd 10.0.8.255 scope global secondary dynamic eth0
       valid_lft 83252sec preferred_lft 83252sec
    inet6 fe80::20c:29ff:fe0b:7049/64 scope link 
       valid_lft forever preferred_lft forever
[16:31:30 root@CS7-VM8-10 ~]#


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值