詳解Linux運維工程師高級篇(大數據安全方向)

詳解linux運維工程師高級篇(大數據安全方向)

成都創新互聯專業為企業提供江南網站建設、江南做網站、江南網站設計、江南網站制作等企業網站建設、網頁設計與制作、江南企業網站模板建站服務,十余年江南做網站經驗,不只是建網站,更提供有價值的思路和整體網絡服務。

hadoop安全目錄:

  1. kerberos(已發布)

  2. elasticsearch(已發布)https://blog.51cto.com/chenhao6/2113873

  3. knox

  4. oozie

  5. ranger

  6. apache sentry


簡介:

       從運維青銅到運維白銀再到運維黃金,這里就要牽扯到方向問題也就是裝備,根據自己的愛好,每個人都應該選擇一個適合自己和喜歡自己的一個職業技術方向,如:大數據安全,開發運維,云計算運維等等。而掌握的越多前言技術也就是更多的裝備,才能更好的在it行業混下去,畢竟it技術更新太快,初級篇和中級篇前面已介紹。


初級篇:詳解Linux運維工程師入門必備技能(青銅)

中級篇:詳解Linux運維工程師打怪升級篇(白銀)


現在給大家介紹大數據安全的正式面目:

1.大數據基本組件

詳解Linux運維工程師高級篇(大數據安全方向)

詳解Linux運維工程師高級篇(大數據安全方向)

詳解Linux運維工程師高級篇(大數據安全方向)

2. Hadoop安全背景

? 共享集群

? 按照業務或應用的規則劃分資源隊列,并分配給

特定用戶

? HDFS上存放各種數據,包括公共的、機密的

? 安全認證:確保某個用戶是自己聲稱的那個用戶

? 安全授權:確保某個用戶只能做他允許的那些操作

3. 設備說明

服務

IP

主機名

系統

Ambari

Kerberos

192.168.2.140

hdp140

CentOS7.3

namenode

192.168.2.141

hdp141

CentOS7.3

datanode

192.168.2.142

hdp142

CentOS7.3

datanode

192.168.2.143

hdp143

CentOS7.3

4. kerberos基本概念:

? Principal(安全個體):被認證的個體,有一個名字和口令

? KDC(key distribution center ) : 是一個網絡服務,提供ticket 和臨時會話密鑰

? Ticket:一個票據,客戶用它來向服務器證明自己的身份,包括客戶標識、會話密鑰、時間戳。

? AS (Authentication Server): 認證服務器

? TGS(Ticket Granting Server): 許可證服務器

? TGT:Ticket-granting Ticket

5. kerberos認證過程:

詳解Linux運維工程師高級篇(大數據安全方向)


6. 集群啟用Kerberos認證

裝KDC Server

1. 安裝一個新的KDC Server(任意一個集群主機,這里hdp141為例)

# yum install krb5-server krb5-libs krb5-workstation

詳解Linux運維工程師高級篇(大數據安全方向)

2. 打開KDC Server的配置文件

# vi /etc/krb5.conf

修改文件中的[realms]部分,將為屬性kdc和admin_server設置的默認值“kerberos.example.com”替換成實際KDC server的主機名。在下面的例子中,“kerberos.example.com”被替換成了 “my.kdc.server”。

[realms]
EXAMPLE.COM = {
kdc = my.kdc.server
admin_server = my.kdc.server
}

3. (可選)自定義realms配置(EXAMPLE.COM修改為CESHI.COM,下面例子都為CESHI.COM)

# vi /etc/krb5.conf
[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log
 
[libdefaults]
 default_realm = CESHI.COM
 DNS_lookup_realm = false
 dns_lookup_kdc = false
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true
 
[realms]
 CESHI.COM = {
  kdc = hdp141
  admin_server = hdp141
 }
 
[domain_realm]
 .vrv.com = CESHI.COM
 vrv.com = CESHI.COM
# vi /var/kerberos/krb5kdc/kdc.conf
[kdcdefaults]
 kdc_ports = 88
 kdc_tcp_ports = 88
 
[realms]
CESHI.COM = {
  #master_key_type = aes256-cts
  acl_file = /var/kerberos/krb5kdc/kadm5.acl
  dict_file = /usr/share/dict/words
  admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
  supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
 }

4.創建Kerberos數據庫

創建過程中需要輸入master key。

# kdb5_util create -s
Loading random data
Initializing database '/var/kerberos/krb5kdc/principal' for realm 'CESHI.COM',
master key name 'K/M@CESHI.COM'
You will be prompted for the database Master Password.
It is important that you NOT FORGET this password.
Enter KDC database master key: ceshi123456.
Re-enter KDC database master key to verify: ceshi123456.

5.啟動KDC

# service krb5kdc start
# chkconfig krb5kdc on
# service kadmin start
# chkconfig kadmin on

6.創建kerberos Admin

 通過創建一個admin principal創建KDC admin,需要輸入principal的密碼。

# kadmin.local -q "addprinc admin/admin"
Authenticating as principal root/admin@CESHI.COM.COM with password.
WARNING: no policy specified for admin/admin@CESHI.COM.COM; defaulting to no policy
Enter password for principal "admin/admin@CESHI.COM.COM": ceshi123456.
Re-enter password for principal "admin/admin@CESHI.COM.COM": ceshi123456.
Principal "admin/admin@CESHI.COM" created.
"admin/admin@CESHI.COM":ceshi123456.

打開KDC ACL文件,確認admin principal在KDC ACL中擁有權限,若沒有對應的域則需要添加。

# vi /var/kerberos/krb5kdc/kadm5.acl
*/admin@VRV.COM *

如果修改了文件kadm5.acl,那么你就必須重啟kadmin進程

# service kadmin restart

7.啟用Kerberos保護

 安裝JCE

必須用官網下載的JCE覆蓋本地已有的JCE,否則將缺少供Kerberos使用的加密方式

在Ambari server所在的主機和集群中的所有主機上,根據使用的JDK版本選擇合適的JCE策略文件。

? Oracle JDK 1.7:

http://www.oracle.com/technetwork/java/javase/downloads/jce-7-

download-432124.html

? Oracle JDK 1.8:

http://www.oracle.com/technetwork/java/javase/downloads/jce8-

download-2133166.html

 在Ambari Server所在主機和集群中的所有主機上,添加unlimited security policy JCE jars

到目錄$AMBARI_SERVER_JAVA_HOME/jre/lib/security/下。

注意:在所有的主機上,JCE相關的包都必須解壓到配置文件/etc/ambari-server/conf/ambari.properties中屬性java.home所指定的JDK目錄下

# JAVA_HOME=/usr/java/default
# unzip -o -j -q UnlimitedJCEPolicyJDK8.zip -d $JAVA_HOME/jre/lib/security/

重啟Ambari Server(ambari server服務器hdp140)

# service ambari-server restart

8.運行Kerberos保護向導

 1. 確認KDC已經安全和正確配置,并且已經在集群的所有主機上配置好JCE。

 2. 登錄Ambari Web,打開管理員 > Kerberos

詳解Linux運維工程師高級篇(大數據安全方向)

 3.點擊啟用Kerberos,啟用安裝向導,選擇條件檢查

詳解Linux運維工程師高級篇(大數據安全方向)

 4.提供關于KDC和管理員賬號的信息

KDC相關信息請參考配置文件/etc/krb5.conf

詳解Linux運維工程師高級篇(大數據安全方向)


 5.ambari會在集群的主機上安裝Kerberos客戶端,然后通過測試是否能創建principal,生成keytab和分配Keytab來測試是否能連接KDC。

自定義Hadoop使用的Kerberos identities

詳解Linux運維工程師高級篇(大數據安全方向)

 6.確認你的配置。你可以通過頁面下載自動創建的包含principals和Keytabs的CSV文件。

 7.停止服務詳解Linux運維工程師高級篇(大數據安全方向)

詳解Linux運維工程師高級篇(大數據安全方向)

 8.啟用kerberos

Keytabs保存在主機的/etc/security/keytabs目錄下。

 9.啟動和測試服務詳解Linux運維工程師高級篇(大數據安全方向)

啟動和測試服務成功后點擊完成以結束Kerberos的啟用。


詳解Linux運維工程師高級篇(大數據安全方向)

 10.查看已啟用的Kerberos配置

詳解Linux運維工程師高級篇(大數據安全方向)

到這里kerberos安裝完成。

高級選項:

為Ambari Server設置Kerberos(可選項)

1. 使用kadmin在你的KDC所在的主機(hdp141)為Ambari Server創建一個principal。(ambari-server為自定義名)

# kadmin.local -q "addprinc -randkey ambari-server@CESHI.COM

2. 為此principal生成一個Keytab

# kadmin.local -q "xst -k ambari.server.keytab ambari-server@CESHI.COM"

3. 將單前目錄生成的Keytab拷貝到Ambari Server所在的集群。確定該文件有合適的權限,能夠被啟動Ambari Server守護進程所訪問。

# scp ambari.server.keytab hdp140:/etc/security/keytabs/
# ll /etc/security/keytabs/ambari.server.keytab
-r--r----- 1 root root 530 Dec 18 20:06 /etc/security/keytabs/ambari.server.keytab

4. 停止ambari server

# ambari-server stop

5. 運行setup-security命令,設置JAAS。標紅部分為需要設置部分。

A. 選擇3,Setup Ambari kerberos JAAS configuration

B. 輸入第一步為Ambari Server設置的principal名

C. 輸入Ambari principal的Keytab所在路徑

# ambari-server setup-security
Using python  /usr/bin/python2
Security setup options...
===========================================================================
Choose one of the following options:
  [1] Enable HTTPS for Ambari server.
  [2] Encrypt passwords stored in ambari.properties file.
  [3] Setup Ambari kerberos JAAS configuration.
  [4] Setup truststore.
  [5] Import certificate to truststore.
===========================================================================
Enter choice, (1-5): 3
Setting up Ambari kerberos JAAS configuration to access secured Hadoop daemons...
Enter ambari server's kerberos principal name (ambari@VRV.COM): ambari-server@VRV.COM
Enter keytab path for ambari server's kerberos principal: /etc/security/keytabs/ambari.server.keytab
Ambari Server 'setup-security' completed successfully.
重啟Ambari Server
# ambari-server restart

開始實測:

1.新建測試用戶

普通用戶需要安裝ranger(后面介紹)管理權限。

列出所有用戶

# kadmin.local #在kdc服務器上執行
kadmin.local:  listprincs  #//列出所有用戶
ambari-server@CESHI.COM
.................
nn/hdp140@CESHI.COM
zookeeper/hdp142@CESHI.COM
zookeeper/hdp143@CESHI.COM

創建測試用戶

kadmin.local:  addprinc test
Enter password for principal "test@CESHI.COM": ceshi123456.
Re-enter password for principal "test@CESHI.COM": ceshi123456.
Principal "test@CESHI.COM" created.

 登錄驗證

# kinit test  #登陸

ceshi123456.

詳解Linux運維工程師高級篇(大數據安全方向)

詳解Linux運維工程師高級篇(大數據安全方向)

退出登陸狀態

注銷:kdestroy

集群登錄與授權(hdfs用戶)

未使用kerberos用戶認證前執行

# hadoop dfs -ls /

詳解Linux運維工程師高級篇(大數據安全方向)

使用kerberos用戶認證

# kinit test  #登陸
Password for test@CESHI.com #ceshi123456.
# hadoop dfs -ls /

詳解Linux運維工程師高級篇(大數據安全方向)

此時test用戶默認有查看權限,無目錄授權

詳解Linux運維工程師高級篇(大數據安全方向)

 

換到hdfs用戶下,初始化hdfs

查看hdfs的Kerberos用戶名

# klist -k /etc/security/keytabs/hdfs.headless.keytab
Keytab name: FILE:hdfs.headless.keytab
KVNO Principal
---- --------------------------------------------------------------------------
   1 hdfs-test@CESHI.COM
   1 hdfs-test@CESHI.COM
   1 hdfs-test@CESHI.COM
   1 hdfs-test@CESHI.COM
   1 hdfs-test@CESHI.COM
初始化認證hdfs用戶
# kinit -k hdfs-test@CESHI.COM -t /etc/security/keytabs/hdfs.headless.keytab 
創建目錄:hadoop fs -mkdir  /test
查看目錄屬性:

詳解Linux運維工程師高級篇(大數據安全方向)

改變目錄屬性:hadoop fs -chown test:hdfs  /test

詳解Linux運維工程師高級篇(大數據安全方向)

使用test用戶登錄

詳解Linux運維工程師高級篇(大數據安全方向)

修改密碼和重新生成

#修改密碼命令cpw test(KDC server上執行)
# kadmin.local
Authenticating as principal test/admin@CESHI.COM with password.
kadmin.local:  cpw test
Enter password for principal "test1@CESHI.COM": ceshi123
Re-enter password for principal "test1@CESHI.COM": ceshi123
change_password: Principal does not exist while changing password for "test@CESHI.COM".
kadmin.local:  exit

生成新的多用戶使用keytab文件

創建keytab文件(生成到當前文件夾下)

案例:將hive和hdfs的keytab集成到同一個keytab文件中

1. 查看所有princs

# kadmin.local
Kadmin.local: listprincs
hbase/hdp143@CESHI.COM"
hdfs-vrvtest@CESHI.COM"
hive/hdp140@CESHI.COM"

2. 添加hdfs的princs的keytab到hdfs-hive.keytab

# kadmin.local 
Kadmin.local: xst -norandkey -k hdfs-hive.keytab hdfs-vrvtest@CESHI.COM

詳解Linux運維工程師高級篇(大數據安全方向)

3. 添加hive的princs的keytab到hdfs-hive.keytab

# kadmin.local 
Kadmin.local: xst -norandkey -k hdfs-hive.keytab hive/hdp140@CESHI.COM

查看生成的hdfs-hive.keytab

詳解Linux運維工程師高級篇(大數據安全方向)

詳解Linux運維工程師高級篇(大數據安全方向)

使用生成的Keytab文件登錄

# kinit -k -t hdfs-hive.keytab hive/hdp140@CESHI.COM

詳解Linux運維工程師高級篇(大數據安全方向)

修改租期

 1.修改全局租期

# vi /etc/krb5.conf
[libdefaults]
 default_realm = CESHI.COM
dns_lookup_realm = false  
dns_lookup_kdc = false
ticket_lifetime = 24h  
#ticket 租期時間
renew_lifetime = 7d 
#重新申請時間
frwardable = true

#重新啟動

# service krb5kdc restart
# service  kadmin restart

2.手動修改用戶租期時間

#查看租期時間
可在kadmin命令行下用getprinc命令查看默認的最大時長,否則時長被限制在24小時,并且無法renew)
# kadmin.local
kadmin.local:getprinc hive/hdp141
Principal: hive/hdp141@CESHI
Expiration date: [never]
Last password change: Mon Dec 18 05:56:57 EST 2017
Password expiration date: [none]
Maximum ticket life: 1 day 00:00:00 #租期時間
Maximum renewable life: 0 days 00:00:00 #重新續租時間
Last modified: Mon Dec 18 05:56:57 EST 2017 (admin/admin@VRV.COM)
Last successful authentication: [never]
Last failed authentication: [never]
Failed password attempts: 0
Number of keys: 8
Key: vno 1, aes256-cts-hmac-sha1-96
Key: vno 1, aes128-cts-hmac-sha1-96
Key: vno 1, des3-cbc-sha1
Key: vno 1, arcfour-hmac
Key: vno 1, camellia256-cts-cmac
Key: vno 1, camellia128-cts-cmac
Key: vno 1, des-hmac-sha1
Key: vno 1, des-cbc-md5
 
#更改租期時間命令(用戶使用真實用戶替換)
modprinc -maxrenewlife 300days 用戶
modprinc -maxlife 300days 用戶

#應用例子

modprinc -maxrenewlife 300days hive/hdp141@CESHI.com

詳解Linux運維工程師高級篇(大數據安全方向)

modprinc -maxlife 300days hive/hdp141@CESHI.COM

詳解Linux運維工程師高級篇(大數據安全方向)

退出后,重新啟動

# service krb5kdc restart
# service  kadmin restart

3.使用spark任務測試kerberos下的作業提交

1.指定spark用戶和密碼

# cd /etc/security/keytabs
[root@hdp140 keytabs]# ll
-r--r----- 1 root      root   353 Oct 30 23:54 ambari.server.keytab
-r--r----- 1 hbase     hadoop 313 Oct 30 23:54 hbase.headless.keytab
-r-------- 1 hbase     hadoop 313 Oct 30 23:54 hbase.service.keytab
-r-------- 1 hdfs      hadoop 308 Oct 30 23:54 hdfs.headless.keytab
-r--r----- 1 hive      hadoop 308 Oct 30 23:54 hive.service.keytab
-r-------- 1 hdfs      hadoop 298 Oct 30 23:54 nn.service.keytab
-r--r----- 1 ambari-qa hadoop 333 Oct 30 23:54 smokeuser.headless.keytab
-r-------- 1 spark     hadoop 313 Oct 30 23:54 spark.headless.keytab
-r--r----- 1 root      hadoop 308 Oct 30 23:54 spnego.service.keytab
# klist -k spark.headless.keytab
Keytab name: FILE:spark.headless.keytab
KVNO Principal
---- --------------------------------------------------------------------------
   1 spark-test@CESHI.COM
   1 spark-test@CESHI.COM
   1 spark-test@CESHI.COM
   1 spark-test@CESHI.COM
   1 spark-test@CESHI.COM
 
# kinit -k spark-vrvtest@VRV.COM -t spark.headless.keytab
#指定spark用戶
[root@hdp140 keytabs]# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: spark-vrvtest@VRV.COM
 
Valid starting       Expires              Service principal
10/31/2017 01:08:56  11/01/2017 01:08:56  krbtgt/VRV.COM@VRV.COM

上傳spark文件到opt

# hdfs dfs -mkdir -p /tmp/sparkwordcount/
# hdfs dfs -mkdir -p /tmp/sparkwordcount/input
# hdfs dfs -put /opt/sparkwordcountinput.txt /tmp/sparkwordcount/input
# hdfs dfs -put /opt/spark_word_count.jar  /tmp/sparkwordcount/

#spark測試文件

sparkwordcountinput.txt  spark_word_count.jar

spark命令提交任務

 # spark-submit \
  --class com.vrv.bigdata.ml.DataExtract2 \
  --master yarn \
  --deploy-mode cluster \
  --principal spark-test@CESHI.COM \
  --keytab /etc/security/keytabs/spark.headless.keytab \
  hdfs://hdp140:8020/tmp/sparkwordcount/spark_word_count.jar \
  hdfs://hdp140:8020/tmp/sparkwordcount/input \
  hdfs://hdp140:8020/tmp/sparkwordcount/output/spark_work_count
17/10/31 01:15:28 INFO Client:
 client token: Token { kind: YARN_CLIENT_TOKEN, service:  }
 diagnostics: N/A
 ApplicationMaster host: 192.168.2.143
 ApplicationMaster RPC port: 0
 queue: default
 start time: 1509383715631
 final status: SUCCEEDED
 tracking URL: http://hdp141:8088/proxy/application_1509379053332_0014/
 user: spark
17/10/31 01:15:28 INFO ShutdownHookManager: Shutdown hook called
17/10/31 01:15:28 INFO ShutdownHookManager: Deleting directory /tmp/spark-40e868df-ca58-4389-b20c-03d2717516cc

詳解Linux運維工程師高級篇(大數據安全方向)

詳解Linux運維工程師高級篇(大數據安全方向)

詳解Linux運維工程師高級篇(大數據安全方向)

疑難問題1:

Received Exception while testing connectivity to the KDC: Algorithm AES256 not enabled
**** Host: hdp261:88 (TCP)
java.lang.IllegalArgumentException: Algorithm AES256 not enabled
at sun.security.krb5.EncryptionKey.<init>(EncryptionKey.java:286)
at javax.security.auth.kerberos.KeyImpl.<init>(KeyImpl.java

解決:

1. 在Ambari server所在的主機和集群中的所有主機上,根據使用的JDK版本選擇合適的JCE策略文件。
? Oracle JDK 1.7:
http://www.oracle.com/technetwork/java/javase/downloads/jce-7-
download-432124.html
? Oracle JDK 1.8:
http://www.oracle.com/technetwork/java/javase/downloads/jce8-
download-2133166.html

疑難問題2:

org.apache.hadoop.security.authentication.client.AuthenticationException: GSSException: Defective token detected (Mechanism level: GSSHeader did not find the right tag)

解決:

# kinit guest
Password for guest@CESHI.COM: ceshi123456.
 
# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: guest@CESHI.COM
 
Valid starting       Expires              Service principal
11/28/2017 18:30:48  11/29/2017 18:30:48  krbtgt/CESHI.COM@CESHI.COM
11/28/2017 18:31:09  11/29/2017 18:30:48  HTTP/hdp140@
11/28/2017 18:31:09  11/29/2017 18:30:48  HTTP/hdp140@CESHI.COM

參考:

http://blog.csdn.net/wulantian/article/details/42418231

http://book.51cto.com/art/200907/140533.htm

實戰到此結束。后續再更新elasticsearcn安全實戰。


總結:

1. Hadoop集群節點數多,配置和維護一個使用kerberos系統高性能,穩定的hadoop集群難度非常高。

2. Hadoop中的hdfs是一個文件系統,用戶的認證和授權比較復雜,難度不低于linux系統的用戶和組管理。

加上kerberos后,用戶和用戶組的管理更加復雜,通常一個合適的用戶不能訪問hdfs上的文件。 

3. Hadoop加上kerberos后,通常原來的用戶和文件,可能都失效導致數據流失。

當前標題:詳解Linux運維工程師高級篇(大數據安全方向)
當前路徑:http://m.kartarina.com/article22/pphdcc.html

成都網站建設公司_創新互聯,為您提供定制開發網站制作網站導航品牌網站制作外貿建站網站維護

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

商城網站建設
主站蜘蛛池模板: 国产成人无码av| 亚洲Aⅴ无码专区在线观看q| 亚洲午夜无码AV毛片久久| 亚洲精品无码成人AAA片| 无码日韩人妻AV一区免费l| 中文字幕精品无码久久久久久3D日动漫| heyzo高无码国产精品| 亚洲AV无码国产精品色| 无码专区国产无套粉嫩白浆内射 | 亚洲精品无码久久久| 亚洲AV综合色区无码一区| 国产丰满乱子伦无码专| 亚洲va无码手机在线电影| 亚洲一本大道无码av天堂| 无码人妻丰满熟妇区免费| 天天看高清无码一区二区三区| 亚洲精品无码久久久久| 国产成人年无码AV片在线观看| 精品久久久无码21p发布| 中文字幕无码无码专区| 免费人妻av无码专区| 人妻aⅴ中文字幕无码| 亚洲AV色吊丝无码| 无码AV片在线观看免费| 夜夜添无码试看一区二区三区| 日韩精品无码免费视频| 人妻少妇看A偷人无码精品| 91嫩草国产在线无码观看| 亚洲2022国产成人精品无码区| 亚洲中文字幕无码不卡电影| 精品久久久久久无码中文字幕| 无码AV一区二区三区无码| 国产精品第一区揄拍无码| 久久AV无码精品人妻出轨| 人妻少妇看A偷人无码精品| 国产精品无码久久综合网| 国产精品成人无码免费| 精品无码中文视频在线观看| 亚洲国产综合无码一区二区二三区 | 亚洲精品9999久久久久无码| 中文字幕无码播放免费|