Lesson 03: Linux 筆記 - 磁碟加密、Apache, Nginx, SSL
LUKS 加密服務
適用對象
-
移動式設備資料保護
-
notebook, USB磁碟加密
-
提供32組插槽使用
把partition切成小塊加密,裡面放密碼、key_file
可以使用設定的密碼解密或者用key解密
注意事項
- LUKS並不對檔案本身進行加密(針對整個partition,整個D槽)
- LUKS對於單一磁碟取走後能夠起保護作用
- KUKS對於已經解密之磁碟內容不起保護作用
指令
cryptsetup
luksFormat
建立加密磁碟luksOpen
開啟加密磁碟close
關閉已經開啟的加密磁碟
luks - 解密
mount - 掛起來
umount - 卸載
(順便同步, 如果未正確卸載可能會造成檔案毀損)
|
|
Dump/Status
- more cmds
使用插槽
刪除插槽
memcached的使用
一定要備分 一定要備份 一定要備份
磁碟加密
|
|
-
安裝 cryptsetup
-
將 /dev/sdb 設定加密磁碟區
1
cryptsetup luksFormat /dev/sdb
-
查看磁碟資訊
-
啟用加密磁碟,將
/dev/sdb
掛載為secDisk -
格式化
mkfs.xfs {the_Disk_to_be_formatted}
1 2 3
blkid /dev/mapper/secDisk mkfs.xfs /dev/mapper/secDisk blkid /dev/mapper/secDisk
-
掛載使用
mnt
被設計來臨時掛載使用1 2 3 4 5 6 7
mount /dev/mapper/secDisk /mnt df -h /mnt cd /mnt/ ls touch a b c d e f ls -lh cd
-
卸載
/mnt
要先
cd
跳出目錄才能umount
,否則會有以下錯誤訊息umount: /mnt: target is busy.
1 2
umount /mnt/ ls -lh /dev/mapper/
-
關閉加密磁碟
1 2
cryptsetup luksClose secDisk ls -lh /dev/mapper
新增 Password 到插槽
-
查看現有的插槽
luksDump
查看目前存了啥密碼1 2
cryptsetup luksDump /dev/sdb cryptsetup luksDump /dev/sdb | grep luks2
-
新增密碼
1 2 3 4
cryptsetup luksAddKey /dev/sdb // 輸入之前存的密碼 // 建立新密碼(passphrase for key slot) // 重新輸入新密碼(verify passphrase)
1
cryptsetup luksDump /dev/sdb | grep luks2
新增 Key 到插槽
-
使用密碼把 key1 插到插槽
1 2 3
dd if=/dev/urandom of=key1 bs=1K count=64 cryptsetup luksAddKey /dev/sdb key1 (這裡輸入第一個or第二個passwd都可,)
-
查看使用的插槽數
-
使用 key1 把 key2 插到插槽
刪除插槽
-
使用 key1 刪除插槽3 (key2)
man cryptsetup
man + {xxxxxx} 就是個 user manual 可以查看文件
Image 加密
@Server
Disk Image Cryption
複製 Image 到 Desktop
[Server] [Desktop]
c100
、s100
沒什麼意義,只是一個名稱(block device)
開機自動掛載加密磁碟
key 為什麼要放在 /etc/ 目錄裡?為了避免非super用戶篡改資料。
@Server
;
如果前面的指令執行完,接著執行下個指令
cp -a 的-a指的是包含權限
備份開機掛載設定檔
貼到 /etc/fstab 最尾巴新檔
...
(預設的)
/dev/mapper/secDisk /sec xfs defaults 0 0
(包含之前設定內容)
/dev/mapper/secDisk /sec xfs _netdev,nofail,defaults,x-systemd.device-timeout= 1 0 0
重開機之後要把硬碟掛在 sec 目錄
檔案格式為 xfs
關機前測試
|
|
取消自動掛載
@Server
cat /etc/fstab_backup > /etc/fstab
reboot
Apache安裝
Apache + SSL(secure socket layer)
HTTPS準備
- Server產生憑證請求檔
- 向 SSL_x509的CA認證中心申請簽證,裝在Server上
- 憑證檔案
- SSL x.509 憑證格式
- 常用
.DER
格式,Java使用的是.JKS
(二進制)
- 常用
- SSL x.509 憑證格式
Apache設定檔案
- /etc/httpd/conf.d/ssl.conf
Nginx設定檔案
- /etc/nginx/conf.d/default.conf
SSL1.0 -> SSL2.0 -> SSL3.0 ->
TLS 1.0 -> TLS 1.1 -> TLS 1.2(金融政府最低限制) -> TLS1.3
SSL連線四個步驟
設定ssl使用憑證位置
設定防火牆
|
|
重新啟動 httpd 服務
|
|
SSL建議簽署時間為一年
新增信任的根憑證
@Client [root]
-
將CA加入作業系統信任憑證中
1 2
cd /etc/pki/ca-trust/source/anchors/ curl -OJL http://192.168.60.253/ssl-key/ca/ca.crt
-
重新載入信任憑證
1
update-ca-trust
-
用戶端再次確認
Nginx 安裝
環境清除
@Server (停止服務、移除相依)
|
|
服務設定
安裝套件
|
|
設定首頁,啟動Nginx
|
|
使用 curl 或 firefox 檢驗服務
|
|
Nginx + SSL
- 建立憑證目錄
- 下載憑證
- 設定 https 預設站台
cd /etc/nginx/conf.d/
- 新增設定檔案
vi default.conf
- 測試設定檔案
nginx -t
- 重啟服務
systemctl restart nginx
用戶端測試
-
curl
-
Firefox
Strict Transport Security (HSTS)
@Desktop
@Server
在nginx增加header輸出
|
|
line 14 add
|
|
|
|
@Desktop
檢查是否支援 HSTS
Apache 設定 HSTS
@Server
-
重裝 Apache
1 2
root# systemctl stop nginx; dnf remove -y nginx root# dnf install -y httpd mod_ssl;
-
新增設定
1
root# cat /etc/httpd/conf.d/ssl.conf.rpmsave > /etc/httpd/conf.d/ssl.conf
vi /etc/httpd/conf.d/ssl.conf
驗證
@Desktop
SSL Report
Qualys