簡介 最小(少)原則,是安全的重要原則。最小的許可權,最小的用戶,最少的服務,最少的進程,是最安全的。 系統安全包括:文件系統保護、用戶管理安全、進程的保護以及日誌的管理。 場景 1. 確保服務最少,每個都是有用,而且許可權最小化。 2. 確保用戶最少,每個都是有用,而且許可權最小化。 3. 確保文件許可權 ...
簡介
最小(少)原則,是安全的重要原則。最小的許可權,最小的用戶,最少的服務,最少的進程,是最安全的。
系統安全包括:文件系統保護、用戶管理安全、進程的保護以及日誌的管理。
場景
- 確保服務最少,每個都是有用,而且許可權最小化。
- 確保用戶最少,每個都是有用,而且許可權最小化。
- 確保文件許可權最小。
- 及時更新補丁,解決漏洞。
- 規範好人為的因素。往往這個才是最大的隱患。
解決方案
最少服務
服務越少,漏洞越少,越不容易被攻擊,越安全。伺服器本身越封閉越安全。
最小安裝。
絕不安裝多餘的軟體,需要什麼安裝什麼。在安裝系統的時候就使用最小安裝
。不要圖形界面,不要其他服務。
取消不必要的服務
即使做了最小安裝,還是有很多可能用不到的服務,建議也是關閉,除非真的有用。
# 查看哪些服務在運行
/sbin/chkconfig --list |grep 3:on
# 沒有使用的服務都可以考慮刪除。
chkconfig ip6tables off # ipv6
chkconfig auditd off #用戶空間監控程式
chkconfig autofs off #光碟軟盤硬碟等自動載入服務
...
禁止外來ping操作
[root@tp /]# vi /etc/rc.d/rc.local
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
限制控制台的登錄
特別是關機和重啟的命令,太危險了。
rm -rf /etc/security/console.apps/
[root@tp /]# vi /etc/securetty
...
#我們註釋掉
tty1
# tty2
# tty3
# tty4
# tty5
# tty6
#只留下tty1,這時,root僅可在tty1終端登錄
刪除歷史記錄
防止賬號被攻破後丟失更多的信息。
[root@tp /]# vim ~/.bash_logout
# 在裡面添加命令
rm -rf ~/.bash_history
最小用戶
使用的用戶許可權越小越安全。特別是有些軟體的漏洞可以直接獲取賬號執行許可權。一旦使用root啟動,就相當於伺服器的root直接被破解。
!千萬不要用root啟動軟體。
自動註銷
當我們登錄到Linux伺服器上操作完以後,應該退出當前用戶,否則可能會出現安全問題,特別是root用戶,一旦被盜用很可能造成不可輓回的損失
[root@tp /]# vim /etc/profile
# 在裡面添加
export TMOUT=300
設置口令複雜度
(授權完修改密碼會有影響嗎???這個需要測試)
定期修改密碼
# 一個是在/etc/login.defs文件,裡面幾個選項
PASS_MAX_DAYS 90 #密碼最長過期天數
PASS_MIN_DAYS 80 #密碼最小過期天數
PASS_MIN_LEN 10 #密碼最小長度
PASS_WARN_AGE 7 #密碼過期警告天數
清理沒有用的賬號
在想是不是註釋掉,還是直接刪除
# 需要刪除的用戶包括:
userdel lp
userdel sync
userdel shutdown
userdel halt
userdel news
userdel operator
userdel games
userdel ftp
userdel rpc
userdel rpcuser
userdel gopher
userdel nscd
# 需要刪除的組包括:
groupdel lp
groupdel news
使用sudo來使用root許可權
[root@tp /]# /etc/sudoers
# 在 root ALL=(ALL) ALL 下麵添加一行
username ALL=(ALL) ALL
# 如果不想每次都輸入密碼可以用這一行
username ALL=(ALL) NOPASSWD:ALL
exit
最小文件許可權
原則:原則上不給任何許可權,只有需要的時候才添加許可權。能不給寫和執行的許可權,堅決不能給!!拒絕777的行為。
賦許可權的類型:
- 重要的系統目錄不可以修改
- 產品代碼只可以讀,不可以執行,不可以修改
- 需要上傳目錄,否則特別需要文件讀寫的目錄要單獨規劃好。
- 通過umask設置預設生成的文件和文件目錄的最小許可權。
更新補丁
建議做法:重裝系統,update,然後測試業務是否正常。不建議寫成定時去更新,容易引發軟體的衝突,導致業務不可用。
如果是線上的業務,可以通過集群和配置管理的方式,把部分伺服器更新。但是要做好計劃,不能盲目更新。
人為的因素
人才是系統安全最大的隱患。
- 每個人一個賬號。
- 每個角色一個組(比如:運維,開發)。這個需要進一步思考和細化。
- 不允許使用root,如果有需要使用sudo。(能不能粒度到組啊?)
- 把日常的運維操作,做成命令或者別名,減少人為操作。
驗證方法
- 文件是否被人篡改過 。
Tripwire
- 密碼是否安全,是否容易被破解。
John the Ripper
。當然原則上通過防火牆來隔離更好,不允許其他網段ssh。 - 系統安全。
Lynis
是針對Unix/Linux的安全檢查工具,可以發現潛在的安全威脅。這個工具覆蓋可疑文件監測、漏洞、惡意程式掃描、配置錯誤等。 - 其他的場景,根據能不能操作來驗證。