iptables 简单学习笔记

运维 系统运维
iptables 是与最新的 2.6.x 版本Linux 内核集成的 IP 信息包过滤系统。在以前的篇章里介绍了iptables的配置,现在我为大家介绍下我自己的iptables的学习心得。

本文是我自己的一些学习iptables的心得,给大家拿出来来晒晒!

  filter #用于过滤

  nat #做NAT

  input =>filter #目的ip是本机的数据包

  forward =>filter #穿过本机的数据包

  prerouting =>nat #修改目的地址(DNAT)

  postrouting =>nat #修改源地址(SNAT)

  iptables -t 要操作的表 操作命令 要操作的链 规则号码 匹配条件 -j 匹配到以后的命令

  iptables -I INPUT -j DROP #-t 默认为filter

  iptables -I INPUT 3 -j DROP #链接里插入一条规则(插入第三条)

  iptables -D INPUT 3 #按号码匹配删除

  iptables -D INPUT -s 192.168.0.1 -j DROP #按内容匹配删除

  iptables -R INPUT 3 -j ACCEPT #将原来3的规则改为-j ACCEPT

  iptables -P INPUT DROP #设置默认规则

  iptables -F INPUT #清空filter表INPUT链中的所有规则

  iptables -t nat -F PREROUTING

  iptables -t nat vxnL PREROUTING

  --# v: 显示详细信息

  --# x: 在v的基础上,禁止自动单位换算

  --# n: 只显示IP地址和端口号码,不显示域名和服务名称

  ========匹配条件

  -i -i eth0 #流入接口(是否从网口eth0进来)

  -o #流出接口

  -s -s 192.168.1.0/24 #来源地址

  -d #目的地址

  -p -p icmp --icmp-type #协议类型

  --sport --sport 1000:3000 #来源的端口

  --dport --dport 1000: :3000 #目的的端口1000:(1000端口以上) :3000(3000端口以下)

  -s 192.168.0.1 -d www.sina.com -p tcp -dport 80

  ================================

  iptables -A INPUT -j ACCEPT #允许所有访问本机IP的数据包通过

  iptables -A FORWARD -s 192.168.0.1 -j DROP #阻止来源地址为192.168.80.39的数据包通过本机

  -j DNAT #目的地址转换,DNAT支持转换为单IP,也支持转换到IP址

  池

  iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to 192.168.0.3:80

  #把从ppp0进来的要访问tcp/80的数据包的地址改为192.168.0.3

  -j SNAT #源地址转换

  iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1

  #将内网192.168.0.0/24的源地址改为1.1.1.1,用于nat表

  iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1-1.1.1.10

  #修改成为一个地址池

  -j MASQUERADE #动态源地址转换

  iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

  #将源地址为192.168.0.0/24的数据包进行地址伪装

#p#

  ===================附加模块

  state #按包状态匹配

  mac #按来源mac匹配

  limit #按包速率匹配

  multiport #多端口匹配

  --state

  -m state #new,related,established,invalid

  iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

  #包状态 RELATED(衍生态),ESTABLISHED(连接态),NEW(有别于tcp的syn),INVALID(不被识别的)

  iptables -A FORWARD -m mac --mac-source XX:XX:XX:XX:XX:XX -j DROP

  #阻断来自某MAC地址的数据包通过本机

  iptables -A FORWARD -d 192.168.0.1 -m limit --limit 50/s -j ACCEPT

  #用一定速率去匹配数据包

  iptables -A INPUT -p tcp -m multiport --dports 21,22,25,80,110 -j ACCEPT

  #一次匹配多个端口

  =======================================实例分析===================================

  单服务器的防护:

  iptables -A INPUT -i lo -j ACCEPT

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

  iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

  iptables -P INPUT DROP

  制作网关:

  echo "1" > /proc/sys/net/ipv4/ip_forward #启用路由转发

  iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE

  限制内网用户:filter->forward

  iptables -A FORWARD -s 192.168.0.3 -j DROP

  iptables -A FORWARD -m mac --mac-source 11:22:33:44:55:66 -j DROP

  iptables -A FORWARD -d www.163.com -j DROP

  内网做对外服务器:

  iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to 192.168.1.1

  iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 81 -j DNAT --to 192.168.1.2:80

  ========================================连接追踪模块=================================

  主动模式(ACTIVE)

  使用连接追踪模块(打开tcp/20,防火墙打开高范围端口,配置ftp,减小被动模式端口范围)

  modprobe ip_nat_ftp

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

  iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

  iptables -P INPUT DROP

  被动模式(PASSIVE)

  =============================网关策略=================================

  echo "1" > /proc/sys/net/ipv4/ip_forward

  echo "1" > /proc/sys/net/ipv4/tcp_syncookies

  echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

  modprobe ip_nat_ftp

  堵:

  iptables -A FORWARD -p tcp --dport 80 -j DROP

  iptables -A FORWARD -p tcp --dport yyy:zzz -j DROP

  通:

  iptables -A FORWARD -p tcp --dport xxx -j ACCEPT

  iptables -A FORWARD -p tcp --dport yyy:zzz -j ACCEPT

  iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

  iptables -P FORWARD DROP

  ==========================三大纪律五项注意=============================

  3: filter nat mangle

  5: prerouting,input,forward,output,postrouting

  ==========================注意事项==============================

  #养车好的习惯

  iptables -vnL

  iptables -t nat -vnL

  iptables-save

  #注意逻辑顺序

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

  iptables -I INPUT -p tcp --dport yyy -j ACCEPT

  ==========================FAQ======================================

  iptables -m 模块名 -h

  /lib/modules/`uname -r`/kernel/net/ipv4/netfilter #模块存放的路径

  modprobe ip_nat_ftp #加载模块

  =========================实战======================================

  iptables -A INPUT -i lo -j ACCEPT

  iptables -A INPUT -i eth1 -p tcp --dport 22 -j ACCEPT

  iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

  iptables -P INPUT DROP

  iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 j SNAT --to 202.106.0.254

  iptables -t nat -A POSTROUTING -d 202.106.0.254 -p tcp --dport 80 -j DNAT --to 172.17.0.1

  iptables -A FORWARD -i eth2 -p eth1 -m state --state NEW -j DROP

通过文章,我们知道一些关于iptables 简单的学习知识,希望大家喜欢!

【编辑推荐】

 

责任编辑:赵鹏 来源: 网络转载
相关推荐

2011-03-17 16:43:49

2011-03-17 14:09:03

iptables na

2015-10-09 15:07:02

HTTP网络协议

2011-03-17 10:58:55

Linux防火墙Iptables入门

2011-01-12 09:59:28

Ubuntu Serviptables

2011-08-22 15:33:44

2010-04-28 08:52:59

unixware

2009-07-14 16:08:41

WebWork学习

2010-05-27 11:04:32

2010-07-07 17:09:24

IP地址协议

2009-11-20 11:28:36

Oracle学习过程

2009-06-22 10:41:34

Spring.AOP

2009-06-19 18:38:01

Spring

2009-06-22 14:28:00

java接口

2009-04-12 09:03:50

Symbian诺基亚移动OS

2009-04-12 08:57:50

Symbian诺基亚移动OS

2009-09-08 16:36:15

CCNA学习笔记

2009-06-29 09:00:14

JSFJava

2011-08-10 14:00:22

XcodeUIWebView视频

2011-06-03 13:11:19

Android Activity
点赞
收藏

51CTO技术栈公众号