请选择 进入手机版 | 继续访问电脑版

设为首页 收藏本站
思科服务支持社区 点击关注
思科服务支持社区

  
 找回密码
 立即注册

扫一扫,访问微社区

搜索
热搜: 邮件服务器
查看: 329|回复: 0

【原创】【小目标,一个“译”】+ 加固Linux系统的11种实用安全技巧(下)

[复制链接]
发表于 2017-9-7 17:09:03 | 显示全部楼层 |阅读模式
使用Tripwire进行入侵检测
TripwireLinux安全里的重要工具之一。这是一种基于主机的入侵检测系统(HIDS)。它通过收集配置和文件系统的细节,并使用这些信息来提供系统先前与当前状态之间的参考点等方式进行工作。该过程监测文件或目录的属性包括:进去哪些被添加或修改了、谁修改的、修改了什么、何时修改的。因此它就是你文件系统的“看门狗”。
需要访问EPEL存储库来获取Tripwire。你可以按如下方法轻松地添加该库:
$ rpm -ivh epel-release-7-9.noarch.rpm
一旦成功安装了EPEL库,你就可以安装Tripwire了:
$ sudo yum install tripwire
在使用Tripwire之前,你需要用如下命令来创建本地和网站密钥:
$ tripwire-setup-keyfiles
它会提示输入一个用于网站和本地密钥文件的密码。Tripwire也会建议你使用大写字母、小写字母、数字和标点符号的组合。
你可以通过更改如下文件来定制Tripwire:
/etc/tripwire/twpol.txt
因为每一行都有注释,且描述也很到位,因此该文件还是比较容易阅读和修改的。
你可以用如下的方式更新自己的Tripwire策略。
$ tripwire --update-policy --secure-mode low /etc/tripwire/twpol.txt
Tripwire将通过参考你的更改,在屏幕上持续刷新显示各个阶段的步骤。当这些完成之后,你就应该能够以如下方式初始化Tripwire数据库了:
$ tripwire --init
然后Tripwire将开始扫描系统。它所需要时长取决于系统的总体规模。
任何对文件系统更改被会认为是一种系统的入侵,因此管理员会被通知到,而且他需要使用受信任的文件予以系统恢复。正是出于这个原因,Tripwire必须去验证任何的系统更改。你可以通过如下命令来验证你的现有的策略文件:
$ tripwire --check
关于Tripwire,最后一点建议是:请额外的去加固twpol.txt和twcfg.txt文件的安全。
更多有关Tripwire的选项和设置,你可以通过man tripwire查阅到。
使用Firewalld
Firewalld替代了iptables,并且通过在不停止当前连接的情况下启用各种配置的更改,从而改善了Linux的安全管理。
Firewalld作为守护进程形式运行着。它允许各种规则被即时地添加和更改,而且它使用各种网络区域来为任何以及所有与网络相关的连接定义一种信任级别。
要想知道Firewalld的当前运行状态,你可以输入如下命令:
$ firewall-cmd --state
file:///C:/Users/L41/AppData/Local/Temp/msohtmlclip1/01/clip_image001.png
你可以用如下命令罗列出预定义的区域:
$ firewall-cmd --get-zones
file:///C:/Users/L41/AppData/Local/Temp/msohtmlclip1/01/clip_image002.png
其值也可以如下方式进行更新:
$ firewall-cmd --set-default-zone=
你可以用以下命令获取任何特定区域的所有相关信息:
$ firewall-cmd --zone= --list-all
你也能列出所有支持的服务:
$ firewall-cmd --get-services
file:///C:/Users/L41/AppData/Local/Temp/msohtmlclip1/01/clip_image003.png
而且你可以添加或删除额外的服务。
$ firewall-cmd --zone=<zone-name>--add-service=<service-name>
$ firewall-cmd --zone=<zone-name>--remove-service=<service-name>

你能通过如下命令列出任何特定区域中所有开放的端口:
$ firewall-cmd --zone= --list-ports
你可用如下方式管理TCP/UDP端口的增加与删除:
$ firewall-cmd --zone=<zone-name>--add-port=<port-number/protocol>
$ firewall-cmd --zone=<zone-name>--remove-port=<port-number/protocol>


你可以如下命令添加或删除端口的转发:
$ firewall-cmd --zone=<zone-name>--add-forward-port=<port-number>
$ firewall-cmd --zone=<zone-name>--remove-forward-port=<port-number>

Firewalld是非常全面的。其中Firewalld最棒的地方当数:你可以在不需要停止或重新启动防火墙服务的情况下,管理该防火墙的体系结构。而这正是运用IP tables所无法实现的。
回归iptable
有一些人仍然还是喜欢IP tables 胜过Firewalld。那么如果你正好处于这种想舍去Firewalld而回归IP tables的话,请首先是禁用Firewalld:
$ systemctl disable firewalld
$ systemctl stop firewalld

然后来安装IP tables:
$ yum install iptables-services
$ touch /etc/sysconfig/iptables
$ touch /etc/sysconfig/ip6tables

现在你就可以启动IP tables的服务了:
$ systemctl start iptables
$ systemctl start ip6tables
$ systemctl enable iptables
$ systemctl enable ip6tables

为了能让内核采用新的配置,你必须重新启动系统。
限制编译器
如果你的系统被黑掉了,那么攻击者会对系统使用的是哪种编译器很感兴趣。这是为什么呢?因为他们可以去下载一个简单的C文件(POC),并且在你的系统上进行编译,从而在几秒钟之内就成为了root用户。如果编译器是开启的话,他们还可以在你的系统上做一些严重的破坏。
首先,你需要检查单个的数据包以确定其包含有哪些二进制文件。然后你需要限制这些二进制文件的权限。
$ rpm - q --filesbypkg gcc | grep 'bin'
file:///C:/Users/L41/AppData/Local/Temp/msohtmlclip1/01/clip_image004.png
现在我们需要创建一个可以访问二进制文件的编译器的组名称了:
$ groupadd compilerGroup
然后你可以赋予这个组能够改变任何二进制文件的所有权:
$ chown root:compilerGroup /usr/bin/gcc
最后重要的是:仅编译器组才有改变该二进制文件的权限:
$ chmod 0750 /usr/bin/gcc
至此,任何试图使用gcc的用户将会看到权限被拒绝的信息了。
我知道有些人可能会说,如果攻击者发现编译器被关闭了的话,他会去下载编译器本身。这就是另外一个故事了,我们会在未来的文章中涉及到的。
不可修改文件太棒了
不可修改文件是Linux系统中一种最为强大的安全特性。任何用户(即使是root用户),无论他们的文件权限是怎样的,都无法对不可修改文件进行写入、删除、重命名甚至是创建硬链接等操作。这真是太棒了!
它们是保护配置文件或防止你的文件被修改的理想选择。请使用chattr命令来将任何文件变得不修改:
$ chattr +i /myscript
file:///C:/Users/L41/AppData/Local/Temp/msohtmlclip1/01/clip_image005.png
你也可以如下方法去除其不可修改属性:
$ chattr -i /myscript
file:///C:/Users/L41/AppData/Local/Temp/msohtmlclip1/01/clip_image006.png
/sbin /usr/lib两个目录内容能被设置为不可改变,以防止攻击者替换关键的二进制文件或库文件成为恶意软件版本。我将其它有关使用不可改变文件的例子,留给你去想象。
Aureport来管理SELinux
通常情况下,如果你使用的是主机控制面板,或者当有一个或多个特定的应用程序可能会碰到一些问题的时候,他们是不会运行在SELinux已启用的模式下的,也就是说你会发现SELinux是禁用掉的。
但是禁用SELinux确实会将系统暴露于风险之中。我的观点是:由于SELinux有一定的复杂性,对于我们这些仍想获益于安全性的人来说,完全可以通过运行aureport的选项来使得工作轻松些。
aureport工具被设计为创建一些基于列特征的报告,以显示在审计日志文件中所记录的那些事件。
$ aureport --avc
file:///C:/Users/L41/AppData/Local/Temp/msohtmlclip1/01/clip_image007.png
你也可以运用同样的工具来创建一个可执行文件的列表:
$ aureport -x
file:///C:/Users/L41/AppData/Local/Temp/msohtmlclip1/01/clip_image008.png
你也可以使用aureport来产生一个认证的全量报告:
$ aureport -au -i
file:///C:/Users/L41/AppData/Local/Temp/msohtmlclip1/01/clip_image009.png
或者你还可以列出那些认证失败的事件:
$ aureport -au --summary -i --failed
file:///C:/Users/L41/AppData/Local/Temp/msohtmlclip1/01/clip_image010.png
或者你也需要一个认证成功的事件的摘要:
$ aureport -au --summary -i --success
file:///C:/Users/L41/AppData/Local/Temp/msohtmlclip1/01/clip_image011.png
可见,当你使用一个运行着SELinux的系统来进行系统的故障诊断的时侯,你作为系统管理员首要考虑的应该就是使用aureport的各种好处了。
使用Sealert工具
除了aureport工具你也可以使用一个很好的Linux安全工具sealert。你可以用以下的命令来进行安装:
$ yum install setools
那么现在我们就有了一个工具,它将积极地从/var/log/audit/audit.log这一日志文件中返回各种警告,并将其转换得更为人性化”且可读
这个称为sealert的工具,其目的是能报告出任何与SELinux有关联的问题。你可以这样来使用它:
$ sealert -a /var/log/audit/audit.log
file:///C:/Users/L41/AppData/Local/Temp/msohtmlclip1/01/clip_image012.png
关于所生成的报告,其最好之处是:在每个被发现的问题的警报末尾,系统都会给出如何去解决该问题的相关解释。
在这篇文章中,我们讨论了一些可以帮助你加固Linux系统的安全技巧。当然,对于各种运行的服务而言,仍有许多值得加固的Linux安全技巧有待发掘。我希望你能从本文中找到对你有用和有趣的内容。
【原标题】Useful Linux SecurityTricks To Harden Your System (作者: Seco Max)
原文链接:https://dzone.com/articles/useful-linux-security-tricks-to-harden-your-system

  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5
平均得分5 (2 评价)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver | 思科服务支持社区  

GMT+8, 2017-11-21 09:00 , Processed in 0.084028 second(s), 27 queries .

京ICP备09041801号-187

版权所有 :copyright:1992-2019 思科系统  重要声明 | 保密声明 | 隐私权政策 | 商标 |

快速回复 返回顶部 返回列表