Linux主機加固


​前 言

Linux系統被應用於大部分企業的服務器上,因此在等保測評中主機加固也是必須要完成的一項環節。

由於在之后項目開始要進行主機加固,因此對linux的加固流程進行總結學習。

Linux的主機加固主要分為:賬號安全、認證授權、協議安全、審計安全。簡而言之,就是4A(統一安全管理平台解決方案)。

這邊就使用我自己kali的虛擬機進行試驗學習。

一、賬戶安全

1、口令生存期

gedit /etc/login.defs

1600708089_5f68ddf996484f612e5b1.png!small

在此處對密碼的長度、時間、過期警告進行修改

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

1600708103_5f68de07b8641d2b6151f.png!small

4、限制xx用戶登錄

/etc/hosts.deny

1600708116_5f68de148d8306434203b.png!small

添加內容:

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

1600708129_5f68de21abd0883b97e5a.png!small

增加

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 #查看口令文件,確認不必要的賬號。

1600708173_5f68de4db64d0470ba885.png!small

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

1600708194_5f68de62d6497a7e615e6.png!small

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

1600708222_5f68de7ea6790a364d64c.png!small

在頭部添加 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

1600708236_5f68de8cbd6e2020bdb53.png!small

增加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

1600708259_5f68dea320430c824d957.png!small

*.*         @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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM