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

  说到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 若想使 ...

  10. 两台Linux主机之间文件的复制

    使用scp命令可以实现两台Linux主机之间的文件复制,基本格式是: scp [可选参数] file_source file_target 1. 复制文件 命令格式: scp local_file r ...

随机推荐

  1. 例解 Linux cd 命令

    cd 命令是 *nix 系统中最基本的命令,它所做的事情是改变你当前所在的目录.本文详细介绍该命令,它所能完成的功能以及关于该命令内在的东西. cd 命令:一个内置命令 BASH Shell 是大多 ...

  2. mysql判断一个字符串是否包含某子串

    使用locate(substr,str)函数,如果包含,返回>0的数,否则返回0 例子:判断site表中的url是否包含'http://'子串,如果不包含则拼接在url字符串开头 update ...

  3. R语言——绘制半圆形图

    好久没发点新的作品了.......也许...... Que sera, seraWhatever will be, will be

  4. webApp 阅读器项目实践

    这是一个webApp 阅读器的项目,是慕课网的老师讲授的一个实战,先给出项目源码在GitHub的地址:https://github.com/yulifromchina/MobileWebReader. ...

  5. search搜索功能

    1.html <div class="search">        <form name="formsearch" action=" ...

  6. 用 rsync 同步本地和服务器的文件

    参考 DigitalOcean 安装 For Debian/Ubuntu: sudo apt-get install rsync For OpenSUSE/Fedora: sudo yum insta ...

  7. bzoj1070 修车&amp;&amp; bzoj2879美食节 【费用流】

    bzoj1070: 把每个工人拆成汽车那么多个点,假如说 工人(i, j) 和 汽车k 连边,那就代表第i个工人倒数第j个修汽车k,那么这条边对以后的贡献就是k*time[i修k]. #include ...

  8. 在Eclipse中配置tomcat

    为了在Eclipse中进行struts2的测试,才发现自己机器上的Eclipse没有集成Tomcat,在网上找了半天,不是这个插件没有下载地址,就是那个有好多注意事项或者版本问题. 结果,自己到tom ...

  9. springmvc+mybatis+mysql 数据库插入中文是乱码

    java web项目,前台页面的表单数据,插入到数据库时,结果出现乱码"???"的问题,断断续续折腾了一天时间,废话不说,步骤如下: 一:在web.xml中配置:编码格式拦截器 & ...

  10. 网络编程 —— UPD

    UDP协议(数据报协议:SOCK_DGRAM) udp是无链接的,先启动哪一端都不会报错 udp协议的特点: 传输数据不可靠,发送完后没有确认就删除 传送内容可为空 对于查寻速度快 支持的是一对多的模 ...