[运维] iptables限制指定ip访问指定端口和只允许指定ip访问指定端口

本文介绍了如何使用iptables命令行工具来限制指定IP地址访问特定端口,以及只允许特定IP访问特定端口。通过向iptables的INPUT链添加规则,设置数据包动作为DROP或ACCEPT,可以实现对网络访问的控制。为了使规则永久生效,需要将其保存到防火墙配置文件中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

iptables限制指定ip访问指定端口

要使用iptables限制特定IP地址访问特定端口,您可以使用以下命令:

iptables -A INPUT -p tcp -s <IP地址> --dport <端口号> -j DROP

请将 <IP地址> 替换为要限制的IP地址,将 <端口号> 替换为要限制的端口号。

这个命令将添加一条规则到 iptablesINPUT 链,该规则匹配特定的 IP 地址和端口号,并将数据包的动作设置为 DROP,这意味着数据包将被丢弃,从而阻止特定IP访问特定端口。

iptables 只允许指定ip访问指定端口

要使用iptables只允许特定IP访问特定端口,您可以使用以下命令:

iptables -A INPUT -p tcp --dport <端口号> -s <IP地址> -j ACCEPT
iptables -A INPUT -p tcp --dport <端口号> -j DROP

请将 <IP地址> 替换为允许访问的IP地址,将 <端口号> 替换为要限制的端口号。

这个命令将首先添加一条规则到 iptablesINPUT链,该规则匹配特定的 IP 地址和端口号,并将数据包的动作设置为 ACCEPT,这意味着允许特定IP访问特定端口。

然后,它添加另一条规则到 INPUT 链,该规则匹配相同的端口号,但没有指定IP地址,并将数据包的动作设置为 DROP,这意味着阻止除特定IP以外的所有IP访问该端口。

这样配置后,只有特定的IP地址能够访问指定的端口,其他IP将被阻止访问。

请注意

上述命令将只在当前运行的会话中生效,如果您重启系统,这些规则将会丢失。要永久保存这些规则,您需要根据您使用的Linux发行版,将规则保存到适当的防火墙配置文件中。

例如,在大多数基于Debian的发行版中,可以使用以下命令将规则保存到 /etc/iptables/rules.v4 文件中:

iptables-save > /etc/iptables/rules.v4
### 如何在操作系统中查看指定端口状态 #### Linux 系统中的端口状态检查 在 Linux 中,可以通过多种工具命令来检查特定端口的状态。以下是几种常用的方法: 1. **使用 `netstat` 命令** 如果系统安装了 `net-tools` 工具包,则可以利用 `netstat` 来显示网络连接、路由表以及监听的端口等信息。例如,要检查某个具体端口(如 69)是否正在被监听,可运行以下命令: ```bash netstat -anp | grep :69 ``` 此命令会过滤并展示所有涉及该端口的信息,其中 `-a` 表示显示所有连接侦听套接字,`-n` 防止 DNS 反向解析以提高速度,而 `-p` 显示程序名称及其 PID。 2. **通过 `ss` 替代 `netstat`** 更现代的方式是采用 `ss` (socket statistics),它提供了更高效的数据处理能力。同样地,为了验证 TFTP 默认使用的 UDP/69 是否处于活动状态,输入如下指令即可完成查询工作: ```bash ss -tanp | grep ":69" ``` 或者针对 UDP 类型的服务, ```bash ss -uanp | grep ":69" ``` 3. **防火墙规则核查** 当涉及到服务不可达的情况时,还需要考虑是否有防火墙阻止访问请求。对于基于 CentOS 的环境来说,默认可能会启用 IPTables 或 Firewalld 。因此建议先审查当前生效的安全策略是否存在冲突之处。 查看现有 iptables 规则集可用下面这条语句实现[^3]: ```bash sudo iptables -L -n -v ``` #### Windows 系统下的端口检测手段 相比而言,在微软开发的操作平台下也有相应的机制用于监控本地机器上的开放端口情况。 1. **运用 PowerShell 执行高级筛选** 自 Win8 开始推荐用户切换到 PowerShell 上面来进行日常运维作业。比如想获取某一台远程设备上 TCP 层面上开启的所有通道详情的话,那么就可以借助 Get-NetTCPConnection cmdlet 实现目标定位功能。 ```powershell Get-NetTCPConnection -LocalPort 69 ``` 2. **传统 CMD 下的任务管理器配合法** 尽管图形界面直观易懂,但在某些场景下还是偏好纯文本形式的结果输出更为简洁明快些。于是乎就有了这么一套组合拳打法——即结合 Tasklist Netstat 输出结果相互印证得出结论[^4] : ```cmd netstat -ano | findstr :<port_number> tasklist /FI "PID eq <process_id>" ``` 综上所述,无论是在类 Unix 平台亦或是 MS-Windows 生态圈里头都有各自特色的解决方案可供选用以便快速诊断问题所在根源。 ```python import nmap nm = nmap.PortScanner() nm.scan('192.168.1.100', '1-65535') for host in nm.all_hosts(): print(f'Host : {host} ({nm[host].hostname()})') print(f'State : {nm[host].state()}') for proto in nm[host].all_protocols(): lport = nm[host][proto].keys() sorted(lport) for port in lport: print(f'port : {port}\tservice: {nm[host][proto][port]["name"]}') ``` 上述脚本片段展示了如何利用 Python 结合 NMAP 库批量探测局域网内部节点所暴露出来的潜在风险点位[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值