一般LINUX防火墙(iptalbes)的运用无非是用nat 表(PREROUTING、OUTPUT、POSTROUTING)和filter表 (FORWARD、INPUT、OUTPUT)。我们只有知道了数据的流向才能正确的配置防火墙。现用一个相对比较直观的图形解释数据的走向。(此处只作 最基本的iptables数据流走向说明。)

  上图是你的家,蓝色的圈是你家院子,有两扇大门①⑥进出,你家有两个房间,分别为eth0和 eth1房间,每个房间有两 个门可以进出②③④⑤。旁边是张三和李四的家,张三家和李四家之间的往返必须要过你家院子。

  现假设,eth0网卡IP为:192.168.5.1链接内网,eth1网卡IP为:218.100.100.111链接互连网。

  再假设,“张三家”为一个局域网,“李四家”为互连网。进我家院子用PREROUTING,出我家院子用FORWARD,进我家门 用INPUT,出我家门用OUTPUT。(当我们的操作是征对服务器本身而言的话,如SSH操作,此时肯定会用到PREROUTING、INPUT和OUTPUT,当数据 只是通过服务器去访问别的机器时会用到PREROUTING和FORWARD。)

  又假设,默认这六个门都是关的。生成如下代码。

  ###########################################################################

  *nat

  ################################

  :PREROUTING DROP [0:0]

  :OUTPUT DROP [0:0]

  :POSTROUTING DROP [0:0]

  ################################

  -F

  -Z

  -X

  ### 以后要新增语句请在此处增加。

  -L –v

  COMMIT

  ################################################

  *filter

  ##############################

  :INPUT DROP[0:0]

  :FORWARD DROP[0:0]

  :OUTPUT DROP[0:0]

  ##############################

  -F

  -Z

  -X

  ### 以后要新增语句请在此处增加。

  -L –v

  COMMIT

  ##########################################################################

  1、 局域网用户通过服务器共享上网 (即从张三家到李四家)

  1)首先进①号门,再从⑥号门走出。

  -A PREROUTING –p tcp --dport 80 –j ACCEPT #允许TCP 80端口通过服务器

  -A FORWARD –p tcp --dport 80 –j ACCEPT #允许TCP80 端口转发

  -A FORWARD –p tcp --sport 80 –j ACCEPT #允许接收对方为TCP80端口反回的信息

  2)其次,由于我们上网打的是域名,为此有一个公网DNS服务器为我们服务,那当然也要允许内网机器与DNS服务器的数据转发。DNS用UDP 53 或者 TCP 53端口。两者用其一个就行。

  -A PREROUTING –p udp --dport 53 –j ACCEPT

  -A FORWARD –p udp --dport 53 –j ACCEPT

  -A FORWARD –p udp --sport 53 –j ACCEPT

  3)再次,由于局域网的私有地址在公网上是不被允许的,所以在出公网前应该把其地址转为服务器地址进行伪装。

  -A POSTROUTING –s 192.168.5.0/24 –j SNAT --to 218.100.100.111

  2、允许局域网和公网可以访问服务器的SSH

  假设SSH采用默认端口TCP 22 。此要求相当于要进我的家的TCP 22号门,为此我们首先要进我家院子,然后再进我家门,最后走出我家门这 样的过程。此操作是征对服务器本身的操作。

  -A PREROUTING –p tcp --dport 22 –j ACCEPT

  -A INPUT –p tcp --dport 22 –j ACCEPT

  -A OUTPUT –p tcp --sport 22 –j ACCEPT

  3、 允许内网机器可以登录MSN和QQ。

  (MSN和QQ默认是不允许登录的)QQ一般来说可以从TCP 80、8000、443及UDP 8000、4000登录,而MSN可以从TCP 1863、443登录。我们登录 MSN和QQ的过程就象上网一样,也是去访问远程服务器的指定端口,故而我们只用数据转发即可。

  -A PREROUTING –p tcp --dport 1863 –j ACCEPT

  -A PREROUTING –p tcp --dport 443 –j ACCEPT

  -A PREROUTING –p tcp --dport 8000 –j ACCEPT

  -A PREROUTING –p udp --dport 8000 –j ACCEPT

  -A PREROUTING –p udp --dport 4000 –j ACCEPT

  -A FORWARD –p tcp --dport 1863 –j ACCEPT

  -A FORWARD –p tcp --sport 1863 –j ACCEPT

  -A FORWARD –p tcp --dport 443 –j ACCEPT

  -A FORWARD –p tcp --sport 443 –j ACCEPT

  -A FORWARD –p tcp --dport 8000 –j ACCEPT

  -A FORWARD –p tcp --sport 8000 –j ACCEPT

  -A FORWARD –p udp --dport 8000 –j ACCEPT

  -A FORWARD –p udp --sport 8000 –j ACCEPT

  -A FORWARD –p udp --dport 4000 –j ACCEPT

  -A FORWARD –p udp --sport 4000 –j ACCEPT

4、 让内网机器可以收发邮件。

  接收邮件是访问远程服务器的TCP 110端口,发送邮件是访问TCP25端口。用数据转发即可。

  -A PREROUTING –p tcp --dport 110 –j ACCEPT

  -A PREROUTING –p tcp --dport 25 –j ACCEPT

  -A FORWARD –p tcp --dport 110 –j ACCEPT

  -A FORWARD –p tcp --sport 110 –j ACCEPT

  -A FORWARD –p tcp --dport 25 –j ACCEPT

  -A FORWARD –p tcp --sport 25 –j ACCEPT

  5、 内部机器对外发布WEB。

  要把内网机器192.168.5.179的WEB对外发布的话,相当于是从外网访问内网。与第1步操作的局域网共享上网相同,只是访问的方向改变了。 不是从内网访问外网,而是从外网访问内网。

  当公网访问服务器218.100.100.111时,防火墙把它映射到内网的192.168.5.179的TCP80上。当内网机器访问服务器218.100.100.111时,防 火墙把它映射到内网的192.168.5.179的TCP80上。

  -A PREROUTING –i eth0 –p tcp –d 218.100.100.111 --dport 80 –j DNAT --to-destination 192.168.5.179:80

  -A PREROUTING –i eth1 –p tcp –d 218.100.100.111 –dport 80 –j DNAT --to-destination 192.168.5.179:80

  (以上两句必须写在 –A PREROUTING –p tcp --dport 80 –j ACCEPT 前面。)

  TCP 80端口的转发在第1步就已做过,此处就不用重复制作了。另外在

  -A POSTROUTING –s 192.168.5.0/24 –j SNAT --to 218.100.100.111 之后加上一句:

  -A POSTROUTING –o eth1 –s 0/0 –j SNAT --to 192.168.5.1

  为什么要加这句话呢,我的理解是这样的,

  公网访问 http://218.100.100.111时:(假设公网上用户的IP为199.199.199.199,端口12345为随机的产生的。)

  数据源 : ip:199.199.199.199 sport:12345

  数据目标: ip:218.100.100.111 dport 80

  此时,通过-A PREROUTING –i eth0 –p tcp –d 218.100.100.111 --dport 80 –j DNAT --to-destination 192.168.5.179:80 告诉 199.199.199.199,您要访问的真正地址应该是192.168.5.179:80,然后我们通过-A POSTROUTING –p tcp --dport 80 –j ACCEPT 目标地址 218.100.100.111:80伪装成 192.168.5.179:80 。

  数据源 : ip:199.199.199.199 sport:12345

  数据目标: ip:192.168.5.179 dport 80

  当192.168.5.179返回数据时:

  数据源 : ip:192.168.5.179 sport:80

  数据目标: ip:199.199.199.199 dport 12345

  数据经过 -A POSTROUTING –s 192.168.5.0/24 –j SNAT –to 218.100.100.111 后,

  数据源 : ip:218.100.100.111 sport:80

  数据目标: ip:199.199.199.199 dport 12345

  6、 完整的iptables配置

  ###########################################################################

  *nat

  ################################

  :PREROUTING DROP [0:0]

  :OUTPUT DROP [0:0]

  :POSTROUTING DROP [0:0]

  ################################

  -F

  -Z

  -X

  -A PREROUTING –i eth0 –p tcp –d 218.100.100.111 --dport 80 –j DNAT --to-destination 192.168.5.179:80

  -A PREROUTING –i eth1 –p tcp –d 218.100.100.111 --dport 80 –j DNAT –to-destination 192.168.5.179:80

  -A PREROUTING –p tcp --dport 80 –j ACCEPT

  -A PREROUTING –p udp --dport 53 –j ACCEPT

  -A PREROUTING –p tcp --dport 22 –j ACCEPT

  -A PREROUTING –p tcp --dport 1863 –j ACCEPT

  -A PREROUTING –p tcp --dport 443 –j ACCEPT

  -A PREROUTING –p tcp --dport 8000 –j ACCEPT

  -A PREROUTING –p udp --dport 8000 –j ACCEPT

  -A PREROUTING –p udp --dport 4000 –j ACCEPT

  -A PREROUTING –p tcp --dport 110 –j ACCEPT

  -A PREROUTING –p tcp --dport 25 –j ACCEPT

  -A POSTROUTING –s 192.168.5.0/24 –j SNAT –to 218.100.100.111

  -A POSTROUTING –o eth1 –s 0/0 –j SNAT –to 192.168.5.1

  -L –v

  COMMIT

  ################################################

  *filter

  ##############################

  :INPUT DROP [0:0]

  :FORWARD DROP [0:0]

  :OUTPUT DROP [0:0]

  ##############################

  -F

  -Z

  -X

  -A INPUT –p tcp --dport 22 –j ACCEPT

  -A OUTPUT –p tcp --sport 22 –j ACCEPT

  -A FORWARD –p tcp --dport 80 –j ACCEPT

  -A FORWARD –p tcp --sport 80 –j ACCEPT

  -A FORWARD –p udp --dport 53 –j ACCEPT

  -A FORWARD –p udp --sport 53 –j ACCEPT

  -A FORWARD –p tcp --dport 1863 –j ACCEPT

  -A FORWARD –p tcp --sport 1863 –j ACCEPT

  -A FORWARD –p tcp --dport 443 –j ACCEPT

  -A FORWARD –p tcp --sport 443 –j ACCEPT

  -A FORWARD –p tcp --dport 8000 –j ACCEPT

  -A FORWARD –p tcp --sport 8000 –j ACCEPT

  -A FORWARD –p udp --dport 8000 –j ACCEPT

  -A FORWARD –p udp --sport 8000 –j ACCEPT

  -A FORWARD –p udp --dport 4000 –j ACCEPT

  -A FORWARD –p udp --sport 4000 –j ACCEPT

  -A FORWARD –p tcp --dport 110 –j ACCEPT

  -A FORWARD –p tcp --sport 110 –j ACCEPT

  -A FORWARD –p tcp --dport 25 –j ACCEPT

  -A FORWARD –p tcp --sport 25 –j ACCEPT

  -L –v

  COMMIT

  ##########################################################################

  7、 其它注意事项

  1)在使用iptables防火墙之前,必须先打开IP转发功能。

  # echo “1” > /proc/sys/net/ipv4/ip_forward

  2)以上内容(第6步生成的内容)保存到 /etc/sysconfig/iptables文件中。

  3)每修改一次iptables文件后,都要重启iptalbes

  # service iptables restart

  以上就是我对iptables的初浅理解,里面的语句已在RedHat 9.0上测试通过。

转载于:https://blog.51cto.com/haolun/993061

简释iptables防火墙相关推荐

  1. 安全的Web主机iptables防火墙脚本

    下面以自己的Web服务器举例说明之,系统的默认策略是INPUT为DROP,OUTPUT.FORWARD链为ACCEPT,DROP设置得比较宽松,因为我们知道出去的数据包比较安全:为了验证脚本的通用性, ...

  2. CentOS 7.0,启用iptables防火墙

    CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop firewalld.service #停止fir ...

  3. Iptables防火墙详细介绍与实战增强服务器安全

    Iptables防火墙详细介绍与实战增强服务器安全 一:Iptables的概述及应用 iptables概述: netfilter/iptables : IP信息包过滤系统,它实际上由两个组件netfi ...

  4. centos6.5下系统编译定制iptables防火墙扩展layer7应用层访问控制功能及应用限制QQ2016上网...

    iptables防火墙扩展之layer7应用层访问控制 概述: iptables防火墙是工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙.以基于网络层的数据包过滤机制为主,同 ...

  5. Iptables防火墙配置详解

    iptables防火墙配置详解 iptables简介 iptables是基于内核的防火墙,功能非常强大,iptables内置了filter,nat和mangle三张表. (1)filter表负责过滤数 ...

  6. iptables 防火墙设置

    1.安装iptables防火墙 怎么知道系统是否安装了iptables?执行iptables -V,如果显示如:  iptables v1.3.5  说明已经安装了iptables.  如果没有安装i ...

  7. Linux iptables防火墙设置与NAT服务配置

    Linux iptables防火墙设置与NAT服务配置 - 摘要: linux教程,NAT服务器,iptables防火墙设置与NAT服务配置, 防火墙是指设置在不同网络或网络安全域之间的一系列部件的组 ...

  8. centos iptables 防火墙配置

    2019独角兽企业重金招聘Python工程师标准>>> 配置Cento6.4 iptables防火墙. 1. 查看防火墙状态 service iptables status #或 / ...

  9. Iptables防火墙应用

    看看强大的iptables: Iptables和netfilter的关系: 这是第一个要说的地方,Iptables和netfilter的关系是一个很容易让人搞不清的问题.很多的知道iptables却不 ...

最新文章

  1. 按下enter键在各个文本框中切换焦点_你真的了解Enter键吗?请先学习本文后再回答...
  2. 你可能会错过的3个重要AI趋势
  3. python读取txt文件并画图
  4. mysql中用户线程作用,mysql用户线程的建立与用户线程的状态源码解析
  5. jquery常见插件用法表
  6. Speaker Recognition: GMM-UBM
  7. mac git配置 idea
  8. 通过Web.config中的configSections配置自己系统的全局常量
  9. python的函数的笔记_Python笔记-函数1
  10. 【Thinking In Java】笔记之一 一切都是对象
  11. TransE算法(Translating Embedding)
  12. 计算机辅助翻译 教学大纲,《计算机辅助翻译》本科课程教学大纲翻译本科
  13. QCA-WIFI技术研讨
  14. php 单笔转账到支付宝账户,php之支付宝转账或发红包到指定账户(提现功能)
  15. (转)Pod 2g简谈越狱的意义
  16. 方程中变量不可分离的偏微分方程的求解
  17. SATA 3.2协议 Error handing机制
  18. QQ邮箱疯狂的附件:别人笑我太疯癫 我笑别人看不穿
  19. 有人考过阿里云大数据助理工程师认证(ACA)从而能分享心得攻略吗?
  20. 上位机与下位机交互--让socket不死

热门文章

  1. 2018.90.20列表
  2. 蓝松短视频经验分享----抠图和动画设计
  3. Firefox显示 您的链接不安全 的解决办法
  4. SpringMVC中Controller如何将数据返回
  5. 超级实用且不花哨的js代码大全
  6. EWORD 0511
  7. 解决idea中执行maven命令失败的问题
  8. VNX证书过期解决方案(2018-11-02)
  9. php中并发读写文件冲突的解决方案(文件锁应用示例)
  10. nginx反向代理(proxy_pass)tomcat的过程中,session失效的问题解决