• iptables防火墙


    iptables防火墙管理

    防火墙的分类:
    硬件,购买设备
    软件,安装软件

    iptables的功能:
    强制访问指定站点
    发布内网服务器nat/snat/dnat
    智能型DNS

    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/POSTROUTING
    raw

    5链:
    INPUT:接收,发送方不一定是你,但接收方一定是你
    OUTPUT:发送,接收方不一定是你,但发送方一定是你
    FORWARD:转发,接收方和发送方全都不是你
    PREROUTING:路由前时,指代在决定去向前处理
    POSTROUTING:路由后时,指代在决定去向后处理

    外出的包:
    1. 本地程序
    2. 路由判断(决定包使用源地址,外出接口)
    3. mangle表OUTPUT链(标记、生存时间、服务类型)
    4. nat表OUTPUT链(对防火墙自己发出的包做DNAT)
    5. filter表OUTPUT链(过滤)
    6. mangle表POSTROUTING链(标记、生存时间、服务类型)
    7. nat表POSTROUTING链(对数据包做SNAT)
    8. 离开接口
    9. 网络传输

    进入的包:
    1. 网络传输
    2. 进入接口
    3. mangle表PREROUTING链(标记、生存时间、服务类型)
    4. nat表PREROUTING链(对数据包做DNAT)
    5. 路由判断(决定包的去向,给自己的)
    6. mangle表INPUT链(标记、生存时间、服务类型)
    7. filter表INPUT链(过滤)
    8. 交给本地程序处理

    转发的包:
    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

    firewalld替换iptables
    # systemctl stop firewalld
    # systemctl disable firewalld
    # yum -y install iptables*
    # systemctl start iptables
    # systemctl enable iptables
    iptables命令格式:
    iptables 表 链 描述 处理方式
    Chain INPUT (policy ACCEPT 359packets,28671bytes)
    链的名称 默认规则 数据流量
    Pkts   bytes    in     Out
    数据包数 数据大小 入口网卡 出口网卡
    Target       prot    opt    source   destination
    处理方式 协议   选项    来源    目的     数据描述

    iptables -L INPUT --lin   显示INPUT链序号
    iptables -L --lin   显示规则序号
    iptables-save >> /etc/sysconfig/iptables   保存规则
    Iptables -A INPUT -p --dport 22:80 22到80端口
    iptables参数:
    -A 在所选择的链末尾添加规则
    iptables -A INPUT -s 192.168.1.123 -p tcp --dport 22 -j ACCEPT
    -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 删除非内建链 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 net

    选项:iptbles -L
    -v 详细信息
    -vx 精确显示信息
    -n 显示端口
    --line-numbers 显示规则序号

    通用匹配:
    -p 匹配协议,协议有tcp,udp,icmp,all
    -s 匹配来源地址
    iptables -A INPUT -s 192.168.1.123 -j ACCEPT
    -d 匹配目的地址
    -i 匹配包进入的接口 iptables -A INPUT -i ens33
    -o 匹配包送出的接口OUTPUT/FORWARD /POSTROUTING
    !p 取反

    TCP的端口:
    Sport 匹配来源端口
    dport 匹配目的端口
    tcp-flags 匹配TCP的封包标记SYN/ACK/FIN/RST/URG/PSH
    iptables -A INPUT -p tcp --tcp-flags syn,ack,fin syn -j ACCEPT
    简写iptables -A INPUT -p tcp --syn -j ACCEPT
    syn

    UDP的端口:
    sport 匹配来源端口
    dport 匹配目的端口

    显示匹配(需要用-m来启用)
    iptables -A INPUT -p tcp -m multiport --port 22,25 -j ACCEPT
    multiport 不连续多端口匹配 --source-port
    --destination-port
    --port
    state 匹配包的状态 --state

    状态:
    ESTABLISHED 已连接数据包
    NEW 新数据包
    RELATED 相关联数据包
    INVALID 错误的数据包


    应用实例:
    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

  • 相关阅读:
    Java后端工程师的学习技术栈
    ltp 分析 fail testcase
    程序员这个职业需要具备的素养
    你真的愿意到了50岁还要做编程吗?
    程序员的学习和积累
    程序员写博客的缘由
    VS2010生成文件
    从菜鸟到专家的五步编程语言学习法
    程序设计的18大原则
    怎样的代码才算是干净的代码?
  • 原文地址:https://www.cnblogs.com/jclty/p/10385180.html
Copyright © 2020-2023  润新知