


Linux(RHEL5)系統安全常規優化
基本安全措施
1. 刪除或禁用系統中不使用的用戶和組
# passwd -l wang //禁用賬戶wang
# passwd -u wang //解鎖賬戶wang
或
# vi /etc/shadow //保存時為 :wq! 因為文件為只讀
在密碼字符前加兩個嘆號!
2. 確認程序或服務的登錄shell不可用
# vi /etc/passwd //將用戶的登錄shell改為/sbin/nologin
或
# usermod -s /sbin/nologin wang
3. 限制用戶的密碼有效期(最大天數)
# vi /etc/login.defs //只對新建立的用戶有效
PASS_MAX_DAYS 30
或
# chage -M 30 wang //只對已經存在的wang用戶有效
4. 指定用戶下次登錄時必須更改密碼
# chage -d 0 wang
或
# vi /etc/shadow
//將shadow文件中wang用戶LAST DAY 域(冒號 :分割的第三列)的值設為0
5. 限制用戶密碼的最小長度
# vi /etc/pam.d/system-auth
password requisite pam_cracklib.so try_first_pass retry=3 minlen=12
retry 重試時間 minlen 安全級別
6. 限制記錄命令歷史的條數
# vi /etc/profile
HISTSIZE=50 (默認為1000)
# echo “history -c “ >> ~/.bash_logout //注銷時清除命令歷史記錄
7. 設置閑置超時自動注銷終端
# vi /etc /profile
export TMOUT=600 //添加此行使用SU切換用戶身份
su [-] 用戶名
[-] 區別 :
使用:相當于 - -login,表示使用目標用戶的登錄shell環境,工作目錄,PATH變量等
不使用: 保持原有的用過環境不便
案例說明su的使用方法
允許wang用戶可以通過su命令切換為root身份,以便執行管理任務
禁止其他用戶使用su命令切換用過身份
(1) 將允許用戶加入wheel組
# gpasswd -a wang wheel
# id wang //查看wang用戶的附加組
(2) 修改PAM設置,添加pam_wheel認證
# vi /etc/pam.d/su
auth required pam_wheel.so use_uid //去掉該行的#號
(3) 驗證su權限
? 使用sudo提升執行權限
1./etc/sudoers配置文件---------visudo
sudo命令提供一種機制,只需要預先在/etc/sudoers配置文件中進行授權,即可以允許特定用戶以超級用戶(或其他普通用戶)的身份執行命令,而該用戶不需知道root用戶的密碼(或其他用戶)的密碼。常見語法格式如下:
user MACHINE=COMMANDS
user: 授權指定用戶
MACHINE主機: 授權用戶可以在哪些主機上使用
COMMANDS命令:授權用戶通過sudo調用的命令,多個命令用 , 分隔
/etc/sudoers文件配置中的用戶、主機、命令三個部分均為可以自定義別名進行代替,格式如下
User_Alias OPERATORS=jerry, tom, tsengyia
Host_Alias MAILSERVERS=smtp , pop
Cmnd_Alias SOFTWARE=/bin/rpm , /usr/bin/yum
2.使用sudo執行命令
sudo -l :查看當前用過被授權使用的sudo命令
sudo -k :清除timestamp時間戳標記,再次使用sudo命令時需要重新驗證密碼
sudo -v :重新更新時間戳(必要時系統會再次詢問用戶密碼)
案例說明:
因系統管理工作繁重,需要將用戶賬號管理工作交給專門管理組成員負責
設立組賬號 managers ,授權組內的各個成員用戶可以添加、刪除、更改用戶賬號
(1) 建立管理組賬戶 managers
# groupadd managers
(2) 將管理員賬號,如wang加入managers組
# gpasswd -M wang.nan managers
(3) 配置sudo文件,針對managers組開放useradd 、 userdel 等用戶管理命令的權限
# visudo
Cmns_Alias USERADM = /usr/sbin/useradd , /usr/sbin/userdel , /usr/sbin/usermod
%managers localhost = USERADM
(4) 使用wang賬號登錄,驗證是否可以刪除他、添加用戶
# su - wang
# whoami
# sudo -l
# sudo /usr/sbin/useradd user1
# sudo /usr/sbin/usermod -p “ “ user1
# sudo /usr/sbin/userdel -r user1
文件和文件系統安全優化文件系統層次的安全優化
1. 合理規劃系統分區
建議劃分為獨立分區的目錄
/boot :大小建議在200M以上。
/home :該目錄是用戶默認宿主目錄所在的上一級文件夾,若服務器用戶數量較多,通常無法預知每個用戶所使用的磁盤空間大小
/var : 該目錄用于保存系統日志、運行狀態、用戶郵箱目錄等,文件讀寫頻繁。占用空間可能會較多
/opt : 用于安裝服務器的附加應用程序及其他可選工具,方便擴展使用
2. 通過掛載選項禁止執行set位程序、二進制程序
使/var分區中程序文件的執行(x)權限失效,禁止直接執行該分區中二進制程序
# vi /etc/fstab
/dev/sdc1 /var ext3 defaults,noexec 1 2
# mount -o remount /var
如果想要從文件系統層面禁止文件的suid 或 sgid位權限,將上邊的noexec改為nosuid即可
3. 鎖定不希望更改的系統文件
使用 +i 屬性鎖定service 、passwd、grub.conf 文件(將不能正常添加系統用戶)
# chattr +i /etc/service /etc/passd /boot/grub.conf
解除/etc/passwd文件的 +i 鎖定屬性
# lsattr /etc/passwd //查看文件的屬性狀態
# chattr -i /etc/passwd
? 應用程序和服務
1. 關閉不必要的系統服務
2. 禁止普通用戶執行init.d目錄中的腳本
# chmod -R o-rwx /etc/init.d
或
# chmod -R 750 /etc/init.d
3. 禁止普通用戶執行控制臺程序
/etc/security/console.apps/目錄下每一文件對應一個系統程序,如果不希望普通用戶調用這些控制臺程序,可以將對應的配置文件移除
# cd /etc/security/console.apps/
# tar jcpvf /etc/conhlp.pw.tar.bz2 poweroff halt reboot - - remove
4. 去除程序文件中非必需的set-uid 或 set-gid 附加權限
查找系統中設置了set-uid或set-gid權限的文件,并結合 –exec 選項顯示這些文件的詳細權限屬性
# find / -type f perm +6000 -exec ls -lh { } \ ;
去掉程序文件的suid/sgid位權限
# chmod a-s /tmp/back.vim
編寫shell腳本,檢查系統中新增加的帶有suid或者sgid位權限的程序文件
(1) 在系統處于干凈狀態時,建立合法suid/sgid文件的列表,作為是否有新增可疑suid文件的比較依據
# find / -type f -prem +6000 > /etc/sfilelist
# chmod 600 /etc/sfilelist
(2) 建立chksfile腳本文件,與sfilelist比較,輸出新增的帶suid/sgid屬性的文件
# vi /usr/sbin/chksfile
#!/bin/bash
OLD_LIST=/etc/sfilelist
for i in ` find / -type -prem +6000 `
do
grep -F “$i” $OLD_LIST > /dev/null
[ $? -ne 0 ] && ls -lh $i
done
# chmod 700 /usr/bin/chkfile
(3) 執行chkfile腳本,檢查是否有新增suid/sgid文件
# cp /bin/touch /bin/mytouch //建立測試用程序文件
# chmod 4755 /bin/mytouch
# chksfile //執行程序腳本,輸出檢查結果
系統引導和登錄安全優化文件系統層次的安全優化
1. 合理規劃系統分區
建議劃分為獨立分區的目錄
/boot :大小建議在200M以上。
/home :該目錄是用戶默認宿主目錄所在的上一級文件夾,若服務器用戶數量較多,通常無法預知每個用戶所使用的磁盤空間大小
/var : 該目錄用于保存系統日志、運行狀態、用戶郵箱目錄等,文件讀寫頻繁。占用空間可能會較多
/opt : 用于安裝服務器的附加應用程序及其他可選工具,方便擴展使用
2. 通過掛載選項禁止執行set位程序、二進制程序
使/var分區中程序文件的執行(x)權限失效,禁止直接執行該分區中二進制程序
# vi /etc/fstab
/dev/sdc1 /var ext3 defaults,noexec 1 2
# mount -o remount /var
如果想要從文件系統層面禁止文件的suid 或 sgid位權限,將上邊的noexec改為nosuid即可
3. 鎖定不希望更改的系統文件
使用 +i 屬性鎖定service 、passwd、grub.conf 文件(將不能正常添加系統用戶)
# chattr +i /etc/service /etc/passd /boot/grub.conf
解除/etc/passwd文件的 +i 鎖定屬性
# lsattr /etc/passwd //查看文件的屬性狀態
# chattr -i /etc/passwd
? 應用程序和服務
1. 關閉不必要的系統服務
2. 禁止普通用戶執行init.d目錄中的腳本
# chmod -R o-rwx /etc/init.d
或
# chmod -R 750 /etc/init.d
3. 禁止普通用戶執行控制臺程序
/etc/security/console.apps/目錄下每一文件對應一個系統程序,如果不希望普通用戶調用這些控制臺程序,可以將對應的配置文件移除
# cd /etc/security/console.apps/
# tar jcpvf /etc/conhlp.pw.tar.bz2 poweroff halt reboot - - remove
4. 去除程序文件中非必需的set-uid 或 set-gid 附加權限
查找系統中設置了set-uid或set-gid權限的文件,并結合 –exec 選項顯示這些文件的詳細權限屬性
# find / -type f perm +6000 -exec ls -lh { } \ ;
去掉程序文件的suid/sgid位權限
# chmod a-s /tmp/back.vim
編寫shell腳本,檢查系統中新增加的帶有suid或者sgid位權限的程序文件
(1) 在系統處于干凈狀態時,建立合法suid/sgid文件的列表,作為是否有新增可疑suid文件的比較依據
# find / -type f -prem +6000 > /etc/sfilelist
# chmod 600 /etc/sfilelist
(2) 建立chksfile腳本文件,與sfilelist比較,輸出新增的帶suid/sgid屬性的文件
# vi /usr/sbin/chksfile
#!/bin/bash
OLD_LIST=/etc/sfilelist
for i in ` find / -type -prem +6000 `
do
grep -F “$i” $OLD_LIST > /dev/null
[ $? -ne 0 ] && ls -lh $i
done
# chmod 700 /usr/bin/chkfile
(3) 執行chkfile腳本,檢查是否有新增suid/sgid文件
# cp /bin/touch /bin/mytouch //建立測試用程序文件
# chmod 4755 /bin/mytouch
# chksfile //執行程序腳本,輸出檢查結果
系統引導和登錄安全優化開關機安全控制
1. 調整BIOS引導設置
將第一優先引導設備設為當前系統所在硬盤,其他引導設置為Disabled.為BIOS設置管理員密碼,安全級別調整為setup
2. 防止用戶通過Ctrl+Alt_Del熱鍵重啟系統
# vi /etc/inittab
# ca : :ctrlaltdel :/sbin/shutdown -t3 -r now //注掉該行
# init -q //使配置文件立即生效
? GRUB引導菜單加密
在grub.conf文件中設置明文密碼
# vi /boot/grub/grub.conf
password 123456 //僅在需要變更grub引導參數時才需要提供密碼
tiltle Red Enterprise Linux Server (2.6.18-8.el5)
root ( hd0,0 )
password 1234 //進入系統時輸入的密碼
在grub.conf文件中設置md5加密的密碼字符串
# vi mima
wang
wang
# grub-md5-crypt < mima >> /boot/grub/grub.conf
? 終端登錄控制
1. 即時禁止普通用戶登錄
# touch /etc/nologin //通過/etc/nologin文件即時禁止普通用戶登錄系統
2. 控制服務器開放的tty終端
# vi /etc/inittab
1. 控制允許root用戶登錄的tty終端
# vi /etc/securetty
1. 更改系統登錄提示,隱藏內核版本信息
通過修改/etc/issue、/etc/issue.net文件(分別對應本地登錄、網絡登錄)
# vi /etc/issue
Welcome to server
# cp -f /etc/issue /etc/issue.net
2. 使用pam_access認證控制用戶登錄地點
Pam_access認證讀取/etc/security/access.conf配置文件,該文件由權限、用戶、來源,組成,用冒號進行分隔
權限 :加號 + 或 減號 - ,分別表示允許、拒絕
用戶 : 用戶名部分,多個用戶名用空格分開,組使用@組名的形式表示。ALL表示所有用戶
來源 :表示用戶從哪個終端或遠程主機登錄,多個來源地點用空格分開
例:禁止除了root以外的用戶從tty1終端登錄系統
# vi /etc/pam.d/login //在PAM配置文件login中添加認證支持
account required pam_access.so
# vi /etc/security/access.conf
- : ALL EXCEPT root : tty1
例:禁止root用戶從192.168.1.0/24 、 172.16.0.0/8 網絡中遠程登錄
# vi /etc/pam.d/sshd //在PAM配置文件sshd中添加認證支持
account required pam_access.so
# vi /etc/security/access.conf
關健詞:Linux(RHEL5)
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解