博客
关于我
day4-Iptables防火墙
阅读量:347 次
发布时间:2019-03-04

本文共 4049 字,大约阅读时间需要 13 分钟。

Iptables防火墙配置与实战案例

一、Iptables防火墙结构介绍

Iptables是Linux系统中的一种网络防火墙工具,用于管理网络流量。其核心功能是通过定义规则来过滤、转发数据包,从而实现对网络的访问控制。Iptables的规则由表(tables)和链(chains)组成,每条规则都有一个目标(-j option)。

1.1 Iptables进入主机进行过滤的流程图

数据包进入主机时,防火墙规则的执行顺序是从前到后依次执行。如果遇到匹配的规则,则执行该规则后停止检查其他规则;如果不匹配则继续向下进行。需要注意的是,匹配到了拒绝规则也会停止检查,防火墙的默认行为是拒绝所有未明确允许的数据包。

1.2 表与链的关系

Iptables主要有以下几种表:

  • filter表:用于过滤数据包,主要用于输入、输出和转发链。
  • nat表:用于实现网络地址转换(NAT),主要用于PREROUTING和POSTROUTING链。
  • mangle表:用于修改数据包的标识信息,主要用于INPUT和OUTPUT链。

每个表包含多条链,链中的规则按顺序执行。一般情况下,用户不会经常使用mangle表,因为它相对复杂且不常用。

1.3 常用表的介绍

  • filter表:处理大部分的过滤规则,主要用于INPUT、OUTPUT、FORWARD链。
  • nat表:实现IP地址转换功能,通常用于PREROUTING和POSTROUTING链。

二、Iptables命令规则及配置

2.1 Iptables表与链的工作流程

数据包的流向和流程如下:

  • 数据包进入主机时,首先经过NAT表的PREROUTING链。
  • 如果数据包需要进入主机内部,则经过filter表的INPUT链。
  • 数据包离开主机内部时,经过NAT表和filter表的OUTPUT链。
  • 如果数据包需要离开主机,则经过filter表的FORWARD链。
  • 最后,数据包经过NAT表的POSTROUTING链。
  • 2.2 配置生产环境主机防火墙

    在实际操作中,需要注意以下几点:

  • 默认规则:默认规则是拒绝所有未明确允许的数据包。
  • 链的顺序:规则的执行顺序很重要,建议从最具体到最一般的规则进行定义。
  • 保存规则:可以通过iptables-save命令将规则保存到文件中,方便后续恢复。
  • 2.3 防火墙配置脚本示例

    以下是一个常用的防火墙配置脚本示例:

    #!/bin/bashIPT="/sbin/iptables"# 清空所有规则$IPT -F$IPT -X$IPT -Z# 允许SSH访问$IPT -A INPUT -s 192.168.1.0/24 -p tcp --dport 52113 -j ACCEPT$IPT -A INPUT -s 202.81.17.0/24 -p tcp --dport 52113 -j ACCEPT$IPT -A INPUT -s 10.0.0.0/24 -p tcp --dport 52113 -j ACCEPT$IPT -A INPUT -p tcp --dport 22 -j ACCEPT# 允许访问特定端口$IPT -A INPUT -s 192.168.1.0/24 -p all -j ACCEPT$IPT -A INPUT -s 202.81.17.0/24 -p all -j ACCEPT$IPT -A INPUT -s 10.0.0.0/24 -p all -j ACCEPT# 设置默认策略$IPT --policy INPUT ACCEPT$IPT --policy FORWARD DROP$IPT --policy OUTPUT ACCEPT# 允许环回接口访问$IPT -A INPUT -i lo -j ACCEPT$IPT -A OUTPUT -o lo -j ACCEPT# 拦截恶意地址$IPT -A INPUT -i eth0 -s 172.16.0.0/12 -j DROP$IPT -A INPUT -i eth0 -s 0.0.0.0/8 -j DROP$IPT -A INPUT -i eth0 -s 169.254.0.0/16 -j DROP$IPT -A INPUT -i eth0 -s 192.0.2.0/24 -j DROP# 防御潜在攻击$IPT -A INPUT -p tcp --tcp-flags ALL ALL -j DROP$IPT -A INPUT -p tcp --tcp-flags ALL NONE -j DROP$IPT -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP$IPT -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP$IPT -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP$IPT -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j DROP$IPT -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j DROP$IPT -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j DROP$IPT -A INPUT -p tcp --tcp-flags ACK,URG URG -j DROP# 允许特定服务$IPT -A INPUT -s 192.168.1.0/24 -p tcp --dport 5666 -j ACCEPT$IPT -A INPUT -s 202.81.17.0/24 -p tcp --dport 5666 -j ACCEPT$IPT -A INPUT -s 202.81.18.0/24 -p tcp --dport 5666 -j ACCEPT$IPT -A INPUT -s 192.168.1.0/24 -p tcp --dport 3306 -j ACCEPT$IPT -A INPUT -s 192.168.1.0/24 -p tcp --dport 3307 -j ACCEPT$IPT -A INPUT -s 192.168.1.0/24 -p tcp --dport 3308 -j ACCEPT$IPT -A INPUT -s 192.168.1.0/24 -p tcp --dport 1521 -j ACCEPT$IPT -A INPUT -p tcp --dport 21 -j ACCEPT$IPT -A INPUT -p tcp --dport 80 -j ACCEPT$IPT -A INPUT -s 192.168.1.0/24 -p tcp -m multiport --dport 8080,8081,8082,8888,8010,8020,8030,8150 -j ACCEPT$IPT -A INPUT -s 202.81.17.0/24 -p tcp -m multiport --dport 8080,8081,8082,8888,8010,8020,8030,8150 -j ACCEPT$IPT -A INPUT -s 124.43.62.96/27 -p tcp -m multiport --dport 8080,8081,8082,8888,8010,8020,8030,8150 -j ACCEPT$IPT -A INPUT -s 192.168.1.0/24 -p udp --dport 161 -j ACCEPT$IPT -A INPUT -s 202.81.17.0/24 -p udp --dport 161 -j ACCEPT$IPT -A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 873 -j ACCEPT$IPT -A INPUT -s 202.81.17.0/24 -p tcp -m tcp --dport 873 -j ACCEPT$IPT -A INPUT -s 124.43.62.96/27 -p tcp -m tcp --dport 873 -j ACCEPT$IPT -A INPUT -s 192.168.1.0/24 -p udp -m multiport --dport 111,892,2049 -j ACCEPT$IPT -A INPUT -s 192.168.1.0/24 -p tcp -m multiport --dport 111,892,2049 -j ACCEPT$IPT -A INPUT -p icmp -m icmp --icmp-type any -j ACCEPT$IPT -A INPUT -s 124.43.62.96/27 -p icmp -m icmp --icmp-type any -j ACCEPT$IPT -A INPUT -s 192.168.1.0/24 -p icmp -m icmp --icmp-type any -j ACCEPT$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT$IPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT# 脚本结束

    三、实战案例

    在实际操作中,可以根据需要调整防火墙规则。例如:

  • 如果需要开放更多端口,可以在对应的规则中添加相应的允许规则。
  • 如果需要限制访问,可以通过设置更严格的访问控制列表(ACL)来实现。
  • 在生产环境中,建议定期备份防火墙规则,确保网络安全。
  • 转载地址:http://xqhe.baihongyu.com/

    你可能感兴趣的文章
    mysqlreport分析工具详解
    查看>>
    MySQLSyntaxErrorException: Unknown error 1146和SQLSyntaxErrorException: Unknown error 1146
    查看>>
    Mysql_Postgresql中_geometry数据操作_st_astext_GeomFromEWKT函数_在java中转换geometry的16进制数据---PostgreSQL工作笔记007
    查看>>
    mysql_real_connect 参数注意
    查看>>
    mysql_secure_installation初始化数据库报Access denied
    查看>>
    MySQL_西安11月销售昨日未上架的产品_20161212
    查看>>
    Mysql——深入浅出InnoDB底层原理
    查看>>
    MySQL“被动”性能优化汇总
    查看>>
    MySQL、HBase 和 Elasticsearch:特点与区别详解
    查看>>
    MySQL、Redis高频面试题汇总
    查看>>
    MYSQL、SQL Server、Oracle数据库排序空值null问题及其解决办法
    查看>>
    mysql一个字段为空时使用另一个字段排序
    查看>>
    MySQL一个表A中多个字段关联了表B的ID,如何关联查询?
    查看>>
    MYSQL一直显示正在启动
    查看>>
    MySQL一站到底!华为首发MySQL进阶宝典,基础+优化+源码+架构+实战五飞
    查看>>
    MySQL万字总结!超详细!
    查看>>
    Mysql下载以及安装(新手入门,超详细)
    查看>>
    MySQL不会性能调优?看看这份清华架构师编写的MySQL性能优化手册吧
    查看>>
    MySQL不同字符集及排序规则详解:业务场景下的最佳选
    查看>>
    Mysql不同官方版本对比
    查看>>