
嗨,habrozhiteli! 作者将逐步向您介绍Kali Linux的基本知识和功能。 本书提供了有关使用Linux命令行及其概念的简短课程,描述了Kali Linux的典型安装方案。 阅读本书之后,您将学习如何配置,调试和保护Kali Linux,以及与Debian发行软件包的强大软件包管理器一起工作。 了解如何在任何环境(包括大型公司网络)中正确安装Kali Linux。 最后,您必须熟悉复杂的主题:编译内核,创建自己的ISO映像,工业加密以及对机密信息的专业保护。
第7章Kali Linux的保护和控制
一旦开始使用Kali Linux执行更机密和备受瞩目的任务,您很可能必须更加重视安装安全性。 在本章中,我们首先讨论安全策略,重点突出确定安全策略的要点,并注意对您的系统以及作为安全专业人员的威胁。 我们还将讨论笔记本电脑和台式机的安全措施,并分别考虑防火墙和数据包过滤。 最后,我们将介绍监视工具和策略,并展示最有效的方法来使用它们来检测对系统的潜在威胁。
7.1。 安全策略定义
用笼统的术语讨论安全性是不合适的,因为该概念代表了范围广泛,不通用的概念,工具和过程。 在它们之间进行选择需要您的目标的准确表示。 系统保护首先要回答几个问题。 匆忙而鲁ck地实施任意一组实用程序会导致错误定义安全性方面的风险。
最好最初确定一个特定的目标。 解决此问题的正确方法将是以下问题的答案。
1.您想保护什么? 安全策略将根据您要保护的内容而有所不同:计算机或数据。 在后一种情况下,您还需要知道哪些信息需要保护。
2.您想采取什么措施保护自己免受侵害? 是因为泄露机密数据? 是由于意外丢失信息? 是由于提供服务失败而造成的损失?
3.您试图保护谁免受其害? 安全措施将完全不同,以防止系统的简单用户遭受拼写错误,并防止特定的入侵者。
“风险”一词通常用于笼统地定义以下因素:需要保护的内容,应防止的内容以及可能通过谁的错误发生。 风险建模需要回答所有三个问题。 根据生成的模型,您可以制定安全策略并使用特定的操作来实施它。
全球安全专家(不仅仅是计算机)的布鲁斯·施耐尔(Bruce Schneier)试图通过口号“安全是一个过程,而不是产品”来反驳主要的安全神话之一。 需要保护的资产会随着时间的推移而变化,潜在攻击者可以利用的威胁和手段也会随之变化。 即使安全策略最初是理想地设计和实施的,您也不应在此止步。 风险成分在不断发展,应采取相应的预防措施。
此外,应考虑可能限制可用策略范围的其他约束。 您准备采取什么措施来保护系统? 这个问题对于政策的选择非常重要。 通常,仅从现金成本的角度来确定答案,但应考虑其他因素,例如系统用户可能遭受的不便或其性能下降。
对风险建模之后,您可以考虑制定合适的安全策略。
在确定必要的安全级别时,应考虑一些极端情况。 一方面,提供基本的系统安全性非常简单。
例如,如果为保护而定义的系统仅包括一台二手计算机,并且该计算机仅在一天结束时用于添加几个数字,那么不采取任何特殊措施来保护它是一个合理的决定。 这种系统的真实值很低,并且数据值完全为零,因为它们没有存储在计算机上。 侵入该系统的潜在攻击者将仅获得计算器。 保护此类系统的成本可能会超过黑客攻击的成本。
相反的情况是克服任何限制以最完整的方式保护机密数据的机密性的情况。 在这种情况下,完全破坏信息(安全擦除文件,将硬盘切成小块,然后将这些块溶于酸等)是合适的解决方案。 如果还有其他要求将数据存储以备将来使用(不一定保持不变的可用性),并且成本仍然不具有威慑力,那么最好的办法是将数据存储在周围山下防空洞中的铱和铂合金板上世界,每个世界(当然)都是由军队进行分类和保护的。
尽管这些方法可能看起来有些夸张,但它们仍可能是某些风险的合适解决方案,因为它们使您可以在给定的限制下实现目标。 根据明智的决定,没有任何一项安全策略比其他任何策略更充分或更有效。
回到更典型的情况,可以将信息系统划分为兼容且主要独立的子系统。 所有这些都有其自身的要求和局限性,因此,应对每个子系统分别进行风险评估和制定安全策略。 您应该永远记住,较小的攻击面比较大的攻击面更易于防护。 网络组织的设计应该这样:易受攻击的服务必须集中在少数计算机上,并且应该通过最少数量的路由或控制点访问后者。 逻辑很简单:保护断点比整个外部世界中所有易受攻击的计算机都容易。 至此,网络过滤(包括防火墙)的好处变得显而易见。 可以使用特殊设备来实现这种过滤,但是更简单,更灵活的解决方案是使用类似于集成到Linux内核中的软件防火墙。
7.2。 可能的安全措施
如上所述,如何保护Kali Linux并没有唯一的答案。 这完全取决于您如何使用它以及您到底想保护什么。
在服务器上如果在公共服务器上使用Kali Linux,则应通过更改所有可以配置的默认密码来保护网络服务,并可能使用防火墙限制对它们的访问(第7.3节“保护网络服务”和第7.4节“防火墙”)或数据包过滤”,分别参见下文)。
如果您直接在服务器或网络服务之一上传输用户帐户信息,请确保设置强密码(它们必须承受暴力攻击)。 同时,您可以配置fail2ban程序,该程序通过在网络上进行详尽的搜索(通过过滤超出失败登录尝试限制的IP地址)而使密码破解大大复杂化。 您可以使用apt update命令安装fail2ban,然后apt安装fail2ban。
如果使用Web服务,请将其配置为通过HTTPS协议运行,以使网络中介机构不监视您的流量(其中可能包括cookie身份验证)。
在笔记本电脑上渗透测试专家的笔记本电脑所承受的风险与开放服务器不同:例如,您不太容易受到业余黑客的意外攻击,并且如果发生这种情况,此时您可能将无法使用活动的网络服务。
当您从一个客户到另一个客户旅行时,经常会出现真正的风险。 例如,您的笔记本电脑可能在旅行中被盗或被海关扣押。 这就是为什么值得使用全盘加密(请参阅第4.2节“安装在完全加密的文件系统上”部分)并可能还要设置nuke功能(请参见第9章侧栏“设置自毁密码以提高安全性”)的原因:您在工作期间收集的信息属于机密信息,需要最大程度的保护。
您可能还需要防火墙规则(请参阅下面的7.4节),但其目的与服务器上的目的不同。 您可能要阻止除VPN访问生成的流量外的所有传出流量。 这些设置类似于网络安全设置,因此当VPN停止工作时,您将立即注意到这一点(而不是返回本地网络访问权限)。 因此,在浏览Web或其他网络活动时,您不会给出客户端的IP地址。 另外,如果执行本地内部交互,则最好不断监视您的活动,以减少网络中产生的噪音,从而可以引起客户及其保护系统的注意。
7.3。 网络服务保护
建议您禁用不使用的服务。 Kali简化了此任务,因为默认情况下大多数网络服务已被禁用。
只要服务保持禁用状态,就不会构成安全风险。 但是,由于以下因素,打开它们时应小心。
1.默认情况下,它们没有防火墙,因此,如果侦听所有网络接口,则公众基本上可以访问它们。
2.有些服务没有凭证,您可以在首次使用时进行设置。 其他具有标准(因此广为人知)的凭据。 确保您(重新)设置了仅您知道的密码。
3.许多服务都具有root特权(具有完整的管理员权限),因此,未经授权的访问或安全漏洞的后果通常很严重。
我们不会在此处列出默认凭据随附的所有工具。 相反,您应该检查各个软件包的README.Debian文件以及docs.kali.org和tools.kali.org页面,以了解该服务是否需要特殊维护以确保必要的安全性。
如果您是实时启动的,那么根密码是toor。 因此,在更改根帐户密码或在帐户配置中设置基于密码的登录限制之前,切勿启用SSH。
还要注意一个众所周知的事实,即BeEF项目(来自已经安装的Beef-xss软件包)具有默认的凭据:Beef用户名和Beef密码,它们在配置文件中“强制”设置。
7.4。 防火墙或数据包过滤
防火墙是具有硬件,软件或同时具有这两者的计算机设备,可以分析入站或出站网络数据包(本地网络的入站或出站数据),并仅通过那些满足某些预定义条件的数据包。
过滤网络网关是一种保护整个网络的防火墙。 通常,它安装在配置为通往网络网关的专用计算机上,这样它就可以分析所有进出网络的数据包。 或者,有一个本地防火墙,它是在一台特定计算机上运行的软件服务,用于过滤或限制对该计算机上许多服务的访问,或者可能是为了防止间谍软件传出的连接,而用户可能偶然或有意安装了该间谍软件。
Linux内核具有内置的netfilter防火墙。 由于网络和用户的要求不同,因此没有配置任何防火墙的单一解决方案。 但是,您可以使用iptables和ip6tables命令从用户空间控制netfilter。 后者之间的区别在于,前者适用于IPv4网络,而后者适用于IPv6。 由于这两种网络协议栈可能都可以工作很多年,因此应该并行使用这两种工具。 您还可以使用基于GUI的出色fwbuilder实用程序,该实用程序提供了过滤规则的图形表示。
但是,如果您决定配置netfilter(Linux防火墙的实现),那么我们将仔细研究它的工作方式。
Netfilter电涌保护器行为Netfilter筛选器使用四个不同的表来存储管理程序包上三种操作类型的规则:
1. filter(过滤器)是指过滤规则(接受,拒绝或忽略数据包);
2. nat(网络地址转换)是指源地址或目标地址以及数据包端口的转换;
3. mangle指IP数据包中的其他更改(包括ToS字段(服务类型)和选项);
4. raw允许在软件包(软件包)到达连接跟踪系统之前对其进行其他手动更改。
每个表都包含称为链的规则列表。 防火墙使用标准链根据预定义条件处理数据包。 管理员可以创建其他链,仅在(直接或间接)传输标准链之一时才使用。
过滤器表包含三个标准链:
1. INPUT-指目的是防火墙本身的数据包;
2. OUTPUT-指来自防火墙的数据包;
3. FORWARD-指通过防火墙的数据包(既不是其源也不是目标)。
nat表还具有三个标准链:
1. PREROUTING-在包裹到达后立即进行更改;
2. POSTROUTING-在准备好发送包裹时进行更改;
3.输出-修改防火墙本身生成的数据包。
这些链条如图2所示。 7.1。
每个链都是一个规则列表。 每个规则都是一组条件,以及在满足条件时执行的操作。 在处理数据包时,防火墙先扫描一条规则,然后再扫描一条相应的链,当满足一条规则的条件时,防火墙会跳转(因此命令中的-j参数)跳转到指定的操作以继续处理。 最常见的行为类型是标准化的,并且有针对它们的特殊操作。 执行这些标准操作之一会中断链的处理,因为已预先确定了数据包的其他命运(不考虑以下提到的例外情况)。 以下是Netfilter操作。
1. ACCEPT(ACCEPT)-允许数据包沿其路由进一步移动。
2. REJECT-拒绝-使用ICMP错误数据包(Internet控制消息协议)拒绝数据包(iptables的--reject-with类型确定了拒绝错误的类型)。
3. DROP-删除(忽略)程序包。
4. LOG(REGISTER)-注册(通过syslogd守护程序)描述软件包的消息。 请注意,此操作不会中断处理,并且链结将从下一条规则继续执行,因此,拒绝数据包的注册需要同时使用LOG和REJECT / DROP规则。 与注册相关的一般参数包括:
- --log-level,带有默认警告,指示系统日志严重性;
- --log-prefix允许您指定文本前缀以区分记录的消息;
- --log-tcp-sequence,-log-tcp-options和--log-ip-options指示应在消息中放置的其他数据:分别为TCP序列号,TCP参数和IP参数。
5. ULOG-通过ulogd注册一条消息,与处理大量消息的syslogd相比,它可以更好地适应和更有效; 请注意,此操作与LOG一样,也将处理返回到调用链中的下一个规则。
6. chain_name-转到指定的链并评估其规则。
7. RETURN-中止当前链的处理并返回到调用链; 如果当前链是标准链,则没有调用链,因此将执行默认操作(使用iptables的-P参数定义)。
8. SNAT(仅在nat表中)-应用源网络地址转换(SNAT)。 其他参数描述了要应用的确切更改,包括--to-source address:port参数,该参数定义了IP地址和/或端口的新来源。
9. DNAT(仅在nat表中)-应用目标网络地址转换(DNAT)。 其他参数描述了要使用的确切更改,包括--to-destination地址参数:定义IP地址和/或端口的新来源的端口。
10. MASQUERADE(仅在nat表中)-应用屏蔽(源NAT的特殊情况)。
11.重定向(仅在nat表中)-将数据包公开转发到防火墙本身的此端口。 您可以使用Web代理来配置打开的服务器,该服务器无需在客户端进行配置即可工作,并且当客户端认为它正在连接到收件人时,消息实际上会通过代理服务器。 --to-ports参数端口指定数据包应转发到的端口或端口范围。
本小节不包括其他动作,尤其是与mangle表有关的动作。 有关完整列表,请参见iptables(8)和ip6tables(8)手册页。
iptables和ip6tables命令的语法
iptables和ip6tables命令用于管理表,链和规则。 它们的参数-t table指示要使用哪个表(默认情况下,过滤器表)。
队伍下面列出了与电路交互的主要参数。
1. -L链列出了链中包含的规则。 与-n选项一起使用以禁用名称解析(例如,iptables -n -L INPUT显示传入数据包的规则)。
2. -N链创建一个新链。 您可以出于多种目的创建新链,包括测试新的网络服务或拒绝网络攻击。
3. -X链删除空的和未使用的链(例如iptables -X ddos-attack)。
4.-链条规则在给定链条的末尾添加一条规则。 请记住,规则是从上到下处理的,添加规则时不要忘记考虑这一刻。
5. -I chain rule_number规则将规则插入具有指定编号的规则之前。 与-A选项一样,在链中输入新规则时,请考虑处理顺序。
6. -D链rule_number(或-D链规则)删除链中的规则; 第一种语法指示应删除具有特定编号的规则(iptables -L --line-numbers命令显示该规则编号),第二种语法从本质上标识要删除的规则。
7. -F链重置链(删除其所有规则)。 例如,要删除与传出数据包相关的所有规则,您将输入iptables -F OUTPUT命令。 如果未指定链,则删除表中的所有规则。
8. -P链操作定义给定链的默认操作或“策略”。 请注意:此政策仅适用于标准电路。 要缺省除去所有入站流量,必须发出iptables -P INPUT DROP命令。
规则每个规则是根据以下语法定义的:condition -j action action_parameters。如果在一条规则中描述了多个条件,则准则是条件的组合(逻辑与),其限制至少与每个单独的条件相同。-p协议条件与IP数据包协议字段匹配。最常见的值是tcp,udp,icmp和icmpv6。可以使用参数--source-port port和--destination-port port补充有关TCP端口的条件。
. , -p « , , ». .
-s -s / (source) . , -d -d / (destination).
-i , ; -o — , .
--state ( ipt_ conntrack ). NEW , , ESTABLISHED , , RELATED , , ( ftp- FTP).
iptables ip6tables, . , , — , .
, IP- 10.0.1.5 31.13.74.0/24 C , :
# iptables -A INPUT -s 10.0.1.5 -j DROP # iptables -A INPUT -s 31.13.74.0/24 -j DROP # iptables -n -L INPUT Chain INPUT (policy ACCEPT) target prot opt source destination DROP all
另一个iptables命令通常用于允许特定服务或端口的网络流量。 要使用户能够连接到SSH,HTTP和IMAP,必须运行以下命令:
# iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT # iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT # iptables -A INPUT -m state --state NEW -p tcp --dport 143 -j ACCEPT # iptables -n -L INPUT Chain INPUT (policy ACCEPT) target prot opt source destination DROP all -- 10.0.1.5 0.0.0.0/0 DROP all -- 31.13.74.0/24 0.0.0.0/0 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:143
良好计算机卫生的规则是清除旧的不必要的规则。 删除iptables规则的最简单方法是通过行号引用规则,您可以使用--line-numbers参数获得该规则。 注意:重置规则时,链中所有后续规则都会重新编号。
# iptables -n -L INPUT --line-numbers Chain INPUT (policy ACCEPT) num target prot opt source destination 1 DROP all -- 10.0.1.5 0.0.0.0/0 2 DROP all -- 31.13.74.0/24 0.0.0.0/0 3 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80 5 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:143 # iptables -D INPUT 2 # iptables -D INPUT 1 # iptables -n -L INPUT --line-numbers Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 2 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80 3 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:143
根据上述一般条件,存在更具体的条件。 有关更多信息,请参见iptables(8)和ip6tables(8)手册。
建立规则
每个新规则都需要一个对iptables或ip6tables的调用。 手动输入这些命令可能很乏味,因此呼叫通常存储在脚本中,因此,每次启动计算机时,系统都会自动配置为相同。 该脚本可以手工编写,但您可能还希望使用fwbuilder之类的高级工具来编写它。
# apt install fwbuilder
原理很简单。 在第一阶段,描述新规则中将涉及的所有元素:
1.防火墙本身及其网络接口;
2.具有适当IP地址范围的网络;
3.服务器;
4.属于服务器上托管的服务的端口。
然后使用简单的拖放操作创建规则,如图2所示。 7.2。 多个上下文菜单可以更改条件(例如,拒绝它)。 然后,您需要选择并配置操作。
对于IPv6,您可以为IPv4和IPv6创建两组不同的规则,或者仅创建一组规则,然后让fwbuilder根据分配给对象的地址转换规则。
fwbuilder工具将创建一个脚本,该脚本根据您定义的规则配置防火墙。 它的模块化体系结构允许您为不同的系统生成脚本,包括Linux的iptables,FreeBSD的ipf和OpenBSD的pf。
为每次启动设置规则
为了在每次引导时实施防火墙规则,您需要在/ etc / network / interfaces文件的up指令中注册配置脚本。 在以下示例中,脚本存储在/usr/local/etc/arrakis.fw中。
auto eth0 iface eth0 inet static address 192.168.0.1 network 192.168.0.0 netmask 255.255.255.0 broadcast 192.168.0.255 up /usr/local/etc/arrakis.fw
本示例假定您使用的是ifupdown软件包来配置网络接口。 如果使用其他工具(例如NetworkManager或systemd-networkd),请在启动界面后参考适当的文档以了解如何执行脚本。
7.5。 监控和记录
机密性和数据保护是安全性的重要方面,但是确保服务的可用性也同样重要。 作为管理员和安全专家,您必须确保一切正常,并且您的责任是及时发现异常行为和服务质量下降。 监视和日志记录软件在安全性的这一方面起着关键作用,有助于您了解系统和网络中正在发生的事情。
在本节中,我们将研究可用于监视Kali系统多个方面的许多工具。
使用logcheck监视日志
默认情况下,Logcheck每小时监视一次日志文件,并将非标准日志消息发送到电子邮件中,并发送给管理员以进行进一步分析。
受监视文件的列表存储在/etc/logcheck/logcheck.logfiles中。 如果尚未完全重建/etc/rsyslog.conf文件,则默认值将正常工作。
logcheck程序可以使用不同级别的详细信息进行报告:偏执狂(paranoid),服务器(服务器)和工作站(对于工作站)。 偏执狂模式非常冗长,可能应仅限于特定的服务器,例如防火墙。 默认情况下使用服务器模式,建议将其用于大多数服务器。 工作站模式显然是为工作站设计的,并且经过高度压缩,与其他“兄弟”相比,可以过滤出更多消息。
在这三种情况下,如果您不想每小时接收一批长时间未注册的电子邮件,则应该将logcheck配置为排除其他消息(取决于安装的服务)。 由于消息选择机制相当复杂,因此在遇到困难时需要读取文件/usr/share/doc/logcheck-database/README.logcheck-database.gz。
适用的规则可以分为几种类型:
1.将邮件视为黑客企图的人员(存储在/etc/logcheck/cracking.d/目录中的文件中);
2.忽略黑客尝试(/etc/logcheck/cracking.ignore.d/);
3.将消息分类为安全警告的那些(/etc/logcheck/violations.d/);
4.忽略安全警告(/etc/logcheck/violations.ignore.d/);
5.最后,那些适用于其他消息的消息(视为系统事件)。
ignore.d文件(显然)用于忽略消息。 例如,标记为黑客企图或安全警告的消息(通常存储在/etc/logcheck/violations.d/myfile中)只能被/etc/logcheck/violations.ignore.d/myfile中的规则忽略或文件/etc/logcheck/changes.ignore.d/myfile-扩展名中。
始终报告系统事件,除非/etc/logcheck/ignore.d目录中的规则。{paranoid,server,station} /不指示应忽略此事件。 当然,仅考虑其详细程度等于或超过所选操作模式的那些目录。
实时活动监控
顶部的交互式工具显示了当前正在运行的进程的列表。 默认排序基于当前的处理器负载,并且可以使用键P获得。其他指令排序包括按占用的内存(键M),总处理器时间(键T)和进程标识符(键N)进行排序。 密钥k使用输入的标识符终止过程。 密钥r更改过程的优先级。
当系统看起来过载时,top是一个很好的工具,可以查看哪些进程在争夺CPU时间或占用过多内存。 因此,检查消耗资源的进程是否对应于应托管在计算机上的真实服务通常很有趣。 像www-data这样工作的未知进程应该真正从列表中脱颖而出,应该进行研究,因为它很可能是使用Web应用程序中的漏洞在系统上安装和运行的软件的示例。
顶级工具非常灵活,其手册包含有关如何自定义其界面以及使其适应您的个人需求和习惯的详细信息。
gnome-system-monitor图形工具与top相似,并提供大致相同的功能。
»这本书的更多信息可以
在出版商的网站上找到»
目录»
摘录Linux优惠券20%的折扣
-Linux