#1 分类

对单一主机,主要有两种:数据包过滤Netfilter和依据服务软件分析的TCP Wrapper.

对区域型防火墙来说,即安装防火墙的主机充当路由器的角色。防火墙类型主要有两种:数据包过滤Netfilter和代理服务器。

对Netfilter(数据包过滤机制),Linux提供了iptables这个软件来进行管理。下文的重点就是整理iptables常用的命令。

对TCP wraper(程序管理),是针对特定的软件,如ssh,telnet等特定软件进行IP限制,MAC地址限制等(不可用于apache)。

代理服务器往往也是NAT服务器,以实现透明代理。

#2 iptables概念

iptables由多个table组成,每个table都有自己的策略和规则。默认的table为Filter,作用是过滤本地的数据包。除此之外,还有NAT table,功能是进行来源于目的地的IP或port转换,与Linux本机无关。还有其他的table,此处不提。

每个table都有自己的链(chain),盗图一张,具体如下:

对Filter来说,有三条链,分别为INPUT,OUTPUT,FORWARD。

一个数据包进入本机与从本机发出的过程,如下图所示,再次盗图一张:

#3 iptables语法

1. 规则查看

iptables [-t target(缺省为fliter)] [-L (查看当前table的规则)] [-v (更多信息)]

查看filter表规则 : iptables -L

查看NAT表规则 : iptables -t nat -L

2. 规则查看2

iptables-save [-t target]

会列出完整的防火墙规则

3. 清空规则

iptables -F  清除所有已制定规则

iptables -X  清除所有用户自定义的tables

iptables -Z  将所有chain的计数和流量清空

4. 定义默认策略

iptables [-t target] -P [INPUT,OUTPUT...] [DROP,ACCEPT]

5. 设定规则:针对IP

iptables [-AI 链名(-A为新增,-I为插入)] [-io 网络接口(-i为数据包进入的接口)] [-p 协议(主要有:tcp udp icmp all)] [-s 来源IP/网络] [-d 目标IP/网络] -j [ACCEPT|DROP|REJECT|LOG (接收,悄悄丢弃,向来源地址发送拒绝数据包,日志记录)]

LOG记录的数据储存在/var/log/message中,LOG并不影响后续的数据包对比。

例:

添加lo为信任设备: iptables -A INPUT -i lo -j ACCEPT

来自内网的所有数据都接收:iptables -A INPUT -i eth1 -s 192.168.1.0/ -j ACCEPT(假设eth1连接LAN)

6. 设定规则:针对端口

iptables [-AI 链名] [-io 网络接口] [-p tcp,udp] [-s 来源] [--sport 端口范围] [-d 目的] [--dport 端口范围] -j [ACCEPT|DROP|REJECT]

--sport表示来源IP/网络的端口范围,--dsport表示目的IP/网络的端口范围

因为仅有TCP、UDP数据包有端口,所以要想使用--sport或者--dport,都需要指定-p

例:拒绝进入本机的21号端口的数据包:iptables -A INPUT -i eth0 -p tcp --dport  -j REJECT

7. 设定规则:针对mac和state

iptables -A INPUT [-m 外挂模块名(state,mac等)] [--state 状态]

常见的数据包状态:INVALID(无效数据包) ESTABLISHED(连接成功的连接状态) NEW(新建连接的数据包) RELATED(与主机发出去的数据包有关)

例:

通过所有已建立连接或与发出请求相关的数据包,不合法数据包丢弃:iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -m state --state INVALID -j DROP

放行mac地址为aa:bb:cc:dd:ee:ff的主机 iptables -A INPUT -m mac --mac-source aa:bb:cc:dd:ee:ff -j ACCEPT

Linux私房菜——防火墙部分笔记的更多相关文章

  1. 《鸟哥的Linux私房菜》读书笔记

    第五章  初次使用Linux man.info的使用 组合键:切换登录环境.Tab.Ctrl+c.Ctrl+d 正确关机的方法 开机过程的问题排解:文件系统错误.忘记root密码 第六章  文件权限& ...

  2. 《鸟哥的Linux私房菜》读书笔记二

    1.Unix的前身是由贝尔实验室(Bell lab.)的Ken Thompson利用汇编语言写成的, 后来在1971-1973年间由Dennis Ritchie以C程序语言进行改写,才称为Unix. ...

  3. 《鸟哥的Linux私房菜》读书笔记五

    1. Ctrl+alt+FX(X=1~6)可以切换到6个不同的文字界面终端(Terminal) 再按Ctrl+alt+F7就可以回到X Window,按Ctrl+alt+Backspace这是结束所有 ...

  4. 《鸟哥的Linux私房菜》读书笔记四

    1.Linux的目录配置以『树状目录』来配置,至於磁碟分割槽(partition)则需要与树状目录相配合! 请问,在预设的情况下,在安装的时候系统会要求你一定要分割出来的两个Partition为何? ...

  5. 《鸟哥的Linux私房菜》读书笔记三

    1.在Linux系统中,每个设备都被当成一个文件来对待,每个设备都会有设备文件名.比如 IDE接口的硬盘文件名为/dev/hd[a-d] 括号内的字母为a-d当中任意一个,即/dev/hda,/dev ...

  6. 《鸟哥的Linux私房菜》读书笔记2

    1. 压缩后缀与压缩程序: *.Z compress 程序压缩的档案; *.bz2 bzip2 程序压缩的档案; *.gz gzip 程序压缩的档案; *.tar tar 程序打包的数据,并没有压缩过 ...

  7. 《鸟哥的Linux私房菜》读书笔记1

    1.MBR 可以说是整个硬盘最重要的地方了,因为在 MBR 里面记录了两个重要的东西,分别是:开机管理程序,与磁盘分割表 ( partition table ).下次记得人家在谈磁盘分割的时候, 不要 ...

  8. 《鸟哥的Linux私房菜》学习笔记(5)——权限管理

    一.权限的基本概念                                                   权限:访问计算机资源或服务的访问能力. Linux中,每一个资源或者服务的权限, ...

  9. 《鸟哥的Linux私房菜》学习笔记(4)——用户和组

    一.用户和组的基本概念                                              1.用户 用户:用于获取计算机资源或服务的标识符,比如用户名.计算机处理的是UID,用 ...

随机推荐

  1. 警告:Pointer is missing a nullability type specifier (__nonnull or __nullable)

    当我们定义某个属性的时候  如果当前使用的编译器版本比较高(6.3+)的话经常会遇到这样一个警告: 而且奇怪的是在某些文件中定义这个属性是没有任何警告的 但是在某些文件中定义同样的属性就会报错: 其实 ...

  2. bootstrap在iis中发布后无法看到图标,字体样式

      因为框架使用了字体文件来显示矢量的图标,为了能在IIS上正常显示图标,可以通过增加iis的MIME-TYPE来支持图标字体文件:

  3. Android 自学之进度条ProgressBar

    进度条(ProgressBar)也是UI界面中的一种非常使用的组件,通常用于向用户显示某个耗时完成的百分比.因此进度条可以动态的显示进度,因此避免长时间地执行某个耗时操作时,让用户感觉程序失去了响应, ...

  4. [转]win7 64位下android开发环境的搭建

    本文转自:http://www.cfanz.cn/index.php?c=article&a=read&id=65289 最近换了新电脑,装了win7 64位系统,安装了各种开发环境, ...

  5. 嵌入式中 MMU的功能

    学习嵌入式才发现要看的书太多,外面的世界很精彩啊,现在来说说MMU吧,MMU是Memory Management Unit的缩写,是用来管理虚拟内存系统的器件. MMU通常是CPU的一部分,本身有少量 ...

  6. JDBC入门连接MySQL查数据

    在MySQL中建立user表,插入数据 create table user( id int, name varchar(10), age int )engine myisam charset utf8 ...

  7. R cannot be resolved to a variable 解决办法

    Android开发过程中,碰到R cannot be resolved to a variable的报错信息,好像没有很确定的错误原因,一般来说,我总结出几个可能的解决方法,希望试过以后管用... 1 ...

  8. C#集合之ArrayList

    C#中之所以有集合这个东东,是因为数组的长度是固定的,而实际需求是,不确定未来这个“数组”的个数,故出现集合这个概念,因为集合的容量会随元素的增加曾倍数增长.C#中有2类常用集合:ArrayList, ...

  9. Ext.Net学习笔记23:Ext.Net TabPanel用法详解

    Ext.Net学习笔记23:Ext.Net TabPanel用法详解 上面的图片中给出了TabPanel的一个效果图,我们来看一下代码: <ext:TabPanel runat="se ...

  10. OC 将NSString写入本地文件

    最近在公司偶尔遇到一些不经常复现的bug,为了调试,只好把关键值记录到本地文件中,在遇到问题时,调出本地文件查看一下就可以很方便的知道是不是代码逻辑的错误或者问题考虑不够周全了. 废话不多说,流程在代 ...