Syslog是一种标准的日志记录协议,广泛用于收集和传输系统日志数据。通过Syslog实现系统审计可以帮助组织满足合规要求、监控系统活动并调查安全事件。
# 编辑rsyslog配置文件
sudo vi /etc/rsyslog.conf
# 启用远程日志记录(取消注释或添加)
module(load="imudp")
input(type="imudp" port="514")
module(load="imtcp")
input(type="imtcp" port="514")
# 重启rsyslog服务
sudo systemctl restart rsyslog
# 在中央日志服务器上配置rsyslog
sudo vi /etc/rsyslog.conf
# 添加以下内容
$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?RemoteLogs
& ~
# 创建日志目录
sudo mkdir /var/log/hosts
sudo chmod -R 755 /var/log/hosts
# 重启服务
sudo systemctl restart rsyslog
# 配置sudo命令审计
sudo visudo
# 添加以下行
Defaults logfile="/var/log/sudo.log"
Defaults log_input, log_output
# 在rsyslog中创建过滤规则
:fromhost-ip, isequal, "192.168.1.100" /var/log/web-server.log
:msg, contains, "authentication failure" /var/log/auth-failures.log
# 配置TLS加密
sudo vi /etc/rsyslog.conf
# 添加以下内容
module(load="gtls")
input(type="imtcp" port="6514" ruleset="remote"
StreamDriver.Name="gtls"
StreamDriver.Mode="1"
StreamDriver.AuthMode="x509/name"
PermittedPeer=["audit.example.com"]
StreamDriver.PermitExpiredCerts="off")
# 配置logrotate
sudo vi /etc/logrotate.d/audit
# 添加以下内容
/var/log/hosts/*.log {
daily
missingok
rotate 30
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
使用工具如ELK Stack(Elasticsearch, Logstash, Kibana)或Graylog进行日志分析:
# Logstash配置示例
input {
syslog {
port => 514
type => "syslog"
}
}
filter {
if [type] == "syslog" {
grok {
match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
}
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "syslog-%{+YYYY.MM.dd}"
}
}
日志未传输:
日志格式混乱:
性能问题:
通过以上配置,您可以建立一个完整的基于Syslog的系统审计解决方案,满足安全监控和合规要求。