wp-admin 与 wp-login.php wp-cron.php防护

在后台日志中,经常发现wp-login.php wp-cron.php xmlrpc.php wp-admin 等被机器访问

如果你有一个固定IP,或者能利用主机的SSH代理登录访问

比如我的主机IP是 15.164.48.65 (修改为你自己的IP地址 )

可以修改wordpress安装目录下的 .htaccess 为

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteRule ^xmlrpc\.php$ https://xl.cool [L,R=301]
</IfModule>

# Allow only specific IP addresses to access wp-admin and wp-login.php
<FilesMatch "^(wp-admin|wp-login\.php|wp-cron\.php)$">
    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.1$
        RewriteCond %{REMOTE_ADDR} !^15\.164\.48\.65$
        RewriteRule ^ https://xl.cool [L,R=301]
    </IfModule>
    <IfModule !mod_rewrite.c>
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
        Allow from 15.164.48.65
    </IfModule>
</FilesMatch>

# END WordPress

这样,如果其他IP访问,就会自动跳转到 博客首页了。

而且只要用你的固定IP登录后,就可以切换回来,依然是可以登录后台的。

定风波 — 苏轼

莫听穿林打叶声,何妨吟啸且徐行。

竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生。

料峭春风吹酒醒,微冷,山头斜照却相迎。

回首向来萧瑟处,归去,也无风雨也无晴。

xmlrpc.php 经常被攻击的问题

可以编辑 .htaccess文件, 例:


# BEGIN WordPress
# 在“BEGIN WordPress”与“END WordPress”之间的指令(行)是
# 动态生成的,只应被WordPress过滤器修改。
# 任何对标记之间的指令的修改都会被覆盖。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteRule ^xmlrpc\.php$ https://xl.cool [L,R=301]
</IfModule>
# END WordPress

增加上面加粗的那一句,就可以301重定向到你的博客了. (域名改成你的博客)

虽然对方是来攻击的,但也别浪费了他的流量:)

如果你想完全禁止xmlrpc.php的访问, .htaccess 就可以这样写:


# BEGIN WordPress
# 在“BEGIN WordPress”与“END WordPress”之间的指令(行)是
# 动态生成的,只应被WordPress过滤器修改。
# 任何对标记之间的指令的修改都会被覆盖。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

<Files xmlrpc.php>
Order Allow,Deny
Deny from all
</Files>

只要增加上面加粗部分的代码,就可以完全阻挡访问了.

方法二选一.

圣诞节 Google blogger

Google圣诞节的logo,还是很喜庆的.

在十多年前,还是最喜欢blogger这个平台,觉得这个B字的logo充满激情.

在那个互联网启蒙阶段,可以有blogger这种提供免费生成html页面,免费绑定域名的平台,实属不易.

如今,支持绑定域名的blogger,竟然可以在国内打开. (虽然Blogger平台还是不行,因为需要google帐号)

曾经变复杂的后台,现在也变得简约,模版依旧是html,极致经典.

如果在国外,想写个blog,或者想体验一下blogger,也是可以的.

还有若是想做国际站点,也是很适合的,全免费,甚至流量大,还可以有广告收入.

密码强度与泄露 Kaspersky password

尝试使用了Kaspersky Password ,显示密码已泄露,有更高的被破解风险.

点开后就看到使用该密码的账户已被入侵18次..

低强度的密码,确实应该改一下了.比如firefox就可以生成高强度密码.

至于Kaspersky Password这个软件,超过5条就收费了,所以没必要使用.

但是只用来检测一下密码是否泄露还是可以的.

Stable Diffusion

下载安装学习,记录一下.

浏览器的方式,可以通过局域网或者外网来操作.

若创意来了,即使在手机上也可以连到家里的电脑,进行作图,就很灵活了.

当未来的科技已来,而我却有些后知后觉.

debian11.6 + apache + php + Mariadb + nginx反向代理 + wordpress 网站环境配置指南

首先,为了做这篇文章,从头开始,重装系统,选择debian 11.6 进行重装: 服务器推荐:腾讯云

配置完成后,用SSH连接(推荐下载Xshell+Xftp,有免费版)

登陆后,先更新一下debian

# apt-get update
# apt-get upgrade

安装apache

# apt-get install apache2

安装php (组件可选,如果没有特殊要求,建议全装)

# apt-get install php libapache2-mod-php php-mysql php-tidy php-gd php-curl php-xml php-cli php-mbstring php-zip php-intl php-imagick libapache2-mod-rpaf

用Xftp编辑  /etc/php/7.4/apache2/php.ini
将#extension=mbstring 的#注释掉
extension=mbstring

传递真实IP(若没有反向代理需求可以略过,若nginx在本地也略过)

编辑文件 /etc/apache2/mods-enabled/rpaf.conf
在127.0.0.1 后面加上nginx反向代理服务器的IP地址
RPAFproxy_ips 127.0.0.1 11.22.33.44 55.66.77.88 ::1

更改apache端口(如果不安装nginx代理,此段略过)

更改apache端口(如果不安装nginx代理,此段略过)
用Xftp 编辑 /etc/apache2/ports.conf
将端口 80  改成 20080 或者其它
将端口 443 改成 20443 或者其它

apache 安装rewrite模块及vhost模块等(建议全部)

ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled
ln -s /etc/apache2/mods-available/remoteip.load /etc/apache2/mods-enabled
ln -s /etc/apache2/mods-available/vhost_alias.load /etc/apache2/mods-enabled
ln -s /etc/apache2/mods-available/ssl.conf /etc/apache2/mods-enabled
ln -s /etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled
ln -s /etc/apache2/mods-available/socache_shmcb.load /etc/apache2/mods-enabled
ln -s /etc/apache2/mods-available/http2.conf /etc/apache2/mods-enabled
ln -s /etc/apache2/mods-available/http2.load /etc/apache2/mods-enabled

虚拟机配置文件,例如:

/etc/apache2/sites-available/abc.conf

<VirtualHost *:80>
  ServerName www.abc.com
	ServerAdmin admin@www.abc.com
	DocumentRoot /var/www/www.abc.com
	
		<Directory /var/www/www.abc.com>
		Options FollowSymLinks
		AllowOverride All
	</Directory>

	ErrorLog ${APACHE_LOG_DIR}/www.abc.com.error.log
	CustomLog ${APACHE_LOG_DIR}/www.abc.com.access.log combined
</VirtualHost>
并创建 /var/www/www.abc.com 文件夹
如果有ngin反向代理做前端,请将以上的80端口改为50080或者其他

链接文件到sites-enabled文件夹
ln -s /etc/apache2/sites-available/abc.conf /etc/apache2/sites-enabled

如有多个网站,请重复以上步骤

最后重启apache
# /etc/init.d/apache2 restart

如果配置SSL,请参考以下格式:

<IfModule mod_ssl.c>
<VirtualHost *:20443>

    ServerName xl.cool
		DocumentRoot /var/www/xl.cool  

		SSLEngine on
SSLProtocol all -SSLv2 -SSLv3  -TLSv1 -TLSv1.1 

    SSLHonorCipherOrder on
		SSLCertificateFile	/etc/apache2/ssl/xl.cool.pem
		SSLCertificateKeyFile /etc/apache2/ssl/xl.cool.key

		SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM

	<Directory /var/www/xl.cool>
		Options FollowSymLinks
		AllowOverride All
	</Directory>
		
	  RemoteIPHeader X-Forwarded-For
    RemoteIPInternalProxy 127.0.0.1/32
	
	ErrorLog ${APACHE_LOG_DIR}/xlcool.error.log
	CustomLog ${APACHE_LOG_DIR}/xlcool.access.log combined
		
	</VirtualHost>
</IfModule>

SSL 要设置好 证书的位置,以上参考位置 /etc/apache2/ssl/

如果不需要反向代理,这段代码可以删除

	RemoteIPHeader X-Forwarded-For
    RemoteIPInternalProxy 127.0.0.1/32

MariaDB数据库安装:

apt-get install mariadb-server

安全配置
mysql_secure_installation

设置数据库密码和其他选项,以下供参考

进入mariadb
# mysql -uroot -p12345678       把12345678换成你的密码


新建一个用户名
CREATE USER '用户名'@'localhost' IDENTIFIED BY '密码';
GRANT ALL PRIVILEGES ON *.* to '用户名'@'localhost';

退出后重启数据库
systemctl restart mysql
有时候失败,建议重启服务器 reboot

使用数据库的又一种方法,Navicat + ssh

在navicat中,新建一个mariadb连接,输入主机localhost,端口3306,帐号密码。

再选择SSH栏,输入你的主机地址,SSH端口(一般默认是22),用户名和验证方法

这样就可以通过SSH中转,访问你的服务器localhost数据库了

新建数据库,如果用来做wordpress,字符集可以选 utf8mb4

然后就可以制作wordpress了

# cd /var/www
# wget https://cn.wordpress.org/latest-zh_CN.zip
# unzip latest-zh_CN.zip

然后把wordpress文件夹改成apache配置的名称即可进行安装

如果 Nginx 作为前端,用来反向代理apache

好处是:可以比单纯用apache更快,集合了apache的兼容性和nginx的速度

# apt-get install nginx

nginx的缓存设置

nano /etc/nginx/conf.d/proxy.conf
#*************************************************
# 反向代理参数,具体自行搜索按需配置吧,懒得说明了
proxy_connect_timeout    30;
proxy_read_timeout       60;
proxy_send_timeout       30;
proxy_buffer_size        16k;
proxy_buffers            4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
client_max_body_size 100m;
# 配置临时目录、缓存路径(注意要先建立这2个目录,要在同一个硬盘分区,注意权限)
proxy_temp_path   /var/tmp/nginx/tmp 1 2;
proxy_cache_path  /var/tmp/nginx/xlde levels=1:2 keys_zone=xlde:128m inactive=7d max_size=1g;
# keys_zone=xlde:32m 表示这个 zone 名称为 xlde,分配的内存大小为 32MB
# levels=1:2 表示缓存目录的第一级目录是 1 个字符,第二级目录是 2 个字符
# inactive=7d 表示这个zone中的缓存文件如果在 7 天内都没有被访问,那么文件会被cache manager 进程删除
# max_size=1G 表示这个zone的硬盘容量为 1G
#*************************************************
# mkdir /var/tmp/nginx/xlde      #建立文件夹
# mkdir /var/tmp/nginx/tmp       #建立文件夹
# chmod -R 777 /var/tmp/nginx    #权限777

网站参数设置

nano /etc/nginx/sites-available/xl

附本站nginx站点参数

server {
 listen 80;
 server_name xl.cool www.xl.cool;   
 rewrite ^(.*)$ https://$host$1 permanent;   #将所有http请求通过rewrite重定向到https。
}

server{
	listen 443 ssl http2;
	server_name xl.cool www.xl.cool;    
	index index.php index.html;
	ssl_certificate /etc/nginx/ssl/xl.cool.pem;  
	ssl_certificate_key /etc/nginx/ssl/xl.cool.key;  
	ssl_session_cache shared:SSL:100m;
	ssl_session_timeout 10m;
	ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE;
	ssl_protocols TLSv1.2 TLSv1.3;
	ssl_prefer_server_ciphers on;
	
	ssl_stapling on;     #OCSP Stapling 开启,OCSP是用于在线查询证书吊销情况的服务,使用OCSP Stapling能将证书有效状态的信息缓存到服务器,提高 TLS 握手速度
	ssl_stapling_verify on;    #OCSP Stapling 验证开启
	#ssl_trusted_certificate /etc/nginx/ssl/ca-certs.pem;    #OCSP Stapling 的证书位置(完整的证书链)
	#resolver 127.0.0.1;    #用于查询OCSP服务器的DNS
	#resolver_timeout 5s;    #查询域名超时时间
	
	add_header Strict-Transport-Security "max-age=63072000; includeSubDomains" always;

	access_log /var/log/nginx/xl.cool.log; 
		location / {
		proxy_pass             https://127.0.0.1:20443;
		#proxy_redirect     off;
		proxy_set_header   Host $host;
		proxy_set_header   X-Real-IP  $remote_addr;
		proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header   X-Forwarded-Proto $scheme; 
		proxy_set_header   Referer https://$host;    
    proxy_ssl_session_reuse on;
	}
	
  error_log   /var/log/nginx/xl.cool.error.log    error;

	# 只对图片、js、css 等静态文件进行缓存
	location  ~* \.(png|jpg|jpeg|gif|ico|js|swf|mp3)$ {
		#-------------------------------------
		proxy_cache xlde;
		proxy_cache_key "$scheme://$host$request_uri";
		proxy_cache_valid 200 304 7d;
		proxy_cache_valid 301 3d;
		proxy_cache_valid any 1m;
		#--------------------------------------

		#--------------------------------------
		
		proxy_pass             https://127.0.0.1:20443;
		proxy_set_header   Host $host;
		proxy_set_header   X-Real-IP  $remote_addr;
		proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header   X-Forwarded-Proto $scheme; 
		proxy_set_header   Referer https://$host;
  	}



}

SSL证书的位置:/etc/nginx/ssl/

做个链接

ln -s /etc/nginx/sites-available/xl /etc/nginx/sites-enabled
/etc/init.d/nginx restart       重启

SSL测试一下,A+的结果

关于网站环境,手动操作,流程+干货,已经倾囊相授了

可以转载,最好能加个我的链接,谢谢!

若有问题可以留言

wolf

地球上总还有不羁、奔放的心灵,不管世上发生什么,他们依然孤独而自由着