apache屏蔽指定IP的访问

发布于 2018-12-31  511 次阅读


最近这两个月有点忙,没管博客什么事,结果今天刚登陆上,就发现了一大堆的垃圾评论。

仔细观察,可以发现都是31.184.238.129这个IP发出的,我查了一下归属地,在俄罗斯圣彼得堡,运营商为pinspb.ru。我决定屏蔽31.184.238.0/24这个IP段。

首先,我根据提示,在httpd.conf中找到

<Directory "/var/www/html/">

.....................................................................

</Directory>

 

之后,在确保其中有

Order allow,deny

Allow from all

和AllowOverride 为All之后,在它们的后面(注意要在<Directory "/var/www/html/">.........</Directory>之间)加入下列语句:

Deny from 138.186.136.64           #阻止IP
Deny from 31.184.238.0/24          #阻止IP段

完成之后应该是

<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
Deny from 138.186.136.64
Deny from 31.184.238.0/24
</Directory>

用# /etc/init.d/httpd restart重启apache后,从指定的IP就无法访问网站了。但是不知道为什么,这个原本应该显示403的时候竟然显示apache测试页面。我尝试修改了多个Directory的AllowOverride参数,发现都没有作用。最后选择将apache的默认页面(/var/www/error/noindex.html)给修改成了403页面。测试没有问题。


自己的403页面:

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Forbidden - Fantasy Land</title>
</head>
<body>
<h1>403 - Forbidden</h1>
<p>You do not have the permission to view the website. Please contact the administrator.</p>
</body>
</html>

 

最后更新于 2019-04-18