zoukankan      html  css  js  c++  java
  • iptables防火墙

    iptables防火墙示意图

     

    1、防火墙的分类:

    硬件,购买设备

    软件,安装软件

    2、iptables的功能:

    强制访问指定站点

    发布内网服务器nat/snat/dnat

    智能型DNS

    3、iptables的格式:

    iptables

    -t filter

    -A INPUT

    -p tcp--dport 23

    -j REJECT

    命令

    4表

    5链

    数据描述

    处理方式

    4表:

    filter

    过滤(数据过滤,默认)

    INPUT/OUTPUT/FORWARD

    nat

    转换(地址转换)

    PREROUTING/POSTROUTING/OUTPUT

    mangle

    校正(数据包打标记)

    INPUT/OUTPUT/FORWARD/PREROUTING/POST

    ROUTING

    raw

     

     

    5链

    INPUT:接收,发送方不一定是你,但接收方一定是你

    OUTPUT:发送,接收方不一定是你,但发送方一定是你

    FORWARD:转发,接收方和发送方全都不是你

    PREROUTING:路由前时,指代在决定去向前处理

    POSTROUTING:路由后时,指代在决定去向后处理

    4、外出的包:

    1、本地程序

    2、路由判断(决定包使用源地址,外出接口)

    3、mangle表OUTPUT链(标记、生存时间、服务类型)

    4、nat表OUTPUT链(对防火墙自己发出的包做DNAT)

    5、Filter表OUTPUT链(过滤)

    6、mangle表POSTROUTING链(标记、生存时间、服务类型)

    7、nat表POSTROUTING链(对数据包做SNAT)

    8、离开接口

    9、网络传输

    5、进入的包:

    1、网络传输

    2、进入接口

    3、mangle表PREROUTING链(标记、生存时间、服务类型)

    4、nat表PREROUTING链(对数据包做DNAT)

    5、路由判断(决定包的去向,给自己的)

    6、mangle表INPUT链(标记、生存时间、服务类型)

    7、filter表INPUT链(过滤)

    8、交给本地程序处理

     

    6、转发的包:

    1、网络传输

    2、进入接口

    3、mangle表PREROUTING链(标记、生存时间、服务类型)

    4、nat表PREROUTING链(对数据包做DNAT)

    5、路由判断(决定包的去向,发给别人)

    6、mangle表FORWARD链(标记、生存时间、服务类型)

    7、filter表FORWARD链(过滤)

    8、mangle表POSTROUTING链(标记、生存时间、服务类型)

    9、nat表POSTROUTING链(对数据包做SNAT)

    10、离开接口

    11、网络传输

    走向:

    不考虑链

    mangle>nat>filter

    不考虑表

    PREROUTING>INPUT>(FORWARD)>OUTPUT>POSTROUTING

                                                                                                      绿色代表注释

    7、参数

    A

    在所选择的链末尾添加规则

    iptables -A INPUT -s 192.168.1.123 -p tcp --dport 22 -j ACCEPT

    t

    指定表(可省略)

    Iptables -t filter -L INPUT

    R

    替换规则

    iptables -R INPUT 1 -s 192.168.0.123 -j DROP

    D

    删除规则

    iptables -D INPUT -p tcp --dport 80 -j DROP

    iptables -D INPUT 3

    I

    插入规则

    iptables -I INPUT 3 -s 192.168.1.222 -j DROP

    L

    查看规则

    iptables -t filter -L INPUT

    X

    删除非内建链(连接数非“0“不可删)

    iptables -X birdteam

    F

    清空规则

    iptables -t nat -F OUTPUT

    Z

    将计数器清空(包计数器、字节计数)

    iptables -Z

    N

    新创建链

    iptables -N birdteam

    P

    修改默认规则

    iptables -P INPUT DROP

    E

    自定义链改名

    iptables -E birdteam vfast

     

     # Iptables -L INPUT  与 iptables -L INPUT -x

     

    选项:

    v

    详细信息

    x(与“v“一起使用)

    精确

    n

    显示端口

    --line-numbers(缩写--lin)

    显示规则序号

     

    通用匹配:

    p

    匹配协议

    有三种( icmp  udp  tcp)或all

    s

    匹配来源地址

    iptables -A INPUT ! -s 192.168.1.123 -j ACCEPT

      (“!“取反,”p“也可以用)

    d

    匹配目的地址(一般是服务器本身)

     

    i

    匹配包进入的接口

    o

    匹配包送出的接口

    OUTPUT/FORWARD/POSTROUTING(另外两个链不可使用)

    TCP的端口:

    sport

    匹配来源端口

    dport

    匹配目的端口(同上,匹配前要加上协议)

    tcp-flags

    匹配TCP的封包标记

    SYN/ACK/FIN/RST/URG/PSH

     

    syn

     (代表连接请求)    --syn

    tcp-option

    检查TCP的包头信息

    8位选项类型、长度、内容

    UDP的端口:

    sport

    匹配来源端口

    dport

    匹配目的端口

    ICMP的端口:

    icmp-type

    匹配ICMP的类型(代表:ping)

    INPUT链:

    -s --sport

    对方的端口和地址

    -d --dport

    自己的端口和地址

    iptables -A INPUT -p tcp --dport 23 -j DROP

    OUTPUT链:

    -s --sport

    自己的端口和地址

    iptables -A OUTPUT -p tcp --sport 23 -j DROP

    -d --dport

    对方的端口和地址

    显示匹配(无用匹配)

    limit

    匹配平均速率

     

    --limit

    --limit-burst

    mac

    匹配源MAC地址

    --mac-source

    multiport

    不连续多端口匹配

     

    (扩)添加连续的端口

     

    来源--source-port

    目的--destination-port  

    所有--port

    mark

    标记

     

    --mark

    owner

    匹配所有

     

    (限制uid=1001的用户发出数据)

    --uid-owner

    --gid-owner

    --pid-owner

    --sid-owner

    state

    匹配包的状态

     

    --state

    NEW

    ESTABLISHED

    RELATED

    INVALID

    tos

    匹配服务类型

    --tos

    ttl

    匹配生存时间

    --ttl

    处理:

    ACCEPT

    允许

     

    REJECT

    拒绝并且返回错误信息

     

    DROP

    丢弃并不返回错误信息

     

    LOG

    记录到/var/log/messages

     

    (做个cjk标记)

     

    --log-prefix

    --log-level

    --log-tcp-sequence

    --log-tcp-options

    --log-ip-options

    DNAT

    目标地址转换

    例:iptables -t nat -A POSTROUTING -d 192.168.7.251 -j DNAT --to-destination 192.168.7.254

    --to-destination

    MARK

    标记

    例:iptables -t mangle -A INPUT -p tcp -j MARK --set-mark 1

    --set-mark

    MASQUERADE

    伪装

    例:iptables -t nat -A PREROUTING -s 192.168.7.250 -j MASQUERADE --to-ports 80

    --to-ports

    SNAT

    来源地址转换

    例:iptables -t nat -A PREROUTING -s 192.168.7.250 -j SNAT --to-source 192.168.7.251

    --to-source

    MIRROR

    镜像

    例:iptables -t nat -A PREROUTING -s 192.168.7.250 -j MIRROR

    换掉源和目标

    QUEUE

    队列

    需要配合设备使用

    REDIRECT

    重新定向

    例:iptables -t nat -A POSTROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080

    --to-ports

    RETURN

    返回

    返回上级

    TOS

    服务类型

    例:iptables -t mangle -A INPUT -p tcp -j TOS --set-tos 0x00

    --set-tos

    TTL

    生存时间

    例:iptables -t mangle -A INPUT -p tcp -j TTL --ttl-set 123

    --ttl-set 设置

    --ttl-dec 减少

    --ttl-inc 增加

    ULOG

    记录用户被匹配的包的信息

    例:iptables -A OUTPUT -p tcp -j ULOG

    8、服务端口对应列表

    # vim /etc/services

    9、应用实例:

    iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT

    iptables -A INPUT -p tcp --syn -m state --state NEW --dport  80  -j ACCEPT

    iptables -A INPUT -p tcp --syn -m state --state NEW --dport  25  -j ACCEPT

    iptables -A INPUT -p tcp --syn -m state --state NEW --dport  110  -j ACCEPT

    iptables -A INPUT -p tcp --syn -m state --state NEW --dport  22  -j ACCEPT

    iptables -A INPUT -p tcp --syn -m state --state NEW --dport  23  -j ACCEPT

    firewalld切换到iptables防火墙

    1、关闭firewall防火墙

    # systemctl stop firewalld.service

    2. 禁止firewall防火墙开机启动

    # systemctl disable firewalld.service

    3. 安装iptables防火墙相关组件

    # yum -y install iptables*

    4. 开启iptables防火墙

    # systemctl start iptables.service

    5. 设置iptables防火墙开机启动

    # systemctl enable iptables.service

  • 相关阅读:
    Mybatis原理
    周六上课随记
    第一次外包面试
    复习所想
    如何解决高并发下的超卖问题
    Tomcat架构解析
    即将逝去的25岁
    go 刷算法第一题——反转字符串
    JavaScript杂货
    jdk17新特性
  • 原文地址:https://www.cnblogs.com/liketimes/p/9954389.html
Copyright © 2011-2022 走看看