前 言
Linux系統被應用於大部分企業的服務器上,因此在等保測評中主機加固也是必須要完成的一項環節。
由於在之后項目開始要進行主機加固,因此對linux的加固流程進行總結學習。
Linux的主機加固主要分為:賬號安全、認證授權、協議安全、審計安全。簡而言之,就是4A(統一安全管理平台解決方案)。
這邊就使用我自己kali的虛擬機進行試驗學習。
一、賬戶安全
1、口令生存期
gedit /etc/login.defs
在此處對密碼的長度、時間、過期警告進行修改
PASS_MAX_DAYS 90 #密碼最長過期天數
PASS_MIN_DAYS 10 #密碼最小過期天數
PASS_WARN_AGE 7 #密碼過期警告天數
如果修改設置有最小長度也需要修改
PASS_MIN_LEN 8 #密碼最小長度
2、口令復雜度(很重要)
password requisite pam_cracklib.so
在文件中找到
password requisite pam_cracklib.so
將其修改為:
password requisite pam_cracklib.so try_first_pass retry=3 dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 minlen=8
備注:至少包含一個數字、一個小寫字母、一個大寫字母、一個特殊字符、且密碼長度>=8
3、版本信息
cat /proc/version
4、限制xx用戶登錄
/etc/hosts.deny
添加內容:
sshd : 192.168.1.1
禁止192.168.1.1對服務器進行ssh的登陸
5、檢查是否有其他uid=0的用戶
awk -F “:” '($3==0) {print $1} ' /etc/passwd
6、登陸超時限制
cp -p /etc/profile /etc/profile_bak(備份) gedit /etc/profile
增加
TMOUT=300 export TMOUT
或者
echo 'export TMOUT=300'>>/etc/profile echo 'readonly TMOUT' >>/etc/profile source /etc/profile
7、檢查是否使用PAM認證模塊禁止wheel組之外的用戶su為root
gedit /etc/pam.d/su
新增
auth sufficient pam_rootok.so auth required pam_wheel.so use_uid
備注:auth與sufficient之間由兩個tab建隔開,sufficient與動態庫路徑之間使用一個tab建隔開
8、禁用無用賬戶
cat /etc/passwd #查看口令文件,確認不必要的賬號。
passwd -l user # 鎖定不必要的賬號
9、賬戶鎖定
gedit /etc/pam.d/system-auth
在文件中修改或者添加
auth required pam_tally.so onerr=fail deny=3 unlock_time=7200
鎖定賬戶舉例:
passwd -l bin passwd -l sys passwd -l adm
10、檢查系統弱口令
john /etc/shadow --single john /etc/shadow --wordlist=pass.dic
我這邊有報錯 就不展示了
使用passwd 用戶 命令為用戶設置復雜的密碼
二、協議安全
1、openssh升級(按需做)
yum update openssh
2、定時任務(防止病毒感染)
定時任務檢查:
crontab -l
一次性任務檢查:
at -l
3、限制ssh登錄(看是否需要)
首先cat /etc/ssh/sshd_config
查看PermitRootLogin是否為no
gedit /etc/ssh/sshd_config
PermitRootLogin no不允許root登陸
Protocol 2 修改ssh使用的協議版本
MaxAuthTries 3 修改允許密碼錯誤次數
或echo "tty1" > /etc/securetty
hmod 700 /root
4、限制su為root用戶
gedit /etc/pam.d/su
在頭部添加 auth required /lib/security/pam_wheel.so group=wheel
5、禁止root用戶登錄ftp
因為我的kali下沒有這個文件,因此借鑒一下網上的
cat /etc/pam.d/vsftpd Auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#其中file=/etc/vsftpd/ftpusers即為當前系統上的ftpusers文件.
echo “root” >> /etc/vsftpd/ftpusersv
6、防止flood攻擊
gedit /etc/sysctl.conf
增加net.ipv4.tcp_syncookies = 1
然后sysctl -p
7、禁ping
echo 0 > /proc/sys/net/ipv4/icmp_echo_igore_all
8、檢查異常進程
ps aux|sort -rn -k +3|head
#檢查cpu占用前10
ps aux|sort -rn -k +4|head
#檢查內存占用前10
9、關閉無效的服務及端口
比如郵箱
service postfix status
chkconfig --del postfix
chkconfig postfix off
比如cpus
service cups status
chkconfig --del cups
chkconfig cups off
10、設置防火牆策略
或者用防火牆策略:
service iptables status
echo '請根據用戶實際業務端口占用等情況進行設置!'
例如:
gedit /etc/sysconfig/iptables 添加如下策略
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT -A INPUT -m state --state NEW -m udp -p udp --dport 8080 -j ACCEPT
以下舉例:
iptables -I INPUT -s 22.48.11.11 -j DROP
# 22.48.11.11的包全部屏蔽
iptables -I INPUT -s 22.48.11.0/24 -j DROP
#22.48.11.1到22.48.11.255的訪問全部屏蔽
iptables -I INPUT -s 192.168.1.1 -p tcp --dport 80 -j DROP
# 192.168.1.1的80端口的訪問全部屏蔽
iptables -I INPUT -s 192.168.1.0/24 -p tcp --dport 80 -j DROP
#192.168.1.1到192.168.1.255的80端口的訪問全部屏蔽
service iptabels restart
#重啟防火牆
11、設置歷史記錄數量
cp /etc/profile /etc/profile_xu_bak(備份)
sed -i s/'HISTSIZE=1000'/'HISTSIZE=5000'/g /etc/profile(修改)
cat /etc/profile |grep HISTSIZE|grep -v export(檢查)
三、認證權限
1、配置用戶最小權限
chmod 644 /etc/passwd
chmod 400 /etc/shadow
chmod 644 /etc/group
2、文件與目錄缺省權限控制
cp /etc/profile /etc/profile.bak(備份)
gedit /etc/profile
增加
umask 027
source /etc/profile
四、日志審計
1、啟用遠程日志功能
gedit /etc/rsyslog.conf
*.* @Syslog日志服務器IP
###注意:*和@之間存在的是tab鍵,非空格。
2、檢查是否記錄安全事件日志
gedit /etc/syslog.conf 或者 /etc/rsyslog.conf
在文件中加入如下內容:
*.err;kern.debug;daemon.notice /var/log/messages
chmod 640 /var/log/messages
service rsyslog restart
3、日志保留半年以上
cp/etc/logrotate.conf /etc/logrotate.conf_xu_bak(備份)
sed -i s/'rotate 4'/'rotate 12'/g /etc/logrotate.conf(修改)
service syslog restart(重啟)
cat /etc/logrotate.conf |grep -v '#' |grep rotate(檢查)
轉 FreeBuf.COM