iptables的基本选项及概念
目录
1.按保护范围划分:
2.iptables 的基础概念
4个规则表:
5个规则链:
3.iptables的基础选项
4.实验
1.按保护范围划分:
-
主机防火墙:服务范围为当前一台主机 input output
-
网络防火墙:服务范围为防火墙一侧的局域网 forward
按实现方式划分:
-
硬件防火墙:在专用硬件级别实现部分功能的防火墙;另一个部分功能基于软件实现,如:华为, 山石hillstone,天融信,启明星辰,绿盟,深信服, PaloAlto , fortinet, Cisco, Checkpoint, NetScreen(Juniper2004年40亿美元收购)等 开源二次开发 linux 服务端 win
-
软件防火墙:运行于通用硬件平台之上的防火墙的应用软件,Windows 防火墙 ISA --> Forefront 系统上的软件实现防火墙功能
按7层模型议划分:
-
网络层(4)防火墙:OSI模型下四层,又称为包过滤防火墙 80 http 22ssh 23telnet 2120ftp
-
应用层防火(7)墙/代理服务器: 协议 端口号 真实数据
2.iptables 的基础概念
iptables基础概念:iptables分为4表,5列
4个规则表:
1.filter表:过滤规则表,根据预定义的规则过滤符合条件的数据包;
2.nat表:地址转换规则表;
3.mangle表:修改数据标记位规则表;
4.raw表:关闭启用的链接跟踪机制。
总结:filter表:过滤流量;nat表:地址转换;mangle表:标记流量;raw表:追踪流量。
5个规则链:
1.INPUT:处理入站数据,匹配目标IP地址为本机的数据包;
2.OUTPUT:处理出站数据,一般不在此规则链上做配置;
3.PREROUTING:在进行路由选择前处理数据包,用来修改目的IP地址;适合做DNAT;
4.POSTROUTING:在进行路由选择后处理数据包用来修改源IP地址;适合做SNAT;
5.FORWARD:处理转发流量,匹配经过本机的数据包。
总结:
INPUT:处理入站数据;OUTPUT:处理出站数据;PREROUTING:DNAT;POSTROUTING:SNAT;FORWARD:数据转发。
3.iptables的基础选项
iptables -t | 选择规则表 |
iptables -vnL | 查看规则表;默认为filter表 |
iptables -F | 删除规则表里的规则;默认为filter表 |
iptables -vnL --line-nu | 查看规则表并编号 |
iptables -A INPUT | 追加规则到INPUT的最后 |
iptables -I INPUT 行数 | 插入规则到INPUT的某行;默认为第一行 |
iptables -D INPUT 行数 | 删除INPUT的某行 |
iptables -R INPUT 行数 | 替换规则 |
iptables -Z INPUT | 清空INPUT的所有表格 |
iptables -P INPUT 处理动作 | 改变INPUT规则列的默认处理动作 |
iptables -p tcp/udp | 选择tcp或者udp的协议 |
iptables -p tcp/udp --dport 端口号 | 选择tcp或者udp的某个端口 |
iptables -s IP地址(网段/子网掩码) | 选择源地址或者源网段 |
iptables -d IP地址 (网段/子网掩码) | 选择目的IP地址或者目的网段 |
iptables -i 网卡名 | 指明进入网卡 |
iptables -o 网卡名 | 指明出网卡 |
iptables ! -p 协议 | 除了次协议 |
iptables -j 处理动作 |
-j 处理动作:DROP(直接抛弃;不回复);REJECT(回复拒绝);ACCEPT(运行);LOG(生成日志文件);SNAT(修改源IP地址);DNAT (修改目的IP地址)。
4.实验
使得主机1可以ping主机2;主机2不可以ping主机1
方法1:
主机1:iptables -A INPUT -d 192.168.174.104 -p icmp --icmp-type 8 -j REJECT
翻译:在入站数据前追加规则,如果目的IP地址为192.168.174.104(即主机1IP地址),协议为icmp,type为8的数据,直接回复拒绝。
结果:
方法2:
主机1:iptables -A OUTPUT -d 192.168.174.190 -p icmp --icmp-type 0 -j REJECT
翻译:在出站数据后追加规则,如果目的IP地址为192.168.174.190(即主机2IP地址),协议为icmp,type为0的数据,直接回复拒绝(但是对方都不会接受到数据)。
结果:
iptables会直接生成,不需要刷新之类的命令