iptables 限制ip配置

本文介绍了iptables的基本概念及其作为客户端代理的角色,并详细说明了如何利用iptables限制特定IP的访问,包括命令行操作步骤、规则执行顺序及配置保存方法。

介绍

很多时候我们都叫他防火墙但是其实iptables不算是真正的防火墙,我们其实可以把它理解为一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的安全框架中,而这个安全框架才是真正的防火墙,这个框架名字叫netfilter。

netfilter才是防火墙真正的安全框架(framework),netfilter位于内核空间,而iptables其实是一个命令行工具,位于用户空间,我们用这个工具去操作真正的框架。

iptables功能非常强大且免费,这里只记录限制IP的功能

对于iptables原理讲解我推荐下面这位博主的博客有兴趣可以去看看,博主讲的很通俗易懂

iptables详解(1):iptables概念-朱双印博客这篇文章图文并茂的解释了什么是iptables,超详细解析iptables概念https://www.zsythink.net/archives/1199

限制IP

(1)查看iptables规则

规则其实就是网络管理员预定义的条件,规则一般定义为“如果数据包头符合这样的条件,就这样处理这个数据包”

[root@RK356X:/]# iptables -L
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 blacklist (0 references)
target     prot opt source               destination         

Chain icmppacket (0 references)
target     prot opt source               destination         

Chain whitelist (0 references)
target     prot opt source               destination         

现在这个规则表是空的还没有添加规则

(2)插入禁止访问的规则

[root@RK356X:/]# iptables -I INPUT  -p tcp --dport 23 -j DROP

这句话的意思是禁止端口号为23的所有ip以tcp的方式访问

(3)对特定ip解除限制

[root@RK356X:/]# iptables -I INPUT -s 172.16.81.24 -p tcp --dport 23 -j ACCEPT

注意:如果是使用网络连接开发板的在输入命令的时候千万不能将这两个命令分开输入,不然在输入第一个限制访问的命令之后你自己的主机就不能访问开发板了,需要将两个命令合在一起输入可以用;或者是&& 连接两个命令

$ iptables -I INPUT  -p tcp --dport 23 -j DROP && iptables -I INPUT -s 172.16.81.24 -p tcp --dport 23 -j ACCEPT

(4)查看规则

[root@RK356X:/]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  172.16.81.24         anywhere             tcp dpt:telnet
DROP       tcp  --  anywhere             anywhere             tcp dpt:telnet

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain blacklist (0 references)
target     prot opt source               destination         

Chain icmppacket (0 references)
target     prot opt source               destination         

Chain whitelist (0 references)
target     prot opt source               destination         

iptables的规则执行顺序是从上往下的,上面的例子的意思就是先ACCEPT 172.16.81.24 对23端口的访问,再拒绝其他ip对23端口的访问

(5)保存防火墙配置(否则重启失效)

$ service iptables save

(6)清除规则

# 清除所有规则
$ iptables -F

### 如何使用 `iptables` 配置 IP 访问控制规则 #### 设置默认策略 为了确保安全性,默认情况下可以拒绝所有的入站流量,这可以通过设置默认策略来实现。 ```bash iptables -P INPUT DROP ``` 这条命令会将所有未匹配其他规则的入站数据包丢弃[^3]。 #### 允许已建立的连接 为了避免中断已经存在的合法连接,在应用任何新的限制之前应该允许已知良好的通信: ```bash iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT ``` 此指令让通过状态跟踪模块识别为既定或相关的连接继续正常工作[^2]。 #### 添加特定 IP访问权限 如果希望只允许来自某个特定 IP 地址的数据进入,则可如下操作: ```bash iptables -A INPUT -s 192.0.2.42 -j ACCEPT ``` 这里 `-s` 参数指定了源地址 (source),即哪个 IP 可以发送请求给服务器;而 `-j ACCEPT` 表示接受这些请求。请注意替换上面例子中的 `192.0.2.42` 为你实际想要放行的那个 IP 地址。 #### 拒绝未知来源的访问尝试 对于那些不在白名单上的 IP 尝试发起的新连接,应当予以阻止: ```bash iptables -A INPUT -p tcp --dport ssh -j REJECT --reject-with tcp-reset ``` 上述命令针对目标端口为 SSH (`--dport ssh`) 的 TCP 流量执行拒绝动作,并向客户端返回 RST 数据包告知其连接已被重置。 #### 保存更改后的防火墙规则 最后一步非常重要——确保所做的修改不会因为重启机器而丢失。不同 Linux 发行版有不同的方法来持久化存储 `iptables` 规则集。例如,在某些系统上可以用下面这样的方式完成这项任务: ```bash service iptables save ``` 或者如果是基于 Debian/Ubuntu 的发行版本可能需要这样处理: ```bash apt-get install iptables-persistent netfilter-persistent save ``` 以上就是关于如何利用 `iptables` 来实施基本的 IP 白名单机制的一个简单介绍和实践指导。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Enosji

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

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

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

打赏作者

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

抵扣说明:

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

余额充值