linux主機安全加固-個人經驗


說明:我並沒有一個系統的網絡安全知識體系,隨筆里面提到的內容是個人在從事運維行業這幾年中總結出來的一點經驗,僅供大家參考。

 

  說到linux主機安全加固,我可以想到的就是三個方向吧,基線整改、訪問控制和主機漏洞修復。運維小伙伴在做基線整改、設置訪問策略或者修復主機漏洞前需要考慮的一個問題是這樣操作后是否會對業務造成影響,所以在做安全加固前,一定要做好驗證,相應的回退方案也要准備好。

(1)基線整改

  基線掃描報告一般是由各安全廠商給出,比如綠盟、安恆、啟明星辰等等,使用安全產品或離線腳本等對目標主機進行掃描,掃描完成后生成基線報告,關於基線報告的內容大家可以自行百度,一般報告中會包含“口令策略”、“系統服務”、“文件權限”、“日志審計”等等幾個大類,每個大類下面還會有一些具體基線項,針對每一項會有該項的檢查結果、判定依據、檢查點和加固方案等內容。下圖是啟明星辰的基線檢查報告中的部分內容。

   基線檢查報告中我們需要關注的就是檢查結果為“不合規”的檢查項。然后根據檢查點和加固方案進行整改。

(2)訪問控制

linux主機的訪問控制包括:賬號管理、配置iptables、文件權限管理。下面我主要說一下關於iptables如何進行規划和配置。

配置iptables:很多運維場景其實是內網服務器iptables全部關閉,selinux全部disabled,並沒有做好每台主機的防火牆策略。假如給你一個工作,讓你獨立規划某個業務平台(10台主機)的防火牆策略,你該如何下手?

我的經驗:

①確認每台主機上部署了什么中間件,比如tomcat、mysql、kafka、redis、自研程序,開啟了哪些端口。我常用的命令是 netstat 和 lsof 這兩個命令結合起來進行分析。舉個栗子:

以message-1服務器上kafka服務為例:通過netstat命令查看到該服務器上開啟9092端口

root@message-1:~# netstat -tlunp | grep 9092
tcp6       0      0 192.168.66.95:9092      :::*                    LISTEN      16437/java      
root@message-1:~#

然后,我們想看下現在9092端口都有哪些連接 ,我們可以用lsof命令查看,可以看到 public-1和public-2同message-1建立連接的,

root@message-1:~# lsof -i:9092
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    16437 root   97u  IPv6  58655      0t0  TCP message-1:9092 (LISTEN)
java    16437 root  114u  IPv6 158945      0t0  TCP message-1:9092->public-2:44528 (ESTABLISHED)
java    16437 root  157u  IPv6  79706      0t0  TCP message-1:9092->public-1:55198 (ESTABLISHED)
java    16437 root  158u  IPv6  79990      0t0  TCP message-1:9092->public-1:19143 (ESTABLISHED)
java    16437 root  186u  IPv6  73525      0t0  TCP message-1:9092->public-2:3933 (ESTABLISHED)
java    16437 root  187u  IPv6  73449      0t0  TCP message-1:9092->public-1:37570 (ESTABLISHED)
java    16437 root  188u  IPv6  73526      0t0  TCP message-1:9092->public-2:44505 (ESTABLISHED)
java    16437 root  189u  IPv6  73451      0t0  TCP message-1:9092->public-1:42576 (ESTABLISHED)
java    16437 root  194u  IPv6 158973      0t0  TCP message-1:9092->public-1:46261 (ESTABLISHED)
java    16437 root  212u  IPv6  79713      0t0  TCP message-1:9092->public-1:3805 (ESTABLISHED)
java    16437 root  213u  IPv6  79712      0t0  TCP message-1:9092->public-1:39880 (ESTABLISHED)
java    16437 root  214u  IPv6  79714      0t0  TCP message-1:9092->public-1:37571 (ESTABLISHED)
java    16437 root  215u  IPv6  79715      0t0  TCP message-1:9092->public-1:62056 (ESTABLISHED)
java    16437 root  217u  IPv6  79716      0t0  TCP message-1:9092->public-1:34639 (ESTABLISHED)
java    16437 root  218u  IPv6  79717      0t0  TCP message-1:9092->public-1:1315 (ESTABLISHED)
java    16437 root  219u  IPv6  79718      0t0  TCP message-1:9092->public-1:12077 (ESTABLISHED)
java    16437 root  220u  IPv6  79719      0t0  TCP message-1:9092->public-1:54739 (ESTABLISHED)
java    16437 root  221u  IPv6  79720      0t0  TCP message-1:9092->public-1:62374 (ESTABLISHED)
java    16437 root  222u  IPv6  73527      0t0  TCP message-1:9092->public-2:14295 (ESTABLISHED)
java    16437 root  223u  IPv6  77294      0t0  TCP message-1:9092->public-1:22867 (ESTABLISHED)
java    16437 root  224u  IPv6  72642      0t0  TCP message-1:9092->public-1:38827 (ESTABLISHED)
java    16437 root  225u  IPv6  72643      0t0  TCP message-1:9092->public-1:34489 (ESTABLISHED)
java    16437 root  226u  IPv6  79930      0t0  TCP message-1:9092->public-1:25297 (ESTABLISHED)
java    16437 root  230u  IPv6  73341      0t0  TCP message-1:9092->public-1:44317 (ESTABLISHED)
java    16437 root  231u  IPv6  81406      0t0  TCP message-1:9092->public-2:64640 (ESTABLISHED)
java    16437 root  233u  IPv6  80129      0t0  TCP message-1:9092->public-1:42729 (ESTABLISHED)
java    16437 root  234u  IPv6  80130      0t0  TCP message-1:9092->public-1:38797 (ESTABLISHED)
java    16437 root  235u  IPv6  73452      0t0  TCP message-1:9092->public-1:30003 (ESTABLISHED)
java    16437 root  236u  IPv6  77295      0t0  TCP message-1:9092->public-1:27578 (ESTABLISHED)
java    16437 root  237u  IPv6  77296      0t0  TCP message-1:9092->public-1:11596 (ESTABLISHED)
java    16437 root  238u  IPv6  77297      0t0  TCP message-1:9092->public-1:57318 (ESTABLISHED)
java    16437 root  240u  IPv6  77298      0t0  TCP message-1:9092->public-1:13398 (ESTABLISHED)
java    16437 root  241u  IPv6  80132      0t0  TCP message-1:9092->public-1:51598 (ESTABLISHED)
java    16437 root  242u  IPv6  80133      0t0  TCP message-1:9092->public-1:8571 (ESTABLISHED)
java    16437 root  243u  IPv6  80134      0t0  TCP message-1:9092->public-1:38849 (ESTABLISHED)
java    16437 root  244u  IPv6  80135      0t0  TCP message-1:9092->public-1:58260 (ESTABLISHED)
java    16437 root  246u  IPv6  80162      0t0  TCP message-1:9092->public-1:27890 (ESTABLISHED)
java    16437 root  247u  IPv6  80163      0t0  TCP message-1:9092->public-1:24008 (ESTABLISHED)
java    16437 root  253u  IPv6  83011      0t0  TCP message-1:9092->public-2:50076 (ESTABLISHED)
java    16437 root  254u  IPv6  83012      0t0  TCP message-1:9092->public-2:8293 (ESTABLISHED)
java    16437 root  255u  IPv6  83013      0t0  TCP message-1:9092->public-2:55405 (ESTABLISHED)
java    16437 root  256u  IPv6  83014      0t0  TCP message-1:9092->public-2:25186 (ESTABLISHED)
java    16437 root  257u  IPv6  83015      0t0  TCP message-1:9092->public-2:55834 (ESTABLISHED)
java    16437 root  258u  IPv6  83016      0t0  TCP message-1:9092->public-2:14103 (ESTABLISHED)
java    16437 root  259u  IPv6  83017      0t0  TCP message-1:9092->public-2:51100 (ESTABLISHED)
java    16437 root  260u  IPv6  73528      0t0  TCP message-1:9092->public-2:11548 (ESTABLISHED)
java    16437 root  261u  IPv6  73529      0t0  TCP message-1:9092->public-2:6708 (ESTABLISHED)
java    16437 root  262u  IPv6  83018      0t0  TCP message-1:9092->public-2:55665 (ESTABLISHED)
java    16437 root  266u  IPv6  73538      0t0  TCP message-1:9092->public-2:27084 (ESTABLISHED)
root@message-1:~# 

這時我們就知道public節點上有某個程序和message節點上的9092端口有建立連接。知道這些就夠了,這時message節點上的iptable的策略就是

配置主機 src ip src port dst ip dst port protocol
message-1 public主機ip any message主機ip any tcp

②這樣每台主機的防火牆策略就梳理出來了,然后按照梳理出來的策略編寫iptable規則,配置然后進行驗證,就可以了。注意首先應該放開的策略就是 ssh端口。當然你可能說我不放開會有問題嗎?沒有問題,就是服務器ssh連不上,然后被別人笑一下,被領導說一頓而已,問題不大。

③每台主機配置iptables規則時,出方向一般是不做限制的。只是針對入方向進行限制。

④有的同學可能會說了,iptable太復雜了,什么四表五鏈,很難。其實只需要在INPUT鏈上配置好相應的規則,你就可以完美處理好上面的工作。

(3)主機漏洞修復

關於主機漏洞修復,其實我也沒有那么多經驗,主要是根據主機漏洞報告進行整改,報告提出問題,谷歌給出答案,就這樣。

其實修復主機漏洞我遇到的解決途徑主要以下幾個:

(1)升級中間件版本:最常見的就是 openssh漏洞、tomcat漏洞、mysql漏洞等等

(2)修改中間件配置

(3)修改主機配置

做為運維人員還是要根據具體問題,尋找相應的解決辦法。

 


免責聲明!

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



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