WEB常用iptables规则

本文详细介绍了iptables防火墙的基本配置规则。包括设置默认策略、开放特定端口、允许内部数据循环、允许服务器向外发送请求等操作。此外还介绍了如何通过限制连接速率来防御SYN Flood攻击。

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

规则:

iptables --delete-chain
iptables  --flush
iptables  -P INPUT DROP    #1
iptables  -P FORWARD DROP  #1
iptables  -P OUTPUT DROP   #1
iptables  -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT #2
iptables  -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT #3
iptables  -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT #3
iptables  -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT  #3
iptables  -A INPUT -p tcp -m tcp --dport 873 -j ACCEPT #3
iptables  -A INPUT -i lo -j ACCEPT #4
iptables  -A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT #允许ping别人
iptables  -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT  #5
iptables  -A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT #5
iptables  -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT #6
iptables  -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT #7
iptables  -A OUTPUT -o lo -j ACCEPT #4
iptables  -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT #8
iptables  -A OUTPUT -p tcp -m tcp --dport 25 -j ACCEPT #9
iptables  -A OUTPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT  #10
iptables  -A OUTPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT #10
#11
iptables -N syn-flood
iptables -A syn-flood -p tcp -m limit --limit 3/sec --limit-burst 6 -j RETURN
iptables -A syn-flood -j REJECT --reject-with icmp-port-unreachable

iptables-save>/etc/sysconfig/iptables
service iptables restart

说明:

#1、设置INPUT,FORWARD,OUTPUT链默认target为DROP,也就是外部与服务器不能通信。
#2、设置当连接状态为RELATED和ESTABLISHED时,允许数据进入服务器。
#3、设置外部客户端连接服务器端口80,22,21,873。
#4、允许内部数据循回。
#5、允许外部ping服务器 。
#6、设置状态为RELATED和ESTABLISHED的数据可以从服务器发送到外部。
#7、允许服务器使用外部dns解析域名。
#8、设置服务器连接外部服务器端口80。
#9、允许服务器发送邮件。
#10、允许从服务器ping外部。
#11、抵御洪水攻击

限制单位时间内连接数

iptables -N syn-flood
iptables -A FORWARD -p tcp --syn -j syn-flood
iptables -A INPUT -p tcp --syn -j syn-flood
iptables -A syn-flood -p tcp --syn -m limit --limit 3/s --limit-burst 1 -j ACCEP
iptables -A syn-flood -j DROP
iptables -A INPUT -i eth0 -p tcp ! --syn -m state --state NEW -j DROP
iptables -A INPUT -p tcp --syn -m state --state NEW -j DROP

参考文章

  1. http://blog.sina.com.cn/s/blog_6915bcb101013st7.html
  2. https://www.frozentux.net/iptables-tutorial/iptables-tutorial.html
### 创建和管理iptables自定义规则链 #### 创建自定义链 为了更好地管理和分类防火墙规则,可以通过`iptables`命令创建自定义链。例如,要创建名为`IN_WEB`的自定义输入链用于专门处理Web流量: ```bash sudo iptables -t filter -N IN_WEB ``` 此命令会在过滤表(`filter`)中新增一个叫做`IN_WEB`的链[^1]。 对于MySQL服务同样适用,通过下面指令建立专属于数据库连接请求筛选的链条: ```bash sudo iptables -t filter -N IN_MYSQL ``` 这使得与特定应用相关的网络控制逻辑更加清晰明了[^2]。 #### 向自定义链添加规则 一旦有了自定义链之后,则可以在其中加入具体的匹配条件来决定允许还是拒绝数据包通行。比如向刚才新建好的`IN_MYSQL`链里增加一条仅限来自内部网络(假设为172.16.0.0/16)对TCP协议下3306端口发起访问请求的数据报文予以放行的规定: ```bash sudo iptables -t filter -I IN_MYSQL -p tcp -m tcp --dport 3306 -s 172.16.0.0/16 -j ACCEPT ``` 这里使用了`-I`参数表示插入新条目至指定位置,默认情况下会将其置于列表最前端;而`-j ACCEPT`意味着符合条件的数据流将被接受并继续传输下去。 #### 将自定义链关联到标准链上 为了让这些精心设计过的个性化规则生效,还需要把它们挂接到系统预设的标准路径上去。以HTTP(S)服务器为例,在常规入口处调用之前构建完成的那个`IN_WEB`链: ```bash sudo iptables -t filter -A INPUT -p tcp -m multiport --dports 80,443 -j IN_WEB ``` 上述语句表明凡是目标地址指向本地机器且目的端口号等于80或443(即HTTP/HTTPS常用端口)的所有TCP层面上的信息都将先经过`IN_WEB`这一级额外审查再作进一步处置[^5]。 #### 清除不再使用的自定义链 如果某个自定义链已经没有存在的必要——既无任何有效规则也未与其他部分相连结的话,那么就可以考虑彻底移除了。执行如下命令可实现该功能: ```bash sudo iptables -X IN_WEB ``` 注意只有当所选对象确实为空闲状态时才能成功实施删除操作[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值