美文网首页工作生活
iptables防火墙(上)

iptables防火墙(上)

作者: 杨丶子 | 来源:发表于2019-07-03 20:58 被阅读0次

    1.常见防火墙选用

    • 硬件防火墙

    • 开源软件:iptables(默认规则改为INPUT DROP)

    • 云服务器:安全组(阿里云 白名单,默认是拒绝的)

    2.iptables使用 执行过程
    3.iptables 4表5链
    4.准备iptables环境
    5.iptables功能之一防火墙
    • 封IP 封端口

    • 准许某个ip访问 网段访问

    6.iptables功能之内网服务器上外网(共享上网)
    7.iptables功能之 端口转发

    2.常见防火墙选用

    • 公司网站入口使用的硬件 防火墙 、三次路由带有防火墙功能
    • itpables访问量小 C5 C6自带,CentOS 7为Firewalld
    • SELinux

    3.相关名词与单词

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

    4.防火墙执行过程

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

    5.四表五链

    5.1 四表及作用

    功能
    Filter 过滤,默认的表,防火墙功能
    NAT 实现NAT转化:1.共享上网 2.端口转发
    mangle 查询帮助man iptables 了解即可
    raw 查询帮助man iptables 了解即可

    5.2 四表中的5链

    image image
    五链:
    PREROUTING
    FORWARD
    INPUT
    OUPUT
    POSTROUTING
    
    
    image image

    5.3 filter表和nat表

    image

    5.3.1 filter表

    filter表 企业工作场景:主机防火墙
    INPUT 就是过滤进入主机的数据包
    FORWARD 负责转发流经主机的数据包
    OUTPUT 就是处理从主机发出去的数据包

    5.3.2 nat表

    nat表
    PREROUTING 处理用户请求中的目的地址 目的端口 端口转发 ip映射
    POSTROUTING 处理离开服务器的请求 源端口 源ip :共享上网
    OUTPUT 和主机放出去的数据包有关,改变主机发出数据包的目的地址

    补充:

    filter表:
    ​​INPUT 作用:用于发送到本地套接字的数据包。
    ​FORWARD 作用:对于正在通过该框路由的数据包
    ​OUTPUT 作用:用于本地生成的数据包。

    nat表:
    ​PREROUTING 作用:因为他们一进来就改变了包
    ​OUTPUT 作用:用于在路由之前更改本地划分的数据包。
    ​POSTROUTING 作用:改变包,因为它们即将离开

    6.防火墙之filter表

    6.1环境准备

    m01 iptables iptables-services
    db01 iptables iptables-services
    [root@m01 ~]# rpm -qa iptables-services
    iptables-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服务管理配置
    
    

    启动防火墙

    [root@m01 ~]# systemctl stop firewalld    #CentOS7关闭firewalld
    [root@m01 ~]# systemctl restart iptables
    [root@m01 ~]# systemctl enable iptables
    
    

    手动加载内核模块

    [root@m01 ~]# modprobe ip_tables
    [root@m01 ~]# modprobe iptable_filter
    [root@m01 ~]# modprobe iptable_nat
    [root@m01 ~]# modprobe ip_conntrack
    [root@m01 ~]# modprobe ip_conntrack_ftp
    [root@m01 ~]# modprobe ip_nat_ftp
    [root@m01 ~]# modprobe ipt_state
    
    

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

    [root@m01 ~]# lsmod |egrep 'nat|ipt|filter'
    nf_nat_ftp             12770  0 
    nf_conntrack_ftp       18638  1 nf_nat_ftp
    ipt_REJECT             12541  2 
    nf_reject_ipv4         13373  1 ipt_REJECT
    ipt_MASQUERADE         12678  1 
    nf_nat_masquerade_ipv4    13412  1 ipt_MASQUERADE
    iptable_filter         12810  1 
    xt_nat                 12681  2 
    iptable_nat            12875  1 
    nf_nat_ipv4            14115  1 iptable_nat
    nf_nat                 26787  4 nf_nat_ftp,nf_nat_ipv4,xt_nat,nf_nat_masquerade_ipv4
    nf_conntrack          133095  8 nf_nat_ftp,nf_nat,xt_state,nf_nat_ipv4,xt_conntrack,nf_nat_masquerade_ipv4,nf_conntrack_ftp,nf_conntrack_ipv4
    ip_tables              27126  2 iptable_filter,iptable_nat
    libcrc32c              12644  3 xfs,nf_nat,nf_conntrack
    
    

    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 ~]# #添加一条规则,禁止22端口访问
    [root@m01 ~]# iptables -t filter -A INPUT -p tcp --dport 22 -j DROP
    [root@m01 ~]# 
    Type `help' to learn how to use Xshell prompt.
    [d:\~]$    #断开了~跑下机房
    
    
    删除规则,重新连接m01
    [root@m01 ~]# iptables -nL --line-number #查看防火墙规则
    [root@m01 ~]# iptables -t filter -D INPUT 1   #删除第1条规则
    [root@m01 ~]# iptables -nL --line-number #再次查看
    
    
    image

    重新连接 22端口就可以用了

    Type `help' to learn how to use Xshell prompt.
    [d:\~]$ 
    
    Connecting to 10.0.0.61:22...
    Connection established.
    To escape to local shell, press 'Ctrl+Alt+]'.
    
    Last login: Tue Jul  2 17:04:55 2019
    [root@m01 ~]# 
    
    
    配置防火墙规则注意事项:
    1. 去机房重启系统或者登陆服务器删除刚才的禁止规则。

    2. 让机房人员重启服务器或者让机房人员拿用户密码登录进去

    3. 通过服务器的远程管理卡管理(推荐)

    4. 先写一个定时任务,每5分钟就停止防火墙**5. 测试环境测试好,写成脚本,批量执行

    6.3 filter表其他规则配置

    6.3.1 只让10.0.0.0/24网段进行访问连接

    只要是10.0.0.0/24 局域网的用户 访问m01 都ACCEPT

    此例子主要限制:网段或ip地址

    [root@m01 ~]# iptables -A INPUT -p tcp ! -s 10.0.0.0/24 -j DROP   #"!" 叹号表示取反
    [root@m01 ~]# iptables -nL
    Chain INPUT (policy ACCEPT)
    num  target     prot opt source               destination         
    1    DROP       tcp  -- !10.0.0.0/24          0.0.0.0/0           
    
    Chain FORWARD (policy ACCEPT)
    num  target     prot opt source               destination         
    
    Chain OUTPUT (policy ACCEPT)
    num  target     prot opt source               destination      
    
    
    image

    去另一台服务器上测试一下是否成功:

    [root@db01 ~]# ssh 10.0.0.61  #连接10.0.0.61,可以连接
    root@10.0.0.61's password: 
    Last login: Tue Jul  2 17:41:01 2019 from 10.0.0.51
    [root@m01 ~]# logout  #退出
    Connection to 10.0.0.61 closed.
    [root@db01 ~]# ssh 172.16.1.61    #连接172.16.1.61,不可以连接
    ....等到死
    
    
    image

    6.3.2准许或禁止端口

    多个端口:表示范围 1-1024范围

    [root@m01 ~]# iptables -I INPUT -p tcp ! --dport 1:1024 -j DROP 
    [root@m01 ~]# iptables -nL
    Chain INPUT (policy ACCEPT)
    num  target     prot opt source               destination         
    1    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpts:!1:1024
    2    DROP       tcp  -- !10.0.0.0/24          0.0.0.0/0           
    
    Chain FORWARD (policy ACCEPT)
    num  target     prot opt source               destination         
    
    Chain OUTPUT (policy ACCEPT)
    num  target     prot opt source               destination  
    
    

    多个端口 不连续 80,443,52113,22

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

    6.4 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地址
    -j jump 方法 DROP (拒绝)、 ACCEPT(准许) 、REJECT(拒绝)
    iptables查看 删除
    -F 清除链中所有规则
    -X 清空自定义链的规则
    -Z 清空计数器
    -n 不要把端口解析服务名字
    -L 显示表中的规则
    --line-number 给每个链中的规则加上行号
    -D 删除规则 根据规则的号码进行删除

    7. nc命令

    nc用法:

    nc -l 指定监听端口

    nc/telnet 连接

    [root@m01 ~]# nc -l 888 #m01服务器上
    爱你哦
    晚上好
    你也好
    
    [root@db01 ~]# nc 10.0.0.61 888 #db01服务器上
    爱你哦
    晚上好
    你也好
    

    iptables防火墙必会面试题:https://www.cnblogs.com/wajika/p/6382853.html

    相关文章

      网友评论

        本文标题:iptables防火墙(上)

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