天天看點

運維之監控與安全篇------2.SELinux安全防護 、 加密與解密

一、SELinux

1介紹linux安全保護模型:

:  DAC(Discretionary Access control )自主通路控制--所有者對自己的資源負責 應用:9位權限碼(rwx) ACL政策

:  MAC(Mandatory Access control) 強制通路控制--管理者對所有的資源負責 應用:selinux 多級安全

Selinux是什麼?MAC擴充子產品 美國國家安全局主導開發

運作機制:2.6內建到核心

2政策集:

:SELINUXTYPE=targeted 僅保護最常見的關鍵的網絡服務 軟體包;selinux-policy  selinux-policy-targeted  libselinux-utils  coreutils  policycoreutils

:SELINUXTYPE=mls  提供多層次全方位的安全防禦政策 軟體包:selinux-policy-mls  mcstrans  policycoreutils-newrole

3模式控制:

#sestatus   #檢視selinux狀态

#getenforce #檢視selinux狀态

#setenforce 1/0  臨時改變selinux配置

#vim /etc/selinux/conf   #永久改變配置

SELINUX=disabled 以禁用

SELINUX=permissive 寬松/允許模式

SELINUX=enforcing 強制模式   

selinux的類型:  targeted    MLS                      

4安全上下文的組成()

為檔案/目錄/裝置标記通路控制屬性

使用者:角色:通路類型:選項...

 檢視安全上下文   -Z

檢視程序   ps  aux  -Z  |  grep  程序名

                ps  -Z   -C  程序名

檢視檔案   ls   -Zd  目錄名

檢視目錄  ls   -Z  檔案名

常見通路類型:

Bin_t                  二進制執行檔案

Etc_t                  系統配置檔案

Fsadm_exec_t         檔案系統管理檔案

Admin_home_t          管理者賬戶檔案

User_hoem_t           普通使用者的宿主檔案

http_sys_content_t httpd網站内容

public_content_t     #共享檔案

5 啟用selinux後遵循的一般規律

建立新檔案或新目錄,  繼承父目錄的安全上下文

移動檔案或目錄,保持原有的安全上下文不變

拷貝檔案或目錄,繼承目标目錄的安全上下文

6 修改通路類型

#chcon  -R  -t  通路類型  目錄名

#chcon   -t  通路類型  檔案名

#chcon -u -r 分别指定使用者、角色

7.  恢複通路類型

# restorecon   檔案名

#touch /.autorelabel 下次重新開機後全部重置

8實踐操作驗證(布爾值運用與chcon作用)

​​點選打開連結​​

#Yum -y install vsftpd

#yum -y install ftp

#Vim /etc/vsftpd/vsftpd.conf

anonymous_enable=YES    //開啟匿名通路

write_enable=YES

anon_umask=022

anon_upload_enable=YES       //允許上傳檔案

anon_mkdir_write_enable=YES     //允許上傳目錄

#chown ftp /var/ftp/pub

#systemctl restart vsftpd

#ls > test.txt

#ftp 192.168.4.20

Passwd:

ftp>cd pub

ftp>put test.txt  #嘗試上傳測試檔案

失敗

Quit

調節布爾值:

 selinux布爾值(功能開關)

檢視布爾值  getsebool   -a     | grep  -i  服務名

檢視布爾值  getsebool   -a

修改布爾值  setsebool    -P   選項   on|off

                  setsebool    -P   選項=1|0

*******************************************************************

#setsebool -P allow_ftpd_anon_write=1         //設定布爾值    *

#setsebool -P allow_ftpd_full_access=1                      *

#getsebool -a |grep allow_ftpd                 //确認修改結果 *

********************************************************************

#allow_ftpd_anon_write --> on

#allow_ftpd_full_access --> on

#ftp 192.168.4.20

ftp>put test.txt  #上傳測試檔案成功

Ok to send data

從/root目錄下移動一個封包件到FTP下載下傳目錄,調整檔案的安全上下文

關閉FTP布爾值allow_ftpd_full_access以便測試因為開啟此項會擴大FTP目錄的通路權限(忽略安全上下文),建議先将其關閉。

#tar -zcf /var/ftp/a1.tar.gz a.txt 在目錄下建立

#tar -zcf a2.tar.gz a.txt          #移動

#mv a2.tar.gz /var/ftp/

另一台虛拟機下載下傳這兩個檔案

#wget ftp://192.168.4.10/a1.tar.gz 成功

#wget ftp://192.168.4.10/a2.tar.gz失敗

#ls -Z /var/ftp/

-rw-r--r--. root root unconfined_u:object_r:public_content_t:s0 /var/ftp/a1.tar.gz

-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 /var/ftp/a2.tar.gz

# chcon -t public_content_t /var/ftp/d2.tar.gz

#wget ftp://192.168.4.10/a2.tar.gz a2下載下傳成功

9 檢視selinux報錯資訊

[root@10 ~]# rpm -qa | grep setroubleshoot

setroubleshoot-plugins-3.0.59-1.el7.noarch

setroubleshoot-3.2.24-1.1.el7.x86_64

setroubleshoot-server-3.2.24-1.1.el7.x86_64

#grep   setroubleshoot   /var/log/message  | tail  -1

#sealter  -l   字元串

++++++++++++++++++++++++++++++++

二、資料加密與解密

1.傳遞風險:流量控制、電腦黑客、出差人員、離職人員、合作夥伴、商業間諜、高官習慣、開發人員

2. 加密?發送方:明文---密文

解密? 接受方:密文---明文

 算法?   計算規則  或  算法

生活中郵寄信件;兩張大小A4紙,一張寫滿文字故事,一張摳窟窿顯示傳達資訊。 

3.加密類型: 

對稱加密:加密解密用同一個密鑰 

:DES data Encryption standard

:AES Advaced Encryption Standard

非對稱加密: (使用密鑰對) 公鑰加密    私鑰解密

: RSA Rives Shamirs Adleman 

: DSA Digital Signature Algorithm

4.保護資訊的完整性:

資訊摘要:

常用的加密算法:Hash散列技術用于資訊摘要(文本不同,摘要不同)

MD5,Message Digest Algorithm 5

SHA,Secure Hash Algorithm

5.檢查校驗值

#vim file1.txt

#cp file1.txt file2.txt

#cat file1.txt > file3.txt

#md5sum file?.txt                 //檔案内容一緻,則校驗和也不變

#echo "x"md5sum file?.txt

# >> file1.txt

#md5sum file?.txt   #檢驗和已經改變file1,file2與file2仍相同

6.GPG 非對稱加密

非對稱加密/解密檔案時,發送方(UserA)以接收方(UserB)的公鑰加密檔案,接收方以自己的私鑰解密

1.接收方UserB建立自己的公鑰、私鑰對,執行gpg --gen-key操作,根據提示選擇并建立密鑰:

2.[UserB@pc207 ~]$ gpg --gen-key

1.請選擇您要使用的密鑰種類:

2.(1) RSA and RSA (default)

3.(2) DSA and Elgamal

4.(3) DSA (僅用于簽名)

5.(4) RSA (僅用于簽名)

6.您的選擇?                                             //直接回車預設(1)

7.RSA 密鑰長度應在 1024 位與 4096 位之間。

8.您想要用多大的密鑰尺寸?(2048)                             //接受預設2048位

9.您所要求的密鑰尺寸是 2048 位

10.請設定這把密鑰的有效期限。

11.0 = 密鑰永不過期

12.<n> = 密鑰在 n 天後過期

13.<n>w = 密鑰在 n 周後過期

14.<n>m = 密鑰在 n 月後過期

15.<n>y = 密鑰在 n 年後過期

16.密鑰的有效期限是?(0)                                     //接受預設永不過期

17.密鑰永遠不會過期

18.以上正确嗎?(y/n)y                                         //輸入y确

2.接收方UserB導出自己的公鑰檔案;使用者的公鑰、私鑰資訊分别儲存在pubring.gpg和secring.gpg檔案内

[UserB@pc207 ~]$ gpg --list-keys                         //檢視公鑰環

/home/UserB/.gnupg/pubring.gpg

[UserB@pc207 ~]$ gpg --list-secret-keys

/home/UserB/.gnupg/secring.gpg                         //檢視私鑰環

使用gpg指令結合--import選項将其中的公鑰文本導出,傳給發送方UserA:

[UserB@pc207 ~]$ gpg -a --export UserB > /tmp/UserB.pub

[UserB@pc207 ~]$ ftp 192.168.4.7

Name (192.168.4.7:UserB): ftp

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> cd pub

250 Directory successfully changed.

ftp> lcd /tmp/

Local directory now /tmp

ftp> put UserB.pub                          //通過FTP将公鑰傳給發送方主機

local: UserB.pub remote: UserB.pub

227 Entering Passive Mode (192,168,4,6,59,39).

150 Ok to send data.

226 Transfer complete.

1719 bytes sent in 0.000127 secs (13535.43 Kbytes/sec)

ftp> quit

221 Goodbye.

3.發送方UserA導入接收方的公鑰資訊

使用gpg指令結合--import選項導入發送方的公鑰資訊,以便在加密檔案時指定接收人來調用對應的公鑰。

[UserA@svr7 ~]$ gpg --import /var/ftp/pub/UserB.pub

[UserA@svr7 ~]$ echo "I love you ." > tosend.txt

[UserA@svr7 ~]$ gpg -e -r UserB tosend.txt

[UserA@svr7 ~]$ exit

logout

[root@svr7 ~]# cp /home/UserA/tosend.txt.gpg /var/ftp/tosend.txt.gpg

4.接收方UserB收取加密檔案,以自己的私鑰解密檔案

[UserB@pc207 ~]$ wget ftp://192.168.4.7/tosend.txt.gpg

[UserB@pc207 ~]$ gpg -d tosend.txt.gpg > tosend.txt

[UserB@pc207 ~]$ cat tosend.txt                      //獲得解密後的檔案内容

I love you .

***************************************

7.使用GPG實作軟體包的完整性校驗,檢查軟體包簽名

1.在pc207上,作者UserB為軟體包建立分離式簽名,将軟體包、簽名檔案、公鑰檔案一起釋出給其他使用者下載下傳,。

[UserB@pc207 ~]$ tar zcf tools-1.2.3.tar.gz /etc/hosts      //建立測試軟體包

[UserB@pc207 ~]$ gpg -b tools-1.2.3.tar.gz                  //建立分離式數字簽名

[UserB@pc207 ~]$ ls -lh tools-1.2.3.tar.gz* UserB.pub

-rw-rw-r--. 1 UserB UserB 170 8月  17 21:18 tools-1.2.3.tar.gz

-rw-rw-r--. 1 UserB UserB 287 8月  17 21:22 tools-1.2.3.tar.gz.sig

-rw-rw-r--. 1 UserB UserB 1.7K 8月  17 21:26 UserB.pub

[root@pc207 ~]# yum -y install vsftpd

[root@pc207 ~]# cp /home/UserB/tools-1.2.3.tar.gz* /var/ftp/

[root@pc207 ~]# cp /home/UserB/UserB.pub /var/ftp/

[root@pc207 ~]# service vsftpd start

2.在svr7上,下載下傳軟體包并驗證官方簽名。下載下傳主機pc207釋出的UserB的軟體包、簽名、公鑰,導入UserB的公鑰後即可驗證軟體包的完整性。

[root@svr7 ~]# wget ftp://192.168.4.207/tools-1.2.3*

[root@svr7 ~]# wget ftp://192.168.4.207/UserB.pub

[root@svr7 ~]# gpg --import UserB.pub                      //導入作者的公鑰資訊

[root@svr7 ~]# gpg --verify tools-1.2.3.tar.gz.sig tools-1.2.3.tar.gz

繼續閱讀