安全--怎樣才能追根朔源python
有人說安全,安全是什麼,怎麼作,怎麼才能作好,實際上是個永無止境的話題。
linux
淺談下工做中那些方法:ios
一、全部的操做都必須流程化,可控化。shell
二、考覈機制。數據庫
三、相應的技術手段,提高安全的門檻<系統權限管理、堡壘機、跳板機、防火牆設置>。安全
四、主動防護。<蜜罐、waf>bash
五、探測技術。<nmap zmap>服務器
六、告警響應機制。ide
七、調查告警緣由。測試
那就談談怎麼實現:
原理圖
怎麼監控惡意行爲
工欲善其事,必先利其器
怎麼監控 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 取你想要的東西作參數;這樣實現誰操做了服務器,作了什麼都是一目瞭然。
附件、附上本次須要設計到的文檔,軟件