利用Linux防火墙隔离本地欺骗地址的方法详解

前言

即便是被入侵检测和隔离系统所保护的远程网络,黑客们也在寻找各种精巧的方法入侵。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

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

您可能感兴趣的文章:

  • linux增加iptables防火墙规则的示例
  • Linux防火墙iptables入门教程
  • 阿里云linux服务器安全设置(防火墙策略等)
  • 在Linux代理服务器上设置防火墙
  • Linux系统中防火墙的框架分析
  • Linux下防火墙的简单配置与插入规则介绍
  • 教你将Linux配置为代理防火墙
  • linux防火墙iptables规则的查看、添加、删除和修改方法总结
  • linux防火墙配置教程之访问外网web实验(3)
  • linux查看防火墙状态与开启关闭命令详解
时间: 2018-05-03

linux增加iptables防火墙规则的示例

以下是我的iptables设置 复制代码 代码如下: *filter:INPUT DROP [0:0]:FORWARD ACCEPT [0:0]:OUTPUT ACCEPT [49061:9992130]-A INPUT -i lo -j ACCEPT   不开启会有很多服务无法使用,开启回环地址-A INPUT -p icmp -j ACCEPT   允许icmp包通过,也就是允许别人ping自己-A INPUT -m state --state RELATED,ESTABLISHED -j

Linux系统中防火墙的框架分析

Netfilter提供了一个抽象.通用化的框架,该框架定义的一个子功能的实现就是包过滤子系统.Netfilter框架包含以下五部分: 1. 为每种网络协议(IPv4.IPv6等)定义一套钩子函数(IPv4定义了5个钩子函数), 这些钩子函数在数据报流过协议栈的几个关键点被调用.在这几个点中,协议栈将把数据报及钩子函数标号作为参数调用netfilter框架. 2. 内核的任何模块可以对每种协议的一个或多个钩子进行注册,实现挂接,这样当某个数据包被传递给netfilter框架时,内核能检测是否有任何

linux查看防火墙状态与开启关闭命令详解

linux查看防火墙状态与开启关闭命令有以下两种方式: 一.service方式 查看防火墙状态: [root@centos6 ~]# service iptables status iptables:未运行防火墙. 开启防火墙: [root@centos6 ~]# service iptables start 关闭防火墙: [root@centos6 ~]# service iptables stop 二.iptables方式 先进入init.d目录,命令如下: [root@centos6 ~]

教你将Linux配置为代理防火墙

Linux本身可以通过添加插座软件包起到代理防火墙的作用,而且,这一切都是免费的. 什么是代理防火墙 代理防火墙不让任何直接的网络流通过,而由它作为Internet和内部网络计算机之间 的中间媒介.防火墙自己处理各种网络服务而不是只让它们直接通过.例如,登录到网络上的计算机请求一个Internet网页.计算机不直接链接到Internet网络服务提供的网页,而是连到自己网络的代理服务器上,代理服务器识别代理请求,然后以合适的方式传递给相应的Internet网络服务器.远程网络服务器视为来自防火墙服

linux防火墙iptables规则的查看、添加、删除和修改方法总结

1.查看 iptables -nvL --line-number -L 查看当前表的所有规则,默认查看的是filter表,如果要查看NAT表,可以加上-t NAT参数 -n 不对ip地址进行反查,加上这个参数显示速度会快很多 -v 输出详细信息,包含通过该规则的数据包数量,总字节数及相应的网络接口 –-line-number 显示规则的序列号,这个参数在删除或修改规则时会用到 2.添加 添加规则有两个参数:-A和-I.其中-A是添加到规则的末尾:-I可以插入到指定位置,没有指定位置的话默认插入到

linux防火墙配置教程之访问外网web实验(3)

一.实验目标 1.本次实验在"Linux基础网络搭建实验"的基础上,在外网虚拟机上搭建WEB服务,并分别配置外网和网关的防火墙规则,使内网能够访问WEB服务 2.Linux基础网络搭建实验:Linux网络搭建基础实验(1) 3.实验拓扑: 二.实验步骤 1.建立如图所示的网络拓扑结构,内外网联通,网关防火墙也暂时关闭 2.外网测试主机配置 (1)配置本地Yum源(参考:CentOS 6.5配置本地Yum源教程) (2)检查系统是否安装WEB服务器,如有,则启动该服务,如没有,则安装该服

Linux下防火墙的简单配置与插入规则介绍

查看当前的防火墙设置 iptables -L INPUT -n --line-numbers 删除一条策略,例如第4行策略 iptables -D INPUT 4 -A:在尾部插入 -I (insert)在指定链中插入一条新规则,为指明插入到第几行 (如:在第七行插入) iptables -I INPUT 7 -p tcp -m state --state NEW -m tcp --dport 81 -j ACCEPT 然后保存 service iptables save 然后重启 servic

在Linux代理服务器上设置防火墙

一般而言,实现Linux的防火墙功能有两种策略.一种是首先全面禁止所有的输入.输出和转发数据包,然后根据用户的具体需要逐步打开各项服务功能.这种方式的特点是安全性很高,但必须全面考虑用户所需的各项服务功能,不能有任何遗漏,要求系统管理员清楚地知道实现某种服务和功能需要打开哪些服务和端口.第二种方式是首先默认打开所有的输入.输出数据包,然后禁止某些危险包.IP欺骗包.广播包.ICMP服务类型攻击等:对于应用层的服务,像http.sendmail.pop3.ftp等,可以有选择地启动或安装.这种方式

阿里云linux服务器安全设置(防火墙策略等)

首先需要进行linux的基础安全设置,可以先参考这篇文章 http://www.jb51.net/article/94842.htm 1.Linux系统脚本 #!/bin/bash ######################################### #Function: linux drop port #Usage: bash linux_drop_port.sh #Author: Customer Service Department #Company: Alibaba Clo

Linux防火墙iptables入门教程

一.关于iptables Iptables是一个基于命令行的防火墙工具,它使用规则链来允许/阻止网络流量.当一条网络连接试图在你的系统中建立时,iptables会查找其对应的匹配规则.如果找不到,iptables将对其采取默认操作.几乎所有的Linux发行版都预装了iptables.在Ubuntu/Debian中更新/安装iptables的命令为: 复制代码 代码如下: sudo apt-get install iptables 现有的一些图形界面软件也可以替代iptables,如Firesta

详解Linux防火墙iptables禁IP与解封IP常用命令

在Linux服务器被攻击的时候,有的时候会有几个主力IP.如果能拒绝掉这几个IP的攻击的话,会大大减轻服务器的压力,说不定服务器就能恢复正常了. 在Linux下封停IP,有封杀网段和封杀单个IP两种形式.一般来说,现在的攻击者不会使用一个网段的IP来攻击(太招摇了),IP一般都是散列的.于是下面就详细说明一下封杀单个IP的命令,和解封单个IP的命令. Linux防火墙:iptables禁IP与解封IP常用命令 在Linux下,使用ipteables来维护IP规则表.要封停或者是解封IP,其实就是

Linux防火墙配置SNAT教程(2)

1.实验目标 以实验"Linux防火墙配置-SNAT1"为基础,为网关增加外网IP地址,为eth1创建虚拟接口,使外网测试主机在Wireshark中捕获到的地址为eth1虚拟接口的地址 (Linux防火墙配置-SNAT1:Linux防火墙配置SNAT教程(1) ) 2.实验拓扑 3.实验步骤 (1)完成"Linux防火墙配置-SNAT1"实验 (2)为网关增加外网IP地址,为eth1创建5个虚拟接口 [root@lyy 桌面]# gedit /etc/sysconf

Linux防火墙配置SNAT教程(1)

1.实验目标 以实验"防火墙配置-访问外网WEB"为基础,在WEB服务器上安装Wireshark,设置Wireshark的过滤条件为捕获HTTP报文,在Wireshark中开启捕获,在内网测试机上访问WEB服务器,查看捕获结果,再在网关防火墙上设置SNAT,查看捕获结果 (防火墙配置-访问外网WEB:linux防火墙配置教程之访问外网web实验(3) ) 2.SNAT(source network address translation) 源地址转换,其作用是将ip数据包的源地址转换成

Linux下iptables 禁止端口和开放端口示例

1.关闭所有的 INPUT FORWARD OUTPUT 只对某些端口开放. 下面是命令实现: iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP 再用命令 iptables -L -n 查看 是否设置好, 好看到全部 DROP 了 这样的设置好了,我们只是临时的, 重启服务器还是会恢复原来没有设置的状态 还要使用 service iptables save 进行保存 service iptables s

LINUX中IPTABLES防火墙的基本使用教程

前言 对于有公网IP的生产环境VPS,仅仅开放需要的端口,即采用ACL来控制IP和端口(Access Control List). 这里可以使用Linux防火墙netfilter的用户态工具 iptables有4种表:raw–>mangle(修改报文原数据)–>nat(定义地址转换)–>filter(定义允许或者不允许的规则) 每个表可以配置多个链: * 对于filter来讲一般只能做在3个链上:INPUT ,FORWARD ,OUTPUT * 对于nat来讲一般也只能做在3个链上:PR

Linux Shell 脚本编程入门教程

从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作.在Linux GUI日益完善的今天,在系统管理等领域,Shell编程仍然起着不可忽视的作用.深入地了解和熟练地掌握Shell编程,是每一个Linux用户的必修 功课之一. Linux的Shell种类众多,常见的有:Bourne Shell(/usr/bin/sh或/bin/sh).Bourne

linux入门教程 第5章:网络应用

5.1 常用网络命令 在Red Hat Linux 7.1系统提供了与网络相关的工具,掌握好这些工具是十分必要的: 第一类:设置工具 1.netconf: netconf是Red Hat Linux提供的Linuxconf的一部分,主要用于设置与网络相关的参数.它可以在consle下运行(文本菜单),也可以在X-Window中运行(图形界面).在前面,我们介绍过了netconf的一些应用,它的使用比较简单,只要认识上面的英文就可以了,所以在此就不再多说.BTW,如果你设置好了X-Window的话