Linux基線加固/整改
1.限制超級管理員遠程登錄
修改遠程管理程序ssh的配置文件
vi /etc/ssh/sshd_config
PermitRootLogin no
重啟sshd服務
systemctl restart sshd
2. 修改默認密碼生存周期
一個好的密碼時間策略如下:
vi /etc/login.defs
PASS_MAX_DAY 90 最長使用期限
PASS_MIN_DAY 0 最短使用期限
PASS_MIN_LIN 8 密碼最小長度
PASS_WARN_AGE 7 最長期限到期前7天提醒修改密碼
3. 設置密碼強度策略
目的:規范使用高強度密碼,延長被爆破的時間
修改pam認證文件
vi /etc/pam.d/system-auth
添加如下內容
password requisite pam_cracklib.so
try_first_pass retry=3 dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 minclass=3 minlen=8
centos7設置密碼復雜性
vi /etc/security/pwquality.conf
#添加如下內容
authconfig --passminlen=8 --update ? ?密碼最短8位
authconfig --enablereqlower --update ? ?包含一個小寫
authconfig --enablerequpper --update ? ?包含一個大寫
authconfig --enablereqdigit --update ? ? ? 包含一個數字
authconfig --enablereqother --update ? ? 包含一個字符
4. 設置強制密碼歷史(修改后的密碼不能和密碼歷史相似)
目的:防止被社工字典爆破
修改pam認證文件
vi /etc/pam.d/system-auth
#添加內容
password sufficient pam.unix.so sha512 shadow nullok try_first_pass use_authtok remember=5
5.限制硬件資源
目的:限制用戶對系統資源的使用,避免DDOS攻擊
vi?/etcsecurity/limits.conf
加入以下內容
* soft core 0* hard core 0
* hard rss 5000
* hard nproc 20
這些行的意思是:“core 0”表示禁止創建core文件;“nproc 20”把最多進程數量限制到20;“rss 5000”表示除了root之外,其他用戶都最多只能用5M內存。這些都只對登錄到系統中的用戶有效。通過這些限制,就能更好地控制系統中的用戶對進程、core文件和內存的使用情況。星號“*”表示的是所有登錄到系統的用戶。?
6.對用戶使用ls、rm設置別名
目的:讓ls隨時看清文件屬性,讓rm需要確認后刪除目標實施方法
修改當前用戶的登錄啟動腳本
vi?~/.bashrc
#追加別名命令
alias ls=“ls -alh”
alias rm=“rm -i”
7.?禁止任何人su為root賬戶
目的:避免任何人使用su切換到root,減少提權風險
修改su的配置文件
vi /etc/pam.d/su
#加入以下內容
auth sufficient /lib/security/pam_rootok.so
auth required /lib/security/pam_wheel.so
group=wheel
如果需要su切換,將用戶加入wheel組
gpasswd -a username wheel
8.?啟用日志記錄功能,使用日志服務器
目的:增加審計記錄,分布保存日志
修改應用服務器日志配置文件
vi?/etc/rsyslog.conf
#確認關鍵日志審計是否存在
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/var/log/secure
并添加兩行轉發日志信息
*.info;mail.none;authpriv.none;cron.none ? ? @IP地址? ? ? (一個@是udp,兩個@@是tcp)
authpriv.* ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?@IP地址
重啟服務
systemctl restart rsyslog
設置日志服務器的配置文件
vi?/etc/rsyslog.confss
開啟接收日志功能
$ModLoad imudp
$UDPServerRun 514
$template Romote,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%fromhost-ip%.log" //遠程日志路徑
:fromhost-ip,!isequal,"127.0.0.1" ? Remote //本地日志不存儲遠程文件
重啟服務
systemctl restart rsyslog
PS:記得要關閉iptables(iptables -F)
9.重要日志權限不應該高于640
目的:防止日志泄露敏感信息
ls -la /var/log/
chmod -R 640 /var/log
?10.關閉非加密遠程管理telnet
目的:降低被抓包后獲取系統關鍵信息
修改telnet配置文件
vi /etc/xinetd.d/telnet
#修改內容為
disable=yes
11. 使用加密的遠程管理ssh
目的:使用安全套接字層加密傳輸信息,避免被偵聽到敏感信息
修改配置文件
vi?/etc/ssh/sshd_config
#禁止root登錄,修改默認端口,開啟v2版本
PermitRootLogin no
Port 10022
Portocol 2
重啟服務
systemctl restart sshd
12.固化常用DNS解析
目的:降低被DNS劫持的可能
修改hosts文件:vi?/etc/hosts
#加入解析信息
61.59.123.22 www.baidu.com
13.?不響應ICMP請求
目的:不對ICMP請求作出響應,避免泄露信息
修改網絡策略布爾值
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
14. 禁止處理無源路由
目的:防止被無源數據包利用,防止ARP攻擊
檢查是否開啟了路由功能
sysctl -n net.ipv4.conf.all.accept_source_route
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
15.FTP使用黑白名單限制
檢查黑名單是否包含高危賬戶
cat /etc/ftpusers
root daemon bin sys adm lp uucp nuucp listen nobody noaccess nobody4
使用白名單文件
cat /etc/user_list
#配置文件中是否存在
user_deny=NO
userlist_enable=YES
16. FTP設置上傳文件后的默認權限
目的:防止被上傳執行腳本
檢查主配置文件/etc/vsftpd.conf是否存在如下內容
write_enable=YES
local_umask=022
anon_umask=022
17.去掉FTP的banner信息
目的:防止泄露服務信息
檢查主配置文件/etc/vsftpd/vsftpd.conf是否存在如下內容
#存在下面這行,則要刪掉
ftpd_banner=“Authorized users only. All activity may be monitored and reported.”?
18.?檢查賬戶目錄中是否存在高危文件.netrc、.rhosts(使用第三方遠程軟件時會生成這些記錄文件)
目的:防止被使用遠程登錄漏洞
檢查賬戶家目錄中是否存在遠程主機文件
for DIR in `cut -d":" -f6 /etc/passwd`; do
if [ -e $DIR/.netrc ]; then
echo "$DIR/.netrc"
fi
done//無返回值表示正常
19.隱藏系統提示信息
目的:避免通過系統提示信息獲取系統狀態
#查看登錄banner信息
cat /etc/issue
#清空banner文件
echo > /etc/issue
20. 設置登錄超時注銷
目的:防止疏忽導致命令行被他人使用
#修改/etc/profile
vi?/etc/profile
#在HISTSIZE下面加入
TMOUT=180
生效
source /etc/profile
21.關閉ctrl+alt+del重啟功能
目的:防止誤操作重啟服務器
# 修改配置文件
vi?/usr/lib/systemd/system/ctrl-alt-del.target
注釋所有內容
?22.檢查是否存在空口令賬號
不應該存在空口令的賬號。
#檢查是否有輸出賬號,若有輸出則該賬號為空口令賬號
awk -F: ‘($2 == “”) { print $1 }’ /etc/shadow
23. 檢查除root賬戶以外是否存在uid為0的賬戶
uid為0的賬戶應只有root
#檢查輸出條目是否只有root
awk -F: ‘($3 == 0) { print $1 }’ /etc/passwd