linux服务器iptables的使用

一、基础概念

iptables是Linux系统中的一个用户空间工具,用于配置Linux内核中的netfilter防火墙规则。它可以对进出本机的网络流量进行过滤、转发、地址转换等操作。

二、优势

强大的过滤功能:可以根据源IP、目的IP、端口号等多种条件进行精确的流量控制。
灵活性高:可以自定义规则来满足不同的网络需求。
性能开销小:作为内核级防火墙,处理速度快,对系统资源的占用较少。

三、类型

iptables规则主要分为以下几种类型:

INPUT链:处理进入本机的数据包。
OUTPUT链:处理从本机发出的数据包。
FORWARD链:处理通过本机转发的数据包。

四、应用场景

网络安全防护:阻止未经授权的访问和恶意流量。
流量控制:限制某些类型或来源的流量,保障关键服务的正常运行。
网络地址转换(NAT):实现内部网络与外部网络的通信。
服务器故障模拟:模拟服务器网络断连场景

五、iptables设置示例

示例1:初始化与默认配置

# 清空现有规则
iptables -F
iptables -X
iptables -Z

# 设置默认策略(谨慎操作!避免远程连接丢失)
iptables -P INPUT DROP    # 默认拒绝入站
iptables -P FORWARD DROP  # 默认拒绝转发
iptables -P OUTPUT ACCEPT # 允许所有出站[2,4](@ref)

示例2:关键安全配置

# 允许本地回环(避免服务自访问中断)
iptables -A INPUT -i lo -j ACCEPT

# 放行已建立连接及关联流量(避免中断活跃会话)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 按需开放端口(示例:SSH, HTTP, HTTPS)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT   # SSH
iptables -A INPUT -p tcp --dport 80 -j ACCEPT   # HTTP
iptables -A INPUT -p tcp --dport 443 -j ACCEPT  # HTTPS[2,6](@ref)

示例3:精细化访问控制

# 仅允许特定IP访问SSH(替换为你的管理IP)
iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT

# 拒绝特定IP段(如恶意来源)
iptables -A INPUT -s 10.0.0.0/24 -j DROP

# 允许ICMP(Ping)但限制速率(防洪水攻击)
iptables -A INPUT -p icmp -m limit --limit 5/sec -j ACCEPT[6,8](@ref)

示例4:允许SSH远程登录并拒绝其他所有入站连接

以下是一个简单的iptables设置示例,允许SSH远程登录并拒绝其他所有入站连接:

# 清除现有规则
iptables -F
iptables -X

# 设置默认策略
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# 允许SSH远程登录(假设SSH端口为22)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 允许已建立的连接和相关的数据包通过
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 保存规则(具体命令可能因Linux发行版而异)
service iptables save

示例5:多端口与IP范围

# 同时开放多个端口(如FTP被动模式)
iptables -A INPUT -p tcp -m multiport --dports 21,20,30000:31000 -j ACCEPT

# 允许特定IP段访问数据库(3306)
iptables -A INPUT -p tcp --dport 3306 -m iprange --src-range 192.168.1.50-192.168.1.100 -j ACCEPT[6,7](@ref)

示例6:连接数限制(防DDoS/暴力破解)​

# 限制每IP对SSH的并发连接(≤3)
iptables -A INPUT -p tcp --dport 22 -m connlimit --connlimit-above 3 -j REJECT

# 限制HTTP每秒新连接数(≤50)
iptables -A INPUT -p tcp --dport 80 -m limit --limit 50/sec --limit-burst 100 -j ACCEPT[1,6](@ref)

示例7:NAT地址转换

# SNAT(内网机器通过本机公网IP访问外网)
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

# DNAT(将公网80端口转发到内网Web服务器)
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.0.100:8080[1,7](@ref)

六、常见问题及解决方法

规则未生效:

确保iptables服务已启动并正在运行。
检查规则是否正确保存并应用。
使用iptables -L -v或iptables -nL --line-numbers命令查看当前规则列表,确认规则是否存在。

无法远程登录:

确认SSH端口(默认22)是否在iptables规则中被允许。
检查是否存在其他防火墙或安全组规则阻止了访问。

规则冲突:

仔细检查每条规则的顺序和条件,确保没有相互矛盾的规则。
使用iptables -I命令在特定位置插入规则,以控制规则的优先级。

七、注意事项

在修改iptables规则之前,建议备份现有规则,以便出现问题时能够迅速恢复。
不熟悉iptables的用户应谨慎操作,避免误删或误改重要规则导致网络中断。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

DaxiaLeeSuper

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

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

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

打赏作者

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

抵扣说明:

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

余额充值