linux系統加固方案


1、刪除或停用多余用戶:

#刪除默認賬號   

userdel -r 用戶名

#查看用戶狀態

 

passwd -S 用戶名

 

 

 

 

#鎖定無關用戶:這個方法修改之后雖然不能直接登錄,但是可以su登錄

passwd -l 用戶名   或usermod -L 用戶名

 

#禁用無用賬號、修改用戶的shell為/sbin/nologin:這個方法修改之后不再能登錄,修改之后可以去/etc/passwd查看$7

usermod -s /sbin/nologin 用戶名

 

2、修改默認賬號和口令:

usermod -l 新用戶 舊用戶
sudo pkill -9 -u 舊用戶名    殺掉舊用戶進程

sudo usermod -d /home/新用戶名 -m 新用戶名

修改口令:

passwd 用戶名

 

3、賬號配置鎖定閾值

1、執行命令 vim /etc/pam.d/system-auth或vim /etc/pam.d/ login

2、執行命令 vim /etc/pam.d/sshd 

3、在上面2行編輯中添加配置

auth required pam_tally2.so onerr=fail deny=3 unlock_time=30 even_deny_root root_unlock_time=100

設置為密碼連續錯誤3次鎖定,鎖定時間30秒,root密碼連續錯誤3次鎖定,時間為 100秒 

 

 

4、禁止root賬戶登錄

vim /etc/ssh/sshd_config

找到這一行,並將其改為 no

重啟sshd服務

systemctl restart sshd

 

5、限制能夠su為root的用戶(因為禁止root登錄之后,其他用戶還是可以su到root的)

操作目的:檢查是否使用pam認證模塊禁止wheel組之外的用戶su為root

檢查方法:cat /etc/pam.d/su,查看是否有auth required /lib/security/pam_wheel.so這樣的配置條目

加固方法:vim /etc/pam.d/su

在頭部添加 auth required /lib/security/pam_wheel.so group=wheel

 

6、使用非root賬戶,並授權root權限

useradd sss     #新增用戶sss

passwd sss      #設置sss用戶密碼

chmod -v u+w /etc/sudoers      #增加 sudoers 文件的寫的權限,默認為只讀

vim /etc/sudoers     #修改sudoers,增加下面一行后,保存退出

 

chmod -v u-w /etc/sudoers      #刪除 sudoers 的寫的權限

 

7、超時自動斷開ssh連接

vim /etc/profile在末尾加上TMOUT=100   (單位秒) 

source /etc/profile  使修改生效

表示100秒內不操作,自動退出登錄

 

8、禁用無關的組

 

vim /etc/group

 

在需要禁用的組前面加上#

 

 

 

 

 

 

7、口令定期修改

方法一:chage -M 30 test

表示設置test這個用戶的密碼有效期30天

方法二:

vim /etc/login.defs 修改配置文件

PASS_MAX_DAYS   60  新建用戶的密碼最長使用天數
PASS_MIN_DAYS   0     新建用戶的密碼最短使用天數
PASS_WARN_AGE   7   新建用戶的密碼到期提前提醒天數

 

8、口令的復雜度設置

vim /etc/pam.d/system-auth

 

找到 password requisite pam_cracklib.so這么一行替換成如下(沒有就直接新增一行吧):
password requisite pam_cracklib.so retry=5 difok=3 minlen=10 ucredit=-1 lcredit=-3 dcredit=-3 dictpath=/usr/share/cracklib/pw_dict
參數含義:
嘗試次數:5
新舊密碼最少不同字符:3
最小密碼長度:10
最少大寫字母:1
最少小寫字母:3
最少數字:3

 

9、查看linux賬號鎖定情況:

cat /etc/shadow

文件中字段主要含義為:登錄名:加密口令:最后一次修改時間:最小時間間隔:最大時間間隔:警告時間:不活動時間:失效時間:標志

  1. “登錄名”是與/etc/passwd文件中的登錄名相一致的用戶賬號
  2. “口令”字段存放的是加密后的用戶口令字:

    1. 如果為空,則對應用戶沒有口令,登錄時不需要口令;
    2. 星號代表帳號被鎖定;
    3. 雙嘆號表示這個密碼已經過期了;
    4. $6$開頭的,表明是用SHA-512加密;
    5. $1$表明是用MD5加密;
    6. $2$ 是用Blowfish加密;
    7. $5$ 是用 SHA-256加密;

查看linux用戶禁用情況:/etc/passwd

awk -F: '{if($7=="/sbin/nologin") {printf "\033[1;31m%s'、'\033[0;39m",$1}}' /etc/passwd可以查看出禁用的賬號

因為需要用shell腳本去直接顯示出禁用和啟用的賬號,所以整理出shell腳本,執行之后可以展示啟禁用的賬號

 

 

10、檢查特殊賬號:查看空口令和root權限的賬號

查看root權限賬號:通過判斷uid是否為0來查找系統是否存在特權用戶,使用命令awk即可查出       

awk -F: '$3==0 {print $1}' /etc/passwd

uid為0的賬號應該只有root 使用usermod -u uid 用戶名

 

查看是否存在空口令用戶:通過使用命令來查找是否存在該字段長度為0的用戶

awk -F: 'length($2)==0 {print $1}' /etc/shadow

 

awk -F: '($2 == "") { print $1 }' /etc/shadow

 

檢查是否存在空口令用戶,如果存在則設置密碼

 

passwd 用戶名

 

 

11、bash歷史命令、設置bash保留歷史命令的條數(上下鍵只能顯示你設置的歷史命令條數)

vim /etc/profile 修改配置文件

HISTSIZE=5  即保留5條命令

 

12、鎖定關鍵文件/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow、/etc/inittab,鎖定關鍵的系統文件可以防止服務器提權后被篡改

1、對關鍵文件進行加鎖,任何用戶都不能對這些文件進行修改和刪除,包括root用戶,除非解鎖后才可修改

chattr +i 文件名

比如chattr +i /etc/shadow

2、解鎖

chattr -i 文件名

3、查看加鎖狀態,顯示了就表示加鎖

lsattr 文件名

 

13、設置history命令時間戳

vim /etc/profile
在文件的末尾添加參數
export HISTTIMEFORMAT="%F %T `whoami` "
source /etc/profile 使配置生效
在ssh中輸入history顯示情況如下:

 

 
        

 14、防止IP Spoof

IP spoof即IP地址欺騙,是一台主機設備冒充另外一台主機的IP地址,與其它設備通信,從而達到某種目的技術

 
        

vim /etc/host.conf添加nospoof on

 

 

15、禁止IP源路由

允許 IP 源路徑路由(IP source routing)會使得黑客能夠欺騙你的計算機,截取信息包.強烈建議禁止,使用如下命令:

for f in /proc/sys/net/ipv4/conf/*/accept_source_route; do
echo 0 > $f
done

將accept_source_route 設置為0,並將上述命令加到/etc/rc.d/rc.local 中去,每次重啟動將自動執行

 

16、刪除潛在危險文件

.rhosts,.netrc,hosts.equiv等文件都具有潛在的危險,如果沒有應用,應該刪除  
操作步驟
find / -name .rhosts  
find / -name .netrc
find / -name hosts.equiv
若存在相關文件,加上.bak后綴
mv .rhost .rhost.bak  
mv .netr .netr.bak  
mv hosts.equiv hosts.equiv.bak 

 

17、檢查是否禁用root用戶或匿名用戶登錄FTP(見博客https://www.cnblogs.com/mihoutao/p/13373220.html

 

18檢查用戶目錄缺省訪問權限設置

編輯vim /etc/login.defs,在文件中設置umask 027或UMASK 027,表示其他用戶無法使用這個文件或文件夾

因此新建文件夾是777-027=750(rwxr-x---),新建文件是666-027=640(rw-r-----)將缺省目錄訪問權限設置為750,文件訪問權限設置為640

 

 19、禁止coredump打開,打開coredump會耗費大量的磁盤空間

ulimit -c 輸出如果為0,則說明coredump沒有打開

ulimit -c 輸出如果為unlimited,則說明coredump已打開

通過 ulimit -c unlimited 就可以打開它,

通過 ulimit -c 0 就可以關閉它

 

通過上面的命令修改后,一般都只是對當前會話起作用,當你下次重新登錄后,還是要重新輸入上面的命令,所以很麻煩。我們可以把通過修改/etc/profile文件 來使系統每次自動打開。 步驟如下:

1.首先打開/etc/profile文件 一般都可以在文件中找到 這句語句:ulimit -S -c 0 > /dev/null2>&1.ok,根據上面的例子,我們只要把那個0 改為unlimited 就ok了。然后保存退出。

2.通過source /etc/profile 使當期設置生效。

3.通過ulimit -c 查看下是否已經打開。

 

20、停止或禁用與系統無關的服務

who -r 或 runlevel查看當前init的級別

 

chkconfig --list查看當前服務列表的狀態

 

根據實際情況在各init級別啟用、禁用、重置服務chkconfig --level 級別 服務名 on|off|reset

 

 


免責聲明!

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



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