iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT iptables -I INPUT -s 4.0.0.0/8 -p tcp --dport 22 -j DROP iptables -I INPUT -s 5.0.0.0/8 -p tcp --dport 22 -j DROP iptables -I INPUT -s 10.0.0.0/8 -p tcp --dport 22 -j DROP iptables -A INPUT -s 4.0.0.0/8 -j ACCEPT iptables -A INPUT -s 5.0.0.0/8 -j ACCEPT iptables -A INPUT -s 10.0.0.0/8 -j ACCEPT iptables -A OUTPUT -s 10.0.0.0/8 -j ACCEPT iptables -A INPUT -s 172.21.5.0/24 -j ACCEPT iptables -A OUTPUT -s 172.21.5.0/24 -j ACCEPT iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -j DROP iptables -A OUTPUT -j DROP iptables -A FORWARD -j DROP
时间: 2025-06-30 13:02:28 浏览: 26
### 如何正确配置iptables规则以限制特定IP段的SSH访问并允许本地回环通信
为了实现对特定IP段的SSH访问限制以及保持本地回环通信正常工作,可以通过以下方法来配置`iptables`规则:
#### 1. 设置默认策略
首先需要定义默认链的行为模式。通常情况下,默认行为会设置为拒绝所有传入和转发的数据包,而对于传出数据包则可以选择接受。
```bash
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
```
这些命令分别设置了INPUT、FORWARD链为DROP(即丢弃所有不符合后续规则的数据包),OUTPUT链为ACCEPT(允许所有的外发数据包)。[^2]
#### 2. 允许来自特定IP段的SSH连接
假设我们只想让来自192.168.1.x网段内的设备能够通过SSH协议访问服务器,则可以添加如下规则:
```bash
iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 22 -j ACCEPT
```
这条指令的意思是从192.168.1.0到192.168.1.255这个范围内的任何主机都可以向目标机器发送目的地端口为22(TCP)的数据包,并且该请求会被接收下来而不是被阻断掉。[^3]
#### 3. 启用本地回环接口
对于某些服务来说可能还需要确保它们能够在同一台计算机内部之间相互通讯,比如数据库查询或者文件共享等操作就需要依赖于localhost上的进程间交互。因此有必要单独开放lo(loopback device),这样即使外部网络完全封锁也不会影响到自身的正常使用体验。
```bash
iptables -A INPUT -i lo -j ACCEPT
```
这里指定了输入流量如果来源于loopback interface的话就直接放行。[^2]
#### 4. 接受已建立或关联好的连接
为了让已经成功握手过的TCP session继续维持下去而不被打断,在最后还要记得加入一条关于状态跟踪的支持语句:
```bash
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
```
它利用conntrack模块检测当前是否有现存的有效链接存在,如果有则给予通行许可。[^2]
#### 5. 存储更改后的防火墙设定
由于重启之后可能会丢失刚才所做的调整动作,所以最好把现在的表单状况记录起来以便下次开机自动加载应用同样的保护措施。
针对不同的操作系统版本有不同的保存方式:
如果是基于RedHat/CentOS系列发行版:
```bash
service iptables save
```
如果是Debian/Ubuntu类平台:
```bash
iptables-save > /etc/iptables/rules.v4
```
如果不是以上两种情况之一,则提示用户手动执行相应步骤完成持久化处理。
最终效果就是除了指定的小型局域网成员之外其他人都无法远程登录控制本机资源的同时还保留了必要的自我维护能力。
```python
#!/bin/bash
# Default policies to drop incoming and forward traffic but allow outgoing.
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# Allow SSH connections from a specific subnet (e.g., 192.168.1.0/24).
iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 22 -j ACCEPT
# Enable loopback communication for local services.
iptables -A INPUT -i lo -j ACCEPT
# Accept established or related connections to maintain active sessions.
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# Save the rules depending on Linux distribution.
if [ -f /etc/redhat-release ]; then
service iptables save
elif [ -f /etc/debian_version ]; then
iptables-save > /etc/iptables/rules.v4
else
echo "Unknown distribution. Please save the iptables rules manually."
fi
echo "Iptables rules have been configured and saved successfully!"
```
阅读全文
相关推荐



















