一、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