linux主机安全加固-我的经验

2021年09月15日 阅读数:1
这篇文章主要向大家介绍linux主机安全加固-我的经验,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

说明:我并无一个系统的网络安全知识体系,随笔里面提到的内容是我的在从事运维行业这几年中总结出来的一点经验,仅供你们参考。java

 

  说到linux主机安全加固,我能够想到的就是三个方向吧,基线整改、访问控制和主机漏洞修复。运维小伙伴在作基线整改、设置访问策略或者修复主机漏洞前须要考虑的一个问题是这样操做后是否会对业务形成影响,因此在作安全加固前,必定要作好验证,相应的回退方案也要准备好。mysql

(1)基线整改linux

  基线扫描报告通常是由各安全厂商给出,好比绿盟、安恒、启明星辰等等,使用安全产品或离线脚本等对目标主机进行扫描,扫描完成后生成基线报告,关于基线报告的内容你们能够自行百度,通常报告中会包含“口令策略”、“系统服务”、“文件权限”、“日志审计”等等几个大类,每一个大类下面还会有一些具体基线项,针对每一项会有该项的检查结果、断定依据、检查点和加固方案等内容。下图是启明星辰的基线检查报告中的部份内容。redis

   基线检查报告中咱们须要关注的就是检查结果为“不合规”的检查项。而后根据检查点和加固方案进行整改。sql

(2)访问控制tomcat

linux主机的访问控制包括:帐号管理、配置iptables、文件权限管理。下面我主要说一下关于iptables如何进行规划和配置。安全

配置iptables:不少运维场景实际上是内网服务器iptables所有关闭,selinux所有disabled,并无作好每台主机的防火墙策略。假如给你一个工做,让你独立规划某个业务平台(10台主机)的防火墙策略,你该如何下手?bash

个人经验:服务器

①确认每台主机上部署了什么中间件,好比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)修改主机配置

作为运维人员仍是要根据具体问题,寻找相应的解决办法。