iptables端口映射详解(最清晰,最明白)

搞了一天,终于搞定iptables了,,开头就对着人家配对了的配置对抄,但怎也不对,在网上搜了N多文章也不对,终于找到了一篇比较详细的,看了二次,终于配置成功,现在可以用端口映射访问内网的SSH和VNC等等的了

本文作者:张天成    zhangtiancheng#gmail.com 转发请注明出处。

iptables是一个Linux下优秀的nat+防火墙工具,我使用该工具以较低配置的传统pc配置了一个灵活强劲的防火墙+nat系统,小有心得,看了网上也有很多这方面的文章,但是似乎要么说的比较少,要么就是比较偏,内容不全,容易误导,我研究了一段时间的iptables同时也用了很久,有点滴经验,写来供大家参考,同时也备日后自己翻阅。
首先要说明的是,iptables操作的是2.4以上内核的netfilter.所以需要linux的内核在2.4以上。其功能与安全性远远比其前辈 ipfwadm,ipchains强大,iptables大致是工作在OSI七层的二、三、四层,其前辈ipchains不能单独实现对tcp/udp port以及对mac地址的的定义与操作,所以我想ipchains应该是仅仅工作在三层上的。

我们先简单介绍一下netfilter的大致工作流程,也就是一个数据包(或者叫分组、packet,我个人习惯叫包)在到达linux的网络接口的时候(网卡)如何处理这个包,然后再介绍一下如何用iptables改变或者说控制对这个数据包进行操作。netfilter内部分为三个表,分别是 filter,nat,mangle,每个表又有不同的操作链(Chains)。在filter(过滤)表中,也就是他的防火墙功能的这个表,定义了三个 Chain。分别是INPUT,FORWARD,OUTPUT。也就是对包的入、转发、出进行定义的三个过滤链。对于这个filter表的操作和控制也是我们实现防火墙功能的一个重要手段;在nat(Network Address Translation、网络地址翻译)表中,也就是我们用以实现地址转换和端口转发功能的这个表,定义了PREROUTING, POSTROUTING,OUTPUT三个链,下面我们会对这三个链作详细的说明;而netfilter的mangle表则是一个自定义表,里面包括上面的filter以及nat表中的各种chains,它可以让我们进行一些自定义的操作,同时这个mangle表中的chains在netfilter对包的处理流程中处在一个比较优先的位置,下面有一张图清晰的描绘了netfilter对包的处理流程(该图摘自网上,不知作者是谁,在此深表敬意!),一般情况下,我们用不到这个mangle表,在这里我们就不做介绍了。


Continue reading “iptables端口映射详解(最清晰,最明白)”

PREROUTING 和 POSTROUTING, SNAT 和 DNAT 剖析

位置:

PREROUTING 和 POSTROUTING是位于NAT表中的两条数据中转链。

NAT:

NAT (网络地址转换) 技术在平时是很多见的,如家庭中在使用路由器共享上网时,一般用的就是 NAT 技术,它可以实现众多内网 IP 共享一个公网 IP 上网。

NAT原理:

1.当内网主机访问外网时,当内网主机的数据包要通过路由器时,路由器将数据包中的源内网 IP 地址改为路由器上的公网 IP 地址,同时记录下该数据包的消息,即 SNAT。

2.当外网服务器响应这次由内而外发出的请求或数据交换时,当外网服务器发出的数据包经过路由器时,原本是路由器上的公网 IP 地址被路由器改为内网 IP,即 DNAT。 Continue reading “PREROUTING 和 POSTROUTING, SNAT 和 DNAT 剖析”

iptables的基本概念和数据包流程图

iptables 相关概念

在正式介绍 iptables 的使用之前,我们先来看一下和 iptables 相关的一些基本概念。我们下面将会频繁使用到它们。

  • 匹配(match):符合指定的条件,比如指定的 IP 地址和端口。
  • 丢弃(drop):当一个包到达时,简单地丢弃,不做其它任何处理。
  • 接受(accept):和丢弃相反,接受这个包,让这个包通过。
  • 拒绝(reject):和丢弃相似,但它还会向发送这个包的源主机发送错误消息。这个错误消息可以指定,也可以自动产生。
  • 目标(target):指定的动作,说明如何处理一个包,比如:丢弃,接受,或拒绝。
  • 跳转(jump):和目标类似,不过它指定的不是一个具体的动作,而是另一个链,表示要跳转到那个链上。
  • 规则(rule):一个或多个匹配及其对应的目标。
  • 链(chain):每条链都包含有一系列的规则,这些规则会被依次应用到每个遍历该链的数据包上。每个链都有各自专门的用途, 这一点我们下面会详细讨论。
  • 表(table):每个表包含有若干个不同的链,比如 filter 表默认包含有 INPUT,FORWARD,OUTPUT 三个链。iptables 有四个表,分别是:raw,nat,mangle和filter,每个表都有自己专门的用处,比如最常用 filter 表就是专门用来做包过滤的,而 nat 表是专门用来做NAT的。
  • 策略(police):我们在这里提到的策略是指,对于 iptables 中某条链,当所有规则都匹配不成功时其默认的处理动作。
  • 连接跟踪(connection track):又称为动态过滤,可以根据指定连接的状态进行一些适当的过滤,是一个很强大的功能,但同时也比较消耗内存资源。

Continue reading “iptables的基本概念和数据包流程图”

Linux实用工具总结之UFW

UFW,即Uncomplicated Firewall,是基于iptables实现的防火墙管理工具,所以实际上UFW修改的是iptables的规则。之所以不直接使用iptables,而要通过UFW进行管理是因为iptables的规则对于新手入门来说有点难,UFW做了很好的包装。

本文测试环境为Ubuntu 16.04,其他系统可做参考。

Continue reading “Linux实用工具总结之UFW”

iptables (ip6tables)常用命令备忘

1. 增加规则

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

2. 增加多个端口

iptables -A INPUT -p tcp -m multiport --dport 80,81 -j ACCEPT

3. 列表

iptables -L --line-number

4. 删除规则

iptables -D INPUT 4

5. 设置默认规则

iptables -P INPUT DROP

6. 不拦截yum

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp -m state --state NEW --dport 80 -j ACCEPT

7. 添加、删除IP 黑名单

iptables -I  INPUT -s XXX.XXX.XXX.XXX -j DROP  
iptables -D  INPUT -s XXX.XXX.XXX.XXX -j DROP

 

[图]敢偷用我的Wi-Fi? 看我怎么治你

我的邻居正在盗用我的WiFi,唔,对此我可以直接选择加密口令,或者…作为一名极客我也可以耍耍他。那么,我就从划分网络开始吧。我把网络划分成两部分,受信任部分和非受信任部分。受信任部分组成一个子网,而非受信任的部分组成另一个不同的子网。我通过DHCP服务器来辨识MAC地址,以此得到相关的地址信息。下面就是我的/etc/dhcpd.conf配置文件。

划分网络

dhcpd

Iptables太好玩了!

嗯,接下来我用iptables工具来对流量做些手脚。我是这么干的:

/sbin/iptables –A PREROUTING –s 192.168.0.0/255.255.255.0 –p tcp –j DNAT –to-destination 64.111.96.38

噢,突然所有东西都变成小猫咪了!对于那些缺乏经验的新手,现在他们所有的流量都会重定向到http://www.kittenwar.com/去,小猫咪可爱吗?

还不够,我想玩的更爽一些。我继续设定iptables规则,让所有流量转发到我的一台运行有squid代理程序的本地计算机上,端口设为80。

/sbin/iptables –A PREROUTING –s 192.168.0.0/255.255.255.0 –p tcp –m tcp –dport 80 –j DNAT –to-destination 192.168.0.1

这台本地机器上运行有squid,其中带有一个小的重定向功能,可以自动下载图片,然后通过mogrify(一个图片修改程序)将图片弄成上下颠倒,再输出到本地的Web服务器上。

下面就是我的重定向脚本代码,这是个小的perl程序:

perl_script

好了,大功告成!现在浏览网页时会变成下面这样:

shot1

再来一张,:D

shot3

如果你修改一下上面的代码,将-flip替换为-blur 4,那么你的图片就会有模糊效果。

shot5

这些人不会以为他们的电脑坏了吧?:D

对此,我甚至做了一副漫画,很酷吧?

1337_part_1

之后我收到了一封邮件,噢,是kittenwar网站的人发给我的,他是这么说的:

Hi Pete,

抱歉没跟你打招呼就给你发了这封邮件,但是,我想告诉你的是,对于你把图片弄的上下颠倒以此来捉弄那些偷用WiFi的人,这个点子真是太赞了。

我 常常会收到措辞语气极为愤怒的邮件,这些人说我的网站kittenwar在玩弄一些邪恶的病毒,阻止他们正常浏览网页,他们控告我不要再搞这些黑暗的法术 了。对这些人我只会有礼貌的回复到:对此我真的很不好意思,但这种情况只会发生在您盗用别人的WiFi连接时才会出现。过去几年里这种事情发生了数十次, 但是你知道吗?当我指出他们盗用WiFi的事实之后,就再也没有收到回复了。

文/极客范

[http://www.cnbeta.com/articles/240016.htm]