您好,登錄后才能下訂單哦!
安全--怎樣才能追根朔源
有人說安全,安全是什么,怎么做,怎么才能做好,其實是個永無止境的話題。
淺談下工作中那些方法:
1、所有的操作都必須流程化,可控化。
2、考核機制。
3、相應的技術手段,提升安全的門檻<系統權限管理、堡壘機、跳板機、防火墻設置>。
4、主動防御。<蜜罐、waf>
5、探測技術。<nmap zmap>
6、告警響應機制。
7、調查告警原因。
那就談談怎么實現:
原理圖
怎么監控惡意行為
工欲善其事,必先利其器
怎么監控 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 取你想要的東西做參數;這樣實現誰操作了服務器,做了什么都是一目了然。
附件、附上本次需要設計到的文檔,軟件
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。