iptables命令整理,禁止固定端口(例5500)的访问

本文介绍iptables命令的基本用法,包括如何查看不同表中的规则、显示详细信息及禁止特定端口访问等操作。通过实例演示iptables配置防火墙的具体步骤。

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

说明命令
iptables -t 表名 -L查看对应表中的所有规则
iptables -t 表名 -L 链名查看表的指定链中的规则
iptables -t 表名 -v -L查看对应表中的所有规则 -v显示跟详细的信息
iptables -t 表名 -n -L-n 表示不解析IP地址
iptables --line-numbers -t 表名 -L–line-numbers 显示规则的序号
iptables -t 表名 -v -x -L-x 显示计数器的精确值

禁止固定端口(例5500)的访问:

命令语法:iptables -t 表名 -A 链名 匹配条件 -j 动作

iptables -t filter -A INPUT -j DROP -p tcp --dport 5500
iptables -t filter -A INPUT -j DROP -p tcp --dport 5000

参考:https://www.cnblogs.com/kcxg/p/10350870.html

<think>我们正在配置iptables以阻止外部IP访问Linux服务器上的2181端口。 根据用户需求,我们需要添加一条规则来阻止外部IP访问2181端口。注意:这里的外部IP指的是所有非本机的IP,但通常我们可能希望允许本地访问(127.0.0.1或localhost)以及内部网络访问,但用户没有特别说明,所以这里我们简单理解为阻止所有外部IP(即非本机IP)访问2181端口。 实际上,我们可以使用以下规则: iptables -A INPUT -p tcp --dport 2181 -j DROP 但是,这条规则会阻止所有IP(包括本机)访问2181端口。如果我们需要允许本地访问,可以添加一条允许本地的规则,然后拒绝其他所有。 通常做法: 1. 允许本地回环接口(lo)的所有流量(通常已经存在,但为了确保可以添加) 2. 允许特定IP或网段(如果需要) 3. 拒绝特定端口的其他所有连接。 用户需求是阻止外部IP访问2181端口,因此我们可以这样: 先允许本机访问(127.0.0.1),然后拒绝其他所有对2181端口的访问。 规则如下: iptables -A INPUT -p tcp --dport 2181 -s 127.0.0.1 -j ACCEPT iptables -A INPUT -p tcp --dport 2181 -j DROP 注意:规则的顺序很重要,因为iptables按顺序匹配规则。 另外,用户可能已经有一些规则,所以添加规则前需要确认。 但是,用户没有提到是否允许其他内部IP,所以这里我们只考虑允许本机(127.0.0.1)和拒绝其他所有。 如果用户希望允许某个网段,比如192.168.1.0/24,可以这样: iptables -A INPUT -p tcp --dport 2181 -s 192.168.1.0/24 -j ACCEPT 然后再拒绝其他。 由于用户只要求阻止外部IP,我们假设只允许本机。 步骤: 1. 添加允许本机的规则(源地址127.0.0.1) 2. 添加拒绝所有其他地址访问2181端口的规则 注意:这些规则是临时规则,重启后可能失效。要永久保存规则,需要根据发行版使用相应命令(如:iptables-save > /etc/sysconfig/iptables 或使用netfilter-persistent等)。 另外,如果用户之前没有允许2181端口的规则,那么默认策略可能是拒绝,但为了确保,我们显式添加拒绝规则。 我们也可以使用REJECT代替DROP,但DROP是直接丢弃,不响应,而REJECT会返回拒绝响应。根据安全需求,通常DROP更安全(避免被扫描探测)。 因此,我们使用DROP。 命令iptables -A INPUT -p tcp --dport 2181 -s 127.0.0.1 -j ACCEPT iptables -A INPUT -p tcp --dport 2181 -j DROP 注意:如果INPUT链的默认策略是DROP,那么第一条规则允许本机,第二条规则其实可以省略,因为默认策略会拒绝其他。但是为了清晰和避免后续规则影响,显式添加DROP是好的做法。 另外,确保这些规则在允许其他必要流量的规则之后,但在拒绝规则之前。 如果用户希望阻止UDP,也可以添加类似的UDP规则(如果服务使用UDP)。但通常2181端口(Zookeeper)使用TCP,所以这里只处理TCP。 如果用户需要同时阻止TCP和UDP,可以: iptables -A INPUT -p udp --dport 2181 -s 127.0.0.1 -j ACCEPT iptables -A INPUT -p udp --dport 2181 -j DROP 但用户没有说明协议,一般默认是TCP。 所以,我们只处理TCP。 执行命令后,可以使用以下命令检查规则: iptables -L INPUT -v --line-numbers 为了确保规则持久化,保存规则(根据发行版): 对于CentOS/RHEL 6及之前: service iptables save 或者 iptables-save > /etc/sysconfig/iptables 对于CentOS/RHEL 7及以上,可以使用firewalld,但用户要求使用iptables,所以可能需要安装iptables-services并启用: systemctl stop firewalld systemctl disable firewalld yum install iptables-services systemctl enable iptables systemctl start iptables 然后保存:service iptables save 或 iptables-save > /etc/sysconfig/iptables 对于Debian/Ubuntu: 安装iptables-persistent: apt-get install iptables-persistent 保存规则: netfilter-persistent save 或 iptables-save > /etc/iptables/rules.v4 注意:在修改前,请确保用户了解当前规则,避免误操作导致自己无法访问服务器(特别是通过SSH连接时)。建议在修改前先允许自己的IP访问SSH端口,并设置一个cron任务或超时回滚。 但是,用户没有提到SSH,所以我们假设用户已经确保管理访问的安全。 现在,我们按照用户要求给出配置命令。 总结步骤: 1. 添加允许本机访问2181端口的规则。 2. 添加拒绝所有其他IP访问2181端口的规则。 3. 保存规则(根据系统选择相应命令)。 注意:如果用户已经配置了其他规则,请确保顺序正确(允许规则在拒绝规则之前)。 如果用户之前有允许2181端口的规则,可能需要删除或调整。 我们给出一个完整的示: 假设当前没有针对2181端口的规则,我们添加: # 允许本地访问2181端口 sudo iptables -A INPUT -p tcp --dport 2181 -s 127.0.0.1 -j ACCEPT # 拒绝其他所有访问2181端口 sudo iptables -A INPUT -p tcp --dport 2181 -j DROP 然后保存规则(以Ubuntu为): sudo netfilter-persistent save 或者(通用): sudo iptables-save | sudo tee /etc/iptables/rules.v4 # 对于IPv4,Ubuntu通常保存到/etc/iptables/rules.v4 对于CentOS: sudo service iptables save # 如果使用iptables-services 注意:在保存之前,最好检查当前规则(sudo iptables -L -n)。 最后,提醒用户:如果服务器重启或iptables服务重启,需要确保规则被加载。在Ubuntu上,安装iptables-persistent后会自动加载保存的规则。在CentOS上,启用iptables服务后也会自动加载。 另外,如果用户使用firewalld(如引用中所示),但用户明确要求iptables,所以我们使用iptables命令。 引用中提到了firewall-cmd,但用户的问题是要求iptables,所以我们不采用firewalld。 因此,我们提供iptables的配置方法。 如果用户希望使用firewalld,可以这样(虽然用户要求iptables,但作为备选): 添加一个富规则(rich rule)来拒绝外部访问2181端口,但允许本地: firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port port="2181" protocol="tcp" source address="127.0.0.1" accept' firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port port="2181" protocol="tcp" reject' 或者,更简单:先允许本地,然后拒绝外部,但firewalld的富规则顺序由优先级控制,或者使用直接规则(direct rules)来使用iptables语法。 但用户要求iptables,所以我们不展开firewalld。 现在,我们按照要求生成相关问题。</think>### 配置iptables阻止外部IP访问2181端口 要阻止外部IP访问Linux服务器的2181端口(常用于Zookeeper服务),需在iptables中添加规则限制TCP流量。以下是具体步骤和命令: --- #### **步骤1:添加防火墙规则** ```bash # 允许本地环回接口访问2181端口(确保本地服务不受影响) sudo iptables -A INPUT -p tcp --dport 2181 -s 127.0.0.1 -j ACCEPT # 拒绝所有外部IP访问2181端口 sudo iptables -A INPUT -p tcp --dport 2181 -j DROP ``` - **`-s 127.0.0.1`**:仅允许本机IP(localhost)访问 - **`--dport 2181`**:指定目标端口 - **`-j DROP`**:直接丢弃数据包(不响应) > ⚠️ **顺序重要**:`ACCEPT`规则必须在`DROP`规则之前,否则本地流量会被拒绝。 --- #### **步骤2:验证规则** ```bash # 查看当前iptables规则列表 sudo iptables -L INPUT -v --line-numbers # 示输出(关键行): # Chain INPUT (policy ACCEPT) # num pkts bytes target prot opt in out source destination # 1 0 0 ACCEPT tcp -- any any 127.0.0.1 anywhere tcp dpt:2181 # 2 0 0 DROP tcp -- any any anywhere anywhere tcp dpt:2181 ``` --- #### **步骤3:保存规则(永久生效)** ```bash # Ubuntu/Debian(安装iptables-persistent) sudo apt-get install iptables-persistent sudo netfilter-persistent save # CentOS/RHEL sudo service iptables save # 或手动保存 sudo iptables-save > /etc/sysconfig/iptables ``` --- #### **注意事项** 1. **安全连接**: 配置前确保通过**其他端口(如SSH)** 能访问服务器,避免误锁自己。 2. **协议类型**: 若需同时封禁UDP,添加相同规则的`-p udp`版本。 3. **精确封禁**: 如需封禁**特定IP**(如`192.0.2.100`),使用: ```bash sudo iptables -A INPUT -p tcp --dport 2181 -s 192.0.2.100 -j DROP ``` 4. **恢复默认**: 清空所有规则(谨慎操作): ```bash sudo iptables -F INPUT ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值