Iptables小总结

本文涉及的产品
公网NAT网关,每月750个小时 15CU
简介:

信息包过滤过程:

wKiom1M3dgzBMlSoAADC2j3VMHw577.jpg

wKioL1mU5Ouyz6LzAAB1SlLylrY598.png


1、iptables四表五链

四个表:

filter:用于过滤

nat:用于nat功能(端口映射,地址映射等)

mangle:用于对特定数据包的修改

raw:一般不让iptables做数据包的链接跟踪处理

五个链:

INPUT:匹配目的地址为本机的

OUTPUT:向外转发的

FORWARD:需要经过本机的数据包

PREROUTING:路由前,用于修改目的地址(DNAT)

POSTROUTING:路由后,用于修改源地址(SNAT)

2、常用操作命令

wKioL1lp42KhaevBAAA0SlPEJVg531.png

命令格式:iptables  [-t表]  -命令  匹配  操作

-A(append):追加一条规则

-I(insert):插入一条规则

-D(delete):删除一条规则,例如:iptables –D INPUT 3,删除第三条规则

-F(flush):清空规则

-L(list):列出规则,使用-vnL来显示比较好

-P(policy):设置某链默认规则

3、匹配条件

-i:进入接口

-o:出去接口

-s:来源地址,例如:-s 192.168.1.0/24,可单IP

-d:目的地址

-p:协议类型(tcp、udp、icmp)

--sport:来源端口,例如:--sport 1000:,匹配源端口1000以上的,也可以1000:3000指定范围

--dport:目的端口

4、动作

ACCEPT:允许数据包通过

DROP:阻止数据包通过

REJECT:拒绝数据包通过,并返回报错信息

SNAT:应用nat表的POSTROUTING链,进行源地址转换,可单个、一组IP

DNAT:应用nat表的PREROUTING链,进行目的地址转换,可单个、一组IP

MASQUERADE:动态源地址转换,动态IP时使用

例如ADSL拨号上网:iptables –t nat –A POSTROUTING –s 192.168.1.0/24 –o pppo –j MASQUERADE

5、附加模块

state:包状态匹配,例如:iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

NEW 第一个数据包状态,RELATED 该数据包已经或将启动新的连接,当一个连接和某个已处于ESTABLISHED状态的连接有关系时,就是RELATED状态,像FTP连接。ESTABLISHED 已建立连接的状态,INVALID 该数据包与已知的连接都不相关联)

mac:来源MAC地址匹配

limit:包速率匹配

multiport:多端口匹配,端口以逗号分隔

6、防止小量攻击

防CC、DOS攻击,限制每个IP的并发连接数

#允许已经建立连接的访问 

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

#--connlimit-above 30  限制并发连接数

iptables -I INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 30 -j REJECT  

防DDOS攻击,限制每个IP每秒并发连接数:

iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j ACCEPT

iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT  

7、配置NAT映射

先开启路由转发:

echo "1" > /proc/sys/net/ipv4/ip_forward  #临时生效

内网访问外网(SNAT):

iptables –t nat -A POSTROUTING -s [内网IP或网段] -j SNAT --to [公网IP]

#内网服务器要指向防火墙内网IP为网关

公网访问内网(DNAT)(公网端口映射内网端口):

iptables –t nat -A PREROUTING -d [对外IP] -p tcp --dport [对外端口] -j DNAT --to [内网IP:内网端口]

#内网服务器要配置防火墙内网IP为网关,否则数据包回不来。另外,这里不用配置SNAT,因为系统服务会根据数据包来源再返回去。

将本机80端口转发到本地8080端口:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080

8、用户基本配置示例

iptables -F

iptables -t nat -F

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

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

iptables -A INPUT -p udp -m multiport --dports 53 -j ACCEPT

iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT

iptables -A INPUT -p icmp -j DROP

iptables -A INPUT -i lo -j ACCEPT   #允许来自于lo接口的数据包,如果没有此规则,你将不能通过127.0.0.1访问本地服务

iptables -P INPUT DROP



本文转自 李振良OK 51CTO博客,原文链接:http://blog.51cto.com/lizhenliang/1372481,如需转载请自行联系原作者

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
网络协议 Shell
iptables 详解
iptables 详解
89 0
|
网络协议 Linux 网络安全
iptables 的四表五链
iptables 是 Linux 系统上用于定义防火墙规则的工具,它通过四个表和五个链来进行配置。下面是这些表和链的详细说明: 四个表: 1. filter 表:filter 表是最常用的表,用于过滤数据包。它包含了 INPUT、OUTPUT 和 FORWARD 三个默认的链。 2. nat 表:nat 表用于网络地址转换 (NAT)。它包含了 PREROUTING、POSTROUTING 和 OUTPUT 三个默认的链。nat 表用于修改数据包的 IP 地址和端口。 3. mangle 表:mangle 表用于修改数据包的特定字段,如 TTL(生存时间)、TOS(服务类型)等。它包含了
292 1
|
6月前
|
负载均衡 网络协议 算法
iptables 具体介绍
iptables 具体介绍
|
网络协议 Linux 测试技术
iptables超全详解
数据包先经过PREOUTING,由该链确定数据包的走向:     1、目的地址是本地,则发送到INPUT,让INPUT决定是否接收下来送到用户空间,流程为①--->②;     2、若满足PREROUTING的nat表...
2139 0
|
网络协议
iptables
工作原理:     基础: 规则(rules)其实就是网络管理员预定义的条件,规则一般的定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。
993 0
|
网络协议 Linux 网络安全
|
网络协议 算法 网络安全
|
网络协议 网络安全