一、ipables防火墙

netfilter/iptables框架可以实现数据包过滤、网络地址转换、以及数据包管理功能

linux中的防火墙系统包括两部分:netfilter和iptables。netfilter位于系统内核空间

,是linux内核的组成部分。具体的说netfilter是linux内核的一系列钩子,这些钩子允

许数据表过滤函数挂载至系统内核中。而iptables是用户工具,因netfilter在内核空间

中,用户无法直接接触内核和修改内核,就需要iptables这样的命令行工具添加、删除具

体的过滤规则。

二、iptables规则表、链结构、表之间的优先级、规则链的优先级

2.1、规则表

iptables管理4个不同的规则表,其功能由独立的内核模块实现

filter表(过滤规则表):                        包含3个链INPUT OUTPUT FORWARD

nat表(地址转换规则表):                PREROUTING POSTROUTING OUTPUT

(1)DNAT:改变数据包的目的地址使包能重路由到某台机器(使公网能够访问局域网的服务器)

(2)SNAT: 改变数据包的源地址(使局域网能访问公网)

(3)NASQUERADE:和SNAT一样使局域网能访问公网,无固定IP使用PPP.PPPoE等拨号上入Internet

mangle表(修改数据标记位规则表):PREROUTING POSTROUTING INPUT OUTPUT FORWARD

mangle表修改数据包,改变包头中的内容(TTL、TOS、MARK)

(1)TOS :设置改变数据包的服务类型,不要使用TOS设置发往Internet的包除非打算依赖TOS来路由,不  能在表中配置任何过滤。SNAT、DNAT

(2)TTL:改变数据包的生存时间,可以让数据包只有一个特殊的TTL,欺骗ISP,有些ISP并不希望多台计算  机共享一个连接访问Internet,ISP通过检查一台计算机所发出的数据包是否含有不同的TTL来判断。

(3)MaRk:给数据包设置特殊的标记,通过标记配置带宽限制和基于请求分类。

raw表(跟踪数据表规则表):             OUTPUT PREROUTING

2.2、规则链

INPUT链:             当收到访问防火墙本机的数据包(入站)时,应用此链的规则

OUTPUT链:          当防火墙本机向外发送数据包(出站)时,应用此链中的规则

FORWARD链:       收到需要通过防火墙发送给其他地址的数据包时、应用此链

PREROUTING链:   做路由选择之前,应用此链

POSTROUTING链: 对数据包做路由选择之后,应用此链

2.3、规则表优先级

raw mangel nat filter

2.4   规则链优先级

三、防火墙的语法格式

3.1、用法:iptables [-t 表名] {命令-A|-D|-I|-F|-L|-Z|-P} 链名  [条件匹配] [-j 触发动作]

3.2、命令参数详解:

-A        在指定链的末尾添加(--append)一条新规则

[root@server136 ~]# iptables -A INPUT -p tcp -s 192.168.8.8 -j DROP(追加一条规则,禁止

192.168.8.8访问本机)

-D        删除(--delete)指定链中的某一条规则,按规则序号或内容确定要删除的规则

[root@server136 ~]# iptables -D INPUT -p tcp -s 192.168.8.8 -j DROP(删除这条规则)

-I         在指定链中插入一条新规则,若未指定插入位置,则默认在链的开头插入

[root@server136 ~]# iptables -I INPUT 2 -p tcp --dport 443 -j ACCEPT(在INPUT

第二行插入一条规则,允许443端口进入)

-R        修改、替换指定链中的一条规则,按按规则序号或内容确定要替换的规则

[root@server136 ~]# iptables -R INPUT 2 -s 192.168.8.9 -j REJECT (替换第二条规则,拒绝此ip访问本机)

-L        列出指定链中所有的规则进行查看,若未指定链名,则列出表中所有链的内容

[root@server136 ~]# iptables -L -n(查看filter表中的规则)

-F        清空指定链中的所有规则,若未指定链名,则清空表中所有链的内容

[root@server136 ~]# iptables -F(清除filter表中的所有规则)

-N       新建一条用户自定义的规则链

[root@server136 ~]# iptables -t nat -N tarace (nat表新建一条规则)

-X        删除表中用户自定义的规则链

[root@server136 ~]# iptables -t nat -X tarace (删除新建的tarace规则链)

-P        设置指定链的默认策略(大p)

[root@server136 ~]# iptables -P INPUT DROP (定义INPUT规则链的策略为丢弃,慎用,远程会全部断开)

用之前需添加22端口的策略

[root@server136 ~]# iptables -I INPUT -p tcp --dport 22 -j ACCEPT

[root@server136 ~]# /etc/init.d/iptables save

iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

[root@server136 ~]# service iptables restart

iptables: Setting chains to policy ACCEPT: nat filter      [  OK  ]

iptables: Flushing firewall rules:                         [  OK  ]

iptables: Unloading modules:                               [  OK  ]

iptables: Applying firewall rules:                         [  OK  ]

-n        使用数字形式显示输出结果,如显示主机的IP地址而不是主机名

[root@server136 ~]# iptables -n -L (需配合-L参数使用)

-v        查看规则列表时显示详细的信息

[root@server136 ~]# iptables -n -L -v

Chain INPUT (policy DROP 13 packets, 2753 bytes)

pkts bytes target     prot opt in     out     source               destination

81  7629 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:22

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)

pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 75 packets, 9341 bytes)

pkts bytes target     prot opt in     out     source               destination

-V        查看iptables命令工具的版本信息

[root@server136 ~]# iptables -V

iptables v1.4.7

-h        查看命令帮助信息

[root@server136 ~]# iptables -h

--line-numbers    查看规则列表时,同时显示规则在链中的顺序号、地方

[root@server136 ~]# iptables -n -L --line-numbers

3.3、规则链的匹配条件类型

3.3.1通用匹配:可以直接使用,不依赖其他条件或扩展,包括网络协议、IP地址、网络接口等

1、协议匹配:-p 协议名

[root@server136 ~]# iptables -A FORWARD ! -p icmp -j ACCEPT (除了icmp协议的

数据包,其他协议的包都能转发)

2、地址匹配:-s 源地址、-d 目标地址

3、接口匹配:-i 入站网卡、-o 出站网卡

[root@server136 ~]# iptables -I FORWARD -s 192.168.8.10 -p tcp -o eht1 --sport 80 -j ACCEPT

(源地址192.168.8.10的80端口可以回应Eth1网卡的请求)


3.3.2、隐含匹配:要求以特定的协议匹配为前提,包括端口、tcp标记、icmp类型等

1、端口匹配:--sport 源端口、--dport 目标端口

[root@server136 ~]# iptables -A FORWARD -s 192.168.8.0/24 -p udp --dport 53 -j ACCEPT

(192.168.8.0网络的之计可以访问其他网络的53号端口)

[root@server136 ~]# iptables -A FORWARD -d 192.168.9.0/24 -p udp --sport 53 -j ACCEPT

(来自53号端口的数据包可以访问192.168.9.0网段的主机)

2、TCP标记匹配 --tcp-flags [检查范围] [被设置的标记]

[root@server136 ~]# iptables -IINPUT -i eth1 -p tcp --tcp-flags SYN,RST,ACK SYN -j DROP

(检测到入站的syn数据包就丢弃)

3、ICMP类型:--icmp-type    icmp类型(8请求、0返回、3请求但主机不可达)

[root@server136 ~]# iptables -A INPUT -p icmp --icmp-type 8 -j DROP

(别人请求ping我的主机,丢弃)

[root@server136 ~]# iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT(我ping别人时,允许返回)

3.3.3、显示条件匹配

1、多端口匹配:-m multiport --sports 源端口列表

-m multiport --dport  目标端口列表

[root@server136 ~]# iptables -A INPUT -p tcp -m multiport --dport 80,110,443 -j ACCEPT

2、ip范围匹配:-m iprange --src-range 源IP范围

-m iprange --dst-range目标IP范围

[root@server136 ~]# iptables -A FORWARD -p tcp -m iprange --src-range 192.168.7.10-192.168.7.123 -j ACCEPT(允许以上ip地址范围数据包通过)

[root@server136 ~]# iptables -A FORWARD -p tcp -m iprange --dst-range 192.168.8.10-192.168.8.123 -j ACCEPT

3、MAC地址匹配:-m mac --mac-source 源mac地址

[root@server136 ~]# iptables -A INPUT -m mac --mac-source 00:0c:29:b1:f6:c4 -j ACCEPT

4、状态匹配:-m state --state 连接状态

NEW: 与任何连接无关

ESTABLISHED: 响应请求或已经建立连接的

RELATED:与已有连接有相关性的

[root@server136 ~]# iptables -I INPUT -m state --state ESTABLISHED -j ACCEPT

四、触发动作

ACCEPT             允许数据库通过

DROP                丢弃数据包

REJECT              拒绝数据包通过

LOG                  将数据包信息记录syslog日志

DNAT               目标地址转换

SNAT                源地址转换

MASQUERADE 地址欺骗

REDIRECT         重定向

五、写规则注意事项: 

服务端:先进后出

客户端:先出后进

先全部堵上,在发通行证     一般******可以堵截到,没发通行证给他

做放行规则时是一定要有进有出,不然放行不成功

转载于:https://blog.51cto.com/12565547/1896676

centos6.5下iptables基础知识详解与配置相关推荐

  1. iptables基础知识.详解

    本文转载自http://blog.coocla.org/207.html,感谢CooCla的分享! iptables防火墙可以用于创建过滤(filter)与NAT规则.所有Linux发行版都能使用ip ...

  2. RabbitMQ基础知识详解

    RabbitMQ基础知识详解 2017年08月28日 20:42:57 dreamchasering 阅读数:41890 标签: RabbitMQ 什么是MQ? MQ全称为Message Queue, ...

  3. 小白入门!网络安全基础知识详解(附知识问答)

    小白入门!网络安全基础知识详解(附知识问答) 一.引论 提到网络安全,一般人们将它看作是信息安全的一个分支,信息安全是更加广义的一个概念:防止对知识.事实.数据或能力非授权使用.误用.篡改或拒绝使用所 ...

  4. 【BLE】OTA基础知识详解

    [BLE]OTA基础知识详解 一. 概念 1. 缩写 BIM Boot Image Manager , the software bootloader CRC cyclic redundancy ch ...

  5. R语言基础知识详解及概括

    R语言基础知识详解及概括 目录 R语言基础知识详解及概括 R数据可视化示例 R语言进行数据创建

  6. R语言可视化绘图基础知识详解

    R语言可视化绘图基础知识详解 图形参数:字体.坐标.颜色.标签等: 图像符号和线条: 文本属性: 图像尺寸及边界: 坐标轴.图例自定义等: 图像的组合: #install.packages(c(&qu ...

  7. 计算机网络相关知识 参考博客 子网掩码怎么理解 网关及网关的作用 路由器基础知识详解

    子网掩码怎么理解 https://blog.csdn.net/farmwang/article/details/64132723 网关及网关的作用 https://blog.csdn.net/zhao ...

  8. Android随机点名器,Excel基础知识-详解随机点名器

    说道制作个案例纯粹意外,我多少有点选择恐惧症,为了不在"选择"上纠结,就自己小玩了一下,就用了程序做了个选择器,其实很简单,就是有小时候玩的"点兵点将",稍微变 ...

  9. Python基础知识详解 从入门到精通(八)魔法方法

    目录 Python基础知识详解 从入门到精通(八)魔法方法 什么是魔法方法 基础魔法方法(较为常用) 比较操作符 算数运算符 反运算(类似于运算方法) 增量赋值运算 一元操作符 类型转换 上下文管理( ...

最新文章

  1. Const 重载解析
  2. oracle存储过程 学习笔记
  3. css中padding和magin的区别
  4. 类变量和实例变量的区别是什么?
  5. v-for中用elementUI实现分页
  6. (二分搜索法尺取法)subsequence
  7. VueJS实现用户管理系统
  8. m3u8手机批量转码_手机怎么把m3u8格式转换成mp4格式?
  9. Opengl学习笔记——顶点数组
  10. 1.3端口扫描:利用Nmap工具进行端口扫描
  11. DoTWeen常用方法
  12. printf输出全格式(C语言)
  13. python的标准随机数生成器模块_Python:带均值和标准差的随机数生成器
  14. Java解析idToken
  15. easypermission坑_Android 权限管理(原生、EasyPermissions、RxPermissions)-阿里云开发者社区...
  16. direct do造句 sb to_wish to do造句
  17. Windows Media Player 无法播放
  18. 服务器性能巡检,linux服务器巡检性能与Java 进程脚本
  19. mysql按日、月、周、季度分组
  20. “苦逼”程序员的日常,你了解吗?

热门文章

  1. 第四章 数据库和SQL 4-3 数据的更新(UPDATE语句的使用方法)
  2. 关于跨域的cookie问题
  3. 人生第一个快速幂的题(HDU - 1097--A hard puzzle )
  4. AutoMapper 入门
  5. WWDC2014:留给微软的时间不多了!
  6. 函数的重载与 泛型(generic)有什么不同?
  7. [你必须知道的.NET]第一回:恩怨情仇:is和as
  8. 输入防抖 vue # 输入搜索的时候 及时搜索的快速访问接口的 解决方案 vue 中使用防抖和节流
  9. 解决TextView排版混乱或者自动换行的问题
  10. 解决苹果APP审核需要的IPv6地址的问题