是谁在撩动着个人服务器

            安全--怎样才能追根朔源python

    有人说安全,安全是什么,怎么作,怎么才能作好,实际上是个永无止境的话题。
linux

浅谈下工做中那些方法:ios

一、全部的操做都必须流程化,可控化。shell

二、考核机制。数据库

三、相应的技术手段,提高安全的门槛<系统权限管理、堡垒机、跳板机、防火墙设置>。安全

四、主动防护。<蜜罐、waf>bash

五、探测技术。<nmap zmap>服务器

六、告警响应机制。ide

七、调查告警缘由。测试


那就谈谈怎么实现:

原理图

wKioL1lEBCGQVXksAAFtn7UeTJc815.png



  • 怎么监控恶意行为

工欲善其事,必先利其器


怎么监控 Windows server服务器  配置安全-高级审核策略,怎么配置,请听我慢慢到来。

实例以下:《可根据生产环境,斟酌采起各类日志,一下只是实例》



账户登陆事件(此类别中的事件帮助文档域尝试对账户数据、域控制器或本地安全账户管理器 (SAM)  进行身份验证。与登陆和注销事件(它们跟踪访问特殊计算机的尝试)不一样,此类别中的事件报告正在使用的账户数据库。) 凭据验证
审核由对用户账户登陆凭据的验证测试生成的事件。 成功、失败
Kerberos 身份验证服务
审核  Kerberos 服务票证请求生成的事件。 失败、成功
Kerberos服务票证操做
审核由响应为用户账户登陆提交的凭据请求(非凭据验证或  Kerberos 票证)生成的事件。 成功、失败
其余账户登陆事件
审核由  Kerberos 身份验证票证授予票证 (TGT) 请求生成的事件。 成功、失败
账户管理事件(可使用此类别中的设置监视对用户和计算机账户和组的更改。) 用户账户管理
审核对用户账户的更改。 成功、失败
计算机账户管理
审核由对计算机账户的更改(如当建立、更改或删除计算机账户时)生成的事件。 成功、失败
安全组管理
审核由对安全组的更改生成的事件。 成功、失败
通信组管理
审核由对通信组的更改生成的事件。注意:仅在域控制器上记录此子类别中的事件。 成功、失败
应用程序组管理
审核由对应用程序组的更改生成的事件。 成功、失败
其余账户管理事件
审核由此类别中不涉及的其余用户账户更改生成的事件。 成功、失败



  • 本地会产生日志,怎么将日志发送到远端日志服务器,简单图上面已经标明,利用evtsys.exe 发送到指定的log服务器。


  • Linux 服务器开启审计策略

1.1    命令时间戳记录

    /etc/bashrc文件中增长以下行

    export  HISTTIMEFORMAT="%F %T "


2.1    日志审计策略配置


    /etc/audit/audit.rules

        实现监控全部用户的登陆行为,包含用户全部操做,以及shell脚本中的命令

    -a exit,always-F arch=b64 -S execve -k exec

    -a exit,always -Farch=b32 -S execve -k exec

2.2  实现对重点配置文件的监控(根据实际应用额外添加文件列表)    

    -w /etc/crontab -p wa -kcrontab

    -w /etc/hosts -p wa -khosts

    -w /etc/hosts.allow-p wa -k hosts-allow

    -w /etc/hosts.deny-p wa -k hosts-deny

    -w /etc/fstab -p wa -k fstab

    -w /etc/passwd-p wa -k passwd

    -w /etc/shadow-p wa -k shadow

    -w /etc/group-p wa -k group


3.1    

    配置audit日志,audit日志文件自动保存在/var/log/audit/目录中。

    num_logs = 4       #个数

    max_log_file = 50   # 大小(MB)



4.1    添加无用日志过滤规则:

    

    /etc/rsyslog.d/目录添加audit_filter.conf文件,并在文件中添加以下内容:

:msg, ereregex,"(bin|sbin|sa)\/(ping|top|mpstat|iostat|iotop|vmstat|sar|sadc|sh)\""~

:msg, ereregex,"(sbin|udev)\/(fstab_import|udisks-part-id|path_id|edd_id|scsi_id)\""~

:msg, ereregex,"(bin|sbin)\/(tr|sort|wc|cut|awk|gawk|grep|fgrep|egrep|sed|head|tail|tailf)\""~

:msg, ereregex,"(bin|sbin)\/(sleep|ls|expr|nohup|date|cat|du|dirname|tar|gzip|df|sg_persist|ip)\""~

:msg, ereregex,"(bin|sbin)\/(basename|hostname|readlink|bc|touch|dmesg)\"" ~

:msg, ereregex,"(bin|sbin)\/(consoletype|blkid|lsblk)\"" ~

:msg, ereregex,"\"(ping|top|mpstat|iostat|iotop|vmstat|sar|sadc|sh)\"" ~

:msg, ereregex,"\"(fstab_import|udisks-part-id|path_id|edd_id|scsi_id)\""~

:msg, ereregex,"\"(tr|sort|wc|cut|awk|gawk|grep|fgrep|egrep|sed|head|tail|tailf)\""~

:msg, ereregex,"\"(sleep|ls|expr|nohup|date|cat|du|dirname|tar|gzip|df|sg_persist|ip)\""~

:msg, ereregex,"\"(basename|hostname|readlink|bc|touch|dmesg)\"" ~

:msg, ereregex,"\"(consoletype|blkid|lsblk)\"" ~

:msg, ereregex,"(type=PATH)" ~

:msg, ereregex,"(key=\"exec\"|type=EXECVE)" @x.x.x.x:514


启动服务

# service auditd start

  # service rsyslog start


5.1     附上一个批量部署的脚本

            

#!/bin/bash
#
# Description: Linux audit and syslog/rsyslog autoconfig Scripts.
#
# Author: ldyhj <qiongfei@vip.qq.com>
#
# ver 1.0
# --------------------------------------------------------------------------------

OS_VERSION=""
uname -r | grep el5 > /dev/null && OS_VERSION=el5
uname -r | grep el6 > /dev/null && OS_VERSION=el6
uname -r | grep el7 > /dev/null && OS_VERSION=el7

if [ "$OS_VERSION" = "el7" -o "$OS_VERSION" = "el6" ];then
    FILENAME=/etc/rsyslog.conf
    SERVER=rsyslog
elif [ "$OS_VERSION" = "el5" ];then
    FILENAME=/etc/syslog.conf
    SERVER=syslog	
fi

unset ret
ret=`egrep ^active[[:space:]]*= /etc/audisp/plugins.d/syslog.conf 2> /dev/null |wc -l`
if [ "$ret" -eq 0 ];then
    echo "active = yes" >> /etc/audisp/plugins.d/syslog.conf
    service auditd restart
elif [ "$ret" -eq 1 ];then
    ret1=`egrep ^active[[:space:]]*= /etc/audisp/plugins.d/syslog.conf |awk -F'=' '{print $NF}' |awk 'gsub(/^ *| *$/,"")'`
    if [ "$ret1" != "yes" ];then
        sed -i 's/^\(active[[:space:]]*=\).*/\1 yes/g' /etc/audisp/plugins.d/syslog.conf
        service auditd restart
	fi
elif [ "$ret" -gt 1 ];then
    sed -i 's/^\(active[[:space:]]*=.*\)/#\1/g' /etc/audisp/plugins.d/syslog.conf
    echo "active = yes" >> /etc/audisp/plugins.d/syslog.conf
    service auditd restart
fi
egrep ^active[[:space:]]*= /etc/audisp/plugins.d/syslog.conf

unset ret
unset ret1

ret=`egrep "^\*\.\*[[:space:]]*@" $FILENAME 2> /dev/null |wc -l`
if [ "$ret" -eq 0 ];then
    echo "*.* @x.x.x.x:514" >> $FILENAME
    service $SERVER restart
elif [ "$ret" -eq 1 ];then
    ret1=`egrep "^\*\.\*[[:space:]]*@" $FILENAME |awk -F'@' '{print $2}' |awk 'gsub(/^ *| *$/,"")'`
	if [ "$ret1" != "x.x.x.x:514" ];then
        sed -i 's/^\(\*\.\*[[:space:]]*@\).*/\x.x.x.x:514/g' $FILENAME
        service $SERVER restart
    fi
elif [ "$ret" -gt 0 ];then
    sed -i 's/^\(\*\.\*[[:space:]]*@.*\)/#\1/g' $FILENAME
    echo "*.* @x.x.x.x:514" >> $FILENAME
    service $SERVER restart
fi
	
egrep "\*\.info[[:space:]]*@" $FILENAME > /dev/null
if [ $? -eq 0 ];then
    sed -i 's/^\(\*\.info[[:space:]]*@.*\)/#\1/g' $FILENAME
    service $SERVER restart
fi

egrep "^\*\.\*[[:space:]]*@" $FILENAME



6.1    linux rsyslog服务器  配置

    /etc/rsyslog.conf

    配置模板

   

$templatepipeformat,"%TIMESTAMP% %fromhost-ip%%syslogtag%%msg:::drop-last-lf%\n"

$templateevtsysformat,"%TIMESTAMP% %fromhost-ip% %pri-text% %FROMHOST%%fromhost-ip% %syslogtag%%msg:::drop-last-lf%\n"

$templateruncmdformat,"%TIMESTAMP% %HOSTNAME% %fromhost-ip%%msg:::drop-last-lf%\n"

                根据需求进行摘选模板存放位置

                

if$fromhost-ip == 'IP' or $fromhost-ip == '接收来自客户端IP' or $fromhost-ip== '接收IP' or $fromhost-ip == '接收客户端IP' or $fromhost-ip =='接收客户端IP' or $fromhost-ip == '接收客户端IP' or $fromhost-ip =='接收客户端IP' then |/var/tmp/log


    配置完成后,检查语法  rsyslogd -N1

    重启服务


有了数据,你想实现什么样的告警都须要去摸索

目前,我采用的是电视屏幕展现,加事件风险等级作报警短信告警,由于采用了固定的rsyslog模板,可使用 AWK  python 取你想要的东西作参数;这样实现谁操做了服务器,作了什么都是一目了然。



附件、附上本次须要设计到的文档,软件

相关文章
相关标签/搜索