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

  说到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)修改主机配置

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

linux主机安全加固-个人经验的更多相关文章

  1. Linux主机操作系统加固规范

      对于企业来说,安全加固是一门必做的安全措施.主要分为:账号安全.认证授权.协议安全.审计安全.总的来说,就是4A(统一安全管理平台解决方案),账号管理.认证管理.授权管理.审计管理.用漏洞扫描工具 ...

  2. 线上Linux服务器运维安全策略经验分享

    线上Linux服务器运维安全策略经验分享 https://mp.weixin.qq.com/s?__biz=MjM5NTU2MTQwNA==&mid=402022683&idx=1&a ...

  3. Linux服务器运维安全策略经验分享

    http://jxtm.jzu.cn/?p=3692 大家好,我是南非蚂蚁,今天跟大家分享的主题是:线上Linux服务器运维安全策略经验.安全是IT行业一个老生常谈的话题了,从之前的“棱镜门”事件中折 ...

  4. 【微学堂】线上Linux服务器运维安全策略经验分享

      技术转载:https://mp.weixin.qq.com/s?__biz=MjM5NTU2MTQwNA==&mid=402022683&idx=1&sn=6d403ab4 ...

  5. Linux主机上使用交叉编译移植u-boot到树莓派

    0环境 Linux主机OS:Ubuntu14.04 64位,运行在wmware workstation 10虚拟机 树莓派版本:raspberry pi 2 B型. 树莓派OS: Debian Jes ...

  6. Linux主机上实现树莓派的交叉编译及文件传输,远程登陆

    0.环境 Linux主机OS:Ubuntu14.04 64位,运行在wmware workstation 10虚拟机 树莓派版本:raspberry pi 2 B型. 树莓派OS:官网下的的raspb ...

  7. Linux系统安全加固(一)

    Linux系统安全加固(一)     去年8月,某所网站遭黑客攻击瘫痪虽然港交所随后及时启用备用系统,但还是致使7支股票1支债卷被迫停牌,次日再次遭受攻击而瘫痪:在去年年底继CSDN信息安全出现之后, ...

  8. Linux主机共享目录给Windows主机的方法

    Linux主机共享目录可以通过samba来实现 首先,来看下百科上关于samba的介绍: Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成.SMB(Ser ...

  9. 远程联机linux主机

    远程联机linux主机 推荐使用 ssh  如 ssh user@www.abc.com(ssh使用公钥+私钥非对称加密,数据传输安全,不要使用telnet) 传输文件:sftp 或者 scp 若想使 ...

随机推荐

  1. swift文件调用oc分类时崩溃解决办法(可能全网唯一)

    背景 oc为基础创建的sdk混编工程,在被sdk关联的混编demo工程中swift文件调用时,会崩溃,提示找不到sdk中oc分类方法.常规的,在demo中设置-Objc和-all_load也还是会崩. ...

  2. 100的累加和 while 循环

    //100的累加和 while 循环 #include <stdio.h> int main() { int sum = 0; //5050 int i = 0; while(i < ...

  3. 网安日记④之搭建域环境(domain)并且配置域

    搭建域环境(domain)并且配置域 什么是域 域就是将多台计算机在逻辑上组织到一起,进行集中管理,也就是创建在域控制器上的组,将组的账户信息保存在活动目录中.域组可以用来控制域内任何一台计算机资源的 ...

  4. javaSE基础之变量,常量,作用域和运算符

    变量 变量是什么? 变量是可以变化得量 Java是一种强类型语言,每个变量都必须声明其类型. Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域 type varName [=v ...

  5. 构建工具之Maven的使用(一)

    一.前言 对于开发一个Java项目,上线之前会通过编译,测试,打包,部署这几个构建过程,如果文件较少,我们可以使用java-->javac-->jar这些命令去完成上述的构建流程.但是当工 ...

  6. AI中各种浮点精度概念集合:fp16,fp32,bf16,tf32,fp24,pxr24,ef32

    常见的浮点类型有fp16,fp32,bf16,tf32,fp24,pxr24,ef32,能表达的数据范围主要看exponent,精度主要看fraction. 可以看出表达的数据范围看fp32,bf16 ...

  7. docker 实现redis主从复制

    目录 一.概览 二.安装master库 三.安装slave从库 四.错误分析 五.参考网址 一.概览 主库:192.168.3.13:6380 从库一:192.168.3.14:6381 从库二:19 ...

  8. 查看linux系统是物理机还是虚拟机

    物理机,返回机器型号 [root@laocalhost ~]# dmidecode -s system-product-name S910-X31E 虚拟机 [root@dev01-188 ~]# d ...

  9. 流媒体 Ubuntu部署srs、windows部署nginx

    一.获取项目//码云克隆git clone https://gitee.com/winlinvip/srs.oschina.git srs//githubgit clone https://githu ...

  10. WPF---数据绑定(二)

    一.绑定到非UI元素 上篇中,我们绑定的数据源均是派生自UIElement的WPF元素.本篇描述的绑定数据源是一个我们自定义的普通的类型. 注:尽管绑定的数据源可以是任意类型的对象,但Path必须总是 ...