基本原則: a. 及時更新所有的服務,以防止最新的威脅
b. 儘可能使用安全的協議
c. 儘可能讓每臺機只提供一種服務
d. 嚴格監控所有機器以及時發現惡意行爲
e. 訂閱系統相關的安全郵件列表
一.帳戶和口令
(一). 帳戶
1.爲每個系統維護人員建立一個獨立的普通權限帳號,爲監控機建立監控
帳號,分別用於日常系統維護和系統監控;
2.FTP 服務器配置虛擬帳號;
3.禁止除root 帳號, 系統維護人員帳號和監控機帳號之外所有帳號使用
SHELL的權限;
4.鎖定所有在安裝系統時自動建立的帳號;
a. 查找出未鎖定的系統帳號:egrep -v '.*:\*|:\!' /etc/shadow | awk -F: '{print $1}'
b. 鎖定:usermod –L <username>
(二). 口令
1.強度:a. 10位以上;包含了字母(大寫字母和小寫字母),數字和特殊符號;不允許包含英文單詞;
b. 配置:在文件/etc/pam.d/system-auth中配置;
password requisite /lib/security/$ISA/pam_cracklib.so retry=3 minlen=10 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1)
2.更改頻率:a. 120天;
b. 配置新建帳戶的默認更改頻率:在文件/etc/login.defs中設置 pass_max_days=120
c. 修改當前用戶的更改頻率: chage –M 120 <username>
3.歷史:a. 10次
b. 配置:在文件/etc/pam.d/system-auth中配置
password requisite /lib/security/$ISA/pam_cracklib.so retry=3 minlen=10 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 difok=3
password sufficient /lib/security/$ISA/pam_unix.so nullok use_authtok md5 shadow remember=10)
4.推薦的選擇口令的方法:想出一個句子,用其中每個單詞的首字母及其包含的符合,並將字母替換爲跟其相似的數字或符號來生成口令;
5.好的口令舉例:Zhongguoliantong10010!))!), Beijingquhao010)!);
二.遠程登錄
(一). SSH
1.只支持SSH v.2;
2.禁止直接使用root帳號登錄,只允許使用普通權限帳號直接登錄;
3.更改默認端口(改爲22222);
(二). 登錄banner
1. 在/etc/issue文件里加入登錄警告
#cat > /etc/issue << EOF
=======================================
Warning: The system is owned by xxxxxx,
Unauthorized access to this system is prohibited!!!
=======================================
2. 在/etc/motd文件里加入對登錄成功者的警告
#cat > /etc/motd << EOF
=======================================
Warning: The system is owned by xxxxxx,
What you do will be monitored and logged!!!
=======================================
三.內核參數
1.調整如下內核參數,以提高系統防止IP欺騙及DOS***的能力:
net.ipv4.ip_forward = 0 # 對於LVS,網關或***服務器,要設置爲1
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.rp_filter = 1 # 對於LVS 後端服務器,
# 要設置爲0
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.conf.all.log_martians = 1
kernel.sysrq = 0
kernel.core_uses_pid = 1
四.文件系統
1.mount 選項:/ ro # 先將 /root 目錄移到/home/root
/boot ro
/usr ro
/var noexec, nosuid
/tmp noexec, nosuid
2.SUID,SGID文件:每天運行一個cron任務,看是否有新的SUID/SGID文件出現,
如果有,則發e-mail 給維護人員;
3.所有人都可以寫的目錄:每天運行一個cron任務,看是否有新的所有人都可以
寫的目錄出現,如果有,則發e-mail 給維護人員;
4.ACL:在爲多個用戶分配某個文件或目錄的權限時,禁止使用修改用戶所屬組
實現,使用ACL實現;
5. umask:配置爲0022 或0055(在/etc/bashrc中配置);
五.日誌
1.日誌集中存放到日誌主機上, 本地保存4周的日誌備份;
2.日誌客戶機配置:參考<<linux 系統規範>> 8. 配置系統日誌;
3.日誌主機配置:參考<<linux 日誌主機配置指南>>;
六.應用程序
(一). MySQL
1.以mysql用戶運行MySQL;
2.給管理員帳戶root改名(ht-mysql-admin);
3.給管理員帳戶設置強鍵的口令;
4.刪除數據庫test;
5.刪除MySQL安裝過程中自動創建的不需要的帳戶,
禁止創建非絕對必需的帳戶;
6.禁止存放任何純文本口令在數據庫中;
7.禁止從字典裏選擇口令;
8.嚴格控制用戶權限:僅給予用戶完成其工作所需的最小的權限;
禁止授予PROCESS, SUPER, FILE 權限給非管理帳戶;
9.禁止將MySQL數據目錄的讀寫權限授予給mysql用戶外的其它OS 用戶;
(二). Resin
1.以用戶resin運行resin;
2.跟APACHE集成使用,禁止運行在standalone 模式直接提供WEB服務 ;
(三). Apache
1.只編譯必須使用的模塊;
2.以daemon組的daemon用戶運行APACHE;
3.關閉所有的診斷頁面和自動目錄索引服務;
4.刪除cgi-bin目錄和manul目錄;
5.儘可能不要暴露自己的真實身份;
6.使用chrooting 限制apache對文件系統的訪問(在使用了集中存儲的情況下
比較難以實現);
7.安裝modsecurity模塊;
8.運用基於主機的身份驗證控制對管理頁面的訪問;
9.日誌集中存放和分析;
七.防火牆
一).軟件:iptables
(二). 規則
1.加載重要的iptables 模塊:ip_tables, iptable_filter, ip_conntrack,
ip_conntrack_ftp;
2.按網卡接口(eth0, eth1,…)和數據包類型(TCP,UDP,ICMP)
自定義規則集;
3.配置每個規則集的 policy爲 ACCEPT,但一定要在每個規則集的末尾顯式DROP任何匹配該規則集但不允許的數據包(iptables –A <rule-set name> -j DROP);
4.DROP 無效數據包,IP spoof 數據包;
5.只開放能滿足業務需求的最少的端口;
(三). 配置
參考<< linux 系統規範 >> 10. 配置安全 3)防火牆;
八.***檢測和防護
1.工具:OSSEC;
2.策略:在某臺服務器上安裝OSSEC HIDS 服務器,在需要作主機***檢查和防護及文件完整性檢測的服務器上安裝OSSEC HIDS 代理,代理將相關信息發送到HIDS服務器,由服務器統一分析處理;
3.配置:參考<< HIDS OSSEC安裝指南>>;
九.安全審計
---------------------------------------------------------------
審計對象 工具 頻率
-----------------------------------------------------------
Linux 系統 nmap 1個月
Nessus 3個月
自動日誌分析 實時
人工日誌分析 必要時
口令文件 John the ripper 3個月
APACHE nikto 6個月
Appscan 6個月
------------------------------------------------------------
注:新安裝的服務器必須經過安全審計才允許投入產品環境;
新發布了應用後,必須立即進行安全審計;
十.安全郵件列表和網站
Application Security;