首頁 Linux教程Linux 系統的安全加固

Linux 系統的安全加固

運維派隸屬馬哥教育旗下專業運維社區,是國內成立最早的IT運維技術社區,歡迎關注公眾號:yunweipai
領取學習更多免費Linux云計算、Python、Docker、K8s教程關注公眾號:馬哥linux運維

Linux是一套免費使用和自由傳播的類Unix操作系統,作為一個開放源代碼的操作系統,Linux服務器以其安全、高效和穩定的顯著優勢而得以廣泛應用,但如果不做好權限的合理分配,Linux系統的安全性還是會得不到更好的保障,下面我們將主要使用RHEL7系統,分別從賬戶安全、登錄控制,SeLinux配置等,優化Linux系統的安全性。

早在1985年,美國國防部就已經提出了可信計算機系統評測標準TCSEC,TCSEC將系統分成ABCD四類7個安全級別。D級是安全級別最低的級別,C類為自主保護級別;B類為強制保護級別;A類為驗證保護類。

  • D級,最低安全性
  • C1級,主存取控制
  • C2級,較完善的自主存取控制(DAC)、審計
  • B1級,強制存取控制(MAC)
  • B2級,良好的結構化設計、形式化安全模型
  • B3級,全面的訪問控制、可信恢復
  • A1級,形式化認證

當前主流的操作系統安全性遠遠不夠,如Windows NT都只能達到C2級,安全性均有待提高,不過經過安全加固后的Linux系統可達到B1的安全級別。

控制系統賬戶: 系統賬戶默認存放在cat /etc/passwd中,你可以手動查詢用戶信息,我們直接除了Root賬戶需要登錄以外,其他的賬戶全部設置為禁止登錄。

使用 passwd -l 用戶名 鎖定用戶登錄,如下我們寫BASH腳本批量的完成這個過程。

#!/bin/bash
for temp in `cut -d ":" -f 1 /etc/passwd | grep -v "root"`do passwd -l $tempdone

修改口令生存期: 口令生存期,即用戶密碼的過期時間,默認在cat /etc/login.defs | grep "PASS" 中存儲著,我們需要把這個時間改小,如下配置即可。

[root@localhost ~]# vim /etc/login.defs
# Password aging controls:## PASS_MAX_DAYS Maximum number of days a password may be used.# PASS_MIN_DAYS Minimum number of days allowed between password changes.# PASS_MIN_LEN Minimum acceptable password length.# PASS_WARN_AGE Number of days warning given before a password expires.#PASS_MAX_DAYS 90 # 新建用戶密碼最長使用天數PASS_MIN_DAYS 0 # 新建用戶密碼最短使用天數PASS_MIN_LEN 7 # 新建用戶密碼到期提示天數PASS_WARN_AGE 10 # 最小密碼長度

設置口令復雜度: 設置新建用戶時輸入的口令復雜程度,該配置默認在cat /etc/pam.d/system-auth 文件中存放。

[root@localhost ~]# vim /etc/pam.d/system-auth
#%PAM-1.0# This file is auto-generated.# User changes will be destroyed the next time authconfig is run.
password required pam_cracklib.so try_first_pass retry=3 dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 minlen=10

在上方文件中添加如下一行配置,其含義是至少包含一個數字、一個小寫字母、一個大寫字母、一個特殊字符、且密碼長度>=10

限制登錄超時: 限制用戶登陸成功后的等待時間,當用戶終端無操作時則默認斷開連接。

[root@localhost ~]# vim /etc/profile
TMOUT=300export TMOUT

限制TTY嘗試次數: 該配置可以有效的防止,爆破登錄情況的發生,其配置文件在cat /etc/pam.d/login中添加如下配置,這個方法只是限制用戶從TTY終端登錄,而沒有限制遠程登錄。

[root@localhost ~]# vim /etc/pam.d/login
#%PAM-1.0auth required pam_tally2.so deny=3 lock_time=300 even_deny_root root_unlock_time=10
[root@localhost ~]# pam_tally2 --user lyshark 查詢遠程登錄次數

修改SSH遠程端口: 修改SSH登錄端口,這里可以修改為65534等高位端口,因為Nmap掃描器默認也就探測0-1024端口,這樣能夠有效的規避掃描。

[root@localhost ~]# vim /etc/ssh/sshd_config
# If you want to change the port on a SELinux system, you have to tell# SELinux about this change.# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER#Port 65534 # 登錄端口改為65534MaxAuthTries=3 # 密碼最大嘗試次數3
[root@localhost ~]# systemctl restart sshd[C:\Users]$ ssh root@192.168.1.30 6553

禁止Root用戶登錄: 首先創建一個普通用戶 lyshark ,然后配置好Sudo授權,需要時使用Sudo授權執行命令,禁止Root用戶登錄主機。

# --------------------------------------------------------------------------------------------# 創建普通用戶 lyshark[root@localhost ~]# useradd lyshark[root@localhost ~]# passwd lyshark
# --------------------------------------------------------------------------------------------# 給普通用戶添加Sudo授權[root@localhost ~]# vim /etc/sudoers
## The COMMANDS section may have other options added to it.#### Allow root to run any commands anywhere root ALL=(ALL) ALLlyshark ALL=(ALL) ALL# --------------------------------------------------------------------------------------------# 修改ROOT用戶禁止登錄系統[root@localhost ~]# vim /etc/ssh/sshd_configPermitRootLogin no
[root@localhost ~]# systemctl restart sshd

除此之外,你可以通過指定那些被允許用來使用SSH的用戶名,從而使得SSH服務更為安全。

[root@localhost ~]# vim /etc/ssh/sshd_config
AllowUsers lyshark admin # 指定允許登錄的用戶AllowGroup lyshark admin # 指定允許登錄的用戶組

登錄警告提示: 通過修改 /etc/motd/etc/issue.net來實現彈出警告提示框,當用戶遠程登陸以后就會提示以下的兩行文字。

[root@localhost ~]# vim /etc/motd[root@localhost ~]# vim /etc/issue.net
-----------------------------------------------------------------------------------------------Warning! If unauthorized, illegal login system, please exit immediately!!Your system fingerprint has been recorded!!-----------------------------------------------------------------------------------------------

限制Umask值: umask 值用于設置文件的默認屬性,系統默認的Umask 值是0022,也就是U權限不動,G權限減去2,O權限減2,這里為了防止上傳一句話木馬,我們將系統的Umask值改為0777,也就是說,當用戶新建任何文件的時候,其都不會具有(讀寫執行)權限,就算上傳成功也不具有任何權限。

[root@localhost ~]# echo "umask 0777" >> /etc/bashrc
[root@localhost ~]# touch test1
[root@localhost ~]# mkdir test2
[root@localhost ~]#
[root@localhost ~]# ls -lh
total 0
----------. 1 root root 0 Aug 25 05:46 test1
d---------. 2 root root 6 Aug 25 05:46 test2

鎖定系統文件: 鎖定文件是Linux系統中最為強大的安全特性,任何用戶(即使是root),都無法對不可修改文件進行寫入、刪除、等操作,我們將一些二進制文件設置為只讀模式,能夠更好的防止系統被非法篡改或注入惡意代碼,一般情況下/sbin 和/usr/lib兩個目錄內容能被設置為不可改變。

[root@localhost sbin]# chattr +i /sbin/[root@localhost sbin]# chattr +i /usr/sbin/[root@localhost sbin]# chattr +i /bin/[root@localhost sbin]# chattr +i /sbin/[root@localhost sbin]# chattr +i /usr/lib[root@localhost sbin]# chattr +i /usr/lib64[root@localhost sbin]# chattr +i /usr/libexec

限制GCC編譯器: 如果系統已經被黑客入侵,那么黑客的下一個目標應該是編譯一些POC文件,用來提權,從而在幾秒鐘之內就成為了root用戶,那么我們需要對系統中的編譯器進行一定的限制。

首先,你需要檢查單數據包以確定其包含有哪些二進制文件。然后將這些文件全部設置為000無權限。

[root@localhost ~]# rpm -q --filesbypkg gcc | grep "bin"
[root@localhost ~]# chmod 000 /usr/bin/c89 [root@localhost ~]# chmod 000 /usr/bin/c99 [root@localhost ~]# chmod 000 /usr/bin/cc[root@localhost ~]# chmod 000 /usr/bin/gcc[root@localhost ~]# chmod 000 /usr/bin/gcc-*[root@localhost ~]# chmod 000 /usr/bin/gcc-*

然后,單獨創建一個可以訪問二進制文件的編譯器的組,賦予他這個組相應的權限。

[root@localhost ~]# groupadd compilerGroup[root@localhost ~]# chown root:compilerGroup /usr/bin/gcc[root@localhost ~]# chmod 0750 /usr/bin/gcc

至此,任何試圖使用gcc的用戶將會看到權限被拒絕的信息。

[lyshark@localhost ~]$ gcc -c test.c -bash: /usr/bin/gcc: Permission denied

限制日志文件: 接著我們需要對日志文件,進行一定的限制,因為一般情況如果系統被入侵了,日志文件將對我們取證有所幫助,而一旦被入侵以后,黑客首先會想辦法清除這些痕跡,所以我們需要設置日志文件只能增加不能刪除屬性,防止其將日志刪除掉。

[root@localhost ~]# cd /var/log/[root@localhost log]# chattr +a dmesg cron lastlog messages secure wtmp 
[root@localhost log]# lsattr secure -----a---------- secure
[root@localhost log]# rm -fr secure rm: cannot remove ‘secure’: Operation not permitted

最小化防火墻規則: 配置防火墻,拒絕所有端口,只放行SSH,HTTP這兩個必要的端口。

[root@localhost ~]# iptables -F[root@localhost ~]# iptables -p INPUT DROP
[root@localhost ~]# iptables -I INPUT -p tcp --dport 6553 -j ACCEPT[root@localhost ~]# iptables -I OUTPUT -p tcp --dport 6553 -j ACCEPT[root@localhost ~]# iptables -A INPUT -p tcp --doprt 80 -j ACCEPT[root@localhost ~]# iptables -A INPUT -p tcp --dport 443 -j ACCEPT[root@localhost ~]# iptables-save

開啟SELinux: 由于系統管理員都會關閉,所以這里要手動開啟。

[root@localhost ~]# vim /etc/selinux/config
# This file controls the state of SELinux on the system.# SELINUX= can take one of these three values:# enforcing - SELinux security policy is enforced.# permissive - SELinux prints warnings instead of enforcing.# disabled - No SELinux policy is loaded.SELINUX=enforcing
[root@localhost ~]# setenforce 1

開啟SeLinux后,會發現sshd服務無法正常啟動了,這是因為SELinux策略生效了,下面我們需要修改配置。

SELinux放行SSH端口: 通過 Semanage 管理工具放行6553這個端口。

[root@localhost ~]# yum install -y policycoreutils-python-2.5-29.el7.x86_64
[root@localhost ~]# semanage port -l | grep sshssh_port_t tcp 22
[root@localhost ~]# semanage port -a -t ssh_port_t -p tcp 6553
[root@localhost ~]# semanage port -l | grep sshssh_port_t tcp 6553, 22

設置Web目錄權限: 通過 semanage 命令設置,web目錄權限。

[root@localhost html]# semanage fcontext -a -t httpd_sys_content_t /var/www/html/index.html
[root@localhost html]# ls -Z-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 index.html

鏈接:https://www.cnblogs.com/LyShark/p/11407373.html

(版權歸原作者所有,侵刪)

文末福利

Linux 系統的安全加固插圖
常見的100個Shell命令,超級實用!插圖4

掃描二維碼回復666添加好友

備注:【運維初中高】100%可以獲得資料哦

本文鏈接:http://www.thecarconnectin.com/46330.html

網友評論comments

發表回復

您的電子郵箱地址不會被公開。

暫無評論

Copyright ? 2012-2022 YUNWEIPAI.COM - 運維派 京ICP備16064699號-6
掃二維碼
掃二維碼
返回頂部
国产曰批视频免费观看完|久久久一本精品99久久精品66直播|色天使色偷偷AV一区二区三区|国产色秀视频在线播放|亚洲欧洲免费三级网站