分类: 博客

  • 使用 wp-fail2ban 提高 wordpress 站点安全性

    使用 wp-fail2ban 提高 wordpress 站点安全性

    wp-fail2ban 是 wordpress 上一款与 fail2ban 集成的,提高 wordpress 站点安全性的插件。

    安装:

    插件>安装新插件 中搜索“wp-fail2ban”,安装如上图所示插件并启用。

    安装完成后,ssh 连接到你博客的 vps 上。

    配置:

    参考插件的 配置文档 ,以使用 systemd 的 debian12 为例。

    确保你的 vps 上已经安装了 fail2ban。如果没有安装,可以参考我的这篇博文进行安装和配置。

    复制你的 网站根目录/wp-content/plugins/wp-fail2ban/filters.d/ 下的所有文件到 /etc/fail2ban/filters.d/ 目录下。

    sudo cp 网站根目录/wp-content/plugins/wp-fail2ban/filters.d/*.conf /etc/fail2ban/filter.d/

    修改你网站根目录下的 wp-config.php 文件,在末尾添加以下内容:

    // Make sure we're not using the short ("wp") tag
    define('WP_FAIL2BAN_SYSLOG_SHORT_TAG', false);
    
    // Don't include the HTTP host in the tag
    define('WP_FAIL2BAN_SYSLOG_TAG_HOST', false);
    
    /* That's all, stop editing! Happy blogging. */

    随后,保存退出。切换目录到 /etc/fail2ban/jail.d 。在该目录下新建一个名为 wordpress.conf 的配置文件,并添加以下内容:

    [wordpress-hard]
    enabled = true
    filter = wordpress-hard
    backend = systemd
    journalmatch = SYSLOG_IDENTIFIER=wordpress
    maxretry = 1
    port = http,https
    
    [wordpress-soft]
    enabled = true
    filter = wordpress-soft
    backend = systemd
    journalmatch = SYSLOG_IDENTIFIER=wordpress
    maxretry = 3
    port = http,https

    完成后,保存退出并重新加载 fail2ban 服务。

    sudo systemctl reload fail2ban

    使用命令

    systemctl status fail2ban

    查看 fail2ban 是否正常运行。使用命令

    sudo fail2ban-client status

    查看新配置是否已添加。成功添加后输出如下图:

    至此,wp-fail2ban 已经开始保护你的 wordpress 网站了。

  • vps上wordpress博客的搭建

    vps上wordpress博客的搭建

    记录Debian 12 vps 上 wordpress 博客的搭建过程。

    • 准备阶段

    一台安装 debian 12 的 vps,ssh 远程连接上 vps 服务器。使用

    sudo apt update && sudo apt upgrade -y

    更新系统至最新状态。以及一个托管在 Cloudflare 的域名。

    • 安装 apache 服务器、php8.2、mysql

    使用以下命令安装 apache 服务器 和 php8.2环境:

    sudo apt install apache2 php8.2 -y 

    mysql 安装:

    wget https://dev.mysql.com/get/mysql-apt-config_0.8.33-1_all.deb
    sudo apt install ./mysql-apt-config_0.8.33-1_all.deb 

    在TUI中选择安装 mysql 8.0 版本

    sudo apt install mysql-server

    在TUI中设置ROOT密码,安装完成。

    安装 wordpress 所需 php模块:

    sudo apt install php8.2-imagick php-curl php-gd php-soap php-mbstring php-zip php-xml php-intl php8.2-opcache php8.2-mysql -y
    • mysql 和 apache 服务器配置

    1、mysql的配置:
    使用命令

    mysql -u root -p

    输入设置的密码,登录mysql。输入以下命令以创建一个名为 wordpress 的新数据库:

    CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

    输入以下命令创建一个新的MySQL用户,这个示例创建了一个名为 wpuser 的用户,密码为 wppassword,你需要替换为你自己的用户名和密码,并牢记,后面WordPress搭建会用到。

    CREATE USER 'wpuser'@'%' IDENTIFIED WITH mysql_native_password BY 'wppassword'; 

    授权用户,输入以下命令授予用户对WordPress数据库的访问权限。

    GRANT ALL ON wordpress.* TO 'wpuser'@'%'; 

    刷新权限,输入以下命令刷新MySQL权限:

    FLUSH PRIVILEGES; 

    至此,完成了 wordpress 的 mysql 数据库部分的配置,输入

    EXIT;

    退出 mysql。

    2、apache服务器的配置

    使用以下命令创建配置文件:

    sudo vim /etc/apache2/sites-available/my_domain.conf

    请将“my_domain”替换为你的域名。
    配置文件内容参考如下:

    <VirtualHost *:443> 
       ServerName my_domain 
       ServerAlias www.my_domain    # SSL 配置 
       SSLEngine on 
       SSLCertificateFile /etc/ssl/my_domain/my_domain.crt 
       SSLCertificateKeyFile /etc/ssl/my_domain/my_domain.key 
       SSLCertificateChainFile /etc/ssl/my_domain/my_domain.crt 
       # 基础配置 
       ServerAdmin webmaster@localhost 
       DocumentRoot /var/www/wordpress 
       ErrorLog ${APACHE_LOG_DIR}/error.log 
       CustomLog ${APACHE_LOG_DIR}/access.log combined 
       # 目录权限  
       <Directory /var/www/wordpress/> 
           AllowOverride All 
           Require all granted 
       </Directory> 
       # ----------------------- 
       # 模块配置部分- 
       # ----------------------- 
       # 静态资源缓存(需已启用 expires_module 和 headers_module)  
       <IfModule mod_expires.c> 
           ExpiresActive On 
           ExpiresByType image/jpeg "access plus 1 year" 
           ExpiresByType text/css "access plus 1 month" 
           ExpiresByType application/javascript "access plus 1 month" 
       </IfModule> 
       <IfModule mod_headers.c> 
           <FilesMatch "\.(js|css|jpg|png|gif|svg|woff2)$"> 
               Header set Cache-Control "public, max-age=31536000" 
           </FilesMatch> 
       </IfModule> 
       # GZIP 压缩(需已启用 deflate_module)l 
       <IfModule mod_deflate.c> 
           AddOutputFilterByType DEFLATE text/html text/css application/javascript text/xml application/json 
       </IfModule> 
    </VirtualHost>

    *ssl 证书可在 cloudflare 里对应域名下的 SSL/TLS > 源服务器 中申请。
    保存退出,启用新网站:

    sudo a2ensite my_domain 

    最后,禁用默认网站,并重启Apache:

    sudo a2dissite 000-default && sudo a2enmod rewrite && sudo a2enmod rewrite && sudo apache2ctl configtest && sudo systemctl restart apache2 
      • 下载WordPress

      运行以下命令以下载并解压 WordPress 文件:

      cd ~ && wget https://wordpress.org/latest.tar.gz && tar -xzvf latest.tar.gz

      移动wordpress到/var/www/下并修改权限:

      mv wordpress /var/www/ && chown -R www-data:www-data /var/www/wordpress && chmod 750 -R /var/www/wordpress/
      • 完成安装

      访问你的域名,在wordpress安装程序引导下完成wordpress的安装。