Linux防火墙iptables
来源:互联网 发布:macbook必备软件 编辑:程序博客网 时间:2024/06/16 16:19
一 前言
防火墙是一种位于内部网络与外部网络之间的网络安全系统,可以是硬件也可以是软件。
防火墙一般分为工作在网络层的网络防火墙和工作在应用层的应用网关(代理网关)。
二 iptables工作原理
主机处理数据包的过程:当主机收到一个数据包后,数据包先在内核空间中处理,若发现目的地址是自身,则传到用户空间中交给对应的应用程序处理,若发现目的不是自身,则会将包丢弃或进行转发。
iptables在数据包经过内核的过程中有五个钩子函数,PREROUTING(路由前),INPUT(数据包进入),OUTPUT(数据包流出),FORWARD(转发),POSTROUTING(路由后)。iptables这款用户空间的软件可以在这5处地方写规则,对经过的数据包进行处理。
iptables中的表,分别表示提供的功能:filter表(实现包过滤),nat表(实现网络地址转换),mangle表(实现包修改),raw表(实现数据跟踪)
filter在3个链上设置规则:INPUT ,FORWARD ,OUTPUT;nat也只能在3个链上设置规则:PREROUTING ,OUTPUT ,POSTROUTING;而mangle5个链都可以设置规则:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING。
三 iptables格式
基本语法:iptables [-t 表] [操作命令] [链][规则匹配器][-j 目标动作]
- 操作命令
#显示nat的规则,同时不进行IP和HOSTNAME反查iptables -t nat -L -n#在filter表上创建一个新链,叫oldLinkiptables -t filter -N oldLink#filter表上oldLink链名修改为newLinkiptables -E newLink oldLink#清除filter表所有规则iptables -F -X -Z
- 默认策略
防火墙有白名单和黑名单2种过滤方式,这里只介绍下白名单。白名单就是拒绝多数,允许少数
常用动作有3种:ACCEPT(接受),DROP(丢弃),LOG(记录到日志中)
#iptables filter表白名单的定义:# 1. 进来的数据包全部拒绝# 2. 出去的包全部允许通过# 3. 转发的包也允许通过ipatbles -P INPUT DROPipatbles -P OUTPUT ACCEPTipatbles -P FORWARD ACCEPT
- 规则制定
注意:规则的次序非常关键,谁的规则越严格,应该放的越靠前。检查规则的时候,是按照从上往下的方式进行检查的,只要满足条件就不进行匹配了,执行对应的动作,所有在写防火墙时应格外注意,反正出现匹配漏洞
#环回口的包允许通过iptables -A INPUT -i lo -j ACCEPT#允许来自内网192.168.60.0/24所有主机的数据包通过eth0iptables -A INPUT -i eth0 -s 192.168.60.0/24 -j ACCEPT#拒绝192.168.80.0/24网段的主机发送给192.168.60.0/24iptables -A INPUT -i eth0 -s 192.168.80.0/24 -d 192.168.60.0/24 -j DROP#禁止192.168.80.0/24访问本机80到100端口iptables -A INPUT -i eth0 -s 192.168.80.0/24 -p tcp --dport 80:100 -j DORP
想一想: 禁止192.168.90.3访问本机80端口,允许192.168.90.0/24访问本机,谢谢能不能写的顺序变换下
- 操作规则其他命令
#删除nat表INPUT链第3个规则iptables -t nat -D INPUT 3
- 扩展模块
扩展模块有:state(连接状态),ttl(数据包的生成时间),time(特定时间),mac(物理地址),limit(限制),multport(离散的多端口)等等
1. state 后面接长选项: --state 状态 状态有以下4种: INVALID: 无效的数据包,例如数据破损的数据包 ESTABLISHED:已经连接成功的连接状态 NEW:想要新建立连接的数据包状态 RELATED:数据包是与主机发送出去的数据包有关
#已建立连接或已发送请求有关的数据包就允许通过,非法的数据包丢弃iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPTiptables -A INPUT -m state --state INVALID -j DROP
2. ttl 此模块后面有3种可选的长选项: --ttl-eq value: 匹配数据包的生成周期等于value的数据包 --ttl-gt value: 匹配数据包的生成周期大于value的数据包 --ttl-lt value: 匹配数据包的生成周期小于value的数据包
#数据包的生成周期小于30就记录iptables -A INPUT -i eth0 -m ttl --ttl-lt 30 -j LOG
3. time --monthdays day1[,day2...]: 匹配每个月特定几天 --timestart hh:mm:ss: 指定每天几点开始匹配 --timestop hh:mm:ss: 指定每天几点结束匹配 --weekdays day1[,day2..]: 指定每星期哪些工作日匹配
#如每天早上9点到下午5点拒绝数据包通过iptables -A INPUT -p all -m time --timestart 09:00:00 --timestop 17:00:00 -j DROP
4. mac --mac-source mac地址: 匹配源mac地址 --mac-destination mac地址: 匹配目的mac地址
#拒绝广播包通过iptables -A INPUT -m mac --mac-destination ff:ff:ff:ff:ff:ff -j DROP
5. limit --limit-burst 包的数量: 指定数据包最大通过量,每过一个减1;当为0时,数据包将无法通过 --limit 数量/时间单位:每隔一段时间包池+1
#一开始能匹配的数据包数量为15个,每匹配到一个,limit-burst的值减1,所以匹配到15个时,该值为0,以后每过12s,limit-burst的值会加1,又能允许1个数据包通过ipatbles -A INPUT -m limit --limit 5/m --limit-burst 15 -j ACCEPT
6. multport --sports port1[,port2...]: 匹配源端口 --dports port1[,port2...]: 匹配目的端口 --ports port1[,port2...]:匹配源端口或目的端口
除已上这些模块外,iptables还有想多扩展的模块,有兴趣的可以去搜搜
针对协议的详细过滤选项
iptables还提供了很多针对某种协议的详细过滤选项,下面来稍稍介绍下tcp和icmp这2中协议的一些额外选项
icmp有个长选项–icmp-type可以让我们匹配特定类型的icmp包
如: -p icmp –icmp-type 8 -j ACCEPT 就能让ICMP数据包类型是8的通过
tcp有–tcp-flags这个长选项,可以匹配某种标记的tcp数据包DAT的配置
路由时只检查数据包的目的ip地址,所以必须在路由之前就进行目的PREROUTING DNAT
-j DNAT –to [IP范围[:端口]]: 重写包的目的IP地址
-j SNAT –to [IP范围[:端口]] : 重写包的源IP地址
-j MASQUERADE: 用于外网口是动态获取的IP地址
#把数据包到200.10.0.3:21转换成192.168.60.253iptables -t nat -A PREROUTING -d 200.10.0.3 -p tcp --dport 21 -j DNAT --to 192.168.60.253
DAT地址转换就简单带过,除了地址转换还能进行地址映射。iptables还有个mangle表,但这个表用的不多,就不做介绍,大家可以进行谷歌或者去看iptables手册
- linux防火墙(iptables)
- linux 防火墙 iptables
- Linux防火墙配置文件(iptables)
- Linux iptables 防火墙状态
- linux 防火墙 iptables
- iptables(linux防火墙) 使用
- linux 防火墙 iptables 常用命令
- linux iptables 防火墙设置
- linux 防火墙 iptables常用命令
- Linux iptables防火墙详解
- linux iptables 防火墙 设置
- linux iptables防火墙
- Linux防火墙--iptables
- 【Linux】防火墙iptables设置
- linux 防火墙 iptables
- Linux 防火墙之iptables
- Linux防火墙iptables
- Linux防火墙iptables
- Tomcat Manager用户配置详解
- 五行代码实现 炫动滑动 卡片层叠布局,仿探探、人人影视订阅界面 简单&优雅:LayoutManager+ItemTouchHelper
- Android单点触控技术,对图片进行平移,缩放,旋转操作
- OPENCV c++
- js与ajax- XMLHttpRequest
- Linux防火墙iptables
- P1125 笨小猴 noip2008SeniorT1
- 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。
- 正则表达式中(括号) [方括号] {大括号}的区别
- 解析线索二叉树
- 网络编程中的5种IO模型
- 最长公共子序列问题
- 背包问题 插入排序 快排 TSP问题(hamiltonian 回路) Python实现
- Fragment的系列解析之-------Fragment、FragmentManager、FragmentTransaction中的方法