#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. famous javascript library.

    https://famo.us/ THE ULTIMATE WEB PLATFORM FOR DEVELOPERS AND DESIGNERS

  2. [置顶] Objective-C开发环境介绍以及Cocoa,以及第一个程序

      Objective-C 起源与发展 Brad J. Cox designed the  Objective-C language in the early 1980 . 布兰德于1980年设计的  ...

  3. Java双向链表实现

    public class DoublyLinkList { private class Data{ private Object obj; private Data left = null; priv ...

  4. 关于JSP异常的处理

    jsp中错误处理页面-isErrorPage="true" 举例说明:mustBeError.jsp <%@ page contentType="text/html ...

  5. Matlb中break 和continue 语句

    有两个附加语句可以控制while 和for 循环:break 和continue 语句. break 语句可以中止循环的执行和跳到end 后面的第一句执行,而continue 只中止本次循环,然后返回 ...

  6. JMS简介

    任何一个系统从整体上来看,其实质就是由无数个小的服务或事件(我们可以称之为事务单元)有机地组合起来的.对于系统中任何一个比较复杂的功能,都是通过调用各个独立的事务单元以实现统一的协调运作而实现的.现在 ...

  7. Thinkphp 使用gmail发送邮件

    1.Thinkphp 发送邮件内容来自:http://www.thinkphp.cn/code/32.html /** * 系统邮件发送函数 * @param string $to 接收邮件者邮箱 * ...

  8. (转)C#创建windows服务

    原文地址:http://blog.itpub.net/23109131/viewspace-688117/ 第一步:创建服务框架 创建一个新的 Windows 服务项目,可以从Visual C# 工程 ...

  9. 读jQuery官方文档:遍历

    遍历 jQuery的快捷遍历方法可以快速定位到想要的元素.查找祖先元素 html<div class="grandparent"> <div class=&quo ...

  10. ASP长文章分页的两个方法,函数

    '按标识手动分页 function manualPage(str) pages=request.QueryString("page") contentstr=split(str,& ...