把T-FLASH卡做成Ubuntu Linux開機登入使用鑰匙和gufw防火牆配置
一、前言
作為IT從業者,個人膝上型電腦的安全由為重要,因為你的電腦上有連線公司各伺服器的許可權,和一些個人及公司隱私重要的資料,如果被別有用心的人非法使用,後果將不堪設想,出了紕漏這鍋就背定了,因此個的膝上型電腦在沒有授權情況下,是不能給其他人使用的;所謂防患未然嘛;
本文主要從電腦網路層面與物理使用上加固;
網路上,還是基於防火牆,ubuntu上有一個圖形防火牆,底層也是基於iptables,就是gufw這個軟體;規則是進出預設為拒絕,開放常用和日常使用的對外訪問;對所在辦公區域網信任,這樣最大程度從網路上減少被***的可能性;
如圖:
物理上,由於現在主流筆記本基本上帶T-FLASH插槽;我們就用登入密碼加T-FLASH卡做開機的鑰匙;開機密碼這個一般都會設定的,關有密碼,如果沒有指定T-FLASH卡,是不允許登入的,效果如圖:
一開機就是提示:"system is going down"提示;點重試也沒有用,一分鐘後自動關機;此時如果插入了指定T-FLASH則可以重試登入。
在機器執行中,如果插掉T-flash卡就會一分鐘後悄悄關機,緊急時候可以直鎖機接插卡走人;一分鐘(可以自行修改)內插入卡則恢復;
如圖:(觀察左上角有一個裝置被拔了,再次插上時日誌變化)
如果插入了不是正確的TFLASH卡是沒有用的,如圖:(有一個快閃記憶體卡出現,但沒有用,只有再次插上正確的T-FLASH裝置)
如果你也是Ubuntu Linux辦公;如果你也想做到這樣,繼續往下看:
環境和工具:
系統:ubuntu 16.04
gufw 防火牆
shell指令碼
T-FLASH卡一張
準備好了嗎? go
思路
1、網路層面
安裝gufw防火牆sudo apt install gufw
按win圖示 搜尋gufw 如圖:
防火牆開啟預設是關閉的(需要認證密碼以root方式開啟),先開啟防火牆,此時預設傳入規則為否認(拒絕外面訪問本機即INPUT規則),傳出(允許,訪問外面服務即OUTPUT規則);
傳入 與傳出 為否認即為DROP拒絕;此時只有開放了對應的規則才能被允許;接下來新增本地網路段172.16.0.0/16進出為信任;出去預設21 22 25 53 80 110 443 3389為信任;
其他需要開放的請自行新增;以常用的新增信任網段和添加出去訪問的埠為例
新增信任網段示例:
新增訪問80 web服務示例:
開放本地的8000埠示例:th
好了,其他網段的信任新增和出去訪問的埠類似;結合自己的實際需要新增!以上新增點高階部分可以記錄日誌! 這裡不演示了,畢竟這些都需要你息動手去嘗試操作!
網路層面就到這裡完成! 效果就是沒有被開放不能進來,也不能出去!
物理層面
前面已經描述過了,個人筆記本的物理安全除了平時自己保管好外,膝上型電腦不在身邊時,如果沒有特定的T-FLASH卡是不能正常開機登入系統的,即使登入了,緊急時,可以拔掉讓筆記本自行關機,再次開機也是無法進入的,當然如果對Ubuntu Linxu熟悉的還是有辦法,這裡我就不提啦,防君子不防小人嘛,防小白不防大神哦!
前的效果和描述已經看過了,直接上程式碼吧:
需要rc.local服務是下正常執行並能開機執行的!
### 主要作用開機執行並檢查 並執行開機守護進行(迴圈檢查)
# cat /etc/rc.local
status=$(ls -l /dev/disk/by-uuid/ |grep mmcblk0p1 |awk '{print $9}')
Check(){
echo $status
if [ ${status} = "DA28BC3228BC0F8D" ];
then
echo "Welcome dongyc login at $(date +%F-%H-%M-%S)" >>/home/dongyc/Login.txt
else
echo "$(date +%F-%H-%M-%S) login failed!" >>/home/dongyc/Login.txt
shutdown -h +1
fi
}
Check
nohup /home/dongyc/CHECK.sh >/tmp/check.out 2>&1 &
exit 0
## 以上DA28BC3228BC0F8D 我的T-flash裝置的識別號,唯一
# cat /home/dongyc/CHECK.sh
#!/bin/sh
while true
do
sleep 2
## 檢測TFLASH卡是否掛載存在
status=$(ls -l /dev/disk/by-uuid/ |grep mmcblk0p1 |awk '{print $9}')
## 判斷是否存在,並檢查變數stat是否為空(即是否觸發了關機操作)
### TFLASH存在同時stat為空
if [ "${status}" = "DA28BC3228BC0F8D" -a -n ${stat} ]
then
echo "${status} is exsit.Login OK~" >> /tmp/check.log
### TFLASH存在和stat為空時保持取消關機,因為此時表明正常狀態
shutdown -c
stat=""
else
## 如果stat有值同時TFLASH沒有存在掛載;說明觸發了關機操作,或者已經是reboot (兩者一回事) 跳過檢查執行關機
if [ ! -n $stat -o "${stat}" = "reboot" ]
then
continue
else
## TFLASH不存在,執行關機,設定stat為reboot,並記錄到日誌中
time=$(date +%F-%H-%M-%S)
echo "At ${time} Can't found TFLASH,I think is not my master login.system reboot after 1 min." >>/tmp/check.log
stat=$(shutdown -h +1;echo "reboot")
fi
fi
done
至此,從網路和物理層面的控制,安全上基本上還看的過去了吧?其實做這個的初衷就是為了把膝上型電腦做成一個有FLASH為鑰匙多功能可以擴充哦,比如如果沒有T-FLASH卡,除了關機外關機前可以把重要的資料刪除!