防火墙实战

作者: 古巷挂青灯 | 来源:发表于2019-07-02 20:07 被阅读0次

    1.课程内容

    • 常见防火墙选用
    硬件
    开源软件:iptables (默认规则改为 INPUT DROP)
    云服务器:安全组(阿里云 白名单[默认是拒绝])
    
    • Iptables使用 执行过程
    • Iptables 4表5链
    filter nat mangle raw
    filter    : INPUT
    nat       : PREROUTING POSTROUTING
                 pre prefix xxx之前
                 routing route
                 post xxx之后
    
    • 准备Iptables环境

    • Iptables功能之防火墙-filter
      封IP 封端口
      准许某个ip访问 网段访问

    • 实际生产iptables配置

    • Iptables功能之内网服务器上外网(共享上网)

    • Iptables功能之端口转发

    2.常见防火墙选用

    1.公司网站入口使用的硬件防火墙、三层路由带有防火墙功能
    2.Iptables访问量小 C5 C6 默认,CentOS 7 Firewalld(关闭 安装iptables)
    3.SELinux
    

    3. 名词(关系)与单词

    名词                          含义                         对比
    容器                    存放内容/存放东西
    Netfilter/iptables      Netfilter/iptables是表的容器        国家
    表 (table)             表是用来存放链的容器                  省
    链 (chain)              链存放 规则容器                      市
    规则 ( policy )         准许/拒绝访问                      区县具体地点
    

    4.防火墙执行过程

    1. 防火墙是层层过滤的,实际是按照配置规则的顺序从上到下,从前到后进行过滤的。
    2. 如果匹配上规则,即明确表示是阻止(DROP)还是通过(ACCEPT)数据包就不再向下匹配新的规则。
    3. 如果规则中没有明确表明是阻止还是通过的,也就是没有匹配规则,向下进行匹配,直到匹配默认规则得到明确的阻止还是通过。
    4. 防火墙的默认规则是所有规则执行完才执行的。

    image.png

    5. 四表五链

    • 5.1 整体说明 4表及作用
    表                    功能
    Filter                过滤,默认的表,防火墙功能
    NAT                   实现NAT转化:1.共享上网 2.端口转发
    mangle                熟悉名字即可
    raw                   熟悉名字即可
    

    参考查询帮助: man iptables

    • 5.2 4表中的5链


      image.png
    image.png
    • 5.2.1 filter表
    filter表      企业工作场景:主机防火墙
    INPUT         就是过滤进入主机的数据包
    FORWARD       负责转发流经主机的数据包。
    OUTPUT        就是处理从主机发出去的数据包
    
    • 5.2.2 nat表
    PREROUTING          处理用户请求中的目的地址 目的端口 端口转发 ip映射
    POSTROUTING         处理离开服务器的请求 源端口 源ip :共享上网
    OUTPUT              和主机放出去的数据包有关,改变主机发出数据包的目的地址。
    
    • 5.2.3 Mangle表
    主要负责修改数据包中特殊的路由标记,如TTL,TOS,MARK等,这个表定义了5个链
    (chains):
    

    6. 防火墙之filter表

    • 6.1 环境准备
      m01 iptables
      db01
    yum install iptables iptables-services
    [root@m01 ~]# rpm -qa iptables-services
    iptables-services-1.4.21-28.el7.x86_64
    [root@m01 ~]# rpm -ql iptables-services
    /etc/sysconfig/ip6tables
    /etc/sysconfig/iptables #iptables 配置文件
    /usr/lib/systemd/system/ip6tables.service
    /usr/lib/systemd/system/iptables.service #iptables服务管理配置
    

    启动防火墙:

    1 systemctl start iptables.service
    2 systemctl enable iptables.service
    

    检查防火墙内核模块是否加载成功:

    [root@m01 ~]# lsmod |egrep 'nat|ipt|filter'
    ipt_REJECT 12541 2
    nf_reject_ipv4 13373 1 ipt_REJECT
    iptable_filter 12810 1
    xt_nat 12681 1
    iptable_nat 12875 1
    nf_nat_ipv4 14115 1 iptable_nat
    nf_nat 26787 2 nf_nat_ipv4,xt_nat
    nf_conntrack 133095 4
    nf_nat,nf_nat_ipv4,xt_conntrack,nf_conntrack_ipv4
    ip_tables 27126 2 iptable_filter,iptable_nat
    libcrc32c 12644 3 xfs,nf_nat,nf_conntrack
    

    手动加载内核模块:

    modprobe ip_tables
    modprobe iptable_filter
    modprobe iptable_nat
    modprobe ip_conntrack
    modprobe ip_conntrack_ftp
    modprobe ip_nat_ftp
    modprobe ipt_state
    
    • 6.2 配置规则-禁止访问22端口
    [root@m01 ~]# iptables -F
    [root@m01 ~]# iptables -X
    [root@m01 ~]# iptables -Z
    [root@m01 ~]# iptables -nL
    Chain INPUT (policy ACCEPT)
    target prot opt source destination
    Chain FORWARD (policy ACCEPT)
    target prot opt source destination
    Chain OUTPUT (policy ACCEPT)
    target prot opt source destination
    [root@m01 ~]# iptables -t filter -A INPUT -p tcp --dport 22 -j DROP
    

    配置防火墙规则注意事项:
    1. 去机房重启系统或者登陆服务器删除刚才的禁止规则。
    2. 让机房人员重启服务器或者让机房人员拿用户密码登录进去
    3. 通过服务器的远程管理卡管理(推荐)
    4. 先写一个定时任务,每5分钟就停止防火墙
    5. 测试环境测试好,写成脚本,批量执行

    • 6.3 iptables 命令及参数
    iptables
    -t                  指定表 filter(默认) nat
    -A                  append 把规则追加到末尾
    -I (大写字母I)       insert 把规则插入到规则的第1条 (添加拒绝类规则的时候)
    -p                  protocal 指定协议:tcp /udp/icmp
    --dport             destination port 目标端口
    --sport             source port 源端口
    -d                  dest ip address 目标ip地址
    -s                  source ip address 源ip地址
    -i                  input数据进来的时候通过的网卡
    
    -j                  jump 方法 DROP(拒绝) ACCEPT(准许) REJECT(拒绝)的
    
    iptables查看 删除
    -F                            清除链中所有的规则
    -X                            清空自定义链的规则
    -Z                            清空计数器
    -n                            不要把端口解析服务名字
    -L                            显示表中的规则
    --line-number                 给每个链中的规则加上行号
    -D                            删除规则 根据规则的号码进行删除 -D INPUT 2
    
    image.png
    • 6.4 filter表其他规则配置
      6.4.1 只让10.0.0.0/24网段进行访问
      只要是10.0.0.0/24 局域网的用户 访问m01 都ACCEPT
      此例子主要限制:网段或ip地址
    [root@m01 ~]# iptables -I INPUT -p tcp ! -s 10.0.0.0/24 -j DROP
    [root@m01 ~]# iptables -nL
    Chain INPUT (policy ACCEPT)
    target prot opt source destination
    DROP tcp -- !10.0.0.0/24 0.0.0.0/0
    Chain FORWARD (policy ACCEPT)
    target prot opt source destination
    Chain OUTPUT (policy ACCEPT)
    target prot opt source destination
    
    • 6.4.2 准许或禁止端口
      多个端口:表示范围 1-1024范围
    [root@m01 ~]# iptables -I INPUT -p tcp ! --dport 1:1024 -j DROP
    [root@m01 ~]# iptables -nL
    Chain INPUT (policy ACCEPT)
    target prot opt source destination
    DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp
    dpts:!1:1024
    DROP tcp -- !10.0.0.0/24 0.0.0.0/0
    Chain FORWARD (policy ACCEPT)
    

    nc用法:
    nc -l 指定监听端口
    nc/telnet 连接
    nc 服务端:

    [root@m01 ~]# nc -l 99 >/tmp/new.txt
    [root@m01 ~]# cat /tmp/new.txt
    127.0.0.1 localhost localhost.localdomain localhost4
    localhost4.localdomain4
    ::1 localhost localhost.localdomain localhost6
    localhost6.localdomain6
    172.16.1.5 lb01
    172.16.1.6 lb02
    172.16.1.7 web01
    172.16.1.8 web02
    172.16.1.31 nfs01
    172.16.1.41 backup
    172.16.1.51 db01 db01.etiantian.org
    172.16.1.61 m01
    

    nc客户端

    [root@m01 ~]# cat /etc/hostname |nc 10.0.0.61 99
    

    多个端口 不连续 80,433,52113,22
    -m multiport 指定多个端口

    [root@m01 ~]# iptables -I INPUT -p tcp -m multiport ! --dport 80,443,22 -
    j DROP
    [root@m01 ~]# iptables -nL
    Chain INPUT (policy ACCEPT)
    target prot opt source destination
    DROP tcp -- 0.0.0.0/0 0.0.0.0/0 multiport
    dports !80,443,22
    DROP tcp -- !10.0.0.0/24 0.0.0.0/0
    Chain FORWARD (policy ACCEPT)
    target prot opt source destination
    Chain OUTPUT (policy ACCEPT)
    target prot opt source destination
    

    相关文章

      网友评论

        本文标题:防火墙实战

        本文链接:https://www.haomeiwen.com/subject/rbnthctx.html