一晨抡、用戶帳號和環(huán)境……………………………………………………………. 2
二牵触、系統(tǒng)訪問認證和授權……………………………………………………… 3
三蓬衡、核心調整……………………………………………………… 4
四矾睦、需要關閉的一些服務…………………………………………………… 5
五悟衩、SSH安全配置……………………………………………………….. 5
六、封堵openssl的Heartbleed漏洞……………………. 6
七矾飞、開啟防火墻策略…………………………………
八一膨、啟用系統(tǒng)審計服務……………………………………………………. 8
九、部署完整性檢查工具軟件………………………………. 10
十洒沦、部署系統(tǒng)監(jiān)控環(huán)境……………………………………………………….. 11
以下安全設置均是在CentOS7.0_x64環(huán)境下minimal安裝進行的驗證豹绪。
一、用戶帳號和環(huán)境
檢查項注釋:
1微谓、清除了operator森篷、lp输钩、shutdown豺型、halt仲智、games、gopher 帳號
刪除的用戶組有: lp姻氨、uucp钓辆、games、dip
其它系統(tǒng)偽帳號均處于鎖定SHELL登錄的狀態(tài)
2肴焊、驗證是否有賬號存在空口令的情況:
awk -F: ? ‘($2 == “”) { print $1 }’ /etc/shadow
3前联、檢查除了root以外是否還有其它賬號的UID為0:
awk -F: ? ‘($3 == 0) { print $1 }’ /etc/passwd任何UID為0的賬號在系統(tǒng)上都具有超級用戶權限.
4、檢查root用戶的$PATH中是否有’.’或者所有用戶/組用戶可寫的目錄超級用戶的$PATH設置中如果存在這些目錄可能會導致超級用戶誤執(zhí)行一個特洛伊木馬
5娶眷、用戶的home目錄許可權限設置為700用戶home目錄的許可權限限制不嚴可能會導致惡意用戶讀/修改/刪除其它用戶的數(shù)據(jù)或取得其它用戶的系統(tǒng)權限
6似嗤、是否有用戶的點文件是所有用戶可讀寫的:
for dir ? in \
`awk -F: ? ‘($3 >= 500) { print $6 }’ /etc/passwd`
do
for file ? in $dir/.[A-Za-z0-9]*
do
if [ -f ? $file ]; then
chmod o-w ? $file
fi
done
doneUnix/Linux下通常以”.”開頭的文件是用戶的配置文件,如果存在所有用戶可讀/寫的配置文件可能會使惡意用戶能讀/寫其它用戶的數(shù)據(jù)或取得其它用戶的系統(tǒng)權限
7為用戶設置合適的缺省umask值:
cd /etc
for file ? in profile csh.login csh.cshrc bashrc
do
if [ ? `grep -c umask $file` -eq 0 ];
then
echo ? “umask 022″ >> $file
fi
chown ? root:root $file
chmod 444 ? $file
done為用戶設置缺省的umask值有助于防止用戶建立所有用戶可寫的文件而危及用戶的數(shù)據(jù).
8、設備系統(tǒng)口令策略:修改/etc/login.defs文件
9届宠、將PASS_MIN_LEN最小密碼長度設置為12位烁落。
10、限制能夠su為root 的用戶:#vi /etc/pam.d/su
在文件頭部添加下面這樣的一行
auth? ?????????required??????? pam_wheel.so use_uid這樣豌注,只有wheel組的用戶可以su到root
操作樣例:
#usermod ? -G10 test 將test用戶加入到wheel組
11伤塌、修改別名文件/etc/aliases:#vi /etc/aliases
注釋掉不要的 ? #games: root #ingres: root #system: root #toor: root
#uucp: root #manager: ? root #dumper: root #operator: root #decode: root
#root: marc
修改后執(zhí)行/usr/bin/newaliases
13、修改帳戶TMOUT值轧铁,設置自動注銷時間
vi /etc/profile
增加TMOUT=600無操作600秒后自動退出
14每聪、設置Bash保留歷史命令的條數(shù)
#vi /etc/profile
15、修改HISTSIZE=5即只保留最新執(zhí)行的5條命令
16齿风、防止IP ? SPOOF:
#vi /etc/host.conf 添加:nospoof on不允許服務器對IP地址進行欺騙
17药薯、使用日志服務器:
#vi /etc/rsyslog.conf 照以下樣式修改
*.info;mail.none;authpriv.none;cron.none??? @192.168.10.199這里只是作為參考,需要根據(jù)實際決定怎么配置參數(shù)
二救斑、系統(tǒng)訪問認證和授權
檢查項注釋:
1果善、限制 ? at/cron給授權的用戶:
cd /etc/
rm -f ? cron.deny at.deny
echo root ? >cron.allow
echo root ? >at.allow
chown ? root:root cron.allow at.allow
chmod 400 ? cron.allow at.allowCron.allow和at.allow文件列出了允許允許crontab和at命令的用戶名單, 在多數(shù)系統(tǒng)上通常只有系統(tǒng)管理員才需要運行這些命令
5、Crontab文件限制訪問權限:
chown ? root:root /etc/crontab
chmod 400 ? /etc/crontab
chown -R ? root:root /var/spool/cron
chmod -R ? go-rwx /var/spool/cron
chown -R ? root:root /etc/cron.*
chmod -R ? go-rwx /etc/cron.*系統(tǒng)的crontab文件應該只能被cron守護進程(它以超級用戶身份運行)來訪問,一個普通用戶可以修改crontab文件會導致他可以以超級用戶身份執(zhí)行任意程序
6系谐、建立恰當?shù)木鎎anner:
echo ? “Authorized uses only. All activity may be \
monitored ? and reported.” >>/etc/motd
chown ? root:root /etc/motd
chmod 644 ? /etc/motd
echo ? “Authorized uses only. All activity may be \
monitored ? and reported.” >> /etc/issue
echo ? “Authorized uses only. All activity may be \
monitored ? and reported.” >> /etc/issue.net改變登錄banner可以隱藏操作系統(tǒng)類型和版本號和其它系統(tǒng)信息,這些信息可以會對攻擊者有用.
7巾陕、限制root登錄到系統(tǒng)控制臺:
cat ? </etc/securetty
tty1
tty2
tty3
tty4
tty5
tty6
END_FILE
chown ? root:root /etc/securetty
chmod 400 ? /etc/securetty通常應該以普通用戶身份訪問系統(tǒng),然后通過其它授權機制(比如su命令和sudo)來獲得更高權限,這樣做至少可以對登錄事件進行跟蹤
8、設置守護進程掩碼
vi /etc/rc.d/init.d/functions
設置為 umask 022系統(tǒng)缺省的umask 值應該設定為022以避免守護進程創(chuàng)建所有用戶可寫的文件
三纪他、核心調整
設置項注釋:
1鄙煤、禁止core ? dump:
cat <>/etc/security/limits.conf
* soft core 0
* hard core 0
END_ENTRIES允許core ? dump會耗費大量的磁盤空間.
2、chown root:root /etc/sysctl.conf
chmod 600 /etc/sysctl.conflog_martians將進行ip假冒的ip包記錄到/var/log/messages
其它核心參數(shù)使用CentOS默認值茶袒。
四梯刚、需要關閉的一些服務
設置項注釋:
1、關閉Mail ? Server
chkconfig postfix off多數(shù)Unix/Linux系統(tǒng)運行Sendmail作為郵件服務器, 而該軟件歷史上出現(xiàn)過較多安全漏洞,如無必要,禁止該服務
五薪寓、SSH安全配置
設置項注釋:
1亡资、配置空閑登出的超時間隔:
ClientAliveInterval 300
ClientAliveCountMax 0Vi /etc/ssh/sshd_config
2澜共、禁用 ? .rhosts 文件
IgnoreRhosts yesVi /etc/ssh/sshd_config
3、禁用基于主機的認證
HostbasedAuthentication noVi /etc/ssh/sshd_config
4锥腻、禁止 ? root 帳號通過 SSH ? 登錄
PermitRootLogin noVi /etc/ssh/sshd_config
5嗦董、用警告的 ? Banner
Banner /etc/issueVi /etc/ssh/sshd_config
6、iptables防火墻處理 SSH 端口 # 64906
-A INPUT -s 192.168.1.0/24 -m state –state NEW ? -p tcp –dport 64906 -j ACCEPT
-A INPUT -s 202.54.1.5/29 -m state –state NEW -p ? tcp –dport 64906 -j ACCEPT這里僅作為參考瘦黑,需根據(jù)實際需要調整參數(shù)
7京革、修改 SSH ? 端口和限制 IP 綁定:
Port 64906
安裝selinux管理命令
yum -y install policycoreutils-python
修改 ? port contexts(關鍵),需要對context進行修改
semanage port -a -t ssh_port_t -p tcp 64906
semanage port -l | grep ssh????? —-查看當前SElinux 允許的ssh端口Vi /etc/ssh/sshd_config
僅作為參考幸斥,需根據(jù)實際需要調整參數(shù)匹摇。
8、禁用空密碼:
PermitEmptyPasswords no禁止帳號使用空密碼進行遠程登錄SSH
9甲葬、記錄日志:
LogLevel? ? INFO確保在 ? sshd_config 中將日志級別 ? LogLevel 設置為 ? INFO 或者 ? DEBUG廊勃,可通過?logwatch?or
logcheck?來閱讀日志。
10经窖、重啟SSH
systemctl restart sshd.service重啟ssh
六坡垫、封堵openssl的Heartbleed漏洞
檢測方法:在服務器上運行以下命令確認openssl版本
# openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013
以上版本的openssl存在Heartbleed bug,需要有針對性的打補丁钠至。
升及補陡鹋啊:
#yum -y install openssl
驗證:
# openssl version -a
OpenSSL 1.0.1e-fips 11 Feb 2013
built on: Thu Jun? 5 12:49:27 UTC 2014
以上built on 的時間是2014.6.5號,說明已經(jīng)修復了該漏洞棉钧。
注:如果能夠臨時聯(lián)網(wǎng)安裝以上補丁屿脐,在操作上會比較簡單一些。如果無法聯(lián)網(wǎng)宪卿,則有兩種處理辦法:首選從安裝光盤拷貝獨立的rpm安裝文件并更新的诵;另一個辦法是提前下載最新版本的openssl源碼,編譯并安裝佑钾。
七西疤、開啟防火墻策略
在CentOS7.0中默認使用firewall代替了iptables
service。雖然繼續(xù)保留了iptables命令休溶,但已經(jīng)僅是名稱相同而已代赁。除非手動刪除firewall兽掰,再安裝iptables孽尽,否則不能繼續(xù)使
用以前的iptables配置方法。以下介紹的是firewall配置方法:
#cd /usr/lib/firewalld/services?? //該目錄中存放的是定義好的網(wǎng)絡服務和端口參數(shù)鸳吸,只用于參考晌砾,不能修改快集。這個目錄中只定義了一部分通用網(wǎng)絡服務个初。在該目錄中沒有定義的網(wǎng)絡服務院溺,也不必再增加相關xml定義珍逸,后續(xù)通過管理命令可以直接增加聋溜。
#cd /etc/firewalld/services/?? ?????????????? //從上面目錄中將需要使用的服務的xml文件拷至這個目錄中撮躁,如果端口有變化則可以修改文件中的數(shù)值把曼。
# Check firewall state.
firewall-cmd --state
# Check active zones.
firewall-cmd --get-active-zones
# Check current active services.
firewall-cmd --get-service
# Check services that will be active after next reload.
firewall-cmd --get-service --permanent
查看firewall當前的配置信息嗤军,最后一個命令是查看寫入配置文件的信息叙赚。
# # Set permanent and reload the runtime config.
# firewall-cmd --permanent --zone=public --add-service=http
# firewall-cmd --reload
# firewall-cmd --permanent --zone=public --list-services打開HTTP服務端口并寫入配置文件
從配置文件中重載至運行環(huán)境中震叮。
# firewall-cmd --permanent --zone=public --remove-service=https
# firewall-cmd --reload
從已有配置中刪除一個服務端口
# firewall-cmd --permanent --zone=public --add-port=8080-8081/tcp
# firewall-cmd --reload
# firewall-cmd --zone=public --list-ports
8080-8081/tcp
# firewall-cmd --permanent --zone=public --list-ports
8080-8081/tcp
#
# firewall-cmd --permanent --zone=public --remove-port=8080-8081/tcp
# firewall-cmd --reload
打開或關閉一段TCP端口的方法冤荆,同理如果使用了其它非通用端口,那么也可以這么操作汹想。
# firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" \
source address="192.168.0.4/24" service name="http" accept"
# firewall-cmd --permanent --zone=public --remove-rich-rule="rule family="ipv4" \
source address="192.168.0.4/24" service name="http" accept"
The following command allows you to open/close ? HTTP access to a specific IP address.
八古掏、啟用系統(tǒng)審計服務
審計內容包括:系統(tǒng)調用槽唾、文件訪問庞萍、用戶登錄等忘闻。編輯/etc/audit/audit.rules,在文中添加如下內容:
-w /var/log/audit/ -k LOG_audit
-w /etc/audit/ -p wa -k CFG_audit
-w /etc/sysconfig/auditd -p wa -k CFG_auditd.conf
-w /etc/libaudit.conf -p wa -k CFG_libaudit.conf
-w /etc/audisp/ -p wa -k CFG_audisp
-w /etc/cups/ -p wa -k CFG_cups
-w /etc/init.d/cups -p wa -k CFG_initd_cups
-w /etc/netlabel.rules -p wa -k CFG_netlabel.rules
-w /etc/selinux/mls/ -p wa -k CFG_MAC_policy
-w /usr/share/selinux/mls/ -p wa -k CFG_MAC_policy
-w /etc/selinux/semanage.conf -p wa -k CFG_MAC_policy
-w /usr/sbin/stunnel -p x
-w /etc/security/rbac-self-test.conf -p wa -k CFG_RBAC_self_test
-w /etc/aide.conf -p wa -k CFG_aide.conf
-w /etc/cron.allow -p wa -k CFG_cron.allow
-w /etc/cron.deny -p wa -k CFG_cron.deny
-w /etc/cron.d/ -p wa -k CFG_cron.d
-w /etc/cron.daily/ -p wa -k CFG_cron.daily
-w /etc/cron.hourly/ -p wa -k CFG_cron.hourly
-w /etc/cron.monthly/ -p wa -k CFG_cron.monthly
-w /etc/cron.weekly/ -p wa -k CFG_cron.weekly
-w /etc/crontab -p wa -k CFG_crontab
-w /var/spool/cron/root -k CFG_crontab_root
-w /etc/group -p wa -k CFG_group
-w /etc/passwd -p wa -k CFG_passwd
-w /etc/gshadow -k CFG_gshadow
-w /etc/shadow -k CFG_shadow
-w /etc/security/opasswd -k CFG_opasswd
-w /etc/login.defs -p wa -k CFG_login.defs
-w /etc/securetty -p wa -k CFG_securetty
-w /var/log/faillog -p wa -k LOG_faillog
-w /var/log/lastlog -p wa -k LOG_lastlog
-w /var/log/tallylog -p wa -k LOG_tallylog
-w /etc/hosts -p wa -k CFG_hosts
-w /etc/sysconfig/network-scripts/ -p wa -k CFG_network
-w /etc/inittab -p wa -k CFG_inittab
-w /etc/rc.d/init.d/ -p wa -k CFG_initscripts
-w /etc/ld.so.conf -p wa -k CFG_ld.so.conf
-w /etc/localtime -p wa -k CFG_localtime
-w /etc/sysctl.conf -p wa -k CFG_sysctl.conf
-w /etc/modprobe.conf -p wa -k CFG_modprobe.conf
-w /etc/pam.d/ -p wa -k CFG_pam
-w /etc/security/limits.conf -p wa -k CFG_pam
-w /etc/security/pam_env.conf -p wa -k CFG_pam
-w /etc/security/namespace.conf -p wa -k CFG_pam
-w /etc/security/namespace.init -p wa -k CFG_pam
-w /etc/aliases -p wa -k CFG_aliases
-w /etc/postfix/ -p wa -k CFG_postfix
-w /etc/ssh/sshd_config -k CFG_sshd_config
-w /etc/vsftpd.ftpusers -k CFG_vsftpd.ftpusers
-a exit,always -F arch=b32 -S sethostname
-w /etc/issue -p wa -k CFG_issue
-w /etc/issue.net -p wa -k CFG_issue.net
重啟audit服務
#service auditd ?restart
九、部署完整性檢查工具軟件
AIDE(Advanced Intrusion Detection Environment,高級入侵檢測環(huán)境)是個入侵檢測工具本鸣,主要用途是檢查文檔的完整性荣德。
AIDE能夠構造一個指定文檔的數(shù)據(jù)庫提针,他使用aide.conf作為其配置文檔。AIDE數(shù)據(jù)庫能夠保存文檔的各種屬性饲宛,包括:權限
(permission)艇抠、索引節(jié)點序號(inode
number)家淤、所屬用戶(user)絮重、所屬用戶組(group)青伤、文檔大小狠角、最后修改時間(mtime)丰歌、創(chuàng)建時間(ctime)、最后訪問時間
(atime)眼溶、增加的大小連同連接數(shù)哩簿。AIDE還能夠使用下列算法:sha1、md5羡玛、rmd160稼稿、tiger让歼,以密文形式建立每個文檔的校驗碼或散
列號谋右。
在系統(tǒng)安裝完畢改执,要連接到網(wǎng)絡上之前坑雅,系統(tǒng)管理員應該建立新系統(tǒng)的AIDE數(shù)據(jù)庫终蒂。這第一個AIDE數(shù)據(jù)庫是系統(tǒng)的一個快照和以后系統(tǒng)升級的準繩。數(shù)據(jù)庫
應該包含這些信息:關鍵的系統(tǒng)二進制可執(zhí)行程式悉尾、動態(tài)連接庫构眯、頭文檔連同其他總是保持不變的文檔。這個數(shù)據(jù)庫不應該保存那些經(jīng)常變動的文檔信息壹店,例如:日
志文檔芝加、郵件、/proc文檔系統(tǒng)将塑、用戶起始目錄連同臨時目錄
安裝方法:
#yum -y install aide
注:如果主機不能聯(lián)網(wǎng)安裝AIDE,那么也可以從安裝光盤拷貝至目標主機敢辩。
檢驗系統(tǒng)文件完整性的要求:
因為AIDE可執(zhí)行程序的二進制文檔本身可能被修改了或數(shù)據(jù)庫也被修改了戚长。因此,應該把AIDE的數(shù)據(jù)庫放到安全的地方怠苔,而且進行檢查時要使用確保沒有被
修改過的程序同廉,最好是事先為AIDE執(zhí)行程序生成一份MD5信息。再次使用AIDE可執(zhí)行程序時嘀略,需要先驗證該程序沒有被篡改過恤溶。
配置說明:
序號參數(shù)注釋
1、/etc/aide.conf配置文件
2帜羊、databaseAide讀取文檔數(shù)據(jù)庫的位置咒程,默認為/var/lib/aide,默認文件名為aide.db.gz
3讼育、database_outAide生成文檔數(shù)據(jù)庫的存放位置帐姻,默認為/var/lib/aide剥纷,默認文件名為aide.db.new.gz
database_new在使用aide ? –compare命令時悠垛,需要在aide.conf中事先設置好database_new并指向需要比較的庫文件
4、report_url/var/log/aide,入侵檢測報告的存放位置
5、其它參數(shù)繼續(xù)使用默認值即可胡嘿。
建立拓瞪、更新樣本庫:
1)執(zhí)行初始化蛆橡,建立第一份樣本庫
# aide –init
# cd /var/lib/aide/
# mv aide.db.new.gz aide.db.gz ??//替換舊的樣本庫
2)更新到樣本庫
#aide –update
# cd /var/lib/aide/
# mv aide.db.new.gz aide.db.gz ??//替換舊的樣本庫
執(zhí)行aide入侵檢測:
1)查看入侵檢測報告
#aide –check
報告的詳細程度可以通過-V選項來調控睦焕,級別為0-255,-V0 最簡略,-V255 最詳細。
或
#aide –compare
這個命令要求在配置文件中已經(jīng)同時指定好了新炕泳、舊兩個庫文件籽腕。
2)保存入侵檢測報告(將檢查結果保存到其他文件)
aide?–check?–report=file:/tmp/aide-report-20120426.txt
3)定期執(zhí)行入侵檢測,并發(fā)送報告
#?crontab?-e
45?17?*?*?*?/usr/sbin/aide?-C?-V4?|?/bin/mail?-s?”AIDE?REPORT?$(date?+%Y%m%d)”?abcdefg#163.com
或
45?23 * * * aide -C >> /var/log/aide/’date +%Y%m%d’_aide.log
記錄aide可執(zhí)行文件的md5 checksum:
#md5sum /usr/sbin/aide
十窒悔、部署系統(tǒng)監(jiān)控環(huán)境
該段落因為需要安裝或更新較多的依賴包聋庵,所以目前僅作為參考。
為了在將來合適的時候拐迁,可以支持通過一臺集中的監(jiān)控主機全面監(jiān)控主機系統(tǒng)和網(wǎng)絡設備的運行狀態(tài)缓淹、網(wǎng)絡流量等重要數(shù)據(jù)伏蚊,可以在安全加固主機的系統(tǒng)中預先安裝和預留了系統(tǒng)監(jiān)控軟件nagios和cacti在被監(jiān)控主機中需要使用的軟件支撐環(huán)境帐萎。
由于以下軟件在安裝過程中需要使用源碼編譯的方式悠菜,由此而引發(fā)需要安裝GCC和OPENSSL-DEVEL。而為了安裝GCC和OPENSSL-
DEVEL而引發(fā)的依賴包的安裝和更新大約有20個左右充择。這就違返了安全加固主機要保持最小可用系統(tǒng)的設計原則琴儿,所以該部分監(jiān)控軟件支撐環(huán)境的部署工作不
作為默認設置嘁捷,但仍然通過下文給出了部署參考造成,以用于系統(tǒng)運行運維過程中需要部署全局性監(jiān)控系統(tǒng)時使用。
1)安裝net-snmp服務
#yum -y install net-snmp
#chkconfig snmpd off???? —將該服務設置為默認關閉雄嚣,這里只是為以后部署cacti先預置一個支撐環(huán)境
如果不能聯(lián)網(wǎng)安裝缓升,則可以使用安裝光盤港谊,并安裝以下幾個rpm包:
lm_sensors? 成福, net-snmp? ,? net-snmp-libs? ,?? net-snmp-utils
2)安裝nagios-plugin和nrpe
a. 增加用戶&設定密碼
# useradd nagios
# passwd nagios
b. 安裝Nagios 插件
# tar zxvf nagios-plugins-2.0.3.tar.gz
# cd nagios-plugins-2.0.3
# ./configure –prefix=/usr/local/nagios
# make && make install
這一步完成后會在/usr/local/nagios/下生成三個目錄include、libexec和share湖笨。
修改目錄權限
# chown nagios.nagios /usr/local/nagios
# chown -R nagios.nagios /usr/local/nagios/libexec
c. 安裝NRPE
# tar zxvf nrpe-2.15.tar.gz
# cd nrpe-2.15
# ./configure
# make all
接下來安裝NPRE插件致燥,daemon和示例配置文件。
c.1 安裝check_nrpe 這個插件
# make install-plugin
監(jiān)控機需要安裝check_nrpe 這個插件怖侦,被監(jiān)控機并不需要篡悟,在這里安裝它只是為了測試目的。
c.2 安裝deamon
# make install-daemon
c.3 安裝配置文件
# make install-daemon-config
現(xiàn)在再查看nagios 目錄就會發(fā)現(xiàn)有5個目錄了