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的数据包进行地址伪装

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 简单的学习知识,内容仅供参考,希望大家喜欢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值