1.找出不必要的服務(wù)
很明顯篡帕,服務(wù)器上跑的服務(wù)殖侵,并不是每個(gè)都有用的。強(qiáng)烈建議檢查并關(guān)掉不需要的服務(wù)镰烧,從而減少風(fēng)險(xiǎn)(多跑一個(gè)服務(wù)拢军,就可能多幾個(gè)漏洞)。
查詢(xún)運(yùn)行在runlevel 3的服務(wù)列表:
[afei@afei ~]# /sbin/chkconfig --list |grep '3:on'
關(guān)閉指定的服務(wù):
[afei@afei ~]# chkconfig ip6tables off
疑問(wèn):為什么查詢(xún)runlevel 3的服務(wù)怔鳖?
Linux系統(tǒng)有7個(gè)運(yùn)行級(jí)別(runlevel)茉唉,分別如下:
runlevel 0:系統(tǒng)停機(jī)狀態(tài),系統(tǒng)默認(rèn)運(yùn)行級(jí)別不能設(shè)為0败砂,否則不能正常啟動(dòng)赌渣;
runlevel 1:?jiǎn)斡脩?hù)工作狀態(tài),root權(quán)限昌犹,用于系統(tǒng)維護(hù)坚芜,禁止遠(yuǎn)程登陸;
runlevel 2:多用戶(hù)狀態(tài)(沒(méi)有NFS)斜姥;
runlevel 3:完全的多用戶(hù)狀態(tài)(有NFS)鸿竖,登陸后進(jìn)入控制臺(tái)命令行模式沧竟。這個(gè)運(yùn)行級(jí)別的服務(wù)會(huì)啟動(dòng)httpd,系統(tǒng)提供web server服務(wù)缚忧,所以主要查看這個(gè)運(yùn)行級(jí)別的服務(wù)悟泵;
runlevel 4:系統(tǒng)未使用,保留闪水;
runlevel 5:X11控制臺(tái)糕非,登陸后進(jìn)入圖形GUI模式;
runlevel 6:系統(tǒng)正常關(guān)閉并重啟球榆,默認(rèn)運(yùn)行級(jí)別不能設(shè)為6朽肥,否則不能正常啟動(dòng);
2.檢查監(jiān)聽(tīng)的網(wǎng)絡(luò)端口
通過(guò)netstat命名能夠看到所有已經(jīng)打開(kāi)的端口持钉,并且可以看到是哪些程序打開(kāi)的衡招。如果發(fā)現(xiàn)某些是必須要的,建議關(guān)掉:
[afei@afei~]# netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:2181 0.0.0.0:* LISTEN 48983/java
tcp 0 0 0.0.0.0:2182 0.0.0.0:* LISTEN 49051/java
3.優(yōu)化CRON任務(wù)
linux的cron可以執(zhí)行一些定時(shí)任務(wù)每强。并且還可以通過(guò)/etc/cron.allow 和 /etc/cron.deny 控制哪些用戶(hù)可以運(yùn)行JOB始腾,哪位用戶(hù)禁止運(yùn)行JOB。例如:
允許用戶(hù)afei允許JOB空执,執(zhí)行如下命令:
echo afei >> /etc/cron.allow
禁止所有用戶(hù)訪(fǎng)問(wèn)JOB浪箭,執(zhí)行如下命令:
echo ALL >>/etc/cron.deny
4.限制用戶(hù)使用舊密碼
linux用戶(hù)的舊密碼保存在文件/etc/security/opasswd中:
[root@LAPP-V1159 ~]# cat /etc/security/opasswd
afei:504:4:$1$MVAi/EpJ$iXXkV5r3Hjc8AaK2b5KyQ/,$1$AbpFPYaD$ZKj12lK6qaYUqgQnEdocd0,$1$POabjmzY$F4Cp6aTwN6RRk1KjZWm8A/,$1$LoHe5GHY$QjkLGqABANpLmlQsRB4WE.
檢查是否有開(kāi)啟限制使用舊密碼,在RHEL / CentOS / Fedora系統(tǒng)中辨绊,查看文件:/etc/pam.d/system-auth山林。在Ubuntu/Debian/Linux Mint系統(tǒng)中,查看文件:/etc/pam.d/common-password邢羔,需要下面兩行關(guān)鍵內(nèi)容驼抹,其中remember=4,表示不能使用最后4次密碼拜鹤,否則會(huì)報(bào)錯(cuò):Password has been already used. Choose another.:
auth sufficient pam_unix.so nullok try_first_pass
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=4
5.檢查密碼過(guò)期
密碼的過(guò)期屬性可以通過(guò)如下命令查看:
[root@root ~]# chage -l afei
Last password change : Sep 14, 2018
Password expires : Nov 13, 2018
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 60
Number of days of warning before password expires : 7
修改密碼的過(guò)期屬性可以執(zhí)行如下命令:
chage -M 60 -W 7 afei
說(shuō)明:
-M 60表示密碼最大有效期是60天框冀。
-W 7 表示密碼還有7天過(guò)期時(shí)給出告警提醒。
6.檢查密碼為空的用戶(hù)
密碼為空意味著只要知道用戶(hù)名就能訪(fǎng)問(wèn)敏簿,這非常危險(xiǎn)明也。因?yàn)橛脩?hù)與密碼信息保存在文件/etc/shadow中,且格式如下:
admin:$6$YTSkre3DLd4SAZ$Jy9piv/gPezhLrLzMMeUleV8F5DNjP:17765:0:99:5:::
afei:$6$.vMcyE9ss96$YNk2Q5qiS/SAeGCcyEFsmspkC5dr3OXfnN:17788:0:60:7:::
后面的幾個(gè)數(shù)字是密碼過(guò)期等屬性信息惯裕,上面已經(jīng)提及温数。
所以,檢查密碼為空的用戶(hù)蜻势,只需要執(zhí)行如下命令即可撑刺,如果發(fā)現(xiàn)有這樣的用戶(hù),通過(guò)root用戶(hù)執(zhí)行passwd username
強(qiáng)行修改它的密碼:
cat /etc/shadow | awk -F: '($2==""){print $1}'
7.鎖定&解鎖用戶(hù)
和刪除用戶(hù)賬戶(hù)不一樣握玛,這個(gè)只是限制用戶(hù)登錄够傍。只需要執(zhí)行如下密碼即可鎖定&解鎖用戶(hù):
[root@root ~]# passwd -l afei
Locking password for user afei.
passwd: Success
[root@root ~]# passwd -u afei
Unlocking password for user afei.
passwd: Success
說(shuō)明:
- 參數(shù)l表示lock甫菠,即鎖定用戶(hù)密碼;
- 參數(shù)u表示unlock冕屯,即解鎖用戶(hù)密碼寂诱;
8.關(guān)閉IPv6
現(xiàn)在IPv6基本上沒(méi)有實(shí)際使用,所以我們可以關(guān)掉它安聘,在文件/etc/sysconfig/network中增加如下兩行內(nèi)容即可:
NETWORKING_IPV6=no
IPV6INIT=no
9.復(fù)查日志
Linux服務(wù)器上很多的行為都會(huì)有記錄相應(yīng)的日志痰洒,簡(jiǎn)單列舉一些如下,如果有一些非法操作浴韭,就能從這些日志中造成蛛絲馬跡带迟,例如非法登陸,非法定時(shí)任務(wù)等:
- /var/log/message – Where whole system logs or current activity logs are available.
- /var/log/auth.log – Authentication logs.
- /var/log/kern.log – Kernel logs.
- /var/log/cron.log – Crond logs (cron job).
- /var/log/maillog – Mail server logs.
- /var/log/boot.log – System boot log.
- /var/log/mysqld.log – MySQL database server log file.
- /var/log/secure – Authentication log.
- /var/log/utmp or /var/log/wtmp : Login records file.
- /var/log/yum.log: Yum log files.
10.保持系統(tǒng)更新
總是讓系統(tǒng)更新最新發(fā)行的補(bǔ)丁包囱桨,因?yàn)檫@些補(bǔ)丁包會(huì)修復(fù)一些BUG:
sudo apt-get upgrade
yum check-update
yum upgrade
參考鏈接:https://www.tecmint.com/linux-server-hardening-security-tips/