iptables 详细的使用指南

Linux系统中,防火墙(Firewall),网址转换(NAT),数据包(package)记录,流量统计,这些功能是由Netfilter子系统所提供的,而iptables是控制Netfilter的工具。iptables将许多复杂的规则组织成成容易控制的方式,以便管理员可以进行分组测试,或关闭、启动某组规则。

iptable能够为Unix、Linux和BSD个人工作站创建一个防火墙,也可以为一个子网创建防火墙以保护其它的系统平台。iptable只读取数据包头,不会给信息流增加负担,也无需进行验证。

1. 术语解释

DNATDestination Network Address Translation 目标网络地址转换。 DNAT是一种改变数据包目的ip地址的技术,经常和SNAT联用,以使多台服务器能共享一个ip地址连入Internet,并且继续服务。通过对同一个 ip地址分配不同的端口,来决定数据的流向。SNATSource Network Address Translation源网络地址转换。这是一种改变数据包源ip地址的技术, 经常用来使多台计算机分享一个Internet地址。这只在IPv4中使用,因为IPv4的地址已快用完了,IPv6将解 决这个问题。

2. iptable 概述

2.1. iptable的链和表结构

ip_flow.PNG

如上图可以看出,iptable总体结构.

2.2. 五个链(chain)

iptable_chain.png

PREROUTING在数据包进入防火墙之后、路由判断之前对数据包进行修改INPUT在数据包被路由到本地之后,但在用户空间程序看到它之前对数据包进行修改OUTPUT用户空间程序处理数据包后,由本地发出,再次被路由之前更改数据包FORWARD在最初的路由判断之后、最后一次更改包的源地址之前对数据包进行修改POSTROUTING在所有路由判断之后,对数据包进行修改

注意: 链 是每个数据包流需要经过的不同环节,你可以在不同的环节根据需要设置不同的过滤策略,每个链的默认策略都是Accept

2.3. 四个表(table)

Mangle表这个表主要用来mangle包,你可以使用mangle匹配来改变包的一些属性,比如 TOS(TYPE OF SERVICE),TTL (TIME TO LIVE),MARK(后续流量控制TC等)Nat表此表仅用于NAT,也就是转换包的源或目标地址。注意,就象我们前面说过的,只有流的第一个 包会被这个链匹配,其后的包会自动被做相同的处理(DNAT,SNAT,MASQUERADE)Filter表此表用来过滤数据包,我们可以在任何时候匹配包并过滤它们。 我们就是在这里根据包的内容对包做DROP或ACCEPT的.

iptalbe中,要用 -t 参数指定要操作哪个表,如果没有 -t 参数,就默认对filter表操作.Raw表优先级最高,设置raw时一般是为了不再让iptables做数据包的链接跟踪处理,提高性能

注意: 表 是规则的集合组,每个表中的规则条目是按顺序匹配的,你可以在数据包经过的不同环节设置规则,表的处理优先级:raw > mangle > nat > filter

2.4. 详细的数据包流程

packet_flow.png

从上图可以看出,数据包流环节和表的配合使用方法

3. iptable应用场景

iptable_example.gif

上图是应用场景的简单拓扑描述,下面的应用场景举例,都以上图为参考.

系统启动的时候所有的默认策略都是ACCEPT,在下面的场景举例中,我们都是在这种前提下设定iptable的。下面每个场景举例都是独立的,没有相关联性的。

3.1. 网关服务器安全策略

目标 : 网关服务器系统自生安全策略,只对内网用户开放22端口(sshd服务)

#清空 filter table
[root@localhost]# iptables -F -t filter
[root@localhost]# iptables -X -t filter
[root@localhost]# iptables -Z -t filter

#清空 nat table
[root@localhost]# iptables -F -t nat
[root@localhost]# iptables -X -t nat
[root@localhost]# iptables -Z -t nat

#设置默认策略(INPUT链默认为DROP)
[root@localhost]# iptables -t filter -P INPUT DROP
[root@localhost]# iptables -t filter -P OUTPUT ACCEPT
[root@localhost]# iptables -t filter -P FORWARD ACCEPT

#回环接口(lo),默认accept
[root@localhost]# iptables -A INPUT -p ALL -i lo -j ACCEPT

#只对内网用户开放sshd服务
[root@localhost]# iptables -A INPUT -p tcp -s 192.168.138.0/24 --dport 22 -j ACCEPT

说明: 防火墙的策略顺序一般都是 从 非信任 ==> 信任,默认关闭所有访问权限,然后按照需要逐条开放访问权限.

3.2. 共享上网(nat)

目标:使局域网的用户都可以访问外网的服务器

[root@localhost]# echo 1 > /proc/sys/net/ipv4/ip_forward
[root@localhost]# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE 

说明: SNAT 和 MASQUERADE 区别

SNAT : 不管是几个地址,必须明确的指定要SNAT的ip,适合网关服务器有固定地址或者是固定地址范围. MASQUERADE : 是针对ADSL动态拨号这种场景而设计,从服务器的网络接口上,自动获取当前ip地址来做NAT,这样就实现了动态SNAT地址转换

3.3. 内网的服务器对外服务(端口映射)

目标:使外网用户可以访问到局域网192.168.138.21这台HTTP服务

[root@localhost]# echo 1 > /proc/sys/net/ipv4/ip_forward
[root@localhost]# iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.138.21
[root@localhost]# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

3.4. 在网关服务器进行透明代理

目标: 使局域网用户,访问外网web服务时,自动使用squid作web透明代理服务器。

[root@localhost]# echo 1 > /proc/sys/net/ipv4/ip_forward
[root@localhost]# iptables -t nat -A PREROUTING -s 192.168.138.0/24 -p tcp --dport 80 -i eth0 -j DNAT --to 192.168.138.1
[root@localhost]# iptables -t nat -A PREROUTING -s 192.168.138.0/24 -p tcp --dport 80 -i eth0 -j REDIRECT --to 3128
[root@localhost]# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
 

原文发布时间为:2013-07-18

本文来自合作伙伴“Linux中国”

时间: 2024-11-05 20:31:38

iptables 详细的使用指南的相关文章

Discuz!X1导航栏详细属性设置指南

国内http://www.aliyun.com/zixun/aggregation/9263.html">社区平台与服务提供商康盛创想(Comsenz)于2010年5月正式推出跨界融合的Discuz! X1社区平台系统.Discuz! X1整合了社区论坛.SNS.门户等功能,支持漫游(Manyou)开放平台与全文检索的多种扩展应用.同时,也为站长提供了强大的导航栏,其具有一级总导航栏和二级导航栏两种.本篇小编就给各位站长讲解如何定制自己需要的内容. 说起Discuz!很多当过站长的朋友都应

node.js Web应用框架Express入门指南_javascript技巧

一.安装 复制代码 代码如下: $ npm install express 或者在任何地方使用可执行的 express(1) 安装: 复制代码 代码如下: \# 译注:强烈建议这种方式$ npm install -g express 二.快速上手 最快上手 express 的方法是利用可执行的 express(1) 来生成一个应用,如下所示: 创建一个 app: 复制代码 代码如下: $ npm install -g express$ express /tmp/foo && cd /tmp

Eye Candy 4000 滤镜教程-简介及新特性

教程|滤镜 ALIEN SKIN SOFTWARE 公司于10月26日发布其著名的PHOTOSHOP滤镜 EYE CANDY 4000正式版,笔者火速下载试用一番,果然名不虚传,现将其详细的使用指南奉上,以飧读者. EYE CANDY 4000正式版是内置23种滤镜的套件,可以在极短的时间内生成无穷尽的各种不同的特殊效果,无论是初次染指,还是轻车熟路,你都能依靠EYE CANDY 4000轻易地实现一般情况下,难以实现,或不能实现的图像处理目的,在众多的PHOTOSHOP滤镜插件,EYE CAN

Google Adsense将停止域名广告服务

3月2日凌晨,站长百科收到Google关于即将停止Google Adsense域名广告服务的公告. 站长朋友都知道Google AdSense 是一种获取收入的快速简便的方法,适合于各种规模的网站发布商.它可以在网站的内容网页上展示相关性较高的 Google广告,并且这些广告不会过分夸张醒目.现在大多数网站使用的Adsense域名产品广告,都是通过未开发的域名获利. 近日,Google在对合作伙伴的网络优势加以评估之后,决定在adsense中停止托管域产品.以后,未开发域名将只能通过google

2017年6款最值得推荐的免费Linux防火墙

本文讲的是2017年6款最值得推荐的免费Linux防火墙, 简介 试想一下,当你深夜走在一条黑暗的小巷中,突然有人跳出来并强迫你交出护照.信用卡.钱包以及车钥匙等所有值钱物品,这是多么恐怖的一件事情.其实互联网的世界跟这种假设的情景很像,每个角落中都潜伏着不可预知的危险.只要你今天在线,你的上网行为就可能被潜在暗处的窃贼窥探,而这一切你都毫无察觉. 为了实现计算机安全,防火墙就扮演了这个可以保护你安全的"保镖"一角,时刻护你周全.大多数现代路由器中都内置了防火墙,虽然很有用但是却苦于难

azure-Azure是什么?怎么用?如何快速掌握

问题描述 Azure是什么?怎么用?如何快速掌握 我是一个小菜鸟,想问问Azure到底是什么,它对我们来说有什么用处 解决方案 是一个云计算的操作系统 解决方案二: 微软的云计算操作系统 解决方案三: 这里有个很详细的入门指南 操作类http://www.windowsazure.cn/starter-guide/ 解决方案四: Hi, Azure官网的入门教程对你初步认识Azure很有帮助,入门教程中很好的回答了我们"什么是云计算","为什么选择Windows Azure&

在Docker上玩转PostgreSQL -- Mac篇

2016年,新一年新气象,首先祝广大群众以及"加班狗"们(在说俺吗?^_^)新年快乐.万事如意.步步高升.家庭幸福美满-- 今天给大家带来的话题是:在Docker上玩转PostgreSQL (标题看到是不是有点小激动呢,这么高大尚的容器技术,让"云"变得更容易) 以下是华丽的正文分隔线 google一下发现Docker官方PostgreSQL镜像已经介绍了怎么制作PostgreSQL镜像教程. 今天的分享是面向Mac用户(悄悄的告诉你,小编俺也是第一次在Mac上玩起

网络安全老兵座谈:云安全审计(评估)应该怎么做?

本文讲的是网络安全老兵座谈:云安全审计(评估)应该怎么做?,最近国内的云建设如火如荼,且看1元.0.01元甚至0元中标的千万级云平台建设项目一个接一个冲击着我们的视野.作为一个有10多年网络安全从业经验的老兵,最近也常常被客户.友商问及如何去评估一个云建设和运维项目抑或是如何评估一个云平台.云服务提供商的服务内容与质量.其实,国际.国内早有了对云安全评估的详细的建设指南.评估矩阵.资质认证体系,很多资料也躺在笔者的电脑里多年,没有机会发挥这些资料的价值.所以一个想法突然出现:将我拥有的这些资料加

iOS中关于信鸽推送的使用demo详解_IOS

最近在看推送方面的知识,用的是信鸽推送主要是因为后台用的是信鸽 推送用第三方推送,也就是在客户端建一个广播接收器,当服务器发送消息时发送到信鸽,信鸽再发送一次,广播接受器接受下: 我实现的功能比较简单,当app在运行状态时,会在主页展示一个弹窗展示推送的消息:如果app不在运行状态且service没被销毁就展示默认的通知 那么如何在主页展示弹窗:当广播接受器收到我要的消息时,用观察者模式,收到消息在发送个消息个主界面 官方的Demo连接:http://xg.qq.com/xg/help/ctr_