zoukankan      html  css  js  c++  java
  • Linux防火墙iptables的基础

    一.网络访问控制

      1.Linux一般都是作为服务器系统使用,对外提供一些基于网络的服务

      2.通常我们都需要对服务器进行一些网络访问控制,类似防火墙的功能

      3.常见的访问控制包括:哪些IP可以访问服务器、可以使用哪些协议、哪些接口、是否需要对数据包进行修改等等。

      4.如服务器可能受到来自某IP的攻击,这时就需要禁止所有来自该IP的访问。

      5.Linux内核集成了网络访问控制功能,通过netfilter模块实现

    二.IPTables

    Linux内核通过netfilter模块实现网络访问控制功能,在用户层我们可以通过iptables程序对netfilter进行控制管理。

      1.netfilter可以对数据进行允许、丢弃、修改操作

      2.netfilter支持通过以下方式对数据包进行分类:

        -源IP地址
        -目标IP地址

        -使用接口

        -使用协议(TCP、UDP、ICMP等)

        -端口号

        -连接状态(new、ESTABLISHED、RELATED、INVALID)

    三.Netfilter

      1.filter(chain)用以对数据进行过滤

      2.nat用以对数据包的源、目标地址进行修改

      3.mangle用以对数据包进行高级修改

    四.常用功能

      1.作为服务器使用:

        过滤到本机的流量   - input链、filter表

        过滤到本机发出的流量 - output链、filter表

      2.作为路由器使用:

        过滤转发的流量 -forward链、filter表

        对转发数据的源、目标IP进行修改(NAT功能) -PREROUTING、POSTROUTING、nat表

    五.规则

      1.iptables通过规则对数据进行访问控制

      2.一个规则使用一行配置

      3.规则按顺序排列

      4.当收到、发出、转发数据包时,使用规则对数据包进行匹配,按规则顺序进行逐条匹配。

      5.数据包按照第一个匹配上的规则执行相关动作:丢弃、放行、修改

      6.没有匹配规则,则使用默认动作(每个chain拥有各自的默认动作)

    通过iptables命令创建一个规则,一条规则包含以下几个部分:

      iptables -t filter -A INPUT -s 192.168.1.1 -j DROP

            表          链         匹配属性           动作

        -表:规定使用的表(filter、nat、mangle,不同表有不同功能)

        -链:规定过滤点

        -匹配属性:规定匹配数据包的特征

        -匹配后的动作:放行、丢弃、记录

    六.基本操作

      1.列出现有iptables规则:

        iptables -L

      2.插入一个规则:

        iptables -I INPUT 3 -p tcp --dport 22 -j ACCEPT

      3.删除一个iptables规则:

        iptables -D INPUT 3 iptables -D INPUT -s 192.168.1.2 -j DROP

      4.删除所有规则:

        iptables -F

    七.匹配参数

      1.基于IP地址:

        -s 192.168.1.1

        -d 10.0.0.0/8

      2.基于接口:

        -i eth0

        -o eth1

      3.排除参数:

        -s '!' 192.168.1.0/24

      4.基于协议及端口:

        -p tcp --dport 23

        -p udp --sport 53

        -p icmp

    八.INPUT、OUTPUT

      1.控制到本机的网络流量:

        iptables -A INPUT -s 192.168.1.100 -j DROP

        iptables -A INPUT -p 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

      1.NAT(Network Address Translation)网络地址转换是用来对数据包的IP地址进行修改的机制,NAT分为两种:

        -SNAT 源地址转换,通常用于伪装内部地址(一般意义上的NAT)

        -DNAT 目标地址转换,通常用于跳转

      2.iptables中实现NAT功能的是NAT表

    十一.常用NAT

      1.通过NAT进行跳转:

        iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-dest 192.168.1.10

      2.通过NAT对出向数据进行跳转:

        iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-dest 192.168.1.100:8080

      3.通过NAT对数据流进行伪装

        (一般意义上的NAT,将内部地址全部伪装为一个外部公网IP地址)

        iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

      4.通过NAT隐藏源IP地址

        iptables -t nat -A POSTROUTING -j SNAT --to-source 1.2.3.4

    十二.配置文件

      1.通过iptables添加的规则并不会永久保存,如果需要永久保存规则,则需要将规则保存在/etc/sysconfig/iptables配置文件中

      2.可以通过以下命令将iptables规则写入配置文件:

        service iptables save

      3.CentOS/RHEL系统会带有默认iptables规则,默认保存在/etc/sysconfig/iptables中,保存自定义规则会覆盖这些默认规则

    注意:

    如果是远程管理一个Linux主机并修改iptables规则,则必须先允许来自客户端主机的SSH流量确保这是第一条iptables规则,否则可能会由于配置失误将自己锁在外面!

  • 相关阅读:
    Java基础学习07--内部类与常用类
    Java基础学习06--集合
    leetcode124
    Python深度学习笔记09--使用Keras建立循环神经网络
    Python深度学习笔记08--处理文本数据的常用方法
    详解DNS域名解析系统(域名、域名服务器[根、顶级、授权/权限、本地]、域名解析过程[递归与迭代])
    计算机网络之应用层概述(C/S模型与p2p模型)
    计算机网络传输层之TCP拥塞控制(慢开始与拥塞避免、快重传和快恢复)
    计算机网络传输层之TCP流量控制
    计算机网络传输层之TCP可靠传输
  • 原文地址:https://www.cnblogs.com/AlwaysWIN/p/6133846.html
Copyright © 2011-2022 走看看