设为首页 收藏本站
查看: 521|回复: 0

[经验分享] iptables与netfilter基础与示例

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-5-7 08:41:37 | 显示全部楼层 |阅读模式
该怎么描述防火墙的实现呢?既然说不明白那就不说了,自己领悟吧!一、防火墙是什么?
    通过一些规则在网络数据报文必经的几个钩子上做端口的限制,实现数据过滤的功能。

二、数据报文传输的路径是怎样的?
   1、 客户端发出数据报文---->到达服务器的网络接口-----(判断目标是服务器自己)将报文送入内核处理---->将处理好的数据报文转发出去---->通过网络接口发还给客户端
   2、客户端发出数据报文---->到达服务器的网络接口-----(判断目标不是服务器)将数据转发出去---->通过网络接口送去目标地址
wKioL1VJtT-iXEKDAAHgiTQf1mU830.jpg
三、哪些地方是数据流必经的点?
    1.报文进入网卡,但是还没有经过路由,这个点叫做prerouting
    2.报文经过路由后送入内核之前,这个点叫做input
    3.路由功能节点,这个点叫forward
    4.报文由内核处理完毕,发送给路由之前,这个点叫output
    5.报文经过路由后,就要经过网卡发送出去,这个点叫postrouting
    这些点在专业术语中称为hooks funcation即钩子函数,因为所有的数据流必经这五个点,所以我们的防火墙规则写在这5个点上就可以了。
wKiom1VJuKvxipRgAAKNzVcjHNQ476.jpg

四、有哪些规则可以防火?
    这就要谈一下防火墙的历史了,最开始linux是没有防火墙设计的,基于安全的考虑OpenBSD最先将防火墙的概念在其unix内核中实现。后来linux的维护者看到有这么好的东西,就把它移植到linux的内核中去了,最开始这个规则叫做firewall,但是其太简陋了,只能起到数据报文过滤filter的功能。随着时间的发展其功能得到了非常多的扩展,比如实现了nat、mangle、raw等功能,所以后来给这些功能统一一起来起了个好听的名字——netfilter,怎么样?好听吧......
    netfilter叫做规则,它有四种功能:
             1.filter 过滤
             2.nat    网络地址转换
             3.mangle 修改数据报文首部的可修改信息
             4.raw    关闭net表上启动的连接追踪功能

五、什么是链?chain?
    在一个钩子上添加了很多规则功能,这些规则功能连起来就叫chain。但是有些功能只有在特定的钩子上才起作用,下面是五个链的对应表:
preroutingrawmanglenat
inputmanglefilter

outputrawmanglenatfilter
forwardmanglefilter

postroutingmanglenat

    链上面的规则检查是要按顺序检查的:
            1.同类规则匹配范围小的方上面
            2.不同类规则,匹配次数频繁的方上面
            3.应该设定默认的规则
六、什么是表?table
    每个功能都对应几个链,把这些链排起来就是表,下面是四个功能表:

filterinputforwardoutput

natpreroutingoutput
postrouting

mangle
preroutinginputoutputforwardpostrouting
rawpreroutingoutput



七、上面所说的规则功能怎么添加到linux中?
    iptables是一个接口,也是一个工具,可以让程序员使用命令行模式输入设定的规则到指定的hooks funcation上,实现防火墙的功能。
    格式:
    # iptables [-t TABLE] SUBCOMMAND CHAIN CRETERIA -j TARGET
            TABLE: filter, nat, mangle, raw
            SUBCOMMAND:
                  -P   设置链的默认处理 #iptables -P INPUT DROP
                  -F   清空指定链上的所有规则 #iptables -F INPUT
                  -Z   将链上的流经的数据报文数据清零
                  -N   新建一个链,自定义的链
                  -X   删除用户自定义的空链
                  -E   重命名自定义链
                  -A   在指定链的最后添加一条规则
                  -I   插入一条规则,默认插入为第一条

                  -D   删除指定的规则
                  -R   替换指定的规则
                  -L   列出指定链上的所有规则
                  -L -n  以数字方式列出
                  -L -n -v 更相信的信息
                  -L -n --line-numbers 显示规则编号
                  -L -n -v -x 显示计数器的精确值
            CHAIN: PREROUTING INPUT FORWARD OUTPUT POSTROUTING
            CRETERIA:
                通用:-p   检查协议tcp,udp,icmp
                      -s   源IP
                      -d   目标IP
                      -i   进入网卡接口
                      -o   出去网卡接口
                隐式:(如果-p指明了协议-m 和协议可以省略)
                     -m  tcp  --dport|sport|syn|tcp-flags LIST1 LIST2
wKiom1VJ0SHz-k1iAAB-Igl_Ntk932.jpg
                     -m  udp  --dport|sport
                     -m  icmp --icmp-type 8|0(8为ping请求,0为ping响应)
wKiom1VJ0tvgWDL2AAED4cQqP2k299.jpg
wKioL1VJ1E2RUu6AAAD0fFDgbq8725.jpg

                显示:
                     -m multiport     指定多个端口
                            --sports
                            --dports
wKioL1VJ1fOw_pp8AAD8ksbBW8o658.jpg
                    -m iprange        指定IP范围
                           --src-range   源  (注意:前面可使用 ! 表示否定含义)
                           --dst-range   目标
wKioL1VJ1uyzP9_4AAELrsfV_0E828.jpg
                    -m string         指定过滤的字符串
                           --algo {kmp|bm}  指定解析算法
                           --string         字符串
                           --hex-string    十六进制编码后的字符串
wKioL1VJ24Wh_IwkAACsq4G9BAo490.jpg
                    -m time          基于时间做限制
                           --datestart
                           --datestop
                           --timestart
                           --timestop
                           --weekdays
wKiom1VJ27qRAna1AAEUGu-jPt4082.jpg
                   -m connlimit       基于并发连接数做限制

                           --connlimit-above
wKioL1VJ3fjzzAUoAAC_nFtFkkg338.jpg
                    -m limit           基于链接速率做限制
                           --limit n[/second|/minit|/hour|/day]  限制链接速度多久一次
                           --limit-burst n    突发链接速率最快每秒n个
wKioL1VJ3-2T3qnoAADDWNiQYN4959.jpg
           TARGET:
                 内置目标:ACCEPT(接受),DROP(不响应),REJECT(拒绝)
                 自定义的链chain

八、未完待续


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-64446-1-1.html 上篇帖子: nsf与samba基本应用 下篇帖子: 修改linux系统时间与php同步问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表