mirror of
https://github.com/LCTT/TranslateProject.git
synced 2025-03-12 01:40:10 +08:00
Merge remote-tracking branch 'LCTT/master'
This commit is contained in:
commit
d23078d1dd
@ -0,0 +1,69 @@
|
|||||||
|
如何使用 Linux 防火墙隔离本地欺骗地址
|
||||||
|
======
|
||||||
|
|
||||||
|
> 如何使用 iptables 防火墙保护你的网络免遭黑客攻击。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
即便是被入侵检测和隔离系统所保护的远程网络,黑客们也在寻找各种精巧的方法入侵。IDS/IPS 不能停止或者减少那些想要接管你的网络控制权的黑客攻击。不恰当的配置允许攻击者绕过所有部署的安全措施。
|
||||||
|
|
||||||
|
在这篇文章中,我将会解释安全工程师或者系统管理员该怎样避免这些攻击。
|
||||||
|
|
||||||
|
几乎所有的 Linux 发行版都带着一个内建的防火墙来保护运行在 Linux 主机上的进程和应用程序。大多数防火墙都按照 IDS/IPS 解决方案设计,这样的设计的主要目的是检测和避免恶意包获取网络的进入权。
|
||||||
|
|
||||||
|
Linux 防火墙通常有两种接口:iptables 和 ipchains 程序(LCTT 译注:在支持 systemd 的系统上,采用的是更新的接口 firewalld)。大多数人将这些接口称作 iptables 防火墙或者 ipchains 防火墙。这两个接口都被设计成包过滤器。iptables 是有状态防火墙,其基于先前的包做出决定。ipchains 不会基于先前的包做出决定,它被设计为无状态防火墙。
|
||||||
|
|
||||||
|
在这篇文章中,我们将会专注于内核 2.4 之后出现的 iptables 防火墙。
|
||||||
|
|
||||||
|
有了 iptables 防火墙,你可以创建策略或者有序的规则集,规则集可以告诉内核该如何对待特定的数据包。在内核中的是Netfilter 框架。Netfilter 既是框架也是 iptables 防火墙的项目名称。作为一个框架,Netfilter 允许 iptables 勾连被设计来操作数据包的功能。概括地说,iptables 依靠 Netfilter 框架构筑诸如过滤数据包数据的功能。
|
||||||
|
|
||||||
|
每个 iptables 规则都被应用到一个表中的链上。一个 iptables 链就是一个比较包中相似特征的规则集合。而表(例如 `nat` 或者 `mangle`)则描述不同的功能目录。例如, `mangle` 表用于修改包数据。因此,特定的修改包数据的规则被应用到这里;而过滤规则被应用到 `filter` 表,因为 `filter` 表过滤包数据。
|
||||||
|
|
||||||
|
iptables 规则有一个匹配集,以及一个诸如 `Drop` 或者 `Deny` 的目标,这可以告诉 iptables 对一个包做什么以符合规则。因此,没有目标和匹配集,iptables 就不能有效地处理包。如果一个包匹配了一条规则,目标会指向一个将要采取的特定措施。另一方面,为了让 iptables 处理,每个数据包必须匹配才能被处理。
|
||||||
|
|
||||||
|
现在我们已经知道 iptables 防火墙如何工作,让我们着眼于如何使用 iptables 防火墙检测并拒绝或丢弃欺骗地址吧。
|
||||||
|
|
||||||
|
### 打开源地址验证
|
||||||
|
|
||||||
|
作为一个安全工程师,在处理远程的欺骗地址的时候,我采取的第一步是在内核打开源地址验证。
|
||||||
|
|
||||||
|
源地址验证是一种内核层级的特性,这种特性丢弃那些伪装成来自你的网络的包。这种特性使用反向路径过滤器方法来检查收到的包的源地址是否可以通过包到达的接口可以到达。(LCTT 译注:到达的包的源地址应该可以从它到达的网络接口反向到达,只需反转源地址和目的地址就可以达到这样的效果)
|
||||||
|
|
||||||
|
利用下面简单的脚本可以打开源地址验证而不用手工操作:
|
||||||
|
|
||||||
|
```
|
||||||
|
#!/bin/sh
|
||||||
|
#作者: Michael K Aboagye
|
||||||
|
#程序目标: 打开反向路径过滤
|
||||||
|
#日期: 7/02/18
|
||||||
|
#在屏幕上显示 “enabling source address verification”
|
||||||
|
echo -n "Enabling source address verification…"
|
||||||
|
#将值0覆盖为1来打开源地址验证
|
||||||
|
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
|
||||||
|
echo "completed"
|
||||||
|
```
|
||||||
|
|
||||||
|
上面的脚本在执行的时候只显示了 `Enabling source address verification` 这条信息而不会换行。默认的反向路径过滤的值是 `0`,`0` 表示没有源验证。因此,第二行简单地将默认值 `0` 覆盖为 `1`。`1` 表示内核将会通过确认反向路径来验证源地址。
|
||||||
|
|
||||||
|
最后,你可以使用下面的命令通过选择 `DROP` 或者 `REJECT` 目标之一来丢弃或者拒绝来自远端主机的欺骗地址。但是,处于安全原因的考虑,我建议使用 `DROP` 目标。
|
||||||
|
|
||||||
|
像下面这样,用你自己的 IP 地址代替 `IP-address` 占位符。另外,你必须选择使用 `REJECT` 或者 `DROP` 中的一个,这两个目标不能同时使用。
|
||||||
|
|
||||||
|
```
|
||||||
|
iptables -A INPUT -i internal_interface -s IP_address -j REJECT / DROP
|
||||||
|
iptables -A INPUT -i internal_interface -s 192.168.0.0/16 -j REJECT / DROP
|
||||||
|
```
|
||||||
|
|
||||||
|
这篇文章只提供了如何使用 iptables 防火墙来避免远端欺骗攻击的基础知识。
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
via: https://opensource.com/article/18/2/block-local-spoofed-addresses-using-linux-firewall
|
||||||
|
|
||||||
|
作者:[Michael Kwaku Aboagye][a]
|
||||||
|
译者:[leemeans](https://github.com/leemeans)
|
||||||
|
校对:[wxy](https://github.com/wxy)
|
||||||
|
|
||||||
|
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||||
|
|
||||||
|
[a]:https://opensource.com/users/revoks
|
@ -2,66 +2,67 @@
|
|||||||
=====
|
=====
|
||||||
|
|
||||||

|

|
||||||
有很多监控工具可用来监控本地和远程 Linux 系统,一个很好的例子是 [**Cockpit**][1]。但是,这些工具的安装和使用比较复杂,至少对于新手管理员来说是这样。新手管理员可能需要花一些时间来弄清楚如何配置这些工具来监视系统。如果你想要以快速且粗略地在局域网中一次监控多台主机,你可能需要查看一下 **“rwho”** 工具。只要安装 rwho 实用程序,它将立即快速地监控本地和远程系统。你什么都不用配置!你所要做的就是在要监视的系统上安装 “rwho” 工具。
|
|
||||||
|
|
||||||
请不要将 rwho 视为功能丰富且完整的监控工具。这只是一个简单的工具,它只监视远程系统的**正常运行时间**,**加载**和**登录用户**。使用 “rwho” 使用程序,我们可以发现谁在哪台计算机上登录,一个被监视的计算机的列表,有正常运行时间(自上次重新启动以来的时间),有多少用户登录了,以及在过去的 1、5、15 分钟的平均负载。不多不少!而且,它只监视同一子网中的系统。因此,它非常适合小型和家庭办公网络。
|
有很多监控工具可用来监控本地和远程 Linux 系统,一个很好的例子是 [Cockpit][1]。但是,这些工具的安装和使用比较复杂,至少对于新手管理员来说是这样。新手管理员可能需要花一些时间来弄清楚如何配置这些工具来监视系统。如果你想要以快速且粗略地在局域网中一次监控多台主机,你可能需要了解一下 “rwho” 工具。只要安装了 rwho 实用程序,它将立即快速地监控本地和远程系统。你什么都不用配置!你所要做的就是在要监视的系统上安装 “rwho” 工具。
|
||||||
|
|
||||||
|
请不要将 rwho 视为功能丰富且完整的监控工具。这只是一个简单的工具,它只监视远程系统的“正常运行时间”(`uptime`),“负载”(`load`)和**登录的用户**。使用 “rwho” 使用程序,我们可以发现谁在哪台计算机上登录;一个被监视的计算机的列表,列出了正常运行时间(自上次重新启动以来的时间);有多少用户登录了;以及在过去的 1、5、15 分钟的平均负载。不多不少!而且,它只监视同一子网中的系统。因此,它非常适合小型和家庭办公网络。
|
||||||
|
|
||||||
### 在 Linux 中监控多台主机
|
### 在 Linux 中监控多台主机
|
||||||
|
|
||||||
让我来解释一下 rwho 是如何工作的。每个在网络上使用 rwho 的系统都将广播关于它自己的信息,其他计算机可以使用 rwhod-daemon 来访问这些信息。因此,网络上的每台计算机都必须安装 rwho。此外,为了分发或访问其他主机的信息,必须允许 rwho 端口(例如端口 513/UDP)通过防火墙/路由器。
|
让我来解释一下 `rwho` 是如何工作的。每个在网络上使用 `rwho` 的系统都将广播关于它自己的信息,其他计算机可以使用 `rwhod` 守护进程来访问这些信息。因此,网络上的每台计算机都必须安装 `rwho`。此外,为了分发或访问其他主机的信息,必须允许 `rwho` 端口(例如端口 `513/UDP`)通过防火墙/路由器。
|
||||||
|
|
||||||
好的,让我们来安装它。
|
好的,让我们来安装它。
|
||||||
|
|
||||||
我在 Ubuntu 16.04 LTS 服务器上进行了测试,rwho 在默认仓库中可用,所以,我们可以使用像下面这样的 APT 软件包管理器来安装它。
|
我在 Ubuntu 16.04 LTS 服务器上进行了测试,`rwho` 在默认仓库中可用,所以,我们可以使用像下面这样的 APT 软件包管理器来安装它。
|
||||||
|
|
||||||
```
|
```
|
||||||
$ sudo apt-get install rwho
|
$ sudo apt-get install rwho
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
在基于 RPM 的系统如 CentOS, Fedora, RHEL上,使用以下命令来安装它:
|
在基于 RPM 的系统如 CentOS、 Fedora、 RHEL 上,使用以下命令来安装它:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ sudo yum install rwho
|
$ sudo yum install rwho
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
如果你在防火墙/路由器之后,确保你已经允许使用 rwhod 513 端口。另外,使用命令验证 rwhod-daemon 是否正在运行:
|
如果你在防火墙/路由器之后,确保你已经允许使用 rwhod 513 端口。另外,使用命令验证 `rwhod` 守护进程是否正在运行:
|
||||||
|
|
||||||
$ sudo systemctl status rwhod
|
$ sudo systemctl status rwhod
|
||||||
|
|
||||||
如果它尚未启动,运行以下命令启用并启动 rwhod 服务:
|
如果它尚未启动,运行以下命令启用并启动 `rwhod` 服务:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ sudo systemctl enable rwhod
|
$ sudo systemctl enable rwhod
|
||||||
$ sudo systemctl start rwhod
|
$ sudo systemctl start rwhod
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
现在是时候来监视系统了。运行以下命令以发现谁在哪台计算机上登录:
|
现在是时候来监视系统了。运行以下命令以发现谁在哪台计算机上登录:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ rwho
|
$ rwho
|
||||||
ostechni ostechnix:pts/5 Mar 12 17:41
|
ostechni ostechnix:pts/5 Mar 12 17:41
|
||||||
root server:pts/0 Mar 12 17:42
|
root server:pts/0 Mar 12 17:42
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
正如你所看到的,目前我的局域网中有两个系统。本地系统用户是 **ostechnix** (Ubuntu 16.04 LTS),远程系统的用户是 **root** (CentOS 7)。可能你已经猜到了,rwho 与 “who” 命令相似,但它会监视远程系统。
|
正如你所看到的,目前我的局域网中有两个系统。本地系统用户是 `ostechnix` (Ubuntu 16.04 LTS),远程系统的用户是 `root` (CentOS 7)。可能你已经猜到了,`rwho` 与 `who` 命令相似,但它会监视远程系统。
|
||||||
|
|
||||||
而且,我们可以使用以下命令找到网络上所有正在运行的系统的正常运行时间:
|
而且,我们可以使用以下命令找到网络上所有正在运行的系统的正常运行时间:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ ruptime
|
$ ruptime
|
||||||
ostechnix up 2:17, 1 user, load 0.09, 0.03, 0.01
|
ostechnix up 2:17, 1 user, load 0.09, 0.03, 0.01
|
||||||
server up 1:54, 1 user, load 0.00, 0.01, 0.05
|
server up 1:54, 1 user, load 0.00, 0.01, 0.05
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
这里,ruptime(类似于 “uptime” 命令)显示了我的 Ubuntu(本地) and CentOS(远程)系统的总运行时间。明白了吗?棒极了!以下是我的 Ubuntu 16.04 LTS 系统的示例屏幕截图:
|
这里,`ruptime`(类似于 `uptime` 命令)显示了我的 Ubuntu(本地) 和 CentOS(远程)系统的总运行时间。明白了吗?棒极了!以下是我的 Ubuntu 16.04 LTS 系统的示例屏幕截图:
|
||||||
|
|
||||||
![][3]
|
![][3]
|
||||||
|
|
||||||
你可以在以下位置找到有关局域网中所有其他机器的信息:
|
你可以在以下位置找到有关局域网中所有其他机器的信息:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ ls /var/spool/rwho/
|
$ ls /var/spool/rwho/
|
||||||
whod.ostechnix whod.server
|
whod.ostechnix whod.server
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
它很小,但却非常有用,可以发现谁在哪台计算机上登录,以及正常运行时间和系统负载详情。
|
它很小,但却非常有用,可以发现谁在哪台计算机上登录,以及正常运行时间和系统负载详情。
|
||||||
@ -71,23 +72,22 @@ whod.ostechnix whod.server
|
|||||||
请注意,这种方法有一个严重的漏洞。由于有关每台计算机的信息都通过网络进行广播,因此该子网中的每个人都可能获得此信息。通常情况下可以,但另一方面,当有关网络的信息分发给非授权用户时,这可能是不必要的副作用。因此,强烈建议在受信任和受保护的局域网中使用它。
|
请注意,这种方法有一个严重的漏洞。由于有关每台计算机的信息都通过网络进行广播,因此该子网中的每个人都可能获得此信息。通常情况下可以,但另一方面,当有关网络的信息分发给非授权用户时,这可能是不必要的副作用。因此,强烈建议在受信任和受保护的局域网中使用它。
|
||||||
|
|
||||||
更多的信息,查找 man 手册页。
|
更多的信息,查找 man 手册页。
|
||||||
|
|
||||||
```
|
```
|
||||||
$ man rwho
|
$ man rwho
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
好了,这就是全部了。更多好东西要来了,敬请期待!
|
好了,这就是全部了。更多好东西要来了,敬请期待!
|
||||||
|
|
||||||
干杯!
|
干杯!
|
||||||
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
via: https://www.ostechnix.com/how-to-quickly-monitor-multiple-hosts-in-linux/
|
via: https://www.ostechnix.com/how-to-quickly-monitor-multiple-hosts-in-linux/
|
||||||
|
|
||||||
作者:[SK][a]
|
作者:[SK][a]
|
||||||
译者:[MjSeven](https://github.com/MjSeven)
|
译者:[MjSeven](https://github.com/MjSeven)
|
||||||
校对:[校对者ID](https://github.com/校对者ID)
|
校对:[wxy](https://github.com/wxy)
|
||||||
|
|
||||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||||
|
|
@ -1,80 +0,0 @@
|
|||||||
如何使用Linux防火墙隔离局域网受欺骗地址
|
|
||||||
======
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
|
|
||||||
即便是被入侵检测和隔离系统保护的远程网络,黑客们也在寻找精致的方法入侵。IDS/IPS是不能停止或者减少那些想要接管你的网络的黑客的攻击的。不恰当的配置允许攻击者绕过所有部署的安全措施。
|
|
||||||
|
|
||||||
在这篇文章中,我将会解释安全工程师或者系统管理员怎样可以避免这些攻击。
|
|
||||||
|
|
||||||
几乎所有的Linux发行版都带着一个内建的防火墙来保护运行在Linux宿主机上的进程和应用程序。大多数都按照IDS/IPS解决方案设计,这样的设计的主要目的是检测和避免恶意包获取网络的进入权。
|
|
||||||
|
|
||||||
Linux防火墙通常带有两个接口:iptable和ipchain程序。大多数人将这些接口称作iptables防火墙或者ipchains防火墙。这两个接口都被设计成包过滤器。iptables是有状态防火墙,基于先前的包做出决定。
|
|
||||||
|
|
||||||
在这篇文章中,我们将会专注于内核2.4之后出现的iptables防火墙。
|
|
||||||
|
|
||||||
有了iptables防火墙,你可以创建策略或者有序的规则集,规则集可以告诉内核如何对待特定的数据包。在内核中的是Netfilter框架。Netfilter既是框架也是iptables防火墙的工程名。作为一个框架,Netfilter允许iptables勾取被设计来操作数据包的函数。概括地说,iptables依靠Netfilter框架构筑诸如过滤数据包数据的功能。
|
|
||||||
|
|
||||||
每个iptables规则都被应用到一个含表的链中。一个iptables链就是一个比较包中相似字符的规则的集合。而表(例如nat或者mangle)则描述不同的功能目录。例如,一个mangle表转化包数据。因此,特定的改变包数据的规则被应用到这里,而过滤规则被应用到filter表,因为filter表过滤包数据。
|
|
||||||
|
|
||||||
iptables规则有一系列匹配,伴随着一个诸如`Drop`或者`Deny`的目标,这可以告诉iptables对一个包做什么符合规则。因此,没有一个目标和一系列匹配,iptables就不能有效地处理包。如果一个包匹配一条规则,一个目标简单地指向一个将要采取的特定措施。另一方面,为了让iptables处理,匹配必须被每个包满足吗。
|
|
||||||
|
|
||||||
|
|
||||||
现在我们已经知道iptables防火墙如何工作,开始着眼于如何使用iptables防火墙检测并拒绝或丢弃被欺骗的地址吧。
|
|
||||||
|
|
||||||
### 打开源地址验证
|
|
||||||
|
|
||||||
作为一个安全工程师,在处理远程主机被欺骗地址的时候,我采取的第一步是在内核打开源地址验证。
|
|
||||||
|
|
||||||
源地址验证是一种内核层级的特性,这种特性丢弃那些伪装成来自你的网络的包。这种特性使用反向路径过滤器方法来检查收到的包的源地址是否可以通过包到达的接口可以到达。(译注:到达的包的源地址应该可以从它到达的网络接口反向到达,只需反转源地址和目的地址就可以达到这样的效果)
|
|
||||||
|
|
||||||
利用下面简单的脚本可以打开源地址验证而不用手工操作:
|
|
||||||
```
|
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
#作者: Michael K Aboagye
|
|
||||||
|
|
||||||
#程序目标: 打开反向路径过滤
|
|
||||||
|
|
||||||
#日期: 7/02/18
|
|
||||||
|
|
||||||
#在屏幕上显示 “enabling source address verification”
|
|
||||||
|
|
||||||
echo -n "Enabling source address verification…"
|
|
||||||
|
|
||||||
#将值0覆盖为1来打开源地址验证
|
|
||||||
|
|
||||||
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
|
|
||||||
|
|
||||||
echo "completed"
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
先前的脚本在执行的时候只显示了`Enabling source address verification`这条信息而没有添加新行。默认的反向路径过滤的值是0,0表示没有源验证。因此,第二行简单地将默认值0覆盖为1。1表示内核将会通过确认反向路径来验证源(地址)。
|
|
||||||
|
|
||||||
最后,你可以使用下面的命令通过选择`DROP`或者`REJECT`目标中的一个来丢弃或者拒绝来自远端主机的被欺骗地址。但是,处于安全原因的考虑,我建议使用`DROP`目标。
|
|
||||||
|
|
||||||
像下面这样,用你自己的IP地址代替“IP-address” 占位符。另外,你必须选择使用`REJECT`或者`DROP`中的一个,这两个目标不能同时使用。
|
|
||||||
```
|
|
||||||
iptables -A INPUT -i internal_interface -s IP_address -j REJECT / DROP
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
iptables -A INPUT -i internal_interface -s 192.168.0.0/16 -j REJECT/ DROP
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
这篇文章只提供了如何使用iptables防火墙来避免远端欺骗攻击的基础(知识)。
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
via: https://opensource.com/article/18/2/block-local-spoofed-addresses-using-linux-firewall
|
|
||||||
|
|
||||||
作者:[Michael Kwaku Aboagye][a]
|
|
||||||
译者:[leemeans](https://github.com/leemeans)
|
|
||||||
校对:[校对者ID](https://github.com/校对者ID)
|
|
||||||
|
|
||||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
|
||||||
|
|
||||||
[a]:https://opensource.com/users/revoks
|
|
Loading…
Reference in New Issue
Block a user