iptables防火墙规则及简单脚本

本文介绍如何使用iptables命令行工具管理Linux系统的网络防火墙规则,包括放行端口、封锁端口、放行IP和封锁IP的具体操作。通过示例脚本展示了iptables的基本用法,如添加、删除、修改规则等。

清空规则:
iptales -F
添加默认规则:
iptables -P 链 动作

添加一个放行80端口的规则

iptables  -A  INPUT    -p   tcp   --dport 80  -j   ACCEPT   

-A 追加一条规则
-D 删除(delete)指定链中的某一条规则,可以按规则序号和内容删除
-I 在指定链中插入(insert)一条新的规则,默认在第一行添加
-R 修改、替换(replace)指定链中的某一条规则,可以按规则序号和内容替换
-L 列出(list)指定链中所有的规则进行查看
-F 清空(flush)
-N 新建(new-chain)一条用户自己定义的规则链
-X 删除指定表中用户自定义的规则链(delete-chain)
-P 设置指定链的默认策略(policy)
-n 使用数字形式(numeric)显示输出结果
-v 查看规则表详细信息(verbose)的信息

常用的匹配条件:
-p: 协议
-s: 源地址
-d: 目标地址
–dport: 目标端口
–sport: 源端口

动作:
ACCEPT: 放行
DROP: 丢弃
REJECT: 拒绝

#!/bin/bash
while true
do
   echo "1.放行端口"
   echo "2.封锁端口"
   echo "3.放行IP"
   echo "4.封锁IP"
   read -ep "请输入你的操作:" aa
   case $aa in
   1)
        read -ep "请输入你要放行的端口:" port
        echo "正在放行..."
        iptables -I INPUT -p tcp --dport $port  -j ACCEPT
        echo "放行规则添加成功"
        read -ep "是否继续输入:" sf
        case $sf in
        y|yes|Y)
                continue
        ;;
        n|no|N)
                break
        ;;
        esac
   ;;
   2)
        read -ep "请输入你要封锁的端口:" port
        echo "正在封锁..."
        iptables -I INPUT -p tcp --dport $port  -j DROP
        echo "封锁成功..."
        read -ep "是否继续输入:" sf
        case $sf in
        y|yes|Y)
                continue
        ;;
        n|no|N)
                break
        ;;
        esac
   ;;
   3)
        read -ep "请输入你要放行的IP:" ip
        echo "正在添加放行规则"
        iptables -I INPUT -s $ip -j ACCEPT
        echo "放行规则添加成功"
        read -ep "是否继续输入:" sf
        case $sf in
        y|yes|Y)
                continue
        ;;
        n|no|N)
                break
        ;;
        esac
   ;;
   4)
        read -ep "请输入你要封锁的IP:" ip
        echo "正在封锁..."
        iptables -I INPUT -s $ip -j DROP
        echo "封锁成功..."
        read -ep "是否继续输入:" sf
        case $sf in
        y|yes|Y)
                continue
        ;;
        n|no|N)
                break
        ;;
        esac
   ;;
   *)
        echo "输入有误,退出脚本"
        break
   ;;
   esac
done
### 编写iptables防火墙规则教程 #### 了解基本概念 iptables 是 Linux 系统中用于配置 IPv4 数据包过滤和 NAT 的工具。通过定义不同表内的链来控制网络流量的行为。常见的表有 `filter` 和 `nat` 表,其中 `filter` 表主要用于处理输入、转发以及输出的数据流;而 `nat` 表则负责地址转换。 #### 查看现有规则 为了更好地理解当前环境下的设置,在修改之前先查看现有的规则是非常重要的操作之一。可以通过命令查询特定表中的所有链: ```bash iptables -L ``` 这会显示 filter 表中的所有链及其对应的规则列表[^1]。如果想要查看其他类型的表,则需要加上 `-t` 参数指明具体名称,比如对于 NAT 表来说就是: ```bash iptables -t nat -L ``` #### 插入新规则 当准备向某个链条里加入新的规则时,可以使用 `-I` 命令参数指定要插入的位置及匹配条件。例如,阻止来自 IP 地址为 `202.54.1.2` 的主机访问本机: ```bash iptables -I INPUT 2 -s 202.54.1.2 -j DROP ``` 这里表示将这条拒绝规则插入到 INPUT 链的第二位位置上,并且只针对源地址等于给定值的情况生效[^2]。 #### 清除已有规则 有时可能希望清除掉某些表内所有的规则以便重新开始构建安全策略。这时可以用到 `-F` 参数实现这一目的: ```bash iptables -F ``` 上述指令将会清空默认的 filter 表下各条目。而对于像 mangle 或者 raw 这样的特殊用途表格而言,则需显式指出其名字作为目标对象: ```bash iptables -t nat -F iptables -t mangle -F ``` #### 设定默认行为 除了单独添加每一条具体的准入/禁入项之外,还可以直接设定整个链条遇到未被任何先前声明所覆盖的情形时应采取的动作——即所谓的“默认政策”。例如让 OUTPUT 链上的所有尝试都失败除非另有说明允许它们继续前进: ```bash iptables -P OUTPUT DROP ``` 紧接着再补充例外情况以确保必要的通信不会受到影响: ```bash iptables -p tcp --sport 22 -j ACCEPT ``` 这段脚本的作用在于优先接受 SSH 协议发出的一切请求,从而保障远程登录功能正常运作的同时又能有效抵御外部威胁[^4]。 #### 处理连接状态跟踪 为了让服务器能够区分合法会话与非法入侵企图之间的差异,通常还会引入基于连接追踪模块 (`conntrack`) 来辅助判断哪些数据报应当予以放行或是拦截下来。如下所示是一段用来批准已建立联系再次发送后续消息的例子: ```bash iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT ``` 此外还有专门针对于丢弃那些明显不符合常规模式(如伪造源端口等)的数据帧的做法: ```bash iptables -A INPUT -m state --state INVALID -j DROP ``` 以上便是创建 iptables 规则的一些基础指导原则[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值