RHCSA实验总结-点击跳转

RHCE实验

RHCE这边我简单分了下类:

## 网络与安全
1. IPv6 设置(推荐使用GUI程序 nm-connection-editor来完成)
2. team 聚合设置
3. 防火墙端口过滤
4. 防火墙端口转发 ## 网络共享服务
6. iSCSI 服务
7. nfs/smb 挂载
7.1 kerbose验证的nfs
7.2 samba多用户挂载 ## web服务
8. https, wsgi服务器
9. http 虚拟主机 ## db服务
11. mariadb 数据库 ## 其他
7. shell 脚本
10. smtp 邮件服务 

提供Apache HTTPD Web服务

成果:

TLS虚拟主机,在https://webapp0.example.com 域中提供Python WSGI Web应用程序

准备:

1、开始前重置server和desktop虚机: rht-vmctl reset desktop     rht-vmctl reset server

2、在server上执行实验初始化脚本: lab webapp setup

需求和资料:

您的开发者正在处理一个使用Python编写并基于Web的新应用程序。他们要求您在server0上配置httpd服务以使用TLS加密在https://webapp0.example.com域中运行此应用程序

要配置应用程序,您将需要以下信息

文件 下载位置
TLS证书 http://classroom/pub/tls/certs/webapp0.crt
TLS私钥 http://classroom/pub/tls/private/webapp0.key
TLS CA证书 http://classroom/pub/example-ca.crt
Python应用程序 /home/student/webapp.wsgi

验证:

在desktop虚机上运行:lab webapp grade

需求分析拆解:

1、安装支持httpd、TLS、WSGI的所需软件包

2、下载创建一个目录并把应用程序复制到这个目录,后续httpd访问它提供服务

3、下载配置证书和秘钥

4、配置httpd基于TLS的新虚机主机,并配置域名/访问web应用程序,并使用之前下载的证书和秘钥

5、启动并启用web服务支持TLS的web服务可以被外部访问

6、从desktop上测试是否可以通过httpd正常访问到web应用程序

7、在desktop上执行 lab webapp grade验证

具体实验步骤:

、安装支持httpd、TLS、WSGI的所需软件包
[root@server0 ~]# yum -y install httpd mod_ssl mod_wsgi 、下载创建一个目录并把应用程序复制到这个目录,后续httpd访问它提供服务
2.1、创建目录
[root@server0 srv]# mkdir -p /srv/webapp0/www
[root@server0 srv]# rsync -avgp /home/student/webapp.wsgi /srv/webapp0/www/
sending incremental file list
webapp.wsgi sent bytes received bytes 1014.00 bytes/sec
total size is speedup is 0.78
[root@server0 srv]# 2.2、还原selinux标签
[root@server0 srv]# restorecon -vvR webapp0
restorecon reset /srv/webapp0/www context unconfined_u:object_r:var_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /srv/webapp0/www/webapp.wsgi context unconfined_u:object_r:var_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
[root@server0 srv]# semanage fcontext -l |grep -i www
/srv/([^/]*/)?www(/.*)? all files system_u:object_r:httpd_sys_content_t:s0
/srv/([^/]*/)?www/logs(/.*)? all files system_u:object_r:httpd_log_t:s0 、下载配置证书和秘钥
3.1、下载ca证书
[root@server0 tls]# /etc/pki/tls/certs
[root@server0 tls]# wget http://classroom.example.com/pub/example-ca.crt
3.2、下载tls证书
[root@server0 certs]# wget http://classroom.example.com/pub/tls/certs/webapp0.crt
3.3、下载私钥
[root@server0 certs]# cd /etc/pki/tls/private/
[root@server0 private]# wget http://classroom.example.com/pub/tls/private/webapp0.key 、配置httpd基于TLS的新虚机主机,并配置域名/访问web应用程序,并使用之前下载的证书和秘钥
[root@server0 conf.d]# cat -webapp0.example.com.conf
<VirtualHost *:>
ServerName webapp0.example.com ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
# public crt
SSLCertificateFile /etc/pki/tls/certs/webapp0.crt
# prive key
SSLCertificateKeyFile /etc/pki/tls/private/webapp0.key
# ca crt
SSLCertificateChainFile /etc/pki/tls/certs/example-ca.crt # wsgi location
WSGIScriptAlias / /srv/webapp0/www/webapp.wsgi <Directory "/srv/webapp0/www">
Require all granted
</Directory>
</VirtualHost>
[root@server0 conf.d]# 、启动并启用web服务支持TLS的web服务可以被外部访问配置防火墙
[root@server0 ~]# firewall-cmd --add-service=https
[root@server0 ~]# firewall-cmd --add-service=https --permanent 、从desktop上测试是否可以通过httpd正常访问到web应用程序
[root@desktop0 ~]# curl https://webapp0.example.com -k
UNIX EPOCH time is now: 1563355750.07 、在desktop上执行 lab webapp grade验证
[root@desktop0 ~]# lab webapp grade
Checking for web application... SUCCESS
[root@desktop0 ~]#

提供Apache HTTPD Web服务-具体实验步骤

实验总结:

1、域名证书申请

- 可以通过网站:https://myssl.com/csr_create.html 或者通过命令生成csr(证书签名请求文件)和私钥

- 拿着csr去CA证书颁发机构申请带签名的证书(带CA签名的公钥)

- 把公钥和私钥放到服务器上即可

2、加密请求逻辑

curl "https://baidu.com" -v
* Rebuilt URL to: https://baidu.com/
* Trying 220.181.38.148...
* TCP_NODELAY set
* Connected to baidu.com (220.181.38.148) port (#)
* ALPN, offering h2
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
* CAfile: /etc/ssl/cert.pem
CApath: none
* TLSv1. (OUT), TLS handshake, Client hello ():
* TLSv1. (IN), TLS handshake, Server hello ():
* TLSv1. (IN), TLS handshake, Certificate ():
* TLSv1. (IN), TLS handshake, Server key exchange ():
* TLSv1. (IN), TLS handshake, Server finished ():
* TLSv1. (OUT), TLS handshake, Client key exchange ():
* TLSv1. (OUT), TLS change cipher, Client hello ():
* TLSv1. (OUT), TLS handshake, Finished ():
* TLSv1. (IN), TLS change cipher, Client hello ():
* TLSv1. (IN), TLS handshake, Finished ():
* SSL connection using TLSv1. / ECDHE-RSA-AES128-GCM-SHA256
* ALPN, server accepted to use http/1.1
* Server certificate:
* subject: C=CN; L=Beijing; O=BeiJing Baidu Netcom Science Technology Co., Ltd; OU=service operation department; CN=www.baidu.cn
* start date: Mar :: GMT
* expire date: Mar :: GMT
* subjectAltName: host "baidu.com" matched cert's "baidu.com"
* issuer: C=US; O=DigiCert Inc; CN=DigiCert SHA2 Secure Server CA
* SSL certificate verify ok.
> GET / HTTP/1.1
> Host: baidu.com
> User-Agent: curl/7.54.
> Accept: */*
>
< HTTP/1.1 302 Moved Temporarily
< Server: bfe/1.0.8.18
< Date: Mon, 12 Aug 2019 12:13:28 GMT
< Content-Type: text/html
< Content-Length: 161
< Connection: keep-alive
< Location: http://www.baidu.com/
<
<html>
<head><title>302 Found</title></head>
<body bgcolor="white">
<center><h1>302 Found</h1></center>
<hr><center>bfe/1.0.8.18</center>
</body>
</html>
* Connection #0 to host baidu.com left intact

HTTPS认证流程解释:

CA可以理解为工商局     证书可以理解为经营许可证书(带签名的公钥)、key可以理解为身份证(私钥)

想开公司的去工商局申请一个经营许可,但是这个许可是可以伪造的,你想投资这个公司但是你不知道这个公司是不是正规的怎么办?去工商局一查不都知道了吗?原理是一样的

如上图和请求逻辑字符串所示:

1、TLS handshake, Client Hello 【发送hello启动会话】
客户端通过发送Client Hello报文开始建立SSL通信,报文包含客户端支持的SSL版本,加密套件列表,随机数。
上面例子中:ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH 就是客户端支持的加密套件的表达式。

2、TLS handshake, Server Hello 【应答hello】

服务端回复Server Hello作为应答,报文包含服务端选择好的SSL版本,加密套件,随机数。

上面例子中服务器选择了:SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256

3、TLS handshake, Certificate 【拿出证明,客户端验证("用户去工商局认证它的公司是否合法“)】

服务端发送证书链(从根证书到自身的证书)。证书包含证书所有者、颁发机构以及公钥、数字签名等信息。

客户端会预制一些CA公钥证书,如果发现服务端发送过来的证书不是预制的CA机构颁发的会提示。

客户端会用CA公钥对数字签名进行解密获取证书信息,然后和服务端传递过来的信息进行对比是否有效

4、TLS handshake, Server key exchange【服务端将数据加密方法和参数传递给客户后端】

5、TLS handshake, Server finished 【就这些了没了,等待客户端后续传递消息】

6、TLS handshake, Client key exchange 【客户端将数据加密方法和参数传递给服务端】

7、TLS change cipher, Client hello 【我用发给你的加密方法和参数加密了一条信息你验证下】服务端发送更改加密方式信号。TLS1.3将其移除

8、TLS handshake, Finished 【服务端OK我也用发给你的加密方法加密了一条数据你也验证下】

开始数据传输-------

ISCSI 提供基于块的存储

成果:

从server0计算机上导出的ISCSI目标用ACL进行了限制,以便次目标只能由您的desktop0使用并持久挂载

准备:

1、重置server、destop系统:rht-vmctl reset desktop     rht-vmctl reset server

2、您已被要求在server0计算机上创建一个新的1G ISCSI目标,此目标应该称为: iqn.2014-06.com.example:server0   且只能被:iqn.2014-06.com.example:desktop0的客户端使用

需求分析:

1、在Server上创建一个新的1 G分区留作备用

2、在Server上安装所需的安装包,然后启动并启用所有相关服务

3、创建以个名为iqn.2014-06.com.example:server0的ISCSI目标,使用创建的1G分区作为后备存储,并设置ACL只允许iqn.2014-06.com.example:desktop0访问

4、在防火墙开放ISCSI服务端口

5、在desktop0上,验证是否安装了:iscsi-initiator-util软件包,然后将initiatorname设置为iqn.2014-06.com.example:desktop0

6、发现server0的共享,并登陆测试

7、挂载fstable持久挂载(创建挂载点/iscsidisk并永久挂载至/iscsidisk)

具体实验步骤:

-----------------------------------------server

# 创建硬盘
[root@server0 ~]# fdisk /dev/vdb # 扫描分区改动
[root@server0 ~]# partprobe # 安装ISCSI共享所需软件包
[root@server0 ~]# yum -y install targetcli # 启动服务并设置为开机启动
[root@server0 ~]# systemctl start target
[root@server0 ~]# systemctl enable target
ln -s '/usr/lib/systemd/system/target.service' '/etc/systemd/system/multi-user.target.wants/target.service'
[root@server0 ~]# systemctl status target
target.service - Restore LIO kernel target configuration
Loaded: loaded (/usr/lib/systemd/system/target.service; enabled)
Active: active (exited) since 三 -- :: CST; 12s ago
Main PID: (code=exited, status=/SUCCESS) 7月 :: server0.example.com target[]: No saved config file at /etc/target/saveconfig.json, ok, exiting
7月 :: server0.example.com systemd[]: Started Restore LIO kernel target configuration. # 先创建一个后备的块存储-table可以补全
targetcli
/> backstores/block create dev=/dev/vdb1 name=disk1
Created block storage object disk1 using /dev/vdb1. # 在创建一个ISCSI分享目标,名称为:iqn.-.com.example:server0
/> iscsi/ create wwn=iqn.-.com.example:server0
Created target iqn.-.com.example:server0.
Created TPG . # 设置目标[acl/lun/port] = [允许谁来访问/这个目标分享的设备/这个目标通过什么IP什么端口访问]
## acl
/> iscsi/iqn.-.com.example:server0/tpg1/acls create wwn=iqn.-.com.example:desktop0
Created Node ACL for iqn.-.com.example:desktop0
## lun
/> iscsi/iqn.-.com.example:server0/tpg1/luns create /backstores/block/disk1
Created LUN .
Created LUN -> mapping in node ACL iqn.-.com.example:desktop0
## port iscsi 默认端口是3260如果不使用这个端口需要对selinux进行配置
/> iscsi/iqn.-.com.example:server0/tpg1/portals create ip_address=172.25.0.11 ip_port= # 保存退出
/> saveconfig
Last configs saved in /etc/target/backup.
Configuration saved to /etc/target/saveconfig.json /> exit
Global pref auto_save_on_exit=true
Last configs saved in /etc/target/backup.
Configuration saved to /etc/target/saveconfig.json # 添加防火墙允许端口访问
[root@server0 ~]# firewall-cmd --add-port=/tcp
[root@server0 ~]# firewall-cmd --add-port=/tcp --permanent -----------------------------------------desktop # 修改配置设置server端允许的iscsi的客户端
[root@desktop0 ~]# cat /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.-.com.example:desktop0 # 发现server端的共享设备
[root@desktop0 ~]# iscsiadm -m discovery -t st -p 172.25.0.11:
172.25.0.11:, iqn.-.com.example:server0 # 登录设备
[root@desktop0 ~]# iscsiadm -m node -T iqn.-.com.example:server0 -l # 查看设备
[root@desktop0 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda : 1G disk <----------- 多出一个1G的设备
vda : 10G disk
└─vda1 : 10G part /
vdb : 10G disk # 格式化分区
[root@desktop0 ~]# mkfs.xfs /dev/sda # 创建挂载点
[root@desktop0 ~]# mkdir -p /iscsidisk # 获取uuid
[root@desktop0 ~]# blkid
/dev/vda1: UUID="9bf6b9f7-92ad-441b-848e-0257cbb883d1" TYPE="xfs"
/dev/sda: UUID="ab154cb3-c4b0-4f63-82db-c499a2b5ec7d" TYPE="xfs" # 修改fstab持久挂载 / 这里需要注意需要指定_netdev 因为网络挂载
UUID=ab154cb3-c4b0-4f63-82db-c499a2b5ec7d /iscsidisk xfs _netdev # 测试,然后umount后重启,尽量不要强制重启
[root@desktop0 ~]# mount -a
[root@desktop0 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/vda1 10G .0G .1G % /
devtmpfs 906M 906M % /dev
tmpfs 921M 80K 921M % /dev/shm
tmpfs 921M 17M 904M % /run
tmpfs 921M 921M % /sys/fs/cgroup
/dev/sda 1014M 33M 982M % /iscsidisk
[root@desktop0 ~]# umount /iscsidisk
[root@desktop0 ~]# reboot # 验证重启能否自动挂载
df -h ISCSI 提供基于块的存储-具体实验步骤

ISCSI 提供基于块的存储-具体实验步骤

实验总结:

1、iscsi 存储资源可以包含多个TGP,每个TGP有一个唯一限定名:iqn

2、每个TGP可以理解为一个对外暴露的可访问资源:这个资源定义了3个属性:

  • ACL 谁可以访问我
  • luns 我能提供那些共享资源
  • portals 要访问我通过那个IP那个端口

kerbose验证的nfs挂载和samba多用户挂载(autofs是rchsa)

成果:

根据给定的要求在server0上

与 NFS 和 Kerberos 安全性共享目录,然后将它挂载到desktop0上

在Server0上共享某个目录,然后将其挂载到desktop0上

NFS需求:

- 在具有krb5p的安全性的server0上共享创建的/krbnfs目录

- 允许从desktp0系统中对共享进行读写访问

- 支持SELinux标签导出

- server0 和 desktop0系统的预配置 krb5 keytab在一下一下网址中提供

http://classroom.example.com/pub/keytabs/server0.keytab

http://classroom.example.com/pub/keytabs/desktop0.keytab

- 允许通过防火墙来访问NFS服务

- 在desktop0上创建新的挂载点 /mnt/securespace 并永久挂载 NFS 共享 server0:/krbnfs

SAMBA需求:

- 使用 SMB 来共享创建的目录 /smbaspace

- 辅助组 sales 成员对共享具有读写权限

- 确保新创建的文件均具有组所有权sales

- sales 组成员之外的所有用户具有读权限

- Samba服务器位于 salesdep 工作组中,Samba中的共享名为 smbspace

- 创建Samba用户 frank 此用户属于时长销售团队:sales  密码为 redhat

- 创建Samba用户 martin 此用户不属于销售团队,密码为 redhat

- 允许通过防火墙来访问SMB

- 以多用户方式将Samba共享永久挂载到desktop0上的 /mnt/salesshare 挂载点,使用新创建的凭据文件 /root/smb-multiuser.txt 进行身份验证。使用 frank 的凭据来挂载 Samba共享

准备:

开始前重置:server 和 desktop机器  并执行初始化

[root@foundation0 ~]# rht-vmctl reset server

[root@foundation0 ~]# rht-vmctl reset desktop

在server和desktop上执行:lab storageshares setup

实验完成后在desktop执行: lab storageshares grade 进行验证

具体实验步骤:

# krb5 nfs

-------------------------server
# 创建共享目录
mkdir -p /krbnfs # 检查nfs软件包是否安装
[root@server0 ~]# rpm -qa |grep -i nfs
libnfsidmap-0.25-.el7.x86_64
nfs-utils-1.3.-.el7.x86_64 # 修改配置文件设置共享目录以及共享目录允许谁来访问
[root@server0 ~]# cat /etc/exports
/krbnfs 172.25.0.10(sec=krb5p,rw)
[root@server0 ~]# # 因为需要支持krb5所以需要下载keytab
[root@server0 ~]# wget http://classroom.example.com/pub/keytabs/server0.keytab -O /etc/krb5.keytab # 允许selinux标签导出需要使用v4.2修改nfs的配置文件
[root@server0 ~]# cat /etc/sysconfig/nfs |grep RPCNFSDARGS
RPCNFSDARGS="-V4.2"
[root@server0 ~]# # 启动服务并设置为开机启动
[root@server0 ~]# systemctl start nfs-secure-server
[root@server0 ~]# systemctl enable nfs-secure-server
ln -s '/usr/lib/systemd/system/nfs-secure-server.service' '/etc/systemd/system/nfs.target.wants/nfs-secure-server.service'
[root@server0 ~]# systemctl status nfs-secure-server
nfs-secure-server.service - Secure NFS Server
Loaded: loaded (/usr/lib/systemd/system/nfs-secure-server.service; enabled)
Active: active (running) since Fri -- :: CST; 13s ago
Main PID: (rpc.svcgssd)
CGroup: /system.slice/nfs-secure-server.service
└─ /usr/sbin/rpc.svcgssd Jul :: server0.example.com systemd[]: Starting Secure NFS Server...
Jul :: server0.example.com systemd[]: Started Secure NFS Server. # 防火墙允许服务通过
[root@server0 ~]# firewall-cmd --add-service=nfs --permanent
success
[root@server0 ~]# firewall-cmd --add-service=nfs
success
[root@server0 ~]# firewall-cmd --reload
success -------------------------desktop # 因为需要支持krb5所以需要下载keytab
[root@desktop0 ~]# wget http://classroom.example.com/pub/keytabs/desktop0.keytab -O /etc/krb5.keytab # 创建挂载目录
[root@desktop0 ~]# mkdir /mnt/securespace # 启动服务
[root@desktop0 ~]# systemctl start nfs-secure
[root@desktop0 ~]# systemctl enable nfs-secure
ln -s '/usr/lib/systemd/system/nfs-secure.service' '/etc/systemd/system/nfs.target.wants/nfs-secure.service'
[root@desktop0 ~]# systemctl status nfs-secure
nfs-secure.service - Secure NFS
Loaded: loaded (/usr/lib/systemd/system/nfs-secure.service; enabled)
Active: active (running) since Fri -- :: CST; 10s ago
Main PID: (rpc.gssd)
CGroup: /system.slice/nfs-secure.service
└─ /usr/sbin/rpc.gssd Jul :: desktop0.example.com systemd[]: Starting Secure NFS...
Jul :: desktop0.example.com systemd[]: Started Secure NFS. # 添加/etc/fstab配置
server0:/krbnfs /mnt/securespace nfs defaults,v4.,sec=krb5p # 挂载
mount -a # 验证selinux标签是否导出
server上创建一个文件看看selinux标签

krb5验证的-nfs挂载详细实验步骤

# samba mutiuser

-------------------------server
# 安装samba所需安装包
[root@server0 ~]# yum -y install samba* # 创建共享目录
[root@server0 ~]# mkdir -p /smbaspace # 创建辅助组
[root@server0 ~]# groupadd sales # 创建用户和根据需求把用户加入sales辅助组
[root@server0 ~]# useradd frank -G sales -s /usr/sbin/nologin
[root@server0 ~]# useradd martin -s /usr/sbin/nologin # 根据需求smbaspace目录属于sales且新文件自动属于sales组
[root@server0 ~]# chown :sales /smbaspace
[root@server0 ~]# chmod g+s /smbaspace # samba用户frank要对共享有读写权限,frank属于sales我们对应的也需要对目录的组设置相应的权限
[root@server0 ~]# chmod /smbaspace
[root@server0 ~]# ll -d /smbaspace
drwxrwsr-x. root sales Jul : /smbaspace # 添加selinux标签,以通过selinux权限
[root@server0 ~]# semanage fcontext -a -t samba_share_t '/smbaspace(/.*)?'
[root@server0 ~]# restorecon -vvFR /smbaspace
restorecon reset /smbaspace context unconfined_u:object_r:default_t:s0->system_u:object_r:samba_share_t:s0
[root@server0 ~]# # 按需修改配置
[root@server0 ~]# cat /etc/samba/smb.conf |grep workgroup |grep -v "#"
workgroup = salesdep
[root@server0 ~]# cat /etc/samba/smb.conf |grep -A smbspace
[smbspace]
path = /smbaspace
write list = @sales [root@server0 ~]# # 创建samba用户
[root@server0 ~]# smbpasswd -a frank
New SMB password:
Retype new SMB password:
Added user frank.
[root@server0 ~]# smbpasswd -a martin
New SMB password:
Retype new SMB password:
Added user martin. # 启动服务并设置为开机启动
[root@server0 ~]# systemctl start smb nmb
[root@server0 ~]# systemctl enable smb nmb
ln -s '/usr/lib/systemd/system/smb.service' '/etc/systemd/system/multi-user.target.wants/smb.service'
ln -s '/usr/lib/systemd/system/nmb.service' '/etc/systemd/system/multi-user.target.wants/nmb.service'
[root@server0 ~]# systemctl status smb nmb
smb.service - Samba SMB Daemon
Loaded: loaded (/usr/lib/systemd/system/smb.service; enabled)
Active: active (running) since Fri -- :: CST; 14s ago
Main PID: (smbd)
Status: "smbd: ready to serve connections..."
CGroup: /system.slice/smb.service
├─ /usr/sbin/smbd
└─ /usr/sbin/smbd Jul :: server0.example.com smbd[]: [// ::28.330058, ] ../lib/util/become_daemon.c:(daemon_ready)
Jul :: server0.example.com systemd[]: Started Samba SMB Daemon. nmb.service - Samba NMB Daemon
Loaded: loaded (/usr/lib/systemd/system/nmb.service; enabled)
Active: active (running) since Fri -- :: CST; 14s ago
Main PID: (nmbd)
Status: "nmbd: ready to serve connections..."
CGroup: /system.slice/nmb.service
└─ /usr/sbin/nmbd Jul :: server0.example.com systemd[]: Starting Samba NMB Daemon...
Jul :: server0.example.com systemd[]: Started Samba NMB Daemon.
[root@server0 ~]# # 本机验证
[root@server0 ~]# smbclient -L //localhost/smbspace -U frank
Enter frank's password:
Domain=[SALESDEP] OS=[Unix] Server=[Samba 4.1.] Sharename Type Comment
--------- ---- -------
smbspace Disk
IPC$ IPC IPC Service (Samba Server Version 4.1.)
frank Disk Home Directories
Domain=[SALESDEP] OS=[Unix] Server=[Samba 4.1.] Server Comment
--------- -------
SERVER0 Samba Server Version 4.1. Workgroup Master
--------- -------
SALESDEP SERVER0 # 防火墙允许服务
[root@server0 ~]# firewall-cmd --add-service=samba --permanent
success
[root@server0 ~]# firewall-cmd --add-service=samba
success
[root@server0 ~]# firewall-cmd --reload
success
[root@server0 ~]# -------------------------desktop
# 安装samba所需安装包
[root@desktop0 ~]# yum -y install samba* cifs-utils # 验证server共享desktop是否可以看到
[root@desktop0 ~]# smbclient -L //server0/smbspace -U frank
Enter frank's password:
Domain=[SALESDEP] OS=[Unix] Server=[Samba 4.1.] Sharename Type Comment
--------- ---- -------
smbspace Disk
IPC$ IPC IPC Service (Samba Server Version 4.1.)
frank Disk Home Directories
Domain=[SALESDEP] OS=[Unix] Server=[Samba 4.1.] Server Comment
--------- -------
SERVER0 Samba Server Version 4.1. Workgroup Master
--------- -------
SALESDEP SERVER0
[root@desktop0 ~]# # 创建挂载目录
[root@desktop0 ~]# mkdir /mnt/salesshare # 根据需求创建credentials文件
[root@desktop0 ~]# cat /root/smb-multiuser.txt
username=frank
password=redhat
[root@desktop0 ~]# # 添加/etc/fstab配置
//server0/smbspace /mnt/salesshare cifs defaults,multiuser,credentials=/root/smb-multiuser.txt,sec=ntlmssp 0 0 # 挂载
mount -a

samba多用户文件密码挂载详细实验步骤

验证:

[root@desktop0 ~]# lab storageshares grade

实验总结:

1、nfs和samba区别

nfs和samba都是共享协议但是nfs使用的是标准的unix文件权限和验证所以在window上不支持,samba使用权限和认证可以看出并没有使用unix这一套,所以它可以通用windows和unix

2、区分下实验

- autofs 添加配置文件就行了   nfs.autofs指定挂载的目录和映射文件      在映射文件指定挂载点、挂载点权限-typefs=rw、要挂载的文件系统

# 添加配置文件
[root@desktop0 ~]# vim /etc/auto.master.d/nfs.autofs
#挂载的目录 映射配置文件
/- /etc/auto.home # 添加映射文件
[root@desktop0 ~]# vim /etc/auto.home
#挂载点 挂载选项 要挂载的文件系统
/home/guests -typefs=rw classroom.example.com:/home/guests

- iscsi

挂载iscsi共享的对象:

、先的发现那台机器在共享
iscsiadm -m discovery -t st -p 172.25.0.11:
# 解释-t type sendtarget 、登录下
iscsiadm -m node -T iqn.-.com.example:server0 -l
# 解释-T 指定上面发现的targetname
# 解释-l 登录logging 、当发现了硬盘设备后就和标准的设备挂载一样了唯一区别是,需要在挂载属性上加一个属性标识它是一个网络设备(_netdev)
UUID=ab154cb3-c4b0-4f63-82db-c499a2b5ec7d /iscsidisk xfs _netdev

- nfs

注意如果支持标签导出的话改下server配置
[root@server0 ~]# vim /etc/sysconfig/nfs
RPCNFSDARGS="-V 4.2" 如果需要支持krb5需要下载“护照”keytab 在server端和client端
wget http://xxxx/keytab -O /etc/krb5.keytab 在挂载的时候
文件类型nfs 挂载选项v4.,sec=krb5p

- samba

server端注意启动:smb nmb 服务 

server端注意文件夹权限、selinux标签权限

配置也需要注意下
[smbspace]
path = /sambaspace
write list = @salses

网络安全[IPV6/防火墙转发/聚合team]

IPV6配置

这个没什么说的标准命令配置按照规则来即可  有需求可以通过GUI来配置: nm-con

实验需求:

1、配置server的eno1的链接配置IPV4地址 192.168.0.100/24 和IPV6地址 fddb:fe2a:ab1e::c0a8:64/64      16进制:0-9  A-F   别记错

2、ipv4网关:192.168.0.254   ipv6网关:fddb:fe2a:ab1e::c0a8:fe

实验准备:在server上执行  lab ipv6 setup

实验验证:lab ipv6 grade

实验步骤:

# 添加NetworkManager链接 对应的设备是: eno1
[root@server0 ~]# nmcli connection add con-name eno1 type ethernet ifname eno1
Connection 'eno1' (e80e5350-5a76-40bc-a1d4-fbf63da498db) successfully added. # 添加IPV4配置
[root@server0 ~]# nmcli connection modify eno1 ipv4.addresses 192.168.0.100/
# 修改IPV4链接方式为手工
[root@server0 ~]# nmcli connection modify eno1 ipv4.method manual # 添加IPV6配置
[root@server0 ~]# nmcli connection modify eno1 ipv6.addresses fddb:fe2a:ab1e::c0a8:/
# 修改IPV6链接方式为手工
[root@server0 ~]# nmcli connection modify eno1 ipv6.method manual # 重启网卡
[root@server0 ~]# nmcli connection down eno1
[root@server0 ~]# nmcli connection up eno1
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/) # 测试
[root@server0 ~]# ping 192.168.0.254
PING 192.168.0.254 (192.168.0.254) () bytes of data.
bytes from 192.168.0.254: icmp_seq= ttl= time=1.88 ms
^C
--- 192.168.0.254 ping statistics ---
packets transmitted, received, % packet loss, time 0ms
rtt min/avg/max/mdev = 1.883/1.883/1.883/0.000 ms
[root@server0 ~]# ping6 fddb:fe2a:ab1e::c0a8:fe
PING fddb:fe2a:ab1e::c0a8:fe(fddb:fe2a:ab1e::c0a8:fe) data bytes
bytes from fddb:fe2a:ab1e::c0a8:fe: icmp_seq= ttl= time=3.23 ms
bytes from fddb:fe2a:ab1e::c0a8:fe: icmp_seq= ttl= time=0.044 ms
^C
--- fddb:fe2a:ab1e::c0a8:fe ping statistics ---
packets transmitted, received, % packet loss, time 1001ms
rtt min/avg/max/mdev = 0.044/1.638/3.233/1.595 ms
[root@server0 ~]# # 验证
[root@server0 ~]# lab ipv6 grade

ipv6&ipv4-详细实验步骤

端口聚合

实验需求:

在server上创建一个聚合接口team0,具有静态IP地址:192.168.0.100/24  并且根据 eno1 和 eno2 创建一个容错的主备接口

实验准备:在server上执行  lab teambridge setup    使用root用户操作

实验步骤:

# 添加聚合接口
[root@server0 ~]# nmcli connection add type team con-name team0 config '{"runner": {"name": "activebackup"}}'
Connection 'team0' (a4c4d11a-2f89--9c69-70c7a46e429a) successfully added.
[root@server0 ~]# # 设置端口IP
[root@server0 ~]# nmcli connection modify team0 ipv4.addresses 192.168.0.100/
[root@server0 ~]# nmcli connection modify team0 ipv4.method manual
[root@server0 ~]# # 针对team0分配eno1和eno2物理接口
[root@server0 ~]# nmcli connection add type team-slave con-name team0-p1 ifname eno1 master team0
[root@server0 ~]# nmcli connection add type team-slave con-name team0-p2 ifname eno2 master team0 # 查看team状态
[root@server0 ~]# teamdctl team0 state
setup:
runner: activebackup
ports:
eno1
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
eno2
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
runner:
active port: eno1 # 验证
[root@server0 ~]# ping 192.168.0.254
PING 192.168.0.254 (192.168.0.254) () bytes of data.
bytes from 192.168.0.254: icmp_seq= ttl= time=0.086 ms
^C
--- 192.168.0.254 ping statistics ---
packets transmitted, received, % packet loss, time 0ms
rtt min/avg/max/mdev = 0.086/0.086/0.086/0.000 ms

端口聚合-详细实验步骤

防火墙转发

实验需求:将desktop来的登录443的请求转到22端口

实验准备:重置server、destop系统:rht-vmctl reset desktop     rht-vmctl reset server

实验步骤:

[root@server0 ~]# firewall-cmd --add-rich-rule 'rule family="ipv4" source address="172.25.0.10/32" forward-port port="443" protocol="tcp" to-port="22"' --permanent
success
[root@server0 ~]# firewall-cmd --add-rich-rule 'rule family="ipv4" source address="172.25.0.10/32" forward-port port="443" protocol="tcp" to-port="22"'
success
[root@server0 ~]# firewall-cmd --list-rich-rules
rule family="ipv4" source address="172.25.0.10/32" forward-port port="" protocol="tcp" to-port=""
[root@server0 ~]# [root@desktop0 ~]# ssh -p 172.25.0.11
The authenticity of host '[172.25.0.11]:443 ([172.25.0.11]:443)' can't be established.
ECDSA key fingerprint is :4d:ac:8a:c9:::b5:0c::c4:ef:a5:e6:f6:.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[172.25.0.11]:443' (ECDSA) to the list of known hosts.
root@172.25.0.11's password:
Last login: Thu Jul :: from 172.25.0.250
[root@server0 ~]#

端口转发详细步骤

配置MariaDB数据库

实验需求:

部署一个MariaDB、并恢复数据库表、插入数据

设置db用户权限

用户 密码 权限
mary mary_password 对传统数据库中所有表有选择操作
legacy legacy_password 对传统数据库中所有表有选择、插入、更新、删除操作
report report_password 对传统数据库中所有表有选择操作

插入数据条目在表:manufacturer

名称 销售员 电话号码
HP Joe Doe +1 (432) 754-3509
Dell Luke Skywalker +1 (431) 219-4589
Lenovo Darth Vader +1 (327) 647-6784

实验准备:

1、重置desktop和server的系统:rht-vmctl reset desktop   rht-vmctl reset server

2、执行实验初始化

server:lab mariadb setup

desktop:lab mariadb setup

实验需求分析:

1、安装mariaDB所需软件包

2、启动服务并设置为开机启动

3、防火墙开放mysql服务允许外部访问mysql

4、创建legacy数据库

5、恢复数据库备份:/home/student/mariadb.dump

6、根据需求创建用户并设置权限

7、插入新的数据在数据库表:manufacturer

8、验证在desktop执行:lab mariadb grade

实验详细步骤:

# 安装所需mariaDB所需软件包  Server & Client
mariadb # 启动服务并设置为开机启动 Server
[root@server0 ~]# systemctl start mariadb
[root@server0 ~]# systemctl status mariadb
mariadb.service - MariaDB database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled)
Active: active (running) since 四 -- :: CST; 6s ago
Process: ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=/SUCCESS)
Process: ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=/SUCCESS)
Main PID: (mysqld_safe)
CGroup: /system.slice/mariadb.service
├─ /bin/sh /usr/bin/mysqld_safe --basedir=/usr
└─ /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/va... 7月 :: server0.example.com mariadb-prepare-db-dir[]: The latest information about MariaDB is available at http://mariadb.org/.
7月 :: server0.example.com mariadb-prepare-db-dir[]: You can find additional information about the MySQL part at:
7月 :: server0.example.com mariadb-prepare-db-dir[]: http://dev.mysql.com
7月 :: server0.example.com mariadb-prepare-db-dir[]: Support MariaDB development by buying support/new features from
7月 :: server0.example.com mariadb-prepare-db-dir[]: SkySQL Ab. You can contact us about this at sales@skysql.com.
7月 :: server0.example.com mariadb-prepare-db-dir[]: Alternatively consider joining our community based development effort:
7月 :: server0.example.com mariadb-prepare-db-dir[]: http://mariadb.com/kb/en/contributing-to-the-mariadb-project/
7月 :: server0.example.com mysqld_safe[]: :: mysqld_safe Logging to '/var/log/mariadb/mariadb.log'.
7月 :: server0.example.com mysqld_safe[]: :: mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
7月 :: server0.example.com systemd[]: Started MariaDB database server.
[root@server0 ~]# systemctl enable mariadb
ln -s '/usr/lib/systemd/system/mariadb.service' '/etc/systemd/system/multi-user.target.wants/mariadb.service' # 防火墙开放mysql服务允许外部访问mysql
[root@server0 ~]# firewall-cmd --add-service=mysql
success
[root@server0 ~]# firewall-cmd --add-service=mysql --permanent
success
[root@server0 ~]# firewall-cmd --reload
success # 创建 legacy 数据库
MariaDB [(none)]> CREATE DATABASE legacy; # 恢复数据库备份:/home/student/mariadb.dump
MariaDB [(none)]> USE legacy;
MariaDB [legacy]> source /home/student/mariadb.dump; # 根据需求创建用户并设置权限
# 创建用户
> CREATE USER mary@'%' IDENTIFIED BY 'mary_password';
Query OK, rows affected (0.01 sec) > CREATE USER legacy@'%' IDENTIFIED BY 'legacy_password';
Query OK, rows affected (0.00 sec) > CREATE USER report@'%' IDENTIFIED BY 'report_password';
Query OK, rows affected (0.00 sec)
# 授权
> GRANT SELECT ON legacy.* TO mary@'%';
> GRANT SELECT ON legacy.* TO report@'%';
> GRANT SELECT,INSERT,UPDATE,DELETE ON legacy.* TO legacy@'%'; # 插入新的数据在数据库表:manufacturer
MariaDB [legacy]> INSERT INTO manufacturer(name,seller,phone_number) VALUES ('HP','Joe Doe','+1 (432) 754-3509'),('Dell','Luke Skywalker','+1 (431) 219-4589'),('Lenovo','Darth Vader','+1 (327) 647-6784');
Query OK, rows affected (0.01 sec)
Records: Duplicates: Warnings: # 验证在desktop执行:lab mariadb grade

配置MariaDB数据库-详细操作步骤

配置邮件传输

实验成果:

将在本地邮件服务器配置为充当空客户端,已将所有邮件都转发到中央服务器已进行发送(中继)

将server0.exampl.com上的Postfix邮件服务器配置为空客户端,以通过:  smtp0.example.com 来中继邮件,并且在发送电子邮件中使用:desktop0.exampl.ecom作为您的组织域名。

通过支持IMAPS功能的点在邮件从imap0.example.com(以用户和邮件收件人 student 的身份,并且使用 IMAP密码: student)检索测试邮件,验证邮件服务器是否运行

实验需求分析:

1、在server0上切换为root用户,然后将 relayhost 指令指向公司邮件服务器(邮件中继给谁)。需要将邮件服务器的主机名括在方括号中,你防止空客户端使用DNS执行 MX 记录查找

2、将Postfix邮件服务器配置为仅回复来自本地系统的邮件

3、配置空客户端,以便所有发出去的消息都将其发件人域重写为公司域:desktop0.example.com

4、禁止Postfix邮件服务器将任何邮件发送到本地账户

5、在server0上重新启动本地Postfix空客户端

6、在server0上打开一个新终端,并且通过mail命令发送一份邮件测试

[root@server0 ~]# mail -s "server0 null client" student@desktop0.example.com
null client test
EOT

7、执行验证

lab smtp-nullclient grade

实验准备:

1、重置server和desktop机器:rht-vmctl reset desktop     rht-vmctl reset server

2、执行初始化在server和desktop

[root@server0 ~]# lab smtp-nullclient setup

[root@desktop0 ~]# lab smtp-nullclient setup

实验步骤:

# 指定邮件收到后转发给谁
[root@server0 ~]# postconf -e 'relayhost=smtp0.example.com' # 仅回复本地邮件
## [设置受信的SMTP客户端IP段, 设置发送邮件的接口为:lookback-only接口]
[root@server0 ~]# postconf -e 'mynetworks=127.0.0.0/8 [::1]/128'
[root@server0 ~]# postconf -e 'inet_interfaces=loopback-only' # 所有发出去的消息都将其发件人域重写为公司域
[root@server0 ~]# postconf -e 'myorigin=desktop0.example.com' # 禁止Postfix邮件服务器将任何邮件发送到本地账户
## 设置本地邮件的目的为空
[root@server0 ~]# postconf -e 'mydestination='
## 并对发往本地邮件的动作设为为报错
postconf -e 'local_transport=error: local delivary disable' # 重启服务
[root@server0 ~]# systemctl restart postfix.service # 发邮件验证
[root@server0 ~]# systemctl restart postfix.service
[root@server0 ~]# mail -s "server0 null client" student@desktop0.example.com
null client test
EOT # 测试邮件是否收到
[root@server0 ~]# curl -k --user student:student imaps://imap0.example.com
null client test

Postfix空客户端-实验详细步骤

实验总结:

1、每个linux都有发邮件到外面的需求,Linux从之前的sendmail到现在的postfix

linux从6以后就自带了postfix,所以每个linux都有一个postfix邮件服务器,由软件包:postfix 提供

# relayhost
relayhost=['smtp0.example.com']
"""
默认情况下postfix会尝试将邮件发送到Internet,但是有时候你们有办法链接internet比如上班时间禁止链接internet,这个时候可能就需要指定一个中继的专门发送邮件的服务器,默认为空,如果设置了中继服务器,本机postfix服务受到邮件后,会把邮件发送到中继服务器上 用中括号括起来:postfix就不会进行MX记录查询了(类似DNS查询) """ # inet_interfaces
# inet_interfaces=loopback-only # default all
"""
以哪个IP发送邮件
当inet_interfaces只指定一个IPv4和/或IPv6地址而不是回送地址时,Postfix SMTP客户机将使用这个地址作为出站邮件的IP源地址。 当设置为空客户端的时候:inet_interfaces需要设置为:inet_interfaces=loopback-only
""" # mynetworks
# mynetworks=127.0.0.0/ [::]/
"""
信任来自哪里的SMTP客户端,只有在我允许的SMTP客户端才能通过postfix服务器进行中继
""" # myorigin
# myorigin=desktop0@example.com
"""
默认我们使用root发送邮件默认是:root@主机名 设定了myorigin之后就是 root@desktop0@example.com
""" # mydestination
# mydestination=
"""
配置postfix邮件服务器是那些域的终点,这个选项一般只针对本机,本机发送本机域的终点就是本机
mydestination = $myhostname, localhost.$mydomain, localhost # default 如果设置为空客户端那么本机域的终点应该去掉设置为空mydestination=
""" # local_transport
# local_transport=error: local delivery disabled
"""
它是指定$mydestination的电子邮件的传递方式,默认设置为:local_transport = local:$myhostname
会把$mydestination邮件发送到:/var/spool/maill中存储位置
"""

练习环境获取方法

1、关注公众号

2、输入:rhce

RHCE实验记录总结-2-RHCE的更多相关文章

  1. RHCE实验记录总结-1-RHCSA

    不管是运维还是开发系统的了解下Linux或者系统的温习整理一下Linux知识点无疑是较好的,这篇文章是对RHCSA&RHCE实验进行一个汇总,是我为了做实验方便(并分享给朋友)的一篇文章. 前 ...

  2. 实验记录:Oracle redo logfile的resize过程

    实验记录:Oracle redo logfile的resize过程. 实验环境:RHEL 6.4 + Oracle 11.2.0.3 单实例 文件系统 实验目的:本实验是修改redo logfile的 ...

  3. case7 淋巴瘤子类分类实验记录

    case7 淋巴瘤子类分类实验记录 简介 分类问题:3分类 (identifying three sub-types of lymphoma: Chronic Lymphocytic Leukemia ...

  4. 使用Scapy向Mininet交换机注入流量 实验记录

    使用Scapy向Mininet交换机注入流量 实验记录 用Python脚本及Scapy库写了一个简单的流量生成脚本,并打算使用该脚本往Mininet中的OpenvSwitch交换机注入流量.拓扑图如下 ...

  5. 树莓派4B智能小车机器套件——入手组装实验记录

    树莓派4B智能小车机器套件--入手组装实验记录 4WD智能小车(4WD SMART ROBOT KIT),支持Arduino.51.STM32.Raspberry Pi等4个版本.本套件采用的是树莓派 ...

  6. CSAPP:datalab实验记录

    CSAPP:datalab实验记录 bitXor /* * bitXor - x^y using only ~ and & * Example: bitXor(4, 5) = 1 * Lega ...

  7. RHCE实验环境|rhel7-lab

    教学环境说明: 1.yum源地址是:http://content.example.com 2.网卡都用同一个,且自定义网卡! 3.网络配置参考 classroom IP 172.25.254.254/ ...

  8. 实验记录三 通用输入输出(GPIO)

    之前把全部程序都跑了一次后,得到了导师下一步的安排. 例如以下: 1.编写一个程序.实如今LCD上显示一个万年历,包含年月日 星期 还有室内的温度.2.编写一个程序,将原来的交通灯改为跑马灯. 期限是 ...

  9. fcn+caffe+siftflow实验记录

    环境搭建: vs2013,编译caffe工程,cuda8.0,cudnn5.1,python2.7. 还需要安装python的一些包.Numpy+mkl  scipy  matplotlib  sci ...

随机推荐

  1. 在 .NET Core 下使用 SixLabors.ImageSharp 操作图片文件(放大、缩小、裁剪、加水印等等)的几个小示例

    1. 基础 1.1  将图片的宽度和高度缩小一半 直接贴代码了: <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup ...

  2. pandas 学习 第7篇:DataFrame - 数据处理(应用、操作索引、重命名、合并)

    DataFrame的这些操作和Series很相似,这里简单介绍一下. 一,应用和应用映射 apply()函数对每个轴应用一个函数,applymap()函数对每个元素应用一个函数: DataFrame. ...

  3. RabbitMQ的安装与使用(Centos7,linux版本)

    1.主流的消息中间件简单介绍哦. 1).ActiveMQ是Apache出品,最流行的,能力强劲的开源消息总线,并且它一个完全支持jms(java message service)规范的消息中间件.其丰 ...

  4. MySQL入门——在Linux下安装和卸载MySQL

    MySQL入门——在Linux下安装和卸载MySQL 摘要:本文主要学习了如何在Linux系统中安装和卸载MySQL数据库. 查看有没有安装过MySQL 使用命令查看有没有安装过: [root@loc ...

  5. 缓存cache(擦车)

    第一次接触到Cache的时候,是在WebForm中,第一次接触,我就再也没能忘记,cache(擦车,的拼音) 客户端浏览器缓存https://blog.csdn.net/y874961524/arti ...

  6. jpa分页

    法一(本地sql查询,注意表名啥的都用数据库中的名称,适用于特定数据库的查询) public interface UserRepository extends JpaRepository<Use ...

  7. angular版聊天室|仿微信界面IM聊天|NG2+Node聊天实例

    一.项目介绍 运用angular+angular-cli+angular-router+ngrx/store+rxjs+webpack+node+wcPop等技术实现开发的仿微信angular版聊天室 ...

  8. VS2017 打开WebService 提示已经在解决方案中打开了具有该名称的项目

    .net开发.用VS2017工具,打开VS2010创建的WebSevice工程时,提示工程不可用. 重新加载后提示:已经在解决方案中打开了具有该名称的项目. 该问题原因是因为启用了源代码管理工具的问题 ...

  9. MySQL基于报错注入2

    目标站点: 0x1 注入点判断 http://www.xxxxxx.com/pages/services.php?id=1 #true http://www.xxxxxx.com/pages/serv ...

  10. PHP代码篇(五)--如何将图片文件上传到另外一台服务上

    说,我有一个需求,就是一个临时功能.由于工作开发问题,我们有一个B项目,需要有一个商品添加的功能,涉及到添加商品内容,比如商品名字,商品描述,商品库存,商品图片等.后台商品添加的接口已经写完了,但是问 ...