netfilter和iptables
来源:互联网 发布:打开页面就执行js 编辑:程序博客网 时间:2024/05/19 19:42
netfilter及iptables
linux内核通过netfilter模块实现网络访问控制功能,在用户层我们可以通过iptables程序对netfilter进行控制管理。
netfilter可以对数据进行允许、丢弃、修改操作
netfileter支持通过以下方式对数据包进行分类:
--源ip地址
--目的地址
--使用接口
--使用协议(TCP、UDP、ICMP等)
--端口号
--连接状态(new、ESTABLISHED、RELATED、INVALID)
常用功能
作为服务器使用
过滤到本机的流量 - input链 filter表
过滤到本机发出的流量 - output链 filter表
作为路由器使用
过滤转发的流量 -forward链 filter表
对转发数据的源、目标ip进行修改 (NAT功能) -PREROUTING或POSTROUTING链 NAT表
iptables规则
iptables通过规则对数据进行访问控制
一个规则使用一行配置
规则按顺序排列
当收到、发出、转发数据包时,使用规则对数据包进行匹配,按规则顺序进行逐条匹配
数据包按照第一个匹配上的规则执行相关动作:丢弃、放行、修改
没有匹配规则,则使用默认动作(每个chain拥有各自的默认动作)
通过iptables命令创建一个规则,一条规则包含以下几个部分:
iptables -t filter -A INPUT -s 192.168.1.1 -j DROP
表 链 匹配属性 动作
-表 规定使用的表(filter、nat、mangle,不同的表有不同功能)
-链 规定过滤点
-匹配属性 规定匹配数据包的特征
-匹配后的动作 放行、丢弃、记录
iptables默认是启动的。可以使用 service iptables status
基本操作
列出现有iptables规则
iptables -L
插入一个规则
iptables -l INPUT 3 -p tcp --dport 22 -j ACCEPT
删除一个iptables规则
iptables -D INPUT 3
iptables -D INPUT -s 192.168.1.2 -j DROP
删除所有规则
iptables -F
匹配参数
基于ip地址
-s 192.168.1.1
-d 10.0.0.0
基于接口
-i eth0
-o eth1
排除参数
-s '!' 192.168.1.0/24
基于协议及端口:
-p tcp --dport 23
-p udp --sport 53
-p icmp
INPUT、OUTPUT
控制到本机的网络流量:
iptables -A INPUT -s 192.168.1.100 -j DROP
iptables -A INPUT tcp --dport 80 -j DROP
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j DROP
iptables -A INPUT -i eth0 -j ACCEPT
FORWARD
当使用linux作为路由(进行数据转发)设备使用的时候,可以通过定义forward规则来进行转发控制
如:
禁止所有192.168.1.0/24 到10.1.1.0/24的流量
iptables -A FORWARD -s 192.168.1.0/24 -d 10.1.1.0/24 -j DROP
NAT
NAT 网络地址转换是用来对数据包的ip地址进行修改的机制,NAT分为两种:
-SNAT 源地址转换,通常用于伪装内部地址(一般意义上的NAT)
-DNAT 目标地址转换,通常用于跳转
iptables中实现NAT功能的是NAT表
常用NAT表
通过NAT进行跳转
iptables -t nat -A PREROUTING -p tcp --dport 80 DNAT --to-dest192.168.1.1
通过NAT对出向数据进行跳转
iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-dest 192.168.1.100;8080
通过NAT对数据流进行伪装
(一般意义上的NAT,将内部地址全部伪装为一个外部公网ip地址)
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
通过NAT隐藏源ip地址
iptables-t nat -A POSTROUTING -j SNAT --to-source 1.2.3.4
配置文件
通过iptables添加的规则并不会永久保存,如果需要永久保存规则,则需要将规则保存在/etc/sysconfig/iptables配置文件中
可以通过以下命令将iptables规则写入配置文件:
service iptables save
系统会带有默认
注意:如果是远程管理一个linux主机并修改iptables规则,则必须先允许来自客户端主机的SSH流量确保这是第一条iptables规则,否则可能会由于配置失误将自己锁在外面。
linux内核通过netfilter模块实现网络访问控制功能,在用户层我们可以通过iptables程序对netfilter进行控制管理。
netfilter可以对数据进行允许、丢弃、修改操作
netfileter支持通过以下方式对数据包进行分类:
--源ip地址
--目的地址
--使用接口
--使用协议(TCP、UDP、ICMP等)
--端口号
--连接状态(new、ESTABLISHED、RELATED、INVALID)
常用功能
作为服务器使用
过滤到本机的流量 - input链 filter表
过滤到本机发出的流量 - output链 filter表
作为路由器使用
过滤转发的流量 -forward链 filter表
对转发数据的源、目标ip进行修改 (NAT功能) -PREROUTING或POSTROUTING链 NAT表
iptables规则
iptables通过规则对数据进行访问控制
一个规则使用一行配置
规则按顺序排列
当收到、发出、转发数据包时,使用规则对数据包进行匹配,按规则顺序进行逐条匹配
数据包按照第一个匹配上的规则执行相关动作:丢弃、放行、修改
没有匹配规则,则使用默认动作(每个chain拥有各自的默认动作)
通过iptables命令创建一个规则,一条规则包含以下几个部分:
iptables -t filter -A INPUT -s 192.168.1.1 -j DROP
表 链 匹配属性 动作
-表 规定使用的表(filter、nat、mangle,不同的表有不同功能)
-链 规定过滤点
-匹配属性 规定匹配数据包的特征
-匹配后的动作 放行、丢弃、记录
iptables默认是启动的。可以使用 service iptables status
基本操作
列出现有iptables规则
iptables -L
插入一个规则
iptables -l INPUT 3 -p tcp --dport 22 -j ACCEPT
删除一个iptables规则
iptables -D INPUT 3
iptables -D INPUT -s 192.168.1.2 -j DROP
删除所有规则
iptables -F
匹配参数
基于ip地址
-s 192.168.1.1
-d 10.0.0.0
基于接口
-i eth0
-o eth1
排除参数
-s '!' 192.168.1.0/24
基于协议及端口:
-p tcp --dport 23
-p udp --sport 53
-p icmp
INPUT、OUTPUT
控制到本机的网络流量:
iptables -A INPUT -s 192.168.1.100 -j DROP
iptables -A INPUT tcp --dport 80 -j DROP
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j DROP
iptables -A INPUT -i eth0 -j ACCEPT
FORWARD
当使用linux作为路由(进行数据转发)设备使用的时候,可以通过定义forward规则来进行转发控制
如:
禁止所有192.168.1.0/24 到10.1.1.0/24的流量
iptables -A FORWARD -s 192.168.1.0/24 -d 10.1.1.0/24 -j DROP
NAT
NAT 网络地址转换是用来对数据包的ip地址进行修改的机制,NAT分为两种:
-SNAT 源地址转换,通常用于伪装内部地址(一般意义上的NAT)
-DNAT 目标地址转换,通常用于跳转
iptables中实现NAT功能的是NAT表
常用NAT表
通过NAT进行跳转
iptables -t nat -A PREROUTING -p tcp --dport 80 DNAT --to-dest192.168.1.1
通过NAT对出向数据进行跳转
iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-dest 192.168.1.100;8080
通过NAT对数据流进行伪装
(一般意义上的NAT,将内部地址全部伪装为一个外部公网ip地址)
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
通过NAT隐藏源ip地址
iptables-t nat -A POSTROUTING -j SNAT --to-source 1.2.3.4
配置文件
通过iptables添加的规则并不会永久保存,如果需要永久保存规则,则需要将规则保存在/etc/sysconfig/iptables配置文件中
可以通过以下命令将iptables规则写入配置文件:
service iptables save
系统会带有默认
注意:如果是远程管理一个linux主机并修改iptables规则,则必须先允许来自客户端主机的SSH流量确保这是第一条iptables规则,否则可能会由于配置失误将自己锁在外面。
0 0
- Iptables和Netfilter
- iptables和netfilter介绍
- netfilter和iptables
- Netfilter 和 iptables关系
- 浅析NetFilter和iptables
- 深入理解Netfilter和iptables:什么是Netfilter?
- 简单介绍iptables和netfilter
- Netfilter和iptables学习总结
- netfilter & iptables
- iptables、netfilter
- 【Linux 驱动】netfilter/iptables (三) 注册和注销Netfilter hook
- iptables/netfilter分析和相关链接整理
- iptables/netfilter分析和相关链接整理
- Linux安全性和netfilter/iptables介绍
- 对iptables和netfilter概念的总结
- 深入理解Netfilter和iptables:内核中ip_tables小觑
- SELinux、Netfilter、iptables和UFW四者关系
- netfilter/iptables 简介
- 第一篇:android常用dialog总结
- TableLayout
- javaWeb+JasperReport报表开发简单实例
- CentOS 7下的一个有趣的命令sl
- Route53增加了期待已久的私网DNS功能
- netfilter和iptables
- SQL Server ErrorLog 错误日志(如果数据库所占空间变大)
- 解决win8下计算机右键,管理打不开
- 五边形数定理
- Android:Intent Filter简介及属性(action、Category等)匹配方式说明
- Java多线程----java 对象锁
- fdisk
- nodeJS npm grunt grunt-cli
- Android Studio中使用Gradle和AndroidAnnotations