iptables介绍iptables和netfilter
随着互联网技术的方兴未艾,各种网络应用层出不穷,网络攻击、黑客入侵也成了网民畅游互联网的心头大患,互联网安全也愈加受到了人们的重视。网络防火墙,作为一种简单高效的互联网防御手段,逐渐成为了网民畅游网络世界的保护伞。下面笔者介绍下Linux系统的守卫者——iptables/netfilter。
一 兄弟齐心,其利断金
iptables/netfilter就像一对兄弟,netfilter是大哥,善使长钩;iptables是小弟,擅长书记。这两兄弟一武一文,掌握着守城重任。
netfilter大哥师承名门,身负五把长钩,每一个流经他的数据流都逃不过他的法眼,只见得五把长钩上下翻飞舞得水泄不通,将那不符合规则的数据包挑落马下。这五把长钩埋伏在城门的五个位置,分别是:NF_IP_PRE_ROUTING、NF_IP_LOCAL_IN、NF_IP_FORWARD、NF_IP_POST_ROUTING、NF_IP_LOCAL_OUT。他们分别对应了下图的五个位置。

iptables小弟学富五车,手拿生死簿,记载了乱臣贼子的具体情况,netfilter大哥就是按照生死簿的记载检查每个数据包,以辨忠奸。
二 四章生死簿
生死簿内所载内容分为四个章节:raw、mangle、nat、filter
raw、mangle记载了极高深的内容,正所谓曲高和寡,平常极少用到。filter里记录了过滤规则;nat表记录了地址转换和端口映射相关规则。
三 iptables命令
iptables [-t tablename] {-A|-D|-I|-F|-L|-Z|-P} 链名 rule-specification
-t 指定表名,默认为filter表
-A 追加防火墙规则 -D 删除规则 -I 插入规则 -F 清空规则 -L 列出规则 -R 替换规则 -Z 清空计数 -P 设置链默认规则 链管理: -N 创建新链 -X 删除用户自定义引用计数为0的空链 -E 自定义链重命名 -S 列出选定链的规则
[!] -p 匹配协议 [!] -s 匹配源地址 [!] -d 匹配目标地址 [!] -i 匹配入站网卡地址 [!] -o 匹配出站网卡地址 [!] –sport 匹配源端口 [!] –dport 匹配目的端口 [!] –src-range 匹配源地址范围 [!] –dst-range 匹配目的地址范围 [!] –limit 匹配数据表速率 [!] –mac-source 匹配mac地址 [!] –state 匹配状态(INVALID ESTABLISHED NEW RELATED) [!] –string 匹配应用层字串
触发动作:
ACCEPT 允许数据包通过 DROP 丢弃数据包 REJECT 拒绝数据包通过 LOG 将数据包信息记录syslog日志 DNAT 目标地址转换 SNAT 源地址转换 MASQUERADE 地址欺骗 REDIRRECT 重定向
四 filter表规则
filter表是最常被使用的表,是iptables命令默认修改的表。它包含了3条链,分别是input、forward和output,分别用来制定进入本机、转发和离开本机的数据包规则。
1 修改默认规则
使用iptables -P命令修改默认规则,例如:
iptables -P INPUT ACCEPT
建议在input链最后添加DROP规则,例如:
iptables -A INPUT -p tcp -d 172.18.55.7 -j
DROP
这样即使清空规则后也不会断网。
2 增、删、改规则
使用-A在链尾增加规则;使用-I可以指定添加规则的位置,如不指定位置序号,则在开头增加,例如除了22端口以外,禁止连接本机的端口:
iptables -A INPUT -p tcp -d 172.18.55.7 -j
DROP
----------------------------------------------------------分割线---------------------------------------------------
iptables -I INPUT -d 172.18.55.7 -p tcp
–dport ACCEPT
使用-D可以删除某条规则,例如删除某一条规则
iptabels -D INPUT
3 扩展规则
扩展规则分为显式扩展和隐式扩展,显式扩展是指使用-m参数;隐式扩展是指在-p参数后可以省略-m参数。
隐式扩展包括的参数有:
-p tcp
[!] –source-port,–sport port[:port] [!] –destination-port,–dport port[:port] [!] –tcp-flags mask comp [!] –syn
-p udp
[!] –source-port,–sport port[:port] [!] –destination-port,–dport port[:port]
-p icmp
[!] –icmp-type {type[/code]|typename}
/: echo reply
/:echo request
显式扩展包括的参数有:
-m multiport
以离散或连续的
方式定义多端口匹配条件,最多15个;
[!] –source-ports,–sports port[,port|,port:port]…:指定多个源端口; [!] –destination-ports,–dports
port[,port|,port:port]…:指定多个目标端口;
例:
# iptables -I INPUT -d 172.16.0.7 -p tcp -m multiport –dports ,,,, -j ACCEPT
-m iprange
以连续地址块的方式来指明多IP地址匹配条件;
[!] –src-range from[-to] [!] –dst-range from[-to]
例:
# iptables -I INPUT -d 172.16.0.7 -p tcp -m multiport –dports
,,,, -m iprange –src-range 172.16.0.61-172.16.0.70 -j REJECT
-m time
以时间或日期作为包过滤条件
–timestart hh:mm[:ss] –timestop hh:mm[:ss] [!] –weekdays day[,day…] [!] –monthdays day[,day…] –datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]] –datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]] –kerneltz:使用内核配置的时区而非默认的UTC;
-m string
以字符串为条件过滤数据包
–algo {bm|kmp}
[!] –string pattern
[!] –hex-string pattern
–from offset
–to offset
例:
~]# iptables -I OUTPUT -m string –algo bm
–string “gay” -j REJECT
-m connlimit
限制每个IP连接服务器的连接数
–connlimit-upto n –connlimit-above n
例:
~]# iptables -I INPUT -d 172.16.0.7 -p tcp
–syn –dport -m connlimit –connlimit-above -j REJECT
-m limit
限制连接速率
–limit rate[/second|/minute|/hour|/day] –limit-burst number
例:
~]# iptables -I OUTPUT -s 172.16.0.7 -p
icmp –icmp-type -j ACCEPT
-m state
“state”扩展是对”conntrack”子模块的扩展。 “state”扩展可以依照连接的状态过滤数据包。
[!] –state state
INVALID, ESTABLISHED, NEW, RELATED or
UNTRACKED.
NEW: 新连接请求; ESTABLISHED:已建立的连接; INVALID:无法识别的连接; RELATED:相关联的连接,当前连接是一个新请求,但附属于某个已存在的连接; UNTRACKED:未追踪的连接;
state扩展:
内核模块装载:
nf_conntrack nf_conntrack_ipv4
手动装载:
nf_conntrack_ftp
追踪到的连接:
/proc/net/nf_conntrack
调整可记录的连接数量最大值:
/proc/sys/net/nf_conntrack_max
调整超时时长:
/proc/sys/net/netfilter/*timeout*
4 处理动作(跳转目标)
-j targetname [per-target-options]
简单target:
ACCEPT, DROP
扩展target:
REJECT
–reject-with type
LOG
–log-level –log-prefix
5保存和载入规则:
保存:iptables-save > /PATH/TO/SOME_RULE_FILE 重载:iptabls-restore < /PATH/FROM/SOME_RULE_FILE -n, –noflush:不清除原有规则 -t, –test:仅分析生成规则集,但不提交
五 nat表规则
iptables不仅可以实现数据包过滤,还可以实现网络地址转换,这项功能是通过修改nat表实现的。nat表一般作用在PREROUTING和POSTRONTING链上,然后通过FORWARD链过滤流经的数据包。
示例:将流经网关的数据包的源地址改为192.168.10.254
iptables -t nat -A POSTROUTING -s 172.18.0.0/ -j SNAT –to-source
192.168.10.254
如果是拨号地址,那么可以用MASQUERADE参数
示例:将流入网关80端口的数据包转发给192.168.10.2
iptables -t nat -A PREROUTING -d 172.18.55.7 -p tcp –dport -j DNAT
–to-destination 192.168.10.2
iptables介绍iptables和netfilter的更多相关文章
- Netfilter和iptables介绍
前言 在开始Kubernetes的网络之前我们先来学习Netfilter,Netfilter可能了解的人比较少,但是iptables用过 Linux的都应该知道.本文主要介绍Netfilter与ipt ...
- Linux防火墙iptables介绍
介绍网络防火墙是通过一个或多个允许或拒绝的规则来过滤网络流量的网络设备或软件.网络防火墙还可以执行更复杂的任务,例如网络地址转换,带宽调整,提供加密隧道以及更多与网络流量相关的任务.而我们的任务就是需 ...
- iptables介绍
iptables防火墙可以用于创建过滤(filter)与NAT规则.所有Linux发行版都能使用iptables. iptables的结构:iptables-->Tables-->Chai ...
- 防火墙iptables介绍
防火墙: netfilter/iptables是集成在Linux2.4.X版本内核中的包过滤防火墙系统.该架构可以实现数据包过滤,网络地址转换以及数据包管理功能.linux中防火墙分为两部分:netf ...
- iptables介绍和基本使用
iptables 防火墙是什么 防火墙好比一堵真的墙,能够隔绝些什么,保护些什么. 防火墙的本义是指古代构筑和使用木制结构房屋的时候,为防止火灾的发生和蔓延,人们将坚固的石块堆砌在房屋周围作为屏障,这 ...
- Linux下iptables介绍
ptables简介 iptables是基于内核的防火墙,功能非常强大,iptables内置了filter,nat和mangle三张表. filter负责过滤数据包,包括的规则链有,input,outp ...
- iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8001 -j DNAT --to-destination 172.17.0.5:8080 ! -i docker0: iptables: No chain/target/match by that name.
在docker容器上部署项目后,启动docker容器,出现 iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dpor ...
- Docker iptables failed: iptables -t nat -A DOCKER -p tcp
Dokcer网络问题 因为操作或修该过iptables导致docker容器出现如下错误: [root@mysqlserver ~]# docker restart cvnavi-centos-tomc ...
- 【Docker】iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8480 -j DNAT --to-destination 172.17.0.2:80 ! -i docker0: iptables: No chain/target/match by that name
启动容器的时候,出现如下错误: Error response / --dport -j DNAT --to-destination ! -i docker0: iptables: No chain/t ...
随机推荐
- Ueditor百度编辑器插件的安装
目录 插件下载地址: 1. 引入 2. 编辑器显示处 id="content" 3.底部 4.ueditor编辑器按钮配置方法 定制工具栏图标 修改配置项的方法: 插件下载地址: ...
- 2016-2017 ACM-ICPC CHINA-Final
A Gym 101194A Number Theory Problem 7 的二进制是111,2k-1 的二进制是 k 个 1.所以 k 能被 3 整除时 2k-1 才能被 7 整除. #includ ...
- python资源大全2
原文链接 网络 Scapy, Scapy3k: 发送,嗅探,分析和伪造网络数据包.可用作交互式包处理程序或单独作为一个库. pypcap, Pcapy, pylibpcap: 几个不同 libpcap ...
- Altium Designer
抗干扰设计原则: 1.电源线的设计 选择合适的电源 尽量加宽电源线 保证电源线.底线走向和数据传输方向一致 使用抗干扰元器件(磁珠.电源滤波器等) 电源入口添加去耦电容 2.底线的设计 模拟地和数字地 ...
- 读书笔记jvm探秘之一:内存概况
jvm内存大致可以分为六大块: 堆,虚拟机主要内存,可以形象的说,堆是对象的存储库,几乎所有的对象实例和数组都在此分配内存,当然也死于此,jvm垃圾回收机制(简称GC)主要处理的就是这个地方.它被所有 ...
- 排查和处理一台被攻击的linux系统及其事后分析
11:40 2018/3/16 发现最近几天服务器流量异常的大,检查了系统命令发现命令最近的修改时间很近,检查dns配置也发现了异常的dns服务器地址. 考虑到事态的严重性,铲掉这个系统重新搭建. 事 ...
- 【Gray Code】cpp
题目: The gray code is a binary numeral system where two successive values differ in only one bit. Giv ...
- python 学习分享-实战篇增删改查作业
一大波函数来袭 作业要求: 1本次作业通过空格及逗号,将文件拆分成列表,在通过判断add.del.update.select等关键字,来判断用户执行的是哪种命令,根据不同的命令调用不同的函数去处理. ...
- java面试需要准备什么呢?c++可以看看
作者:Mingche Su链接:https://zhuanlan.zhihu.com/p/20545626来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 语言知识点:以 ...
- VS2015 +.NETMVC5 +EF实践
-- 当做笔记,以上图片按照顺序来的. 跟着 http://www.cnblogs.com/sanshi/ 一步步来的