• Linux 防火墙:Netfilter iptables


    一、Netfilter 简介

    (1) Netfilter 是 Linux 内置的一种防火墙机制,我们一般也称之为数据包过滤机制,而 iptables 只是操作 netfilter 的一个命令行工具
    (2) Netfilter 是 Linux CentOS 6 内置的防火墙机制,Firewall 是 Linux CentOS 7 内置的防火墙机制,如果想在 CentOS 7 中使用 netfilter 而不是 firewall,操作如下

    [root@MongoDB ~]# systemctl stop firewalld.service  // 停止firewalld
    [root@MongoDB ~]# systemctl disable firewalld.service  // 禁止firewall开机启动
    [root@MongoDB ~]# yum install iptables-services -y
    [root@MongoDB ~]# systemctl start iptables.service  //启动防火墙
    [root@MongoDB ~]# systemctl enable iptables.service  // 设置防火墙开机启动

    centos7 iptables服务

    1.查看iptables服务状态

    [root@MongoDB ~]#systemctl status iptables
    systemctl start iptables  // 启动iptables服务
    systemctl restart iptables  // 重启iptables服务
    systemctl stop iptables    // 关闭iptables服务

    centos6 iptables 服务

    service iptables start  // 启动 iptables服务
    service iptables restart  // 重启iptables服务
    service iptables stop    // 关闭iptables服务
    service iptables status  // 查看iptables服务状态
    /etc/init.d/iptables stop // 关闭iptables服务
    /etc/init.d/iptables status  // 查看iptables状态
    2.查看规则,默认查看filter表的规则
    iptables -nvL              
    针对INPUT链 默认规则ACCEPT通过
    iptables -nvL
    Chain INPUT (policy ACCEPT 0 packets, 0 bytes)  // 针对INPUT链 默认规则
    // INPUT链 规则
     pkts bytes target     prot opt in     out     source               destination         
     7589  858K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
       42  2520 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
        2   104 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:27017
    30806 3205K REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited
    
    // FORWARD链 默认规则
    Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
     pkts bytes target     prot opt in     out     source               destination         
        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited
    
    // OUTPUT链 默认规则
    Chain OUTPUT (policy ACCEPT 6732 packets, 950K bytes)
     pkts bytes target     prot opt in     out     source               destination 
    
    
    
    

     

    二、iptables 常见用法:

    iptables -F                # 清空规则,默认清空filter表的规则
    iptables -X                # 删除用户自定义规则
    iptables -Z                # 清空链的计数器
    service iptables save      # 保存规则,会把当前规则保存到/etc/sysconfig/iptables
    iptables-save > my.ipt     # 备份规则,这里指定备份到my.ipt文件
    iptables-restore < my.ipt  # 恢复规则,这里指定使用my.ipt文件进行恢复  

    清空所有的规则,只留下默认规则

    iptables -F  清空规则,默认清空filter表的规则

    只留下默认规则 默认规则都是ACCEPT动作

    [root@MongoDB ~]# iptables -F
    [root@MongoDB ~]# iptables -nvL
    Chain INPUT (policy ACCEPT 6 packets, 480 bytes)
     pkts bytes target     prot opt in     out     source               destination         
    
    Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
     pkts bytes target     prot opt in     out     source               destination         
    
    Chain OUTPUT (policy ACCEPT 6 packets, 528 bytes)
     pkts bytes target     prot opt in     out     source               destination 

    iptables -X  删除用户定义规则

    iptables -Z 清空链的计数器

    iptables -A INPUT -p tcp --dport 80 -j ACCEPT                                                # 放通80端口
    iptables -A INPUT -p tcp --dport 22 -j DROP                                                  # 禁用22端口
    iptables -A INPUT -p tcp -m multiport --dport 80,843,443 -j ACCEPT                          # 放通多个端口
    iptables -A INPUT -s 192.168.1.1/32 -p tcp --dport 22 -j ACCEPT                              # 只允许某个IP访问22端口
    iptables -A INPUT -s 192.168.1.1/32 -p tcp -m multiport --dport 3873,4507,3306 -j ACCEPT    # 允许某个IP访问多个端口

     添加一条规则 到filter表 允许8080端口

    [root@MongoDB ~]# iptables -t filter -A INPUT -p tcp --dport 8080 -j ACCEPT

    删除一条规则

    先执行 iptables -nvL --line-numbers 查看规则的序列号
    [root@MongoDB ~]# iptables -nvL --line-numbers
    Chain INPUT (policy ACCEPT 93 packets, 7775 bytes)
    num   pkts bytes target     prot opt in     out     source               destination         
    1        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:8080
    
    Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
    num   pkts bytes target     prot opt in     out     source               destination         
    
    Chain OUTPUT (policy ACCEPT 59 packets, 6900 bytes)
    num   pkts bytes target     prot opt in     out     source               destination 

    -D 删除规则

    然后执行 iptables -D INPUT <number> 删除规则
    [root@MongoDB ~]# iptables -D INPUT 1
    [root@MongoDB ~]# 
    [root@MongoDB ~]# iptables -nvL --line-numbers
    Chain INPUT (policy ACCEPT 14 packets, 1020 bytes)
    num   pkts bytes target     prot opt in     out     source               destination         
    
    Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
    num   pkts bytes target     prot opt in     out     source               destination         
    
    Chain OUTPUT (policy ACCEPT 6 packets, 728 bytes)
    num   pkts bytes target     prot opt in     out     source               destination

    /etc/init.d/iptables restart 和 /etc/init.d/iptable reload 区别 

    相同点:二者都是使配置文件重新生效
    不同点:
    reload (重新加载),reload会重新加载配置文件,服务不会中断。而且reload时会测试conf语法等,如果出错会rollback用上一次正确配置文件保持正常运行。也叫平滑重启,不会对已经连接的服务造成影响。
    restart (重启)(先stop后start),会重启服务。这个重启会造成服务一瞬间的中断,如果配置文件出错会导致服务启动失败,那就是更长时间的服务中断了。
    注意:修改配置文件前一定要先备份!为了保证线上服务高可用,推荐使用reload

     
    -A       # 添加规则,默认添加到最后一条规则
    -I       # 插入规则,默认插入到第一条规则
    -D       # 删除规则,先执行 iptables -nvL --line-numbers 查看规则的序列号,然后执行 iptables -D INPUT <number> 删除规则
    -n       # 数字
    -s       # 用于指定源IP地址,用法如:iptables -A INPUT -s 192.168.1.1/32 -p tcp --dport 22 -j ACCEPT
    -d       # 用于指定目标IP地址,用法如:iptables -A INPUT -d 192.168.1.1/32 -p tcp --dport 22 -j ACCEPT
    -p       # 用于指定检查哪个协议,用法如:iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    -i       # 用于指定入口网卡,用法如:iptables -A INPUT -i eth0 -j ACCEPT 
    -o       # 用于指定出口网卡,用法如:iptables -A FORWARD -o eth0 -j ACCEPT
    -j       # 用于指定要进行的处理动作,ACCEPT表示接受数据包进来 DROP直接丢弃数据包 用法如:iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    -P       # 用于设置默认规则,用法如:iptables -P INPUT DROP
    -t       # 用于指定操作哪张表,用法如:iptables -t nat -nvL , iptables -t filter ,如果没有指定默认是filter表
    -Z       # 用于清空计数器,用法如:iptables -Z
    -L       # 用于列出规则链中的所有规则
    --sport  # 用于指定源端口,用法如:iptables -A INPUT -p tcp --sport 1234 -j ACCEPT
    --dport  # 用于指定目标端口,用法如:iptables -A INPUT -s 192.168.1.1/32 -p tcp --dport 22 -j ACCEPT    
    !        # 取反 
    
    
    
     
    
    
    
    
    
    
    

     

  • 相关阅读:
    SpringMVC处理MYSQL BLOB字段的上传
    Linux中MySQL数据库max_allowed_packet的调整
    错误The request sent by the client was syntactically incorrect ()的解决
    爪哇国新游记之三十一----日期时间与字符串间的转化
    单片机c51头文件的解释
    51单片机数据传送指令
    周立功:写给学单片机的年轻人
    Java设计模式之单例设计模式
    Java主函数解释、java/javac命令解释、classpath解释
    利用HTML5,前端js实现图片压缩
  • 原文地址:https://www.cnblogs.com/mingerlcm/p/10685450.html
Copyright © 2020-2023  润新知