Linux系统下iptables配置指南

linux 设置iptable

时间:2024-11-27 13:27


Linux中iptables的强大配置与管理 在Linux系统中,iptables是一个功能强大且灵活的工具,用于配置和管理防火墙规则

    通过iptables,管理员可以精确控制网络流量,保护主机或网络免受未授权访问和攻击

    本文将详细介绍iptables的基本概念、常用命令、配置方法以及实际应用场景,帮助读者更好地理解和使用这一工具

     一、iptables的基本概念 iptables基于Netfilter框架,在Linux内核中操作,用于检查和修改网络数据包的头部和有效负载信息

    它使用链和表的概念来组织防火墙规则

     1.链(Chains): iptables有三个主要的预定义链:INPUT、OUTPUT和FORWARD

     -INPUT链:处理进入本地系统的数据包

     -OUTPUT链:处理从本地系统发出的数据包

     -FORWARD链:处理通过本地系统转发的数据包

     2.表(Tables): iptables有三种表:filter表、nat表和mangle表,每个表都有自己的规则,用于不同的功能

     -filter表:用于过滤数据包,决定是否允许其通过

     -nat表:用于网络地址转换(NAT),包括源地址转换(SNAT)和目标地址转换(DNAT)

     -mangle表:用于修改数据包的一些标志位,如TTL、TOS等

     3.规则(Rules): iptables规则由匹配条件和动作组成

    匹配条件可以是来源IP、目标IP、端口号、协议等,动作可以是接受(ACCEPT)、丢弃(DROP)和拒绝(REJECT)等

     二、iptables的常用命令 iptables命令的基本语法如下: iptables 【-t 表名】【选项】 【链名】规则表达式【动作选项】 其中,`-t`选项用于指定操作的表类型(如filter、nat等),链名用于指定规则链的名称(如INPUT、OUTPUT等),规则表达式用于指定匹配条件,动作选项用于指定匹配后执行的操作

     1.查看规则: -`iptables -L`:列出当前的防火墙规则

     -`iptables -nL`:以数字形式显示IP地址,而不是主机名

     -`iptables -t nat -nL`:显示nat表信息

     -`iptables -t mangle -nL`:显示mangle表信息

     2.清除规则: -`iptables -F`:清除所有的防火墙规则

     3.设置默认策略: -`iptables -P INPUT DROP`:将INPUT链的默认策略设置为DROP

     -`iptables -P OUTPUT ACCEPT`:将OUTPUT链的默认策略设置为ACCEPT

     -`iptables -P FORWARD DROP`:将FORWARD链的默认策略设置为DROP

     4.添加规则: -`iptables -A INPUT -s 192.168.0.1 -p tcp --dport 22 -j ACCEPT`:允许来自192.168.0.1的TCP流量通过端口22

     -`iptables -I INPUT 2 -p tcp --dport 22 -j ACCEPT`:在INPUT链的第2个位置插入一条规则,允许TCP流量通过端口22

     5.删除规则: -`iptables -D INPUT 2`:删除INPUT链的第2条规则

     -`iptables -t filter -D INPUT -p icmp -j REJECT`:删除filter表中INPUT链的拒绝ICMP协议的规则

     6.保存和加载规则: -`iptables-save > /path/to/save/file`:保存当前规则到文件

     -`iptables-restore < /path/to/save/file`:从文件加载规则

     三、iptables的配置方法 1.启用iptables: 在CentOS 7中,默认使用firewalld防火墙

    若要使用iptables防火墙,需先关闭firewalld,再安装iptables

     bash systemctl stop firewalld.service systemctl disable firewalld.service yum install -y iptables iptables-services systemctl start iptables.service systemctl enable iptables.service 2.配置规则: -屏蔽指定IP: ```bash BLOCK_THIS_IP=x.x.x.x iptables -A INPUT -i eth0 -p tcp -s $BLOCK_THIS_IP -j DROP ``` -配置服务项: 例如,允许来自特定网段的SSH连接: ```bash iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT ``` -端口转发: 例如,将422端口的流量转发到22端口: ```bash iptables -t nat -A PREROUTING -p tcp -d 192.168.102.37 --dport 422 -j DNAT --to 192.168.102.37:22 ``` 3.DoS攻击防范: 使用limit扩展模块,限制每分钟的最大连接数和突发连接数: bash iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT 4.配置日志记录: 自定义一个LOGGING链,将所有接收包导入LOGGING链中,并记录日志: bash iptables -N LOGGING iptables -A INPUT -j LOGGING iptables -A LOGGIN