我正在使用CentOS 5.7 64位系统并运行Apache。 目前,我有一个网站有一个.htaccess文件包含成千上万的“拒绝从IP”规则(从cPanel添加)。 最近我的服务器加载非常高,我怀疑这些规则导致了这个问题。 他们会吗?
我正在考虑将这些规则移动到一个iptables包含文件,但不知道如何设置。 有什么build议? 谢谢。
转移以下内容
deny from 8.8.8.8
至
-A RH-Firewall-1-INPUT -i eth0 -s 8.8.8.8 -j DROP
# sar -q 01:00:02 PM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 01:10:01 PM 41 359 42.59 39.85 26.52 01:20:11 PM 37 267 37.34 33.99 29.45 01:30:02 PM 19 242 24.99 30.76 30.85 # sar 01:00:02 PM CPU %user %nice %system %iowait %steal %idle 01:10:01 PM all 81.50 0.14 18.23 0.01 0.00 0.12 01:20:11 PM all 78.41 0.00 16.96 0.01 0.00 4.62 01:30:02 PM all 82.48 0.00 15.89 0.01 0.00 1.62 01:40:01 PM all 84.48 0.01 15.05 0.00 0.00 0.46
top - 19:03:02 up 6:09, 1 user, load average: 9.49, 15.19, 13.19 Tasks: 211 total, 34 running, 175 sleeping, 0 stopped, 2 zombie Cpu(s): 77.2%us, 22.6%sy, 0.0%ni, 0.1%id, 0.0%wa, 0.0%hi, 0.2%si, 0.0%st Mem: 4117724k total, 1678008k used, 2439716k free, 79456k buffers Swap: 8385848k total, 0k used, 8385848k free, 780952k cached
我不太清楚你所看到的是否定的规则,但是这里有一个class轮,它可以帮助你转移你的规则(至less是暂时的):
grep deny .htaccess | awk {'print $3;'} | while read i; do iptables -A RH-Firewall-1-INPUT -i eth0 -s ${i} -j DROP; done
要警告的是,这将把DROP规则直接放在主INPUT链的末尾,这使得在不重新启动iptables的情况下很难拔出。 如果你想要更容易撤消的东西,那么你应该先创build一个额外的表格,像这样:
iptables -A RH-Firewall-1-INPUT -j HTACCESS_TEST grep deny .htaccess | awk {'print $3;'} | while read i; do iptables -A HTACCESS_TEST -i eth0 -s ${i} -j DROP; done
之后,您需要在.htaccess中注释掉您的拒绝行,并重新加载Apache以使其生效。