手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网站运营>建站经验>列表

菜鸟学堂之Iptables基础

来源:互联网 作者:west263.com 时间:2008-04-16
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

  $IPTABLES -t nat -A PREROUTING -d $HTTP2_IP -j DNAT --to-destination $LAN_HTTP2_IP
  $IPTABLES -t nat -A PREROUTING -d $HTTP3_IP -j DNAT --to-destination $LAN_HTTP3_IP
  $IPTABLES -t nat -A PREROUTING -d $HTTP4_IP -j DNAT --to-destination $LAN_HTTP4_IP
  $IPTABLES -t nat -A PREROUTING -d $HTTP5_IP -j DNAT --to-destination $LAN_HTTP5_IP
  $IPTABLES -t nat -A PREROUTING -d $HTTP6_IP -j DNAT --to-destination $LAN_HTTP6_IP
  
  #
  # 4.2.5 POSTROUTING chain(定义来源地址转译)
  #
  # 从校内服务器要到 WAN 的封包,在送出之前先转译来源 IP 为 NIC IP,配合上面区块的设定,就能够做到一对一对应
  $IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -s $LAN_HTTP1_IP -j SNAT --to-source $HTTP1_IP
  $IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -s $LAN_HTTP2_IP -j SNAT --to-source $HTTP2_IP
  $IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -s $LAN_HTTP3_IP -j SNAT --to-source $HTTP3_IP
  $IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -s $LAN_HTTP4_IP -j SNAT --to-source $HTTP4_IP
  $IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -s $LAN_HTTP5_IP -j SNAT --to-source $HTTP5_IP
  $IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -s $LAN_HTTP6_IP -j SNAT --to-source $HTTP6_IP
  # 从校内一般单机要到 WAN 的封包,在送出之前先转译来源 IP 为预设的 NIC IP,这就是多对一对应,若指定成 IP 范围,就变成多对多对应,例如本范例即是如此
  $IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to-source $IP_POOL
  
  #
  # 4.2.6 OUTPUT chain
  #
  ######
  # 4.3 mangle table
  #
  #
  # 4.3.1 Set policies
  #
  #
  # 4.3.2 Create user specified chains
  #
  #
  # 4.3.3 Create content in user specified chains
  #
  #
  # 4.3.4 PREROUTING chain
  #
  #
  # 4.3.5 INPUT chain
  #
  #
  # 4.3.6 FORWARD chain
  #
  #
  # 4.3.7 OUTPUT chain
  #
  #
  # 4.3.8 POSTROUTING chain
  #
  
  七、Log 分析
  分析 iptables 防火墙 Log 的免费软件相当多,底下仅介绍 iptables_logger_v0.3,这个软件提供一个 perl 程式,能够读取系统 LOG,并将数据写入 MySql 数据库,然后还提供 php 程式,能够从数据库读取数据,整理成网页提供浏览,因此要安装此分析软件,必须先安装 perl、php、mysql 和 apache,有关这些套件的安装在这里不再介绍,请自行参考相关文档,或参加 Linux 进阶班课程。您能够从这里取得 iptables_logger_v0.3 程式,其安装程式如下:
  安装数据表:
  这个套件解压缩后,能够看到有一个数据夹叫做 sql,数据夹内有一个 sql 的指令稿叫做 db.sql,这个指令稿是用来建立摆放联机纪录所需的数据表,请利用以下指令来安装,假如您还不熟悉 mysql 的指令,请自行阅读 man mysql 文档。
  root@firewall sql# mysql -u root -p(以 root 身分登入 MySql 主控台)
  mysql> create database iptables;(建立一个数据库叫做 iptables,数据库也能够自行命名,但是要记得修改相关程式)
  mysql> grant create,select,insert on iptables.* to iptables_admin@localhost identified by 'xx';(将 iptables 数据库新建、读取和写入权限授权给 iptables_admin 这个账号,并限制只能从本机联机,密码为 xx,请自行修改上述指令中之账号和密码)
  mysql> grant create,select on iptables.* to iptables_user@localhost identified by 'xx';(将 iptables 数据库读取权限授权给 iptables_user 这个账号,并限制只能从本机联机,密码为 xx,请自行修改上述指令中之账号和密码)
  root@firewall sql# cat db.sql | mysql -u iptables_admin -p iptables(以 iptables_admin 身分来执行 db.sql,假如您改了数据库的名字,请记得修改 db.sql)
  修改 iptables 指令稿:
  由于这支 Log 分析程式是以读取系统 LOG 加以分析后才汇入到数据库的方法,来处理联机纪录,并非使用 ULOG 直接由 iptables 将纪录写入 mysql 数据库,感觉上效能比较差,但在 ULOG 机制尚未被实体化之前,这也不失为一个好的解决方案。
  原则上只要在 iptables 指令稿中有产生 LOG 的动作,这些信息就会被分析汇入到数据表(由 feed_db.pl 负责这个工作),特别要注意的是 LOG 产生时会加入一个标头(prefix),程式是透过标头来分析这笔 LOG 的意义,请将 LOG 标头取名为 IPTABLES DROP 或 IPTABLES ACCEPT,以方便事后的统计。范例如下:
  首先建立一个新的规则炼 LOG_DROP,这个规则炼用来将要丢弃的封包先 LOG 到系统日志文档,然后再丢弃。
  iptables -N LOG_DROP
  iptables -A LOG_DROP -j LOG --log-tcp-options --log-ip-options --log-prefix '[IPTABLES DROP] : '
  iptables -A LOG_DROP -j DROP
  接着修改任何规则,只要是需进行 DROP 动作,都改为跳到 LOG_DROP 规则炼,例如:
  $IPTABLES -A bad_tcp_packets -p TCP ! --syn -m state --state NEW -j DROP
  改为
  $IPTABLES -A bad_tcp_packets -p TCP ! --syn -m state --state NEW -j LOG_DROP
  至于需要进行 ACCEPT 处理的规则也如法炮制,先建立 LOG_ACCEPT 规则炼:
  iptables -N LOG_ACCEPT
  iptables -A LOG_ACCEPT -j LOG --log-tcp-options --log-ip-options --log-prefix '[IPTABLES ACCEPT] : '
  iptables -A LOG_ACCEPT -j ACCEPT
  接着修改任何规则,例如:
  $IPTABLES -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!