Ubuntu 使用crontab定时备份日志--日志外发

admin 2022年3月5日04:58:04评论177 views字数 2775阅读9分15秒阅读模式

rsyslog

在Linux上,默认情况下,所有日志文件都位于/var/log目录下,有几种类型的日志文件存储不同的消息,可以是cron,内核,安全性,事件,用户,这些日志文件大多由rsyslog服务控制。

在最近使用systemd的系统上,一些日志由journald守护程序管理,它们是二进制格式的,这些日志是易失性的,因为它们被写入RAM并且不能承受系统重启,它们经常在/run/log/journal/上找到,但请注意,也可以将journald配置为通过写入文件来永久存储日志消息。

我们将把rsyslog服务器配置为集中式日志管理系统,rsyslog服务将侦听udp/tcp端口, rsyslog使用的默认端口是514,在客户端系统上,rsyslog将通过UDP或TCP端口通过网络收集日志并将日志发送到rsyslog服务器。

使用syslog消息时,存在表征日志文件的优先级/严重性级别,即:

emerg,panic(紧急):0级 - 这是最低的日志级别,系统无法使用。

警报(警报):1级 - 必须立即采取行动。

错误(错误):3级 - 危急情况。

警告(警告):等级4 - 警告条件。

通知(通知):第5级 - 正常但重要的条件。

info(信息):6级 - 信息性消息。

debug(Debugging):Level 7 - 这是最高级别 - 调试级别的消息。

安装Rsyslog

默认情况下,在Ubuntu 16.04系统上Rsyslog安装非常的简单,只需要一个命令,你可以通过运行以下命令来安装它:

sudo apt-get install rsyslog

安装后,检查服务以查看它是否正在运行,运行sudo systemctl status rsyslog命令即可:

systemctl status rsyslog

一、日志外发(日志服务器配置)

1、登录到服务器/日志服务器

2、编辑配置文件

sudo vim /etc/rsyslog.conf

取消注释udp和tcp端口绑定的行:

module(load="imudp")

input(type="imudp" port="514")

# provides TCP syslog reception

module(load="imtcp")

input(type="imtcp" port="514")

3、如果你想限制访问特定子网,IP或域,请添加如下:

$AllowedSender TCP, 127.0.0.1, 192.168.10.0/24, *.example.com

可以在输入input(type=“imtcp” port=“514”)行后添加上面的行,请记住用正确的值替换给定的值。如下:


input(type="imtcp" port="514")$AllowedSender TCP, 127.0.0.1, 192.168.10.0/24, *.example.com

4、创建用于接收远程消息的新模板(在日志服务器配置)

让我们创建一个模板,指示rsyslog服务器如何存储传入的syslog消息,在GLOBAL DIRECTIVES部分之前添加模板:

$template remote-incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"

*.* ?remote-incoming-logs

& ~

收到的日志将使用上面的模板进行解析并存储在目录/var/log/中,文件命名遵循约定:%HOSTNAME% and %PROGRAMNAME%变量,即客户端主机名和生成日志消息的客户端工具:

& ~指示rsyslog守护程序仅将日志消息存储到指定的文件。
Ubuntu 使用crontab定时备份日志--日志外发
可以使用的其它变量包括:

%syslogseverity%, %syslogfacility%, %timegenerated%, %HOSTNAME%, %syslogtag%, %msg%, %FROMHOST-IP%, %PRI%, %MSGID%, %APP-NAME%, %TIMESTAMP%, %$year%, %$month%, %$day%

重新启动rsyslog服务以使更改生效:

sudo systemctl restart rsyslog

5、确认服务是否正在侦听已配置的端口:

ss -tunelp | grep 514

Ubuntu 使用crontab定时备份日志--日志外发
6、配置Rsyslog防火墙
如果你的ufw防火墙服务正在运行,请允许rsyslog防火墙端口:

sudo ufw allow 514/tcp

sudo ufw allow 514/udp
4、保存退出,重启服务   

```bash
service syslog restart

二、日志外发(客户端)

sudo vim /etc/rsyslog.conf

1、允许保留FQDN:

$PreserveFQDN on

2、添加远程rsyslog服务器:


*.* @10.1.30.33:514

还可以使用FQDN而不是服务器IP地址:

*.* @fqdn-of-rsysog-server:514

以上行将允许通过UDP发送日志,因为tcp使用@@而不是单个@:

*.* @@10.1.30.33:514

或者:

*.* @@fqdn-of-rsysog-server:514
当rsyslog服务器关闭时,还要添加以下内容:

$ActionQueueFileName queue

$ActionQueueMaxDiskSpace 1g

$ActionQueueSaveOnShutdown on

$ActionQueueType LinkedList

$ActionResumeRetryCount -1

然后重启rsyslog服务:

systemctl restart rsyslog

二、 本地定期备份

  1. 使用crontab -e命令

  2. crontab -e

  3. 每天23.30运行备份脚本
    或直接编辑

vi /etc/crontab

Ubuntu 使用crontab定时备份日志--日志外发

30 23 * * * sh /var/back_sh/back.sh > /dev/null 2>&1

注意(> /dev/null 2>&1必须加 否则可能文件备份不全)
每天23.30运行备份脚本
脚本内容:

echo "The program being executed......"
back_dir=/var/dengBao/log_back
file_dir=/var/log

#定义备份文件名字
file_name=`date +%Y-%m-%d --date='-1 day'`

if [[ ! -d "${back_dir}" ]]; then
mkdir "${back_dir}"
fi

if [[ ! -d "${back_dir}/${file_name}" ]]; then
mkdir "${back_dir}/${file_name}"
fi

cp -r ${file_dir}/* ${back_dir}/${file_name}/
echo "succeed"


欢迎关注公众号:


原文始发于微信公众号(瓜神学习网络安全):Ubuntu 使用crontab定时备份日志--日志外发

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年3月5日04:58:04
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Ubuntu 使用crontab定时备份日志--日志外发http://cn-sec.com/archives/816815.html

发表评论

匿名网友 填写信息