Linux 下的 netfilter 认识与常规操作

前言

博客写到今天,1年7个月。可是包含所有写作经历,这个时间线可以达到三年。

上次更新了一篇 “镇站之宝” ,也是本站阅读量第一的文章。

推荐大家仔细阅读,受益匪浅 —— Linux 下Shell 脚本几种基本命令替换区别(6259)


还有一周多,就去参加 Redhat 工程师考试了。这几天在翻阅自己平时积累下来的文章集合,用搜索引擎找了一下发现居然没有 firewall-cmd 也没有 iptables 的相关文章。写过 systemd 架构下的 systemctl 系统状态管理器——systemd 之 systemctl ,以及 systemd-journald 日志审计查询器 —— systemd 之 journalctl

Let's Go TO the world of FIREWALL.

什么是防火墙

防火墙,是网络工程师和系统工程师的共同挡板。

它在 OSI 七层协议中的分别具有以下功能,高级协议包含低级协议。比如网络层的防火墙可以识别来往 IP 地址,亦可识别最底层链路层的 MAC 地址以及物理层传输的帧和 bit 信号(然鹅,通常物理层多数用在数据包封装类型)。

早期在参加集团组织的 “网络搭建比赛” 时,写过这篇文章——CCNA学习 NAT网络地址转换

纵观整个网络架构:先有了中继器,用于增长传统网线只有一百米的长度限制(理论通过中继器达到无限);然后对于 “正常的网络架构” 来说,一个连接口只能连接一个网段。为了更好的实现网络连接,出现了 Hub 集线器,这样我们就可以连接俩个网段了;最后,因为 Hub 处于数据链路层只能识辨 MAC 地址并且只有一个 冲突域 ,所以需要全网进行广播代价太大。出现了当今流行的 Switch 交换机,除了带宽上的质变,它最多支持 48 口 将不同网段之间流量交换。并且全部可以处于不同的冲突域,不再需要全网广播仅需要按照 wlan 划分在一个冲突域。

上述都是主机的概念。对于网络来说,路由器也是最重要的组成部分(其实现在的三层交换机已经很强悍了,具有路由功能)。Windows 中 软件防火墙 位于应用层内,网络中的 硬件防火墙 可在第二层至第七层工作。

注意:如果有时间、有能力,建议仔细观看上图。每一层都被解释的非常透彻,下文会对单层单个程序做简单使用科普教程。

什么是 ebtables

  ebtables程序是一个基于linux的桥接防火墙的过滤工具。它能透明化过滤通过 Linux 桥的网络流量。过滤可能仅仅在链路层过滤以及在高网络层的基本过滤,高级日志记录,MAC DNAT / SNAT 和路由器设备也包括在内。

  ebtables工具可以结合其他 Linux 过滤工具(iptables,ip6tables和arptables)做一个桥接网络防火墙也可以过滤这些更高层次。这是通过 bridge-netfilter 架构是标准 Linux内核 的一部分。ebtables arptables 代码库是由 netfilter开发者 接管维护的软件。

提示: ebtablesiptables 区别在于前者走网桥上的二层流量,后者走路由层面上的三层流量。

1、基本过滤配置

ebtables -P FORWARD DROP
ebtables -A FORWARD -p IPv4 -j ACCEPT
ebtables -A FORWARD -p ARP -j ACCEPT
ebtables -A FORWARD -p LENGTH -j ACCEPT
ebtables -A FORWARD --log-level info --log-ip --log-prefix EBFW
ebtables -P INPUT DROP
ebtables -A INPUT -p IPv4 -j ACCEPT
ebtables -A INPUT -p ARP -j ACCEPT
ebtables -A INPUT -p LENGTH -j ACCEPT
ebtables -A INPUT --log-level info --log-ip --log-prefix EBFW
ebtables -P OUTPUT DROP
ebtables -A OUTPUT -p IPv4 -j ACCEPT
ebtables -A OUTPUT -p ARP -j ACCEPT
ebtables -A OUTPUT -p LENGTH -j ACCEPT
ebtables -A OUTPUT --log-level info --log-ip --log-arp --log-prefix EBFW -j DROP

这是一个基本的过滤器配置,只会让由 IPv4 和 ARP 协议构成的帧通过。同时在网络有了一些旧机器使用以太网帧协议字段作为一个长度字段(他们使用以太网 802.2 或 802.3 协议)。没有理由不让这些机器通过,更准确地来说是:我们有一个 理由/办法 让他们通过

Linux 下的 netfilter 认识与常规操作的更多相关文章

  1. (一)洞悉linux下的Netfilter&iptables:什么是Netfilter?

    转自:http://blog.chinaunix.net/uid-23069658-id-3160506.html 本人研究linux的防火墙系统也有一段时间了,由于近来涉及到的工作比较纷杂,久而久之 ...

  2. 洞悉linux下的Netfilter&iptables:什么是Netfilter?

    本人研究linux的防火墙系统也有一段时间了,由于近来涉及到的工作比较纷杂,久而久之怕生熟了.趁有时间,好好把这方面的东西总结一番.一来是给自己做个沉淀,二来也欢迎这方面比较牛的前辈给小弟予以指点,共 ...

  3. linux下文件压缩与解压操作

    对于刚刚接触Linux的人来说,一定会给Linux下一大堆各式各样的文件名给搞晕.别个不说,单单就压缩文件为例,我们知道在Windows下最常见的压缩文件就只有两种,一是,zip,另一个是.rap.可 ...

  4. Linux下MySql的登陆和管理操作

    一.mysql数据库启停1.linux下启动mysql的命令:    mysqladmin start/ect/init.d/mysql start (前面为mysql的安装路径)2.linux下重启 ...

  5. Linux下部署Samba服务环境的操作记录

    关于Linux和Windows系统之间的文件传输,很多人选择使用FTP,相对较安全,但是有时还是会出现一些问题,比如上传文件时,文件名莫名出现乱码,文件大小改变等问题.相比较来说,使用Samba作为文 ...

  6. linux下各种形式的shell加法操作总结

    linux 下shell加法操作总结: #!/bin/bash   n=1;echo -n "$n "   let "n = $n + 1" echo -n & ...

  7. Linux下TFTP的安装,配置和操作

    注:转载他人,仅供自己研究学习使用 TFTP是用来下载远程文件的最简单网络协议,它其于UDP协议而实现.嵌入式linux的tftp开发环境包括两个方面:一是linux服务器端的tftp-server支 ...

  8. linux下vi的一些简单的操作

    前言 在嵌入式linux开发中,进行需要修改一下配置文件之类的,必须使用vi,因此,熟悉 vi 的一些基本操作,有助于提高工作效率. 一,模式 vi编辑器有3种模式:命令模式.输入模式.末行模式.掌握 ...

  9. Linux下使用指定网卡进行ping操作

    目录   1. 为什么要使用知道那个网卡ping操作   2. 使用指定网卡ping操作   3. 总结 1. 为什么要使用指定网卡ping操作 现在很多服务器都拥有双网卡甚至多网卡,有些是为了保持高 ...

随机推荐

  1. CompletionPort

    [CompletionPort] 1.CreateIoCompletionPort.此方法用于创建与绑定.此方法调用后,socket即退出,只能通过CompletionKey来辨认是哪个socket的 ...

  2. ios的@property属性和@synthesize属性(转)

    当你定义了一系列的变量时,需要写很多的getter和setter方法,而且它们的形式都是差不多的,,所以Xcode提供了@property 和@synthesize属性,@property用在 .h ...

  3. KVC(forKey,forKeyPath)

    KVC是Cocoa一个大招,非常牛逼. 利用KVC可以随意修改一个对象的属性或者成员变量(并且私有的也可以修改)  如:Person.m文件中: @implementation Person{    ...

  4. jsp滚动框(非滚动条)

    <marquee scrollAmount=4 width=300>需要滚动的字</marquee> scrollAmount表示运动速度,值是正整数,默认为6,越大滚动越快 ...

  5. Ruby快速入门

    Rb是什么 ? 交互式Ruby(IRB)为实验提供了一个shell.内置IRB shell,你可以立即一行行查看表达式的结果.该工具自带Ruby安装,所以你必须做一些额外的IRB工作无关.只需键入在命 ...

  6. 18-(unicode error) 'unicodeescape' codec can't decode bytes in position 16-17: truncated \uXXXX escape

    读取文件时碰到问题: 1.(unicode error) 'unicodeescape' codec can't decode bytes in position 16-17: truncated \ ...

  7. 自定义beans.xml文件实现Spring框架

    经过一天的补习,学习文件加载,java反射,JDom等知识,到了晚上终于能够搭出一个基于配置文件的简单spring框架实现! 首先我们先看看这个问题: 下面是两副图左边是项目结构图,右边是UML图: ...

  8. 如何从官网开始 mongo java

    http://docs.mongodb.org/ecosystem/drivers/ MongoDB Driver Documentation Getting Started Installation ...

  9. c++ vector反转reverse

    template <class BidirectionalIterator> void reverse ( BidirectionalIterator first, Bidirection ...

  10. centos top命令列解释

    查看单个进程:top -p 进程号 PID(Process ID):进程标示号 ( 每个 process 的 ID ) USER:进程所有者的用户名 ( 该 process 所属的使用者 ) PR:进 ...