RHCE这边我简单分了下类:html
## 网络与安全
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 邮件服务
成果:node
TLS虚拟主机,在https://webapp0.example.com 域中提供Python WSGI Web应用程序mysql
准备:linux
一、开始前重置server和desktop虚机: rht-vmctl reset desktop rht-vmctl reset serverweb
二、在server上执行实验初始化脚本: lab webapp setupsql
需求和资料:shell
您的开发者正在处理一个使用Python编写并基于Web的新应用程序。他们要求您在server0上配置httpd服务以使用TLS加密在https://webapp0.example.com域中运行此应用程序数据库
要配置应用程序,您将须要如下信息json
文件 | 下载位置 |
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 |
验证:vim
在desktop虚机上运行:lab webapp grade
需求分析拆解:
一、安装支持httpd、TLS、WSGI的所需软件包
二、下载建立一个目录并把应用程序复制到这个目录,后续httpd访问它提供服务
三、下载配置证书和秘钥
四、配置httpd基于TLS的新虚机主机,并配置域名/访问web应用程序,并使用以前下载的证书和秘钥
五、启动并启用web服务支持TLS的web服务能够被外部访问
六、从desktop上测试是否能够经过httpd正常访问到web应用程序
七、在desktop上执行 lab webapp grade验证
具体实验步骤:
1、安装支持httpd、TLS、WSGI的所需软件包 [root@server0 ~]# yum -y install httpd mod_ssl mod_wsgi 2、下载建立一个目录并把应用程序复制到这个目录,后续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 476 bytes received 31 bytes 1014.00 bytes/sec total size is 397 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、下载配置证书和秘钥 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 4、配置httpd基于TLS的新虚机主机,并配置域名/访问web应用程序,并使用以前下载的证书和秘钥 [root@server0 conf.d]# cat 001-webapp0.example.com.conf <VirtualHost *:443> 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]# 5、启动并启用web服务支持TLS的web服务能够被外部访问配置防火墙 [root@server0 ~]# firewall-cmd --add-service=https [root@server0 ~]# firewall-cmd --add-service=https --permanent 6、从desktop上测试是否能够经过httpd正常访问到web应用程序 [root@desktop0 ~]# curl https://webapp0.example.com -k UNIX EPOCH time is now: 1563355750.07 7、在desktop上执行 lab webapp grade验证 [root@desktop0 ~]# lab webapp grade Checking for web application... SUCCESS [root@desktop0 ~]#
实验总结:
一、域名证书申请
- 能够经过网站:https://myssl.com/csr_create.html 或者经过命令生成csr(证书签名请求文件)和私钥
- 拿着csr去CA证书颁发机构申请带签名的证书(带CA签名的公钥)
- 把公钥和私钥放到服务器上便可
二、加密请求逻辑
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 443 (#0) * 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.2 (OUT), TLS handshake, Client hello (1): * TLSv1.2 (IN), TLS handshake, Server hello (2): * TLSv1.2 (IN), TLS handshake, Certificate (11): * TLSv1.2 (IN), TLS handshake, Server key exchange (12): * TLSv1.2 (IN), TLS handshake, Server finished (14): * TLSv1.2 (OUT), TLS handshake, Client key exchange (16): * TLSv1.2 (OUT), TLS change cipher, Client hello (1): * TLSv1.2 (OUT), TLS handshake, Finished (20): * TLSv1.2 (IN), TLS change cipher, Client hello (1): * TLSv1.2 (IN), TLS handshake, Finished (20): * SSL connection using TLSv1.2 / 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 18 00:00:00 2019 GMT * expire date: Mar 17 12:00:00 2020 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.0 > 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能够理解为身份证(私钥)
想开公司的去工商局申请一个经营许可,可是这个许但是能够伪造的,你想投资这个公司可是你不知道这个公司是否是正规的怎么办?去工商局一查不都知道了吗?原理是同样的
如上图和请求逻辑字符串所示:
一、TLS handshake, Client Hello 【发送hello启动会话】
客户端经过发送Client Hello报文开始创建SSL通讯,报文包含客户端支持的SSL版本,加密套件列表,随机数。
上面例子中:ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH 就是客户端支持的加密套件的表达式。
二、TLS handshake, Server Hello 【应答hello】
服务端回复Server Hello做为应答,报文包含服务端选择好的SSL版本,加密套件,随机数。
上面例子中服务器选择了:SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
三、TLS handshake, Certificate 【拿出证实,客户端验证("用户去工商局认证它的公司是否合法“)】
服务端发送证书链(从根证书到自身的证书)。证书包含证书全部者、颁发机构以及公钥、数字签名等信息。
客户端会预制一些CA公钥证书,若是发现服务端发送过来的证书不是预制的CA机构颁发的会提示。
客户端会用CA公钥对数字签名进行解密获取证书信息,而后和服务端传递过来的信息进行对比是否有效
四、TLS handshake, Server key exchange【服务端将数据加密方法和参数传递给客户后端】
五、TLS handshake, Server finished 【就这些了没了,等待客户端后续传递消息】
六、TLS handshake, Client key exchange 【客户端将数据加密方法和参数传递给服务端】
七、TLS change cipher, Client hello 【我用发给你的加密方法和参数加密了一条信息你验证下】服务端发送更改加密方式信号。TLS1.3将其移除
八、TLS handshake, Finished 【服务端OK我也用发给你的加密方法加密了一条数据你也验证下】
开始数据传输-------
成果:
从server0计算机上导出的ISCSI目标用ACL进行了限制,以便次目标只能由您的desktop0使用并持久挂载
准备:
一、重置server、destop系统:rht-vmctl reset desktop rht-vmctl reset server
二、您已被要求在server0计算机上建立一个新的1G ISCSI目标,此目标应该称为: iqn.2014-06.com.example:server0 且只能被:iqn.2014-06.com.example:desktop0的客户端使用
需求分析:
一、在Server上建立一个新的1 G分区留做备用
二、在Server上安装所需的安装包,而后启动并启用全部相关服务
三、建立以个名为iqn.2014-06.com.example:server0的ISCSI目标,使用建立的1G分区做为后备存储,并设置ACL只容许iqn.2014-06.com.example:desktop0访问
四、在防火墙开放ISCSI服务端口
五、在desktop0上,验证是否安装了:iscsi-initiator-util软件包,而后将initiatorname设置为iqn.2014-06.com.example:desktop0
六、发现server0的共享,并登录测试
七、挂载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 三 2019-07-17 18:22:18 CST; 12s ago Main PID: 1745 (code=exited, status=0/SUCCESS) 7月 17 18:22:18 server0.example.com target[1745]: No saved config file at /etc/target/saveconfig.json, ok, exiting 7月 17 18:22:18 server0.example.com systemd[1]: 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.2014-06.com.example:server0 /> iscsi/ create wwn=iqn.2014-06.com.example:server0 Created target iqn.2014-06.com.example:server0. Created TPG 1. # 设置目标[acl/lun/port] = [容许谁来访问/这个目标分享的设备/这个目标经过什么IP什么端口访问] ## acl /> iscsi/iqn.2014-06.com.example:server0/tpg1/acls create wwn=iqn.2014-06.com.example:desktop0 Created Node ACL for iqn.2014-06.com.example:desktop0 ## lun /> iscsi/iqn.2014-06.com.example:server0/tpg1/luns create /backstores/block/disk1 Created LUN 0. Created LUN 0->0 mapping in node ACL iqn.2014-06.com.example:desktop0 ## port iscsi 默认端口是3260若是不使用这个端口须要对selinux进行配置 /> iscsi/iqn.2014-06.com.example:server0/tpg1/portals create ip_address=172.25.0.11 ip_port=3260 # 保存退出 /> saveconfig Last 10 configs saved in /etc/target/backup. Configuration saved to /etc/target/saveconfig.json /> exit Global pref auto_save_on_exit=true Last 10 configs saved in /etc/target/backup. Configuration saved to /etc/target/saveconfig.json # 添加防火墙容许端口访问 [root@server0 ~]# firewall-cmd --add-port=3260/tcp [root@server0 ~]# firewall-cmd --add-port=3260/tcp --permanent -----------------------------------------desktop # 修改配置设置server端容许的iscsi的客户端 [root@desktop0 ~]# cat /etc/iscsi/initiatorname.iscsi InitiatorName=iqn.2014-06.com.example:desktop0 # 发现server端的共享设备 [root@desktop0 ~]# iscsiadm -m discovery -t st -p 172.25.0.11:3260 172.25.0.11:3260,1 iqn.2014-06.com.example:server0 # 登陆设备 [root@desktop0 ~]# iscsiadm -m node -T iqn.2014-06.com.example:server0 -l # 查看设备 [root@desktop0 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 1G 0 disk <----------- 多出一个1G的设备 vda 253:0 0 10G 0 disk └─vda1 253:1 0 10G 0 part / vdb 253:16 0 10G 0 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 0 0 # 测试,而后umount后重启,尽可能不要强制重启 [root@desktop0 ~]# mount -a [root@desktop0 ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/vda1 10G 3.0G 7.1G 30% / devtmpfs 906M 0 906M 0% /dev tmpfs 921M 80K 921M 1% /dev/shm tmpfs 921M 17M 904M 2% /run tmpfs 921M 0 921M 0% /sys/fs/cgroup /dev/sda 1014M 33M 982M 4% /iscsidisk [root@desktop0 ~]# umount /iscsidisk [root@desktop0 ~]# reboot # 验证重启可否自动挂载 df -h ISCSI 提供基于块的存储-具体实验步骤
实验总结:
一、iscsi 存储资源能够包含多个TGP,每一个TGP有一个惟一限定名:iqn
二、每一个TGP能够理解为一个对外暴露的可访问资源:这个资源定义了3个属性:
成果:
根据给定的要求在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-9.el7.x86_64 nfs-utils-1.3.0-0.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 2019-07-19 07:42:08 CST; 13s ago Main PID: 1956 (rpc.svcgssd) CGroup: /system.slice/nfs-secure-server.service └─1956 /usr/sbin/rpc.svcgssd Jul 19 07:42:08 server0.example.com systemd[1]: Starting Secure NFS Server... Jul 19 07:42:08 server0.example.com systemd[1]: 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 2019-07-19 07:49:41 CST; 10s ago Main PID: 2022 (rpc.gssd) CGroup: /system.slice/nfs-secure.service └─2022 /usr/sbin/rpc.gssd Jul 19 07:49:41 desktop0.example.com systemd[1]: Starting Secure NFS... Jul 19 07:49:41 desktop0.example.com systemd[1]: Started Secure NFS. # 添加/etc/fstab配置 server0:/krbnfs /mnt/securespace nfs defaults,v4.2,sec=krb5p 0 0 # 挂载 mount -a # 验证selinux标签是否导出 server上建立一个文件看看selinux标签
# 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 775 /smbaspace [root@server0 ~]# ll -d /smbaspace drwxrwsr-x. 2 root sales 6 Jul 19 07:53 /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 3 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 2019-07-19 08:02:28 CST; 14s ago Main PID: 2765 (smbd) Status: "smbd: ready to serve connections..." CGroup: /system.slice/smb.service ├─2765 /usr/sbin/smbd └─2766 /usr/sbin/smbd Jul 19 08:02:28 server0.example.com smbd[2765]: [2019/07/19 08:02:28.330058, 0] ../lib/util/become_daemon.c:136(daemon_ready) Jul 19 08:02:28 server0.example.com systemd[1]: Started Samba SMB Daemon. nmb.service - Samba NMB Daemon Loaded: loaded (/usr/lib/systemd/system/nmb.service; enabled) Active: active (running) since Fri 2019-07-19 08:02:28 CST; 14s ago Main PID: 2764 (nmbd) Status: "nmbd: ready to serve connections..." CGroup: /system.slice/nmb.service └─2764 /usr/sbin/nmbd Jul 19 08:02:27 server0.example.com systemd[1]: Starting Samba NMB Daemon... Jul 19 08:02:28 server0.example.com systemd[1]: 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.1] Sharename Type Comment --------- ---- ------- smbspace Disk IPC$ IPC IPC Service (Samba Server Version 4.1.1) frank Disk Home Directories Domain=[SALESDEP] OS=[Unix] Server=[Samba 4.1.1] Server Comment --------- ------- SERVER0 Samba Server Version 4.1.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.1] Sharename Type Comment --------- ---- ------- smbspace Disk IPC$ IPC IPC Service (Samba Server Version 4.1.1) frank Disk Home Directories Domain=[SALESDEP] OS=[Unix] Server=[Samba 4.1.1] Server Comment --------- ------- SERVER0 Samba Server Version 4.1.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
验证:
[root@desktop0 ~]# lab storageshares grade
实验总结:
一、nfs和samba区别
nfs和samba都是共享协议可是nfs使用的是标准的unix文件权限和验证因此在window上不支持,samba使用权限和认证能够看出并无使用unix这一套,因此它能够通用windows和unix
二、区分下实验
- 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共享的对象: 1、先的发现那台机器在共享 iscsiadm -m discovery -t st -p 172.25.0.11:1234 # 解释-t type sendtarget 2、登陆下 iscsiadm -m node -T iqn.2014-06.com.example:server0 -l # 解释-T 指定上面发现的targetname # 解释-l 登陆logging 3、当发现了硬盘设备后就和标准的设备挂载同样了惟一区别是,须要在挂载属性上加一个属性标识它是一个网络设备(_netdev) UUID=ab154cb3-c4b0-4f63-82db-c499a2b5ec7d /iscsidisk xfs _netdev 0 0
- 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.2,sec=krb5p
- samba
server端注意启动:smb nmb 服务 server端注意文件夹权限、selinux标签权限 配置也须要注意下 [smbspace] path = /sambaspace write list = @salses
IPV6配置
这个没什么说的标准命令配置按照规则来便可 有需求能够经过GUI来配置: nm-con
实验需求:
一、配置server的eno1的连接配置IPV4地址 192.168.0.100/24 和IPV6地址 fddb:fe2a:ab1e::c0a8:64/64 16进制:0-9 A-F 别记错
二、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/24 # 修改IPV4连接方式为手工 [root@server0 ~]# nmcli connection modify eno1 ipv4.method manual # 添加IPV6配置 [root@server0 ~]# nmcli connection modify eno1 ipv6.addresses fddb:fe2a:ab1e::c0a8:64/64 # 修改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/2) # 测试 [root@server0 ~]# ping 192.168.0.254 PING 192.168.0.254 (192.168.0.254) 56(84) bytes of data. 64 bytes from 192.168.0.254: icmp_seq=1 ttl=64 time=1.88 ms ^C --- 192.168.0.254 ping statistics --- 1 packets transmitted, 1 received, 0% 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) 56 data bytes 64 bytes from fddb:fe2a:ab1e::c0a8:fe: icmp_seq=1 ttl=64 time=3.23 ms 64 bytes from fddb:fe2a:ab1e::c0a8:fe: icmp_seq=2 ttl=64 time=0.044 ms ^C --- fddb:fe2a:ab1e::c0a8:fe ping statistics --- 2 packets transmitted, 2 received, 0% 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
端口聚合
实验需求:
在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-4540-9c69-70c7a46e429a) successfully added. [root@server0 ~]# # 设置端口IP [root@server0 ~]# nmcli connection modify team0 ipv4.addresses 192.168.0.100/24 [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) 56(84) bytes of data. 64 bytes from 192.168.0.254: icmp_seq=1 ttl=64 time=0.086 ms ^C --- 192.168.0.254 ping statistics --- 1 packets transmitted, 1 received, 0% 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="443" protocol="tcp" to-port="22" [root@server0 ~]# [root@desktop0 ~]# ssh -p 443 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 65:4d:ac:8a:c9:58:82:b5:0c:91:c4:ef:a5:e6:f6:65. 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 18 17:25:49 2019 from 172.25.0.250 [root@server0 ~]#
实验需求:
部署一个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 |
实验准备:
一、重置desktop和server的系统:rht-vmctl reset desktop rht-vmctl reset server
二、执行实验初始化
server:lab mariadb setup
desktop:lab mariadb setup
实验需求分析:
一、安装mariaDB所需软件包
二、启动服务并设置为开机启动
三、防火墙开放mysql服务容许外部访问mysql
四、建立legacy数据库
五、恢复数据库备份:/home/student/mariadb.dump
六、根据需求建立用户并设置权限
七、插入新的数据在数据库表:manufacturer
八、验证在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 四 2019-07-18 21:26:43 CST; 6s ago Process: 1731 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=0/SUCCESS) Process: 1651 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS) Main PID: 1730 (mysqld_safe) CGroup: /system.slice/mariadb.service ├─1730 /bin/sh /usr/bin/mysqld_safe --basedir=/usr └─1887 /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月 18 21:26:41 server0.example.com mariadb-prepare-db-dir[1651]: The latest information about MariaDB is available at http://mariadb.org/. 7月 18 21:26:41 server0.example.com mariadb-prepare-db-dir[1651]: You can find additional information about the MySQL part at: 7月 18 21:26:41 server0.example.com mariadb-prepare-db-dir[1651]: http://dev.mysql.com 7月 18 21:26:41 server0.example.com mariadb-prepare-db-dir[1651]: Support MariaDB development by buying support/new features from 7月 18 21:26:41 server0.example.com mariadb-prepare-db-dir[1651]: SkySQL Ab. You can contact us about this at sales@skysql.com. 7月 18 21:26:41 server0.example.com mariadb-prepare-db-dir[1651]: Alternatively consider joining our community based development effort: 7月 18 21:26:41 server0.example.com mariadb-prepare-db-dir[1651]: http://mariadb.com/kb/en/contributing-to-the-mariadb-project/ 7月 18 21:26:41 server0.example.com mysqld_safe[1730]: 190718 21:26:41 mysqld_safe Logging to '/var/log/mariadb/mariadb.log'. 7月 18 21:26:41 server0.example.com mysqld_safe[1730]: 190718 21:26:41 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql 7月 18 21:26:43 server0.example.com systemd[1]: 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, 0 rows affected (0.01 sec) > CREATE USER legacy@'%' IDENTIFIED BY 'legacy_password'; Query OK, 0 rows affected (0.00 sec) > CREATE USER report@'%' IDENTIFIED BY 'report_password'; Query OK, 0 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, 3 rows affected (0.01 sec) Records: 3 Duplicates: 0 Warnings: 0 # 验证在desktop执行:lab mariadb grade
实验成果:
将在本地邮件服务器配置为充当空客户端,已将全部邮件都转发到中央服务器已进行发送(中继)
将server0.exampl.com上的Postfix邮件服务器配置为空客户端,以经过: smtp0.example.com 来中继邮件,而且在发送电子邮件中使用:desktop0.exampl.ecom做为您的组织域名。
经过支持IMAPS功能的点在邮件从imap0.example.com(以用户和邮件收件人 student 的身份,而且使用 IMAP密码: student)检索测试邮件,验证邮件服务器是否运行
实验需求分析:
一、在server0上切换为root用户,而后将 relayhost 指令指向公司邮件服务器(邮件中继给谁)。须要将邮件服务器的主机名括在方括号中,你防止空客户端使用DNS执行 MX 记录查找
二、将Postfix邮件服务器配置为仅回复来自本地系统的邮件
三、配置空客户端,以便全部发出去的消息都将其发件人域重写为公司域:desktop0.example.com
四、禁止Postfix邮件服务器将任何邮件发送到本地帐户
五、在server0上从新启动本地Postfix空客户端
六、在server0上打开一个新终端,而且经过mail命令发送一份邮件测试
[root@server0 ~]# mail -s "server0 null client" student@desktop0.example.com null client test EOT
七、执行验证
lab smtp-nullclient grade
实验准备:
一、重置server和desktop机器:rht-vmctl reset desktop rht-vmctl reset server
二、执行初始化在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
实验总结:
一、每一个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/8 [::1]/128 """ 信任来自哪里的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中存储位置 """
一、关注公众号
二、输入:rhce