还没开始就被别人绑定了域名#
事情的起因与发现#
刚买了个服务器搭建了一个dz,想着域名还没备案,就先搭建了起来,然后在做DDOS测试时偶然发现服务器被别人恶意把域名绑定了
最初的解决方案#
没管。。。。。。
后来发现有影响,朋友也一直给我说叫我整下
利用重定向把恶意指向过来的域名指到别处#
要利用301重定向,首先我们要在Apache上配置一下,Apache默认是不开启.htaccess的
0x01.编辑httpd.conf文件#
打开/etc/httpd/conf目录下的httpd.conf文件,找到这一行:
1
| LoadModule rewrite_module modules/mod_rewrite.so
|
当然,你得确定你的/etc/httpd/modules下有mod_rewrite.so这个文件
1
| ls /etc/httpd/modules | grep mod_rewrite
|
如果你没有找到这一行,记得在httpd.conf文件里直接添加这一行
0x02.设置AllowOverride#
同样的在httpd.conf文件中找到:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| <Directory "/var/www/html">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.4/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride All
#
# Controls who can get stuff from this server.
#
Require all granted
</Directory>
|
或者它长这个样子:
1
2
3
4
| <Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
|
什么,你告诉我还是找不到???
那教你一个办法
锁定关键词FollowSymLinks
和AllowOverride None
vi的向下查找命令是:/你要查找的
vi的向上查找命令是:?你要查找的
n是下一个
N是上一个
相信你已经找到了
接下来把None
改成All
0x03.编写规则文件.htaccess#
跑去网站根目录下,比如我的是/var/www/html
如果存在.htaccess,忽略下一步,直接打开编辑
然后新建.htaccess文件touch .htaccess
编辑.htaccess文件vi .htaccess
添加如下规则
1
2
3
4
| RewriteEngine on
RewriteCond %{HTTP_HOST} ^别人的域名.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.别人的域名.com$
RewriteRule ^(.*)$ http://www.自己的域名.com/$1 [R=301,L]
|
个人的修改#
我知道,你在网上所找到的方法都是上面那种代码,并且应该都没有提 教你怎么开启.htaccess
但是本人实验过,这配置进去还有问题,设置重启Apache后,访问网站提示500错误
机智的我总要查看日志啊
1
| cat /var/log/messages | grep httpd
|
找到了错误
英语不太好,但是大致知道是服务器没有限定域名,需要修改ServerName,而ServerName字段值在httpd.conf中是被注释掉的
我们在httpd.conf修改它
1
| #ServerName: www.example.com:80
|
改为
1
| ServerName: 115.**.**.57:80
|
然后重启Apache,可以访问了
好的故事都会有后续的
以为这样就万事大吉了?
但是我这个被坑得不轻
admin.xx.com都被他解析到我服务器上来了
老衲怎么破
.htaccess好像可以用正则表达式,一查,果然
那就改一下.htaccess咯
1
2
3
4
| RewriteEngine on
RewriteCond %{HTTP_HOST} ^别人的域名.com$ [OR]
RewriteCond %{HTTP_HOST} ^.*.别人的域名.com$
RewriteRule ^(.*)$ http://www.自己的域名.com/$1 [R=301,L]
|
机智的你已经发现第三行中的www被我改成了.,就是匹配0个或者多个字符,当然你可以改成+
然后重启Apache
1
| systemctl restart httpd
|
或者
现在我再访问。。。嘿嘿嘿,被我跳转到百度了
当然,还有其他的方法,自己也可以去网上找找
对了,那个刚才在httpd.conf里换ip的地方也可换自己的域名,因为我的还在备案,就没改