服务器与wordpress安全防护


0. ftp 设置

推荐 ftp 使用独立的用户,不允许 root 用户访问。具体设置见linux 安装 ftp

1. ssh安全设置

1.1 修改ssh端口

ssh端口范围0-65535,但是0-1024是知名端口,最好别用此范围

1.1.1 在服务器上开放新端口

​ 阿里云服务器开放新端口见阿里云ubuntu16.04搭建wordpress

1.1.2 配置ssh端口

sudo vim /etc/ssh/sshd_config
# 在此文件中寻找 Port 22 将22改为你的新端口

1.1.3 配置生效

​ 每次修改完ssh配置文件后都需要重启ssh服务才能使其生效

sudo service ssh restart

1.2 配置ip白名单

白名单优先级高于黑名单,所以在deny所有,允许自己的ip,即可实现登陆ip白名单

  1. 将允许的名单加入到 /etc/hosts.allow
    # 例如允许10.10.10.10
    sshd:10.10.10.10:allow
    # 注意此处ip为你的公网ip
    
  2. /etc/hosts.deny
    # 禁止全部
    sshd:All
    
  3. 重启ssh服务
    sudo service ssh restart
    

1.3 ssh脚本 -- DenyHosts

原贴 开源中国-安装denyhosts

1.3.1 安装依赖及下载源码

apt-get update && apt-get upgrade
# 安装配置启动项工具
sudo apt-get install sysv-rc-conf
# denyhosts里依赖ipaddr包
sudo apt-get install python-ipaddr
# 下载denyhosts
git clone https://github.com/denyhosts/denyhosts.git

1.3.2 安装denyhosts并设置开机自启

# 克隆好进入目录,本人家目录/root
cd denyhosts
# 真正安装,1秒装完
sudo python setup.py install
# 将配置文件复制到/etc
sudo cp denyhosts.conf /etc
# 启动脚本,复制一份,并对新的daemon-control进行简单配置
cp daemon-control-dist daemon-control
# 查看一下主程序位置,本人是/usr/local/bin/denyhosts.py
whereis denyhosts.py
# 配置启动脚本,核对DENYHOSTS_BIN路径,即/usr/local/bin/denyhosts.py
# 并看一下DENYHOSTS_CFG是不是指向/etc/denyhosts.conf
vim daemon-control
# 将启动脚本链接到系统启动目录
cd /etc/init.d/
sudo ln -s /root/denyhosts/daemon-control denyhosts
# 配置启动项,找到denyhosts,并按空格选择,一般给2345选上x即可
sudo sysv-rc-conf

# 启动
sudo /etc/init.d/denyhosts start

1.3.3 配置

sudo vim /etc/denyhosts.conf

# 一般自定义下面三项,其他默认
DENY_THRESHOLD_INVALID = 3 #允许无效用户登录失败的次数
DENY_THRESHOLD_VALID = 3 #允许普通用户登录失败的次数
DENY_THRESHOLD_ROOT = 3 #允许root登录失败的次数

2. 数据库安全设置

数据库最好修改端口号或者关闭外网访问。
数据库管理软件 phpmyadmin 我仅仅对自己的 ip 开放,设置方法如下:
配置文件在 /etc/apache2/conf-enabled/phpmyadmin.conf 下,
其结构为:

# phpMyAdmin default Apache configuration

Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>
    Options FollowSymLinks
    DirectoryIndex index.php

    <IfModule mod_php.c>
        <IfModule mod_mime.c>
...

Options FollowSymLinks 后加入下面内容:

Deny from all
Allow from your_ip1
Allow from your_ip2

3. wordpress安全设置

修改 wordpress 后台地址,其他设置再推荐两个插件

3.1 修改后台地址

修改 wordpress 后台地址,给其加请求参数,如果参数验证正确就会进入登录页,如果不正确那就会跳转自己设置的网址。具体如下(参考wordpress 后台登录增加访问效验):

修改根目录下的 wp-login.php,搜索 loginform,找到登陆表单(大约 1367 行),修改表单的 action,并添加一个隐藏的 input:

<form name="loginform" id="loginform" action="<?php echo esc_url( site_url( 'wp-login.php', 'login_post' ) ).'?k=v'; ?>" method="post">
    <input type="hidden" readonly="readonly" value="pv" name="pk">

wp-includes/functions.php 下第一个函数声明前加入以下内容:

// 增加登录key,没有key跳转到首页
add_action('login_enqueue_scripts','login_protection');
function login_protection(){
    if(_GET['k'] != 'v'){
        header('Location:https://www.brothereye.cn/');
    }
    if((isset(_POST['log'] ) || isset( _POST['pwd'] )) &&_POST['pk'] != 'pv'){
        header('Location:https://www.brothereye.cn/');
    }
}

这样在进入登录页面以及提交表单时需要加上参数 k=v,另外提交表单时要额外加入表单 name=pk,value=pv

3.2 WP Cerber

1538291870089

主界面样图

1538291938553

简单设置

  1. 载入默认设置
  2. Load security engine 设置为 Standard mode
  3. 打开提醒功能

3.3 Wordfence Security

1538292248639

主界面样图

1538292281756

关于设置

此插件设置较多,正常使用默认设置即可

评论
还没有评论
    发表评论 说点什么