一、賬號安全及權限
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
