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驗證
具體實驗步驟:

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 ~]#
實驗總結:
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 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可以理解為身份證(私鑰)
想開公司的去工商局申請一個經營許可,但是這個許可是可以偽造的,你想投資這個公司但是你不知道這個公司是不是正規的怎么辦?去工商局一查不都知道了嗎?原理是一樣的
如上圖和請求邏輯字符串所示:
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 三 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 提供基於塊的存儲-具體實驗步驟
實驗總結:
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-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
實驗總結:
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共享的對象: 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/防火牆轉發/聚合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/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數據庫
實驗需求:
部署一個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 四 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)檢索測試郵件,驗證郵件服務器是否運行
實驗需求分析:
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
實驗總結:
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/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中存儲位置 """
練習環境獲取方法
1、關注公眾號
2、輸入:rhce