iptables 只拒绝某个ip的所有连接

Linux IPTABLES配置详解:禁用特定IP与规则保存
linux下IPTABLES配置详解

如果你的IPTABLES基础知识还不了解,建议先去看看.
开始配置
我们来配置一个filter表的防火墙.
(1)查看本机关于IPTABLES的设置情况
[root@tp ~]# iptables -L -n
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         
Chain RH-Firewall-1-INPUT (0 references)
target       prot opt source                 destination         
ACCEPT       all    --    0.0.0.0/0              0.0.0.0/0           
ACCEPT       icmp --    0.0.0.0/0              0.0.0.0/0             icmp type 255 
ACCEPT       esp    --    0.0.0.0/0              0.0.0.0/0           
ACCEPT       ah     --    0.0.0.0/0              0.0.0.0/0           
ACCEPT       udp    --    0.0.0.0/0              224.0.0.251           udp dpt:5353 
ACCEPT       udp    --    0.0.0.0/0              0.0.0.0/0             udp dpt:631 
ACCEPT       all    --    0.0.0.0/0              0.0.0.0/0             state RELATED,ESTABLISHED 
ACCEPT       tcp    --    0.0.0.0/0              0.0.0.0/0             state NEW tcp dpt:22 
ACCEPT       tcp    --    0.0.0.0/0              0.0.0.0/0             state NEW tcp dpt:80 
ACCEPT       tcp    --    0.0.0.0/0              0.0.0.0/0             state NEW tcp dpt:25 
REJECT       all    --    0.0.0.0/0              0.0.0.0/0             reject-with icmp-host-prohibited 
可以看出我在安装linux时,选择了有防火墙,并且开放了22,80,25端口.

如果你在安装linux时没有选择启动防火墙,是这样的
[root@tp ~]# iptables -L -n
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  
什么规则都没有.


(2)清除原有规则.
不管你在安装linux时是否启动了防火墙,如果你想配置属于自己的防火墙,那就清除现在filter的所有规则.
[root@tp ~]# iptables -F        清除预设表filter中的所有规则链的规则
[root@tp ~]# iptables -X        清除预设表filter中使用者自定链中的规则
我们在来看一下
[root@tp ~]# iptables -L -n
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      
什么都没有了吧,和我们在安装linux时没有启动防火墙是一样的.(提前说一句,这些配置就像用命令配置IP一样,重起就会失去作用),怎么保存.

[root@tp ~]# /etc/rc.d/init.d/iptables save
这样就可以写到/etc/sysconfig/iptables文件里了.写入后记得把防火墙重起一下,才能起作用.

[root@tp ~]# service iptables restart
现在IPTABLES配置表里什么配置都没有了,那我们开始我们的配置吧




如何用 iptables 禁止某个ip?

1、添加对 114.32.207.47 的过滤(直接 DROP 掉)

iptables -I INPUT -s 114.32.207.47 -j DROP

 

2、检查设置是否正常

iptables --list

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       all  --  114-32-207-47.HINET-IP.hinet.net  anywhere            
 
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
 
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination   


单个IP的命令是    
iptables -I INPUT -s 115.236.160.83 -j DROP  


### 使用 IPTABLES 配置特定 IP 段访问端口 为了实现通过 IPTABLES 允许特定 IP 段访问某个端口的功能,可以按照以下方法操作: #### 1. 创建规则以允许指定的 IP 段访问目标端口 可以通过 `-s` 参数来定义源地址范围,并结合 `--dport` 来限定目标端口号。例如,如果要允许来自 IP 范围 `192.168.1.0/24` 的设备访问端口 `3306`,则可执行如下命令: ```bash iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 3306 -j ACCEPT ``` 此命令的作用是接受来自子网 `192.168.1.0/24` 中的所有主机对端口 `3306` 的 TCP 连接请求[^1]。 #### 2. 禁止其他所有 IP 访问该端口 为了让上述规则生效并确保安全性,还需要阻止除指定 IP 段外的所有流量尝试连接到这个端口。这一步骤通常放在最后一条匹配规则之后完成: ```bash iptables -A INPUT -p tcp --dport 3306 -j DROP ``` 这条指令会丢弃任何未被前面规则显式许可的数据包到达端口 `3306` 上[^2]。 #### 完整脚本实例 下面给出一个完整的例子用于演示如何设置 MySQL 数据库服务器(默认监听于 3306 端口),使其仅仅能够由本地网络内的客户端机器进行远程管理而拒绝外部世界的未经邀请者接入: ```bash #!/bin/bash # 清理现有规则 (谨慎使用, 可能中断当前会话) iptables -F # 开放 SSH(22号端口),防止断开SSH连接 iptables -I INPUT -p tcp --dport 22 -j ACCEPT # 授权局域网中的计算机访问数据库服务 iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 3306 -j ACCEPT # 屏蔽其余一切针对3306端口的入站请求 iptables -A INPUT -p tcp --dport 3306 -j DROP # 启用回环接口通信以及已建立或相关联的链接保持畅通无阻状态 iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 默认策略设为DROP以防万一遗漏某些潜在威胁项 iptables -P INPUT DROP ``` 以上脚本首先清除了现有的防火墙规则;接着开放了必要的 SSH 和 MySQL 数据库服务入口;再设定好内外部防护屏障后才最终确立起整个系统的安全基线架构体系结构[^3]。 ### 注意事项 - 在实际部署前务必测试新加入的过滤条件不会误伤合法业务流程。 - 如果操作系统重启可能会丢失临时性的 iptables 修改成果,因此建议保存配置文件或者利用工具如 `service iptables save` 命令永久保留更改记录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

scan724

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值