小議Linux安全防護(一)

wyzsk發表於2020-08-19
作者: Blood_Zero · 2016/01/08 16:11

0x00 前言


在linux伺服器隨處可見的網路環境中,網路運維人員保障Linux安全就成了必要條件。當然現在有很多的硬體防火牆以及WAF,但是那不是小資企業可以hold住的,本文從軟體以及服務配置方面簡單總結Linux安全防護。

0x01 使用軟體級別安全防護


1、使用SELinux

SELinux是用來對Linux進行安全加固的,它可以讓你指定誰可以增加檔案,誰只可以刪除檔案,或者誰還可以移動檔案,從檔案的層次上來說,它相當於一個ACL;

配置檔案:/etc/selinux/config (centos7系統)

狀態:getenforce 與 setenforce命令可以修改

  • disabled:關閉策略
  • permissive:啟用SELinux但是即使違反了策略它也會讓你繼續操作;僅僅一個記錄功能
  • enforcing:啟用SELinux,違反策略時阻止你的操作

檢視檔案標籤:ls -Z

p1

在檔案所屬組的後面就是我們檔案的標籤,它表示SELinux對這個檔案的策略

修改策略:chcon與semanage

p2

恢復檔案標籤:restorecon

常見場景分析:

當我們需要配置一個Web目錄時,如果Web目錄不是預設的目錄,訪問可能出現403

這個時候,我們需要將我們的Web目錄的標籤修改為httpd_sys_content_t

p3

2、使用iptables

Iptables是一個應用框架,它允許使用者為自己系統建立一個強大的防火牆。它是用來設定、維護和檢查Linux核心中IP包過濾規則的。

配置檔案:/etc/sysconfig/iptables-config (centos7系統)

這裡貼出一個在部落格園的關於iptables的使用:
http://www.cnblogs.com/JemBai/archive/2009/03/19/1416364.html

3、使用firewall

在centos7中,防火牆具備很強的軟體防護功能,在預設程度上:

p4

預設開啟了dhcpv6客戶端以及ssh防火牆功能;

防火牆具備很多功能,同時他具備圖形介面與命令列介面兩種模式,對於基本的防火牆配置,個人推薦使用命令列模式,當我們需要配置一些負責的規則策略時,就可以使用我們的圖形介面:

p5

4、使用入侵檢測系統

IDS:入侵檢測系統,在linux中有針對它的開源的入侵檢測系統:Snort;

0x02 安全配置服務


1、SSH訪問控制

儘可能的取消telnet登入,採用ssh進行登入;

ssh配置檔案:/etc/ssh/sshd_config

  • 修改預設埠:Port 10512
  • 不允許使用空密碼:PermitEmptyPasswords no
  • 不允許root使用者登入:PermitRootLogin no
  • 不允許輸入密碼登入:PasswordAuthentication no (可以很好的防止爆破,但是如果金鑰檔案洩漏則會出現安全問題,當然可以透過其他方式來進行防禦)
  • 重新生成金鑰:KeyRegenerationInterval 1h (如果我們使用金鑰進行登陸,可以設定多少時間後金鑰重新生成)
  • 金鑰加密方式:RSAAuthentication yes (是否使用RSA進行加密)

2、禁用不必要的服務及使用者

在我們的Linux系統中有很多使用者不需要的服務和應用,然而這些服務還是會執行,這樣會導致攻擊者利用這些服務的漏洞來進行攻擊,最好的辦法就是停止這些服務。

比如我們的Linux伺服器只是一臺Web伺服器,那麼就不需要ftp、smtp等服務我們就可以關閉;當然我們也可以讓服務不允許透過防火牆,這樣透過防火牆來保護我們的伺服器也可以。

任務 舊指令 新指令
使某服務自動啟動 chkconfig --level 3 httpd on systemctl enable httpd.service
使某服務不自動啟動 chkconfig --level 3 httpd off systemctl disable httpd.service
檢查服務狀態 service httpd status systemctl status httpd.service(服務詳細資訊) systemctl is-active httpd.service(僅顯示是否 Active)
顯示所有已啟動的服務 chkconfig --list systemctl list-units --type=service
啟動某服務 service httpd start systemctl start httpd.service
停止某服務 service httpd stop systemctl stop httpd.service
重啟某服務 service httpd restart systemctl restart httpd.service

在linux系統中,系統執行所必須的服務

服務名稱 說明
acpid 用於電源管理,對於筆記本和臺式電腦很重要
apmd 高階電源能源管理服務,可用於監控電腦
kudzu 檢測硬體是否變化的服務
crond 為Linux下自動安排的程式提供執行服務
iptables/firewall Linux內建的防火牆
xinetd 支援多種網路服務的核心守護程式
syslog 記錄系統的日誌服務
network 網路服務,要用網必須啟動這個服務

同時,一臺新的Linux作業系統中有很多我們用不到的角色使用者,我們同樣可以刪除這些使用者,或者將這些使用者設定為不能登入系統;

p6

可被刪除的使用者:adm、lp、sync、shutdown、halt、operator、games

  • userdel adm
  • groupdel adm

p7

可被刪除的使用者組:adm、lp、games、dip等;

當然具體的需要還是要根據使用者的選擇,同時我們也可以修改使用者的bash檔案禁止使用者登入系統也是防護方式的一種。

#!bash
usermod -s /sbin/nologin username

3、使用全盤加密

加密的資料更難被竊取,在安裝Linux系統的時候我們可以對整個系統進行加密,採用這種方式,即使有人進入了我們的系統,也不能得到我們的資料;

4、Web應用配置

提供Web服務時,需要更新我們元件的補丁,防止利用已知漏洞來進行攻擊;

嚴格限制許可權,防止得到Web Shell以後直接得到系統許可權;

限制Web使用者只能訪問Web目錄,不能訪問其他目錄;

嚴格控制提供上傳點的檔案型別

等等

5、系統安全

使用su 與 sudo命令時:

  • su:切換使用者
  • sudo:提升許可權,所以sudo是su的特定一種形態

這裡是指定可以使用su命令的使用者

p8

注意紅色圈起來的一行,就是啟用pam_shell認證,這個時候沒有加入wheel的使用者就不能使用su命令了!

p9

對於sudo的一些配置vim /etc/sudoers在centos7中,如果你不想修改原來的配置檔案,你可以將這一行includedir /etc/sudoers.d的註釋去掉,然後在/etc/sudoers.d/目錄下寫我們的配置檔案

p10

刪除提示資訊

在linux的4個檔案中存在提示系統的一些資訊:

  • /etc/issue,/etc/issue.net:這兩個檔案記錄了作業系統的名稱及版本號,使用者透過本地終端就會顯示/etc/issue檔案中內容,透過ssh或telnet登入就會顯示/etc/issue.net的檔案內容;
  • /etc/redhat-release:這個檔案也記錄了作業系統名稱和版本號;
  • /etc/motd:這個檔案是系統的公告資訊,每次使用者登入後就會顯示在終端上;

未完待續~~~

本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!

相關文章