admin 发表于 2021-4-27 14:00:19

如何使用Apache的htaccess文件限制IP地址访问

如何使用Apache的htaccess文件限制IP地址访问

概述
本文主要介绍在Linux系统虚拟主机中,通过配置htaccess文件限制IP地址访问的方法。

详细信息
阿里云提醒您:

如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
在服务器上运行网站时,会遇到大量的恶意IP地址攻击访问,或者出现非法盗链和恶意采集网站资源的情况。如果您使用Apache服务运行网站,可以通过其根目录下的htaccess文件限制某些IP地址对网站的访问。首先下载压缩包,获取htaccess文件,然后清空原有的规则,按照需求添加规则即可,规则配置可参考如下。

禁止特定IP地址访问
以下是禁止特定地址访问,但其他IP地址可以正常访问的设置方法。禁止特定的IP地址可根据现场实际情况而定,以下以123.0.0.1地址为例。

Order Allow,Deny
Allow from all
Deny from 123.0.0.1
禁止部分IP地址访问
以下是禁止部分地址访问,但其他IP地址可以访问的设置方法。禁止的部分IP地址可根据现场实际情况而定,以下以123.0.0.1、123.0.0.2和123.0.0.3地址为例。

Order Allow,Deny
Allow from all
Deny from 123.0.0.1 123.0.0.2 123.0.0.3
禁止IP地址段访问
以下是禁止IP地址段访问的设置方法。禁止的IP地址段可根据现场实际情况而定,以下以192.168.1.0/24地址段为例。

Order Allow,Deny
Allow from all
Deny from 192.168.1.0/24
关于使用htaccess文件限制IP地址访问的注意事项如下:

Order关键字可以决定Allow和Deny起作用的顺序,简单的说就是谁排在最后,谁就有最终的决定权。Allow表示允许,Deny表示拒绝。
Order Deny,Allow是先检查是否有Deny规则,无论有没有Deny规则都会继续检查是否有Allow规则,如果有Allow,则Allow规则的内容可以覆盖掉Deny规则。
Order Allow,Deny则与上一条的内容相反。
以下是禁止所有IP地址访问的设置方法。
Order Allow,Deny
Allow from 123.0.0.1
Deny from all
说明:
Order Allow,Deny为先检查Allow,而Deny拥有决定权。
Allow from 123.0.0.1为只允许123.0.0.1地址访问网站。
Deny from all为禁止所有IP地址访问网站。
以下是只允许特定IP地址访问网站的设置方法,以下以123.0.0.1地址为例。
#允许一个IP网段
allow from 123.0.0.1/255

# 或者你需要在这IP网段中允许部分IP地址访问
allow from 123.0.0.0

# 除此之外一切均可以访问
allow from all
适用于
云虚拟主机

admin 发表于 2021-4-27 14:35:07

[其他] 用.htaccess 禁止某IP访问
代码如下
Order Allow,Deny
Allow from all
Deny from 125.64.2.46 182.237.3.102 58.215.169.18 114.80.132.9 121.14.48.5 66.249.67.182 94.180.84.186 58.243.40.76 89.123.61.113 116.23.60.197 110.75.172.81 60.215.129.75
复制代码
允许所有,禁止 XXX,请将里面的IP改成你要封杀的IP地址。
并另存为.htaccess,上传到网站根目录,一般为public_html,部分程序会有这个文件,例如WP,直接添加到里面即可。

禁止ip段
Order Allow,Deny
Allow from all
Deny from 192.168.1
复制代码
以上相当于禁止192.168.1.1-192.168.1.254


附录:使用详解
Allow和Deny可以用于apache的conf文件或者.htaccess文件中(配合Directory, Location, Files等),用来控制目录和文件的访问授权。order,顾名思义是顺序的意思,所以order命令可以决定deny和allow起作用的顺序,通俗的说就是谁排在最后那么谁就有最终的决定权。

order deny,allow和order allow,deny的区别也就显而易见了,前者的意思是先检查是否有deny命令,不论有没有都会再继续检查是否有allow规则,如果有,allow规则的内容可以覆盖掉deny规则。例如,
Order Allow,Deny
Allow from ip1
Deny from all
本意是想禁止ip1的访问,而允许其他所有ip访问,但显然用反了顺序,按照谁在后谁最大的原则,deny是掌握大权的人,所以deny from all就将allow的命令否决了。正确的写法应该是:
Order Deny,Allow //先检查Deny,并由Allow拍板
Deny from all       //Deny命令要求禁止所有ip的访问
Allow from ip1   //Allow说只允许ip1访问
结果:只允许ip1访问网站,禁止其他所有ip的访问。
按照这个原则,还有如下应用。
禁止特定ip的访问
<Files 403.shtml> order allow,deny allow from all </Files> deny from 1.1.1.1 ;写要封的IP
禁止部分ip,其他的全部开放的两种写法
Order Deny,Allow
Deny from ip1 ip2
或者
Order Allow,Deny
Allow from all
Deny from ip1 ip2
页: [1]
查看完整版本: 如何使用Apache的htaccess文件限制IP地址访问