centos7搭建网站wordpress并实施监控

不建议单独安装各模块,有集成安装包 lnmp lamp,两者比较:https://www.zhihu.com/question/19697826

这里个人采用lnmp进行实验

一.安装参考:http://jwcyber.com/build-site/

lnmp安装的mysql和个人单独安装的mysql位置有点不一样(mysql密码问题搞了几个小时,想吐),建议安装mysql谨慎

二.创建用户与设置目录权限:

1.

useradd –shell /sbin/nologin -g www www (www用户不允许远程shell登陆)


2.

chown -R www:www /home/wwwroot/web_test (设置网站目录用户组与用户)

3.

下载wordpress:git clone https://github.com/WordPress/WordPress.git

默认的wordpress要5.6.2版本php ./upgrade.sh php

4.

mysql用户:(参考:https://blog.csdn.net/kexiaoling/article/details/50250825)

create user ‘www’@’localhost’ identified by ‘www’;

创建www的mysql用户,只能localhost登陆,密码www

修改密码: set password for www=password(‘123456’);

用户授权 ,这很关键:

create database wordpress;创建数据库

grant all on wordpress.* to www; 给www用户wordpress数据库下所有表all权限 (这里只能给这个)

grant select on wordpress.* to www; 给www用户wordpress数据库下所有表select权限

三.关键在监控与限制

监控什么:命令,文件大小,频率,临界点

限制什么:命令,文件大小,频率

命令有哪些:

1.执行执行文件,需要chmod,禁止(可以先查看/usr/bin与/bash/sh、/bash/bin 有哪些不常用且可能危害系统的命令可被禁)

2.当www用户操作uname ,cat /proc等文件时属于危险操作,需要发邮件提醒了

3.find / 时其实也是个危险操作,极有可能是在找遗留的可写文件与目录

4.wget curl 等下载命令是极敏感的命令

5.可能是linux信息收集脚本,当某个时间段有大量命令,出问题了

6.当然可能攻击者传了马,并不做接下来的操作,只做跳板,病毒文件下载利用

文件有哪些:

正常情况下,linux的文件默认权限已经做的很好了

我们可以做的:

1.拷贝攻击者创建的shell文件到我们控制的目录(判断文件大小等)

2.我们关注log文件,记录了攻击手段,考虑性能原因,但是不能一直记录(需要我们就请求有一个简单的判断,在写之前,判断是是否写,写之后,判断是否删除相关记录)

四.脚本
分析了这么多,简单的脚本是要有的

crontab -e 开启计划任务:* * * * /root/xxx/check.sh 没分钟执行一次(参考:https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/crontab.html)

check.sh:

python  check.py(习惯用python,python检测日志)
copy_log.sh (备份日志的,当然时间不是1分钟一次)

这里为什么个人只打算检测这点东西,因为在测试时发现把用户权限都限制死了的,就连webshell都是个人开了个口子进行实验

如果要监测目录等,再添加命令脚本即可

check.py

#coding=utf-8
import re
import sys
import os
import time
f=open("4.txt")
tmp_time=time.strftime('%H-%M-%S',time.localtime(time.time()))
print(tmp_time)
#dangerous_functions定义一些危险的php函数与系统敏命令
dangerous_functions=["",""]
def check():
for i in f.readlines():
i = i.rstrip("\n")
#检测危险函数
for j in dangerous_functions:
if j in i:
notice(i,j)
#判断get请求的长短,过长有问题
if len(i):
notice(i,"a")
pass

#提醒函数
def notice(j):
#....
#备份函数
copy_log()
pass





2019.5.3

发表评论

电子邮件地址不会被公开。 必填项已用*标注