對稱加密
加密和解密用的是相同的密碼。
安全強度依賴密碼的強度。
加密和解密效率非常快。
非對稱加密
加密和解密用的是不相同的密鑰。
效率非常低,不适合對大尺寸資料進行處理。
私鑰
是鑰匙持有人自己生成并且自行保管,絕對不能洩漏的。它是用于對資料的“簽名”---其實最終效果也就是加密。使用私鑰對經過公鑰加密後的資料進行解密,這個過程叫“校驗”。
公鑰
是在私鑰的基礎上生成對應的密鑰檔案,是對簽名的資料進行“解密”---對資料解密。也能使用公鑰處理明文資料,這個過程叫“加密”。
證書
通過ca的私鑰對某個公鑰和公鑰持有人的資訊進行簽名得來。--- 其實就是用ca的私鑰“加密” 某個公鑰和公鑰資訊得到的加密檔案。
例子: 部署一個https的加密網站
一個IP隻能支援建立一個加密網站。
1、安裝apache的ssl子產品
# yum install mod_ssl -y
安裝玩之後,預設會自定成生配置檔案。
2、編輯
# vim /etc/httpd/conf.d/ssl.conf
LoadModule ssl_module modules/mod_ssl.so
Listen 443
...
<VirtualHost _default_:443>
DocumentRoot "/share/weeken_03" <---修改
ServerName 10.1.1.21:443 <---修改
SSLEngine on
..
SSLCertificateFile /etc/httpd/conf.d/tanpao.crt
SSLCertificateKeyFile /etc/httpd/conf.d/tanpao.key
....
</VirtualHost>
我們生成的證書:
smtp+ssl == smtps
pop3 +ssl == pop3s
imap + ssl == imaps
=========================================================================
本地磁盤資料加密
加密前:
普通檔案--> 挂載(調用檔案系統驅動讀取分區上的對應格式資料)---格式化---sda7
加密後:
普通檔案--> 挂載----普通檔案系統格式化--->加密驅動--初始化-->sda7
1、準備一個沒有重要資料的分區進行加密初始化
初始化後,原有的資料是不可恢複
# cryptsetup -y luksFormat /dev/sda10
WARNING!
========
This will overwrite data on /dev/sda10 irrevocably.
Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase:
Verify passphrase:
2、使用密碼打開被加密驅動保護的分區
# cryptsetup luksOpen /dev/sda10 sda10_crypt
Enter passphrase for /dev/sda10: <---輸入密碼
# ll /dev/mapper/sda10_crypt <---被加密驅動監視的裝置檔案,所有資料讀寫都必須經過該裝置檔案,而對該裝置檔案的資料讀寫都是經過加密驅動的解密和加密。
3、首次使用加密分區,需要使用普通檔案系統進行首次的格式化
# mkfs.ext4 /dev/mapper/sda10_crypt
4、挂載、測試
# mount /dev/mapper/sda10_crypt /mnt
使用完畢,就取消挂載并且關閉加密裝置
# umount /mnt
# cryptsetup luksClose /dev/mapper/sda10_crypt
修改密碼: 先增加一個新密碼,再删除原有的其中一個舊密碼
# cryptsetup luksAddKey /dev/sda10
Enter any passphrase: <---輸入原來的任意一個舊密碼
Enter new passphrase for key slot: <---輸入新密碼
# cryptsetup luksRemoveKey /dev/sda10
Enter LUKS passphrase to be deleted: <--輸入之前的舊密碼
==========================================================================================
工具:cryptsetup(預設已經安裝)
常用參數:luksFormat、luksOpen、luksClose、luksAddKey
使用cryptsetup對分區進行了加密後,這個分區就不再允許直接挂載。LUKS也是一種基于device mapper 機制的加密方案。如果要使用這個分區,必須對這個分區做一個映射,映射到/dev/mapper這個目錄裡去,我們隻能挂載這個映射才能使用。然而做映射的時候是需要輸入解密密碼的。
Crypsetup工具加密的特點:
加密後不能直接挂載
加密後硬碟丢失也不用擔心資料被盜
加密後必須做映射才能挂載
步驟:
1. 建立分區并加密分區
2. 映射分區
3. 格式化分區并挂載使用
4. 關閉映射分區
建立一個磁盤分區/dev/sdb1,不進行格式化
1、 加密分區 www.2cto.com
# cryptsetup -v -y -c aes-cbc-plain luksFormat /dev/sdb1
This will overwrite data on /dev/sdb1 irrevocably.
Are you sure? (Type uppercase yes): YES --> 注意這裡必須是大寫的YES
Command successful.
#
2、 映射分區
# cryptsetup luksOpen /dev/sdb1 sx_disk //把sdb1映射為sx_disk
Enter passphrase for /dev/sdb1:
# ll -d /dev/mapper/sx_disk
lrwxrwxrwx. 1 root root 7 6月 25 03:24 /dev/mapper/sx_disk -> ../dm-0
# cryptsetup status /dev/mapper/sx_disk //檢視映射分區狀态
/dev/mapper//dev/mapper/sx_disk is active.
type: LUKS1
cipher: aes-cbc-plain
keysize: 256 bits
device: /dev/sdb1
offset: 4096 sectors
size: 16767701 sectors
mode: read/write
# www.2cto.com
3、挂載使用
# mkdir /mnt/sx_disk
# mkfs.ext3 /dev/mapper/sx_disk
# mount /dev/sdb1 /mnt/sx_disk/ //直接挂載是不可以的
mount: unknown filesystem type 'crypto_LUKS'
# mount /dev/mapper/sx_disk /mnt/sx_disk/ //挂載映射裝置,挂載成功
4、關閉映射,先解除安裝後關閉
# umount /mnt/sx_disk/
# cryptsetup luksClose sx_disk //關閉映射
# ll /dev/mapper/ //映射裝置已經不見了
總用量 0
crw-rw----. 1 root root 10, 58 6月 25 03:01 control
5、設定開機自動挂載
生成密鑰檔案,如果想開機時手動輸入密碼可以不生成
# touch /root/cryptpasswd
# cryptsetup luksAddKey /dev/sdb1 /root/cryptpasswd
Enter any passphrase:
# cat /root/cryptpasswd //直接檢視密鑰為空
設定開機啟動
# vim /etc/crypttab
# cat /etc/crypttab
sx_disk /dev/sdb1 /root/cryptpasswd
//sx_disk為映射名稱,/dev/sdb1是加密裝置裝置,/root/cryptpasswd為密碼檔案,如果想開機手動輸入密碼,密碼檔案處空着即可
# vim /etc/fstab
# tail -1 /etc/fstab
/dev/mapper/sx_disk /mnt/sx_disk ext4 defaults 0 0
webshell ---> 是否能夠被傳到伺服器,關鍵還是看程式員寫的web程式是否存在相關的漏洞
webshell帶來的危害:
跨目錄的通路:
解決: 對apache、php設定
開啟selinux
針對apache,php設定,防止webshell跨目錄
<VirtualHost *:8081>
DocumentRoot /share/weeken_03
。。。。
<IfModule mod_php5.c>
php_admin_value open_basedir "/share/weeken_03:/var/lib/php/session:/tmp"
</IfModule>
<VirtualHost *:8082>
DocumentRoot /share/weeken_06
php_admin_value open_basedir "/share/weeken_06:/var/lib/php/session:/tmp"
webshell可以通過php執行一些危險函數:運作指令、結束程序等等
# vim /etc/php.ini
disable_functions = exec,shell_exec,system,passthru,popen
webshell可以通過編譯程式,執行危險的程式,例如:進行反向連接配接、提權。
解決:
上線的伺服器,一般會把編譯工具解除安裝掉,就算不解除安裝,也要把權限修改成700,隻有root可以執行。
如果确定伺服器不會主動向外連接配接,那麼建議在iptables上的filter--> OUTPUT添加一條規則,記錄所有主動向外發起連接配接規則
# iptables -t filter -A OUTPUT -m state --state NEW -j LOG --log-prefix "hacker"
建議:
一個獨立的應用就有具有一個獨立的資料庫和資料庫帳号,千萬不能使用root帳号。
做好日志統計:
哪些頁面不應該被通路到,卻被通路。
www.upl.com/admin/login.php 404 報錯
哪些頁面隻有限定IP才能通路,卻被其他IP通路了。
本文轉自crazy_charles 51CTO部落格,原文連結:http://blog.51cto.com/douya/1275962,如需轉載請自行聯系原作者