learn.lianglianglee.com/专栏/全解网络协议/32 Linux网络安全 - 安全实战.md.html
2022-05-11 18:57:05 +08:00

911 lines
25 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<!-- saved from url=(0046)https://kaiiiz.github.io/hexo-theme-book-demo/ -->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no">
<link rel="icon" href="/static/favicon.png">
<title>32 Linux网络安全 - 安全实战.md.html</title>
<!-- Spectre.css framework -->
<link rel="stylesheet" href="/static/index.css">
<!-- theme css & js -->
<meta name="generator" content="Hexo 4.2.0">
</head>
<body>
<div class="book-container">
<div class="book-sidebar">
<div class="book-brand">
<a href="/">
<img src="/static/favicon.png">
<span>技术文章摘抄</span>
</a>
</div>
<div class="book-menu uncollapsible">
<ul class="uncollapsible">
<li><a href="/" class="current-tab">首页</a></li>
</ul>
<ul class="uncollapsible">
<li><a href="../">上一级</a></li>
</ul>
<ul class="uncollapsible">
<li>
<a href="/专栏/全解网络协议/01 我应该站在谁的肩膀上 - OSI vs TCPIP模型.md.html">01 我应该站在谁的肩膀上 - OSI vs TCPIP模型.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/02 万丈高楼平地起- 物理层 + 数据链路层.md.html">02 万丈高楼平地起- 物理层 + 数据链路层.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/03 OSI的灵魂就是我 - 网络层.md.html">03 OSI的灵魂就是我 - 网络层.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/04 要快还是要稳你说好了 - 传输层.md.html">04 要快还是要稳你说好了 - 传输层.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/05 是时候展现真正的技术了 - 应用层.md.html">05 是时候展现真正的技术了 - 应用层.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/06 重回小学课堂 - 二进制101.md.html">06 重回小学课堂 - 二进制101.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/07 1+1 = 2吗 - 二进制的计算.md.html">07 1+1 = 2吗 - 二进制的计算.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/08 16进制又是个什么鬼 - 16进制的讲解.md.html">08 16进制又是个什么鬼 - 16进制的讲解.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/09 我想有个家 - 什么是IP地址.md.html">09 我想有个家 - 什么是IP地址.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/10 我可是住二环的人 - IP地址的组成和分类.md.html">10 我可是住二环的人 - IP地址的组成和分类.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/11 我已经没地方住了吗 - IPv6.md.html">11 我已经没地方住了吗 - IPv6.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/12 向左还是向右 - IP路由.md.html">12 向左还是向右 - IP路由.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/13 我能给你安全感 - TCP.md.html">13 我能给你安全感 - TCP.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/14 我那不为人知的秘密是什么 - TCP.md.html">14 我那不为人知的秘密是什么 - TCP.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/15 不问收没收到,就问快不快 - UDP.md.html">15 不问收没收到,就问快不快 - UDP.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/16 我为什么与众不同 - TCP高级篇拥塞模型.md.html">16 我为什么与众不同 - TCP高级篇拥塞模型.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/17 来,先看看我的家谱 - HTTP的身世.md.html">17 来,先看看我的家谱 - HTTP的身世.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/18 我都这么成功了,你却说我不行 - HTTP 的特点和缺点.md.html">18 我都这么成功了,你却说我不行 - HTTP 的特点和缺点.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/19 我老了,让我儿子来吧 - HTTP2.md.html">19 我老了,让我儿子来吧 - HTTP2.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/20 稳重的大外甥 - HTTPS.md.html">20 稳重的大外甥 - HTTPS.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/21 HTTP的高级篇 - HTTPClientJava.md.html">21 HTTP的高级篇 - HTTPClientJava.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/22 想来我家,你自己查呀 - DNS.md.html">22 想来我家,你自己查呀 - DNS.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/23 来的早,不如来得巧 - NAT.md.html">23 来的早,不如来得巧 - NAT.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/24 辛苦的邮政 - SMTP.md.html">24 辛苦的邮政 - SMTP.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/25 你就是看不见我 - VPN.md.html">25 你就是看不见我 - VPN.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/26 黑客的好帮手 - SSH.md.html">26 黑客的好帮手 - SSH.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/27 你可以得到我的心,却得不到我的人 - 物理安全设备.md.html">27 你可以得到我的心,却得不到我的人 - 物理安全设备.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/28 你怎么证明你就是你 - 身份验证和访问控制.md.html">28 你怎么证明你就是你 - 身份验证和访问控制.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/29 我要怎么藏好我的考研资料 - 网络攻击(一).md.html">29 我要怎么藏好我的考研资料 - 网络攻击(一).md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/30 我要怎么藏好我的考研资料 - 网络攻击(二).md.html">30 我要怎么藏好我的考研资料 - 网络攻击(二).md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/31 如何保护我的考研资料 - 网络攻击防范.md.html">31 如何保护我的考研资料 - 网络攻击防范.md.html</a>
</li>
<li>
<a class="current-tab" href="/专栏/全解网络协议/32 Linux网络安全 - 安全实战.md.html">32 Linux网络安全 - 安全实战.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/33 结语.md.html">33 结语.md.html</a>
</li>
</ul>
</div>
</div>
<div class="sidebar-toggle" onclick="sidebar_toggle()" onmouseover="add_inner()" onmouseleave="remove_inner()">
<div class="sidebar-toggle-inner"></div>
</div>
<script>
function add_inner() {
let inner = document.querySelector('.sidebar-toggle-inner')
inner.classList.add('show')
}
function remove_inner() {
let inner = document.querySelector('.sidebar-toggle-inner')
inner.classList.remove('show')
}
function sidebar_toggle() {
let sidebar_toggle = document.querySelector('.sidebar-toggle')
let sidebar = document.querySelector('.book-sidebar')
let content = document.querySelector('.off-canvas-content')
if (sidebar_toggle.classList.contains('extend')) { // show
sidebar_toggle.classList.remove('extend')
sidebar.classList.remove('hide')
content.classList.remove('extend')
} else { // hide
sidebar_toggle.classList.add('extend')
sidebar.classList.add('hide')
content.classList.add('extend')
}
}
function open_sidebar() {
let sidebar = document.querySelector('.book-sidebar')
let overlay = document.querySelector('.off-canvas-overlay')
sidebar.classList.add('show')
overlay.classList.add('show')
}
function hide_canvas() {
let sidebar = document.querySelector('.book-sidebar')
let overlay = document.querySelector('.off-canvas-overlay')
sidebar.classList.remove('show')
overlay.classList.remove('show')
}
</script>
<div class="off-canvas-content">
<div class="columns">
<div class="column col-12 col-lg-12">
<div class="book-navbar">
<!-- For Responsive Layout -->
<header class="navbar">
<section class="navbar-section">
<a onclick="open_sidebar()">
<i class="icon icon-menu"></i>
</a>
</section>
</header>
</div>
<div class="book-content" style="max-width: 960px; margin: 0 auto;
overflow-x: auto;
overflow-y: hidden;">
<div class="book-post">
<p id="tip" align="center"></p>
<div><h1>32 Linux网络安全 - 安全实战</h1>
<p>我们来学习如何利用一些特别智能的工具,这些工具可以为你提供有关网络运行状况的稳定,快速,直观的更新,提供深入的历史数据表示,当发现可疑的行为时会及时警告,并持续进行涉及你所关心的网络节点的漏洞评估。如果你要启动一些面向互联网的应用程序,那么你确实应该考虑将某些甚至全部这些功能集成到你的基础架构中。</p>
<h3>ntop</h3>
<p>像Unix中的top指令一样能够实时显示系统中各个进程的资源占用状况ntop使你可以密切注意网络上的情况。当以混杂模式默认设置运行时ntop将监视和报告所有流量无论它是否针对你的特定主机。在此Ubuntu上安装ntop很容易。但是由于系统将提示你输入要监视的网络接口因此应首先要确认指定的名称使用ifconfig。使用以下指令安装</p>
<pre><code>sudo apt install ntop
复制
</code></pre>
<p>就像我们提到的那样,安装过程需要输入你要监视的网络接口。</p>
<p><img src="assets/20210219181558590.png" alt="在这里插入图片描述" /></p>
<p>安装完成后ntop应该已启动并正在运行。你可以通过systemctl和ps来确认这一点。</p>
<pre><code>sudo systemctl status ntop
ps aux | grep ntop
复制
</code></pre>
<p>如果你不希望ntop在系统启动时自动启动则可以在etc/default/ntop中将ENABLED的行的值编辑为0而不是1。</p>
<p><img src="assets/2021021918161271.png" alt="在这里插入图片描述" /></p>
<p>默认情况下ntop包含一个内置的Web服务器可通过端口3000访问该服务器。你可以从任何与服务器连接的浏览器中打开该站点。考虑到ntop的轻巧你最好使用某种低占用空间的VM来运行它。然后假设你已启用某种桥接或端口转发则应该能够从网络内的任何计算机登录。还没有网桥或者不确定如何启用端口转发可以使用以下的指令。这是你可以使用的快速简单的IP表规则。</p>
<pre><code>iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 3000 - j DNAT --to 10.0.3.230:3000
复制
</code></pre>
<p>这样做是通过主机的eth0接口接收任何流量该接口指定端口3000。并将其重定向到本地VM的IP地址中的端口3000。无论如何完成此操作后我可以移至浏览器并输入主机服务器的IP地址。</p>
<p><img src="assets/20210219181626506.png" alt="在这里插入图片描述" /></p>
<p>我们应该做的第一件事是单击“管理员”,“配置”和“启动首选项”来使用用户名以及安装过程中创建的密码登录</p>
<p><img src="assets/20210219181638204.png" alt="在这里插入图片描述" /></p>
<p>摘要菜单提供了受监控流量的概述。</p>
<p><img src="assets/20210219181648754.png" alt="在这里插入图片描述" /></p>
<p>按接口和协议等不同指标进行排列。主机将显示连接的主机及其网络配置文件。</p>
<p><img src="assets/20210219181701587.png" alt="在这里插入图片描述" /></p>
<p>网络负载为你显示了图形化的统计信息,说明了历史时间段内经历的负载水平。此功能对于快速发现突然的和无法解释的活动峰值特别有用。所有协议和流量都以数字形式表示主机的网络流量,网络吞吐量为我们提供负载率。</p>
<p><img src="assets/20210219181714484.png" alt="在这里插入图片描述" /></p>
<p>你可以激活或停用sflow插件从而使ntop可以管理sflow格式的数据该数据可以由Wireshark等其他软件使用。</p>
<p><img src="assets/20210219181725203.png" alt="在这里插入图片描述" /></p>
<p>其他页面允许你类似地深入数据以更好地理解和可视化网络上实际发生的事情。你应该花一些时间来了解所有选项。我就不一一的介绍了。只有当你实际花费时间定期查看输出时ntop统计信息才有用。一种可行的方法是养成使ntop在浏览器的选项卡中运行然后单击以偶尔查看一下的习惯。你应该一眼就能发现奇怪的信息。另一种方法是在办公室某处繁忙的地方的墙上悬挂一个屏幕这样来来回回的人就都能看到。</p>
<h3>cacti - Network Graphing</h3>
<p>ntop非常擅长处理实时数据但是如果你正在寻找网络历史状态的深入图形化的详细视图那么cacti可能是值得一看究竟的东西。与ntop一样cacti被构建为RRDtool日志记录服务。</p>
<p><img src="assets/20210219181736592.png" alt="在这里插入图片描述" /></p>
<p>实际上你甚至可以通过可用的插件将ntop数据添加到cacti的显示器中。由于cacti提供了特别丰富的功能包括各种自定义选项因此完全配置它以满足你的特定需求可能很复杂。选择cacti意味着你的未来将有一个学习曲线Learning Curve。我将帮助你克服这种困难的想法并建立一个简单的基于存储库的实例。</p>
<p>首先,还是需要先安装。</p>
<pre><code>sudo apt intall cacti
复制
</code></pre>
<p>在安装过程中系统将提示我输入MySQL密码并选择一个Web服务器。我将使用Apache。</p>
<p><img src="assets/20210219181751907.png" alt="在这里插入图片描述" /></p>
<p>还会询问我是否要使用通用数据库来为Cacti配置数据库。我选择的是Yes。</p>
<p><img src="assets/20210219181803974.png" alt="在这里插入图片描述" /></p>
<p>基本配置详细信息例如密码和数据库信息可以在etc/cacti/debian.php中找到。 如果你需要进行任何更改或者只是想提醒自己原来的选择这里可以是你要找的地方。但是所有真正的cacti乐趣都发生在你的浏览器中。首先将浏览器指向Cacti服务器的主机名或IP地址然后添加/ cacti。首次访问此地址时单击``新建安装''将显示Cacti认为你需要的默认配置值并确认所有必需资源都可访问。</p>
<p><img src="assets/20210219181815129.png" alt="在这里插入图片描述" /></p>
<p>准备好实际开始工作后将提示你输入Cacti用户名和密码。</p>
<p><img src="assets/20210219181830242.png" alt="在这里插入图片描述" /></p>
<p>当然你尚未选择用户名和密码。但是我可以告诉默默的告诉你默认的用户名和密码均为admin一般人我告诉他/她。第一次登录后你会被强制要求更新密码。登录后你会发现cacti界面主要分为两个选项卡。控制台是你管理设备和配置的地方图形是你查看Cacti网络分析的图形化输出的位置。</p>
<p><img src="assets/20210219181842350.png" alt="在这里插入图片描述" /></p>
<p>我们可以单击左侧面板上的“设备”即可查看在安装过程中创建的本地主机设备。除了管理基本的设备状态和ID详细信息以及连接设置如Downed Device Detection协议选择我将单击Localhost链接以了解我们可以在这里可以控制的各种事情。</p>
<p><img src="assets/20210219181857177.png" alt="在这里插入图片描述" /></p>
<p>你还可以在左边的控制栏上点击和查看控制数据源图形和查看系统日志。回到图形窗口我们可以按任何历史时间段过滤图形内容从而使可视化网络所经历的现实活动变得更加简单。并且通过添加插件例如ntop插件还可以大大增加可跟踪的数据范围。</p>
<p>感兴趣的你可以自己安装来玩耍一下。</p>
<h3>Snort 入侵防护</h3>
<p>与基于明确规则允许或拒绝流量的防火墙不同基于网络的入侵检测系统如Snort将评估数据包并在出现可疑的时候向管理员发出警报Snort实际上可以在三种模式下运行。</p>
<ol>
<li>嗅探器,它只读取看到的所有数据包,然后将它们打印在屏幕上。</li>
<li>设置为“日志”时,它将把数据包转移到预设的日志目录。在完全网络入侵检测模式下,它会根据规则集分析流量内容,然后在发现匹配项时提醒管理员。</li>
<li>在IDS模式下Snort可以很好地发现恶意缓冲区溢出或隐匿端口扫描的早期症状。为了确保您保持最新状态</li>
</ol>
<p>要想获取Snort的最新版本你需要自己去构建。这需要大量的文件系统管理经验。尽管Snort站点具有出色的文档。当然因为我们只是讲解并不会用在production上我将使用简便的方式安装</p>
<pre><code>sudo apt install snort
复制
</code></pre>
<p>同样的你需要在安装之前确认接口信息因为系统会提示你选择Snort将在其所使用的子网范围内使用的主接口。</p>
<p><img src="assets/20210219181910199.png" alt="在这里插入图片描述" /></p>
<p>此配置信息将保存在etc/snort/snort.conf。你应该在snort中寻找ipvar HOME<em>NET。HOME</em>NET值必须至少包含Snort将监听的子网。</p>
<p><img src="assets/2021021918192288.png" alt="在这里插入图片描述" /></p>
<p>使用any可以但是你最好将活动限制为仅一个特定网络。</p>
<p><img src="assets/20210219181934399.png" alt="在这里插入图片描述" /></p>
<p>上图中的rule也很重要因为你可以使用包含添加你自己的规则测试Snort警报的规则。完成后我们应该测试配置文件以确保没有错误。您可以验证Snort。使用-T进行测试使用-i选择接口测试然后使用-c 告诉Snort配置是哪个这是我们目前正在测试的配置。</p>
<pre><code>snort -T -i enp0s3 -c /etc/snort/snort.conf
复制
</code></pre>
<p>希望你会在输出的末尾看到成功消息,如下所示。</p>
<p><img src="assets/20210219181945397.png" alt="在这里插入图片描述" /></p>
<p>现在让我们来启动它。我们将告诉Snort使用-A console参数将其输出打印到屏幕上。 -q表示安静运行而没有常规状态报告。 u指定一个用户在这种情况下为Snort。 g指定它的组再次是Snort。 c指向我们的conf配置文件。-i告诉Snort使用哪个网络接口。</p>
<pre><code>snort -A console -q -u snort -g snort -c /etc/snort/snort.conf -i enp0s3
复制
</code></pre>
<p>你可以打开另一个terminal来进行ping操作你会发现有很多的流量在流动。我们在屏幕上看到的所有内容也都保存到/ var/log/snort目录中的单个文件中。当然所有这些都会产生大量的数据而这些数据将很快变得几乎无法读取。解决该问题的一种方法是安装Barnyard2将进入的数据假脱机到MySQL数据库中然后可以使用最合适的方式查看和解释该数据库。这超出了本课程的范围我就不细讲了。</p>
</div>
</div>
<div>
<div style="float: left">
<a href="/专栏/全解网络协议/31 如何保护我的考研资料 - 网络攻击防范.md.html">上一页</a>
</div>
<div style="float: right">
<a href="/专栏/全解网络协议/33 结语.md.html">下一页</a>
</div>
</div>
</div>
</div>
</div>
</div>
<a class="off-canvas-overlay" onclick="hide_canvas()"></a>
</div>
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v652eace1692a40cfa3763df669d7439c1639079717194" integrity="sha512-Gi7xpJR8tSkrpF7aordPZQlW2DLtzUlZcumS8dMQjwDHEnw9I7ZLyiOj/6tZStRBGtGgN6ceN6cMH8z7etPGlw==" data-cf-beacon='{"rayId":"709976652b9a3cfa","version":"2021.12.0","r":1,"token":"1f5d475227ce4f0089a7cff1ab17c0f5","si":100}' crossorigin="anonymous"></script>
</body>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-NPSEEVD756"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'G-NPSEEVD756');
var path = window.location.pathname
var cookie = getCookie("lastPath");
console.log(path)
if (path.replace("/", "") === "") {
if (cookie.replace("/", "") !== "") {
console.log(cookie)
document.getElementById("tip").innerHTML = "<a href='" + cookie + "'>跳转到上次进度</a>"
}
} else {
setCookie("lastPath", path)
}
function setCookie(cname, cvalue) {
var d = new Date();
d.setTime(d.getTime() + (180 * 24 * 60 * 60 * 1000));
var expires = "expires=" + d.toGMTString();
document.cookie = cname + "=" + cvalue + "; " + expires + ";path = /";
}
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i].trim();
if (c.indexOf(name) === 0) return c.substring(name.length, c.length);
}
return "";
}
</script>
</html>