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

  说到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. jdk、jre环境变量配置

    1 jdk和jre的区别: (jdk:Java 开发工具包) (jre:Java 的运行环境) 只需这么记就可以了,想深入了解得自行查询相关资料 2 jdk是包含jre的,所以只需下载jdk. 官方网 ...

  2. TCP拥塞控制详解

    1. 拥塞原因与代价 拥塞的代价 当分组的到达速率接近链路容量时,分组经历巨大的排队时延. 发送方必须执行重传以补偿因为缓存溢出而丢弃的分组. 发送方在遇到大时延时进行的不必要重传会引起路由器利用其链 ...

  3. [C++]-string类的常用操作

    代码 #include<iostream> #include<string> #include<algorithm> using namespace std; in ...

  4. DL基础补全计划(六)---卷积和池化

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...

  5. 关于const声明一些东西

    const int a;        int const a;        const int *a;     int *const a;    const int *const a;   前两个 ...

  6. Install Redmine on Virtual Machine with Vagrant

    Initialize VM: chad@typcserver ~/docs/vagrant-prj $ vagrant --version Vagrant 1.4.3 chad@typcserver ...

  7. 1016 Phone Bills (25分)

    复建的第一题 理解题意 读懂题目就是一个活,所以我们用观察输出法,可以看出来月份,以及时间和费用之间的关系. 定义过程 然后时间要用什么来记录呢?day hour minute 好麻烦呀..用字符串吧 ...

  8. sqlplus登录用户被锁问题

    oracle有三个默认的用户名和密码: 1.用户名:sys密码:change_on_install 2.用户名:system密码:manager 3.用户名:scott密码:tiger   当登录用户 ...

  9. WooYun虚拟机的搭建及配置方法

    "当时代需要时,他们勇敢地站了出来.当潮水褪去时,他们等待新的使命.他们等待被抛弃或者被怀念,等待这个世界告诉他们善恶和对错." 记录一下复活乌云的过程. 第一步:虚拟机下载 网上 ...

  10. GIT-版本管理-初阶使用

    目前我用的比较多的git指令 git clone -b [branch-name]: 拉取远程指定分支代码 git status: 查看工作区修改状态 在将修改添加进暂存区的时候需要git add . ...