CentOS系統安全配置


一、賬號安全及權限

1.1、禁用root以外的超級用戶

1.1.1、檢測方法

Cat /etc/passwd 查看口令文件,文件格式如下:

Login_name : password: user_ID: group_ID: comment: home_dir: command

若user_ID = 0,則該用戶擁有超級用戶的權限,查看此處是否有多個ID=0

1.1.2、檢測命令:

[root@localhost ~/shell]# cat /etc/passwd | awk -F ':' '{print$1,$3}' | grep ' 0$'
root 0

1.1.3、備份方法:

[root@localhost ~/shell]# cp -p /etc/passwd /etc/passwd_bak
[root@localhost ~/shell]# ll /etc/pass*
-rw-r--r--. 1 root root 941 4月  22 14:34 /etc/passwd
-rw-r--r--. 1 root root 883 4月  22 13:14 /etc/passwd-
-rw-r--r--. 1 root root 941 4月  22 14:34 /etc/passwd_bak

1.1.4、加固方法:

使用命令passwd -l <username> 鎖定不必要的超級賬戶
使用命令passwd -u <username> 解鎖需要恢復的超級賬戶
或把用戶shell 改為 /sbin/nologin

1.2、刪除不必要的賬號

1.2.1、應該刪除所有默認的被操作系統本身啟動的並且不必要的賬號,Linux提供了很多默認賬號,而且賬號越多,系統就越容易受到攻擊。

1.2.2、可刪除的用戶,如:

adm 、lp 、sync、shutdown、halt、mail、operator、ftp等
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin

1.2.3、可刪除的組,如:

adm、lp、games、mail等
[root@localhost ~/shell]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mem:x:8:
kmem:x:9:
wheel:x:10:
cdrom:x:11:
mail:x:12:postfix

1.2.4、刪除命令:

userdel username
groupdel groupname

1.3、用戶口令設置:

用戶口令是Linux/Unix安全的一個基本起點,很多人使用的用戶口令過於簡單,這是相當於給侵入者敞開了大門,雖然理論上來說,只要有足夠的時間和資源可以利用,就沒有不能破解的用戶口令,但選取得當的口令是難於破解的,較好的用戶口令是那些只有他自己容易記得並理解的一串字符,最好不要把密碼記錄出來,如果有需要的話,也要保管好記錄密碼的文件,或者將這個文件加密。

生產環境口令要求:包含大小寫字母、數字和特殊字符四種,並且口令整體長度大於10位,每台服務器的口令不能相同。

修改密碼長度/etc/login.defs

[root@localhost ~/shell]# vim /etc/login.defs 
[root@localhost ~/shell]# cat /etc/login.defs | grep "PASS_MIN_LEN"
PASS_MIN_LEN    10

1.4、檢查空口令賬號

如果發現有賬號口令為空,需要強制加入符合規格的口令

檢查方法:

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

1.5、口令文件加鎖

chattr命令給下面的文件加上了不可更改屬性,從而防止非授權用戶獲得權限。

[root@localhost ~/shell]# chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow
[root@localhost ~/shell]# lsattr /etc/passwd /etc/shadow /etc/group /etc/gshadow
----i----------- /etc/passwd
----i----------- /etc/shadow
----i----------- /etc/group
----i----------- /etc/gshadow
lsattr只顯示文件屬性

1.6、設置root賬戶自動注銷時限:

修改環境引導文件/etc/profile 中的TMOUT參數,TMOUT參數按秒計算
​
HISTFILESIZE=__ //在這一行下面添加登出參數
TMOUT=300

改變這項設置后,必須先注冊用戶,在用該用戶登錄才能激活這個功能

如果想修改某個用戶的自動注銷時限,可以在用戶目錄下的 “.bashrc” 文件中添加這個值,以便系統對該用戶實行特殊的自動注銷時間

1.7、限制su命令

禁止任何人能夠su 切換到 root ,編輯/etc/pam.d/su 文件,增加如下行

auth            sufficient      /lib/security/pam_rootok.sodebug
auth            required        /lib/security/pam_wheel.sogroup=isd

這時,進wheel組的用戶可以su作為root。此后,如果希望用戶admin能夠作為root,可以運行如下命令:

usermod -G 10 admin

1.8、限制普通用戶無法執行關機、重啟、配置網絡等敏感操作

    刪除/etc/security/console.apps下的halt、reboot、poweroff、shutdown等程序的訪問控制文件,以禁止普通用戶執行該命令
[root@Huawei /etc/security/console.apps]# pwd
/etc/security/console.apps
[root@Huawei /etc/security/console.apps]# ll -la
total 8
drwxr-xr-x. 2 root root 4096 Mar 22  2017 .
drwxr-xr-x. 6 root root 4096 Mar 27  2018 ..

1.9、禁用 Ctrl+Alt+Delete組合鍵重新啟動機器命令

以下是限制快捷鍵重啟
[root@Huawei ~]# cat /etc/init/control-alt-delete.conf 
# control-alt-delete - emergency keypress handling
#
# This task is run whenever the Control-Alt-Delete key combination is
# pressed.  Usually used to shut down the machine.
#
# Do not edit this file directly. If you want to change the behaviour,
# please create a file control-alt-delete.override and put your changes there.
​
start on control-alt-delete  //注釋這一行和下一行
​
exec /sbin/shutdown -r now "Control-Alt-Delete pressed" //注釋

1.10、設置開機啟動服務文件權限

設置/etc/rc.d/init.d目錄下所有文件的許可權限,此目錄下文件為開機啟動項,運行如下命令:
chmod +R 700 /etc/rc.d/init.d/
只允許root讀寫執行上述所有腳本文件

1.11、避免login時顯示系統和版本信息

刪除信息文件:(按照實際情況)

/etc/issue            /etc/issue.net

二、限制網絡訪問

2.1、NFS訪問

使用NFS網絡文件系統服務,應該確保/etc/exports 具有最嚴格的訪問權限設置,也就是意味着不要使用任何通配符、不允許root寫權限並且只能安裝為只讀文件系統,編輯文件/etc/exports 並加入如下兩行

/dir/to/exporthost1.mydomain.com(ro,root_squash)
/dir/to/exporthost2.mydomain.com(ro,root_squash)

/dir/to/export 是我們想輸出的目錄, host.mydomain.com是登錄這個目錄的機器名,ro意味着mount成只讀系統,root_squash禁止root寫入該目錄,最后生效此改動,運行如下命令:

/usr/sbin/exportfs-a

2.2、登錄終端設置

/etc/securetty 文件指定了允許root登錄的tty 設備,有/bin/login/程序讀取,其格式是一個被允許的名字列表,可以編輯/etc/securetty ,注釋掉不想讓登錄的行:

[root@Huawei ~]# cat /etc/securetty 
console
vc/1
vc/2
vc/3
vc/4
vc/5
vc/6
vc/7
vc/8
vc/9
vc/10
vc/11

三、防止攻擊

3.1、防止IP 欺騙

編輯 host.conf 文件並增加如下幾行來防止IP欺騙攻擊

order hosts.bind    #名稱解釋順序
multi on            #允許主機擁有多個IP地址
nospoof on          #禁止IP地址欺騙

3.2、防止DOS攻擊

對系統所有的用戶設置資源限制可以防止DOS類型攻擊。如最大進程數和內存使用數量等

可以在/etc/security/limits.conf 中添加如下幾行:
*       hard    core    0
*       hard    rss     5000
*       hard    nproc   50

然后必須編輯/etc/pam.d/login 文件檢查下面一行是否存在

session    required    /lib/security/pam_limits.so

命令為禁止調試文件,限制進程數為 50 並且限制內存使用為 5 MB。

3.3、禁止ping,抵御SYN:

較安全性來看,如果沒人能ping通系統,安全性自然增加了。

在 /etc/rc.d/rc.local 文件中增加:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

SYN 攻擊是利用TCP/IP 協議 3次握手的原理,發送大量的建立連接的網絡包,但不實際連接,最終導致被攻擊服務器的網絡隊列被占滿,無法被正常用戶訪問。

Linux內核提供了若干SYN相關的配置,命令:

sysctl -a | grep syn

tcp_max_syn_backlog 是 SYN 隊列的長度,tcp_syncookies 是一個開關,是否打開SYN Ciikie的功能,
該功能可以防止部分SYN 攻擊,tcp_synack_retries和tcp_syn_retries定義SYN的重試次數。

加大SYN隊列長度可以容納更多等待連接的網絡連接數,打開SYN Cookie 功能可以組織部分SYN攻擊,降低重試次數也有一定效果。

調整上述設置的方法是:

vim /etc/rc.d/rc.local
​
sysctl -w net.ipv4.tcp_max_syn_backlog=2048 #增加SYN隊列長度到2048
sysctl -w net.ipv4.tcp_syncookies=l         #打開SYN COOKIE功能
sysctl -w net.ipv4.tcp_synack_retries=3     #降低重試次數
sysctl -w net.ipv4.tcp_syn_retries=3

 


免責聲明!

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



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