RHCE實驗記錄總結-2-RHCE


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 ~]#
提供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 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 提供基於塊的存儲-具體實驗步驟
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標簽
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 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
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共享的對象:

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
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-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
配置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/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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM