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

[经验分享] iptables基础概念

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-9-20 10:27:13 | 显示全部楼层 |阅读模式
1.基础概念。

        防火墙,其实说白了讲,用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种。无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘。而我们的任务就是需要去定义到底防火墙如何工作,这就是防火墙的策略,规则,以达到让它对出入网络的IP、数据进行检测。
        目前市面上比较常见的有3、4层的防火墙,叫网络层的防火墙,还有7层的防火墙,其实是代理层的网关。
        对于TCP/IP的七层模型来讲,我们知道第三层是网络层,三层的防火墙会在这层对源地址和目标地址进行检测。但是对于七层的防火墙,不管你源端口或者目标端口,源地址或者目标地址是什么,都将对你所有的东西进行检查。所以,对于设计原理来讲,七层防火墙更加安全,但是这却带来了效率更低。所以市面上通常的防火墙方案,都是两者结合的。而又由于我们都需要从防火墙所控制的这个口来访问,所以防火墙的工作效率就成了用户能够访问数据多少的一个最重要的控制,配置的不好甚至有可能成为流量的瓶颈。

2.Iptables 基础知识
      1)规则 – 用于确定要匹配的封包和目标的标准,或用于确定如何处理这些封包的操作。
      2)链 – 规则列表,将按顺序检查,第一个匹配生效。
      3)策略 – 如果在内置链中没有规则匹配,将执行的默认操作, ACCEPT 或 DROP 。
      4)表 – 用于特定目的的链集合: filter 用于阻止通信, nat 用于修改封包的目标或表面源。

3.目标(当封包匹配规则时,要采用的操作)
     1)ACCEPT (接受) – 封包通过链
     2)DROP (丢弃) – 封包被丢弃,如同其从未出现
     3)REJECT (拒绝) - 封包被拒,并且防火墙发送错误消息(默认情况下是 ICMP 端口不可到达息)
     4)LOG (记录) - 关于封包的信息记录到系统日志;继续检查链中的下一项规则

4.Netfilter 的表和链
    4.1链

        PREROUTING:在进行路由选择前处理数据包
        INPUT:处理入站的数据包
        OUTPUT:处理出站的数据包

        FORWARD:处理转发的数据包
        POSTROUTING:在进行路由选择后处理数据包
    4.2表
        raw表:确定是否对该数据包进行状态跟踪
        mangle表:为数据包设置标记
        nat表:修改数据包中的源、目标IP地址或端口
        filter表:确定是否放行该数据包(过滤)
wKioL1ffxb3Te6ytAAFcQ4tq50A128.jpg
                                        规则表的先后顺序:raw→mangle→nat→filter
    4.3规则链的先后顺序:
        入站顺序:PREROUTING→INPUT
        出站顺序:OUTPUT→POSTROUTING
        转发顺序:PREROUTING→FORWARD→POSTROUTING
    4.4还有三点注意事项:
        1).没有指定规则表则默认指filter表。
        2).不指定规则链则指表内所有的规则链。
        3).在规则链中匹配规则时会依次检查,匹配即停止(LOG规则例外),若没匹配项则按链的默认状态处理。

5.iptables 命令
  1)iptables 用于设置或查看内核内存中的规则。
  iptables 选项                定义
   -F                         从链中删除所有规则
       -vnL --line-numbers          在数字模式下,完整地列出所有规则
  -A CHAIN <rule> -j <target>    将规则添加到链的末尾
  -I CHAIN # <rule> -j <target>   将规则作为规则 # 插入链;如果没有 # ,则作为第一个规则
  -D CHAIN #                  将规则 #从链中删除
      -P 设置默认策略:iptables -P INPUT (DROP|ACCEPT)
 示例:

  # iptables -vnL --line-numbers
  # iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT
  # iptables -I  INPUT 1 -s 192.168.0.233 -j REJECT
  # iptables -D INPUT 1
  # iptables -F INPUT    清空
        /etc/init.d/iptables  save  将修改后的策略保存到/etc/sysconfig/iptables
    2)自定义链名

     iptables    -N redhat:添加自定义链名
        iptables    -D redhat 1:删除自定义链下的策略
        iptables    -X redhat:删除自定义链
        iptables    -A INPUT -s !192.168.0.4 -p tcp --dport 23 -j REJECT:只有4可以连接
    2)规则(匹配标准)语法
        iptables 规则包括匹配标准,可以与在封包中找到的标题信息进行比较。
    概念                指令
    源IP 或网络           -s 192.168.0.0/24
    目标IP 或网络        -d 10.0.0.1
    UDP/TCP 和端口    -p udp --sport 68 --dport 67
    ICMP 和类型          -p icmp --icmp-type echo-reply
    入站网络接口          -i eth0
    出站网络接口          -o eth0
    连接跟踪                -m state --state ESTABLISHED,RELATED
  示例:
# iptables -A FORWARD -s 192.0.2.0/24 -d 10.0.0.1 -j DROP
# iptables -A FORWARD -p udp --sport 68 --dport 67 -j ACCEPT
# iptables -A FORWARD -p icmp --icmp-type echo-reply -j ACCEPT
# iptables -A INPUT -i lo -j ACCEPT
# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    连接跟踪存储关于之前看到的通信消息,以做出匹配决定。允许连接后,信息放置在连接跟踪表中,直至超时、连接关闭或看到更多匹配的通信(重要计时器)。尽管这需要更多的内核内存,但是好处在于可以简化规则设计。
         状态                定义
        NEW                封包开始新通信,将规则添加到连接跟踪表
        ESTABLISHED       与连接跟踪表中的规则匹配的任一封包
        RELATED           在某种程度上与 ESTABLISHED 通信“相关”的通信 ;如 FTP 等协议
        INVALID            无法确定的封包;通常,这些封包应被拒绝或丢弃
    注意:
       为使 RELATED 规则起作用,您可能需要在 /etc/sysconfig/iptables-config 中启用相应的程序模块。
       运行 iptables 命令更改内存中的 netfilter 内核模块规则,但如果重新引导,则不会持续。
       运行 service iptables save 将采用内存中的当前规则,并将其写入 /etc/sysconfig/iptables 。

    示例:
    # modprobe nf_conntrack_ftp
    # modprobe nf_conntrack_tftp
    # iptables -F
    # iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    # iptables -A INPUT -m state --state NEW -p tcp --dport 21 -j ACCEPT
    # iptables -A INPUT -m state --state NEW -p tcp --dport 69 -j ACCEPT
    # iptables -A INPUT -m state --state NEW,INVALID -j DROP
    注意:如果不加载相应的内核模块,那么跟踪状态将不法生效。

6.永久生效:
1. 编辑文件: /etc/sysconfig/iptables-config
IPTABLES_MODULES="nf_conntrack_ftp nf_conntrack_tftp"
2. 保存策略:
# service iptables save
3. 开机自启:
# chkconfig iptables on
注意:在实际环境中更推荐把所有策略保存到自定义脚本中,并把脚本加入 /etc/rc.local 实现开机自启。

7.完整配置
# 1.删除现有规则iptables -F# 2.配置默认链策略iptables -P INPUT DROPiptables -P FORWARD DROPiptables -P OUTPUT DROP# 3.允许远程主机进行SSH连接iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT# 4.允许本地主机进行SSH连接iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT# 5.允许HTTP请求iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
总结
         Iptables是一个非常重要的工具,它是每一个防火墙上几乎必备的设置,也是我们在做大型网络的时候,为了很多原因而必须要设置的。学好Iptables,可以让我们对整个网络的结构有一个比较深刻的了解,同时,我们还能够将内核空间中数据的走向以及linux的安全给掌握的非常透彻。我们在学习的时候,尽量能结合着各种各样的项目,实验来完成,这样对你加深iptables的配置,以及各种技巧有非常大的帮助。


运维网声明 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.yunweiku.com/thread-274825-1-1.html 上篇帖子: linux启动流程详解 下篇帖子: dstat系统监控工具配置与使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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