RSysLog

Trong hệ điều hành Linux, nhiều ứng dụng gửi nhật ký đến syslog, cơ chế ghi nhật ký chính. Thực tiễn bảo mật tốt nhất thường cho rằng thật lý tưởng khi gửi nhật ký của bạn đến một hệ thống riêng, như  Loggly https://www.loggly.com/ , giải pháp SaaS để quản lý dữ liệu nhật ký.

Có nhiều lý do để làm điều này, nhưng những lý do chính là:

  • Sao lưu dữ liệu nhật ký quan trọng
  • Khả năng xác minh tính toàn vẹn của nhật ký và phát hiện các thay đổi dữ liệu
  • Hợp nhất nhật ký trên các hệ thống

Loggly có nhiều tính năng, như được hiển thị bên dưới, nhưng một tính năng, đặc biệt, là khả năng triển khai không có tác nhân của Loggly.

  • Giám sát nhiều hệ thống đám mây, nhật ký nội bộ và nhật ký ứng dụng
  • Tích hợp với các hệ thống của bên thứ ba, chẳng hạn như Slack, GitHub hoặc PagerDuty
  • Phân tích và trực quan hóa dữ liệu bằng đồ thị và KPI
  • Triển khai miễn phí đại lý

Trong bài viết này, chúng tôi sẽ giải thích cách tích hợp Loggly với rsyslog https://www.rsyslog.com/ , một sự thay thế phổ biến và mạnh mẽ cho syslogd. Điều này có nghĩa là không có tác nhân cần thiết trên hệ thống Linux và rsyslog có thể được cấu hình để gửi trực tiếp nhật ký tới Loggly.

Cài đặt rsyslog

Nhiều hệ thống đi kèm với rsyslog được cài đặt sẵn, nhưng nếu không, một vài bước là cần thiết để cài đặt. Mặc dù rsyslog thường được bao gồm trong kho của nhiều bản phân phối, nó có thể không phải là phiên bản mới nhất. Trong bài viết này, Ubuntu là sự phân phối của sự lựa chọn, đáng chú ý là ngày 18.04. Hướng dẫn cho các bản phân phối khác được đặt ở đây https://github.com/rsyslog/rsyslog .

Phần này có thể nói cài đặt từ nguồn, nhưng các kho được liệt kê sẽ cho phép bạn cài đặt các phiên bản mới nhất của gói.

Thêm kho lưu trữ rsyslog

Trong trường hợp của Ubuntu, chúng ta cần thêm kho lưu trữ PPA Adiscon.

apt-get update && apt-get install -y software-properties-common
add-apt-repository -y ppa:adiscon/v8-stable

Cài đặt rsyslog

Có hai gói chính chúng ta cần cài đặt cho rsyslog. Ngoài chính gói cơ sở, rsyslog-gnutlsgói cho phép chúng tôi sử dụng kết nối được mã hóa với dịch vụ Loggly.

apt-get update
apt-get install rsyslog
apt-get install rsyslog-gnutls

Thêm chứng chỉ TLS Loggly

Trước khi chúng tôi định cấu hình rsyslog với TLS, trước tiên chúng tôi cần tải xuống và làm cho các chứng chỉ Loggly có thể truy cập được.

sudo mkdir /etc/rsyslog.d/keys/ca.d
wget -O /etc/rsyslog.d/keys/ca.d/logs-01.loggly.com_sha12.crt <https://logdog.loggly.com/media/logs-01.loggly.com_sha12.crt>

Xác minh quyền thư mục công việc

Có một số trường hợp các /var/spool/rsyslogquyền không chính xác và đoạn mã sau sẽ xác minh rằng các quyền được đặt chính xác (trong ngữ cảnh của Ubuntu 18.04).

sudo chown -R syslog:adm /var/spool/rsyslog
sudo chmod -R 644 /var/spool/rsyslog

Cấu hình Loggly

Theo thời gian, các chỉ thị cấu hình và cú pháp đã thay đổi cho rsyslog. Thông thường, có một sự pha trộn của các chỉ thị cũ và mới có sẵn. Dưới đây là cấu hình mặc định cho rsyslog chỉ sử dụng cú pháp mới. Lý do chính để sửa đổi cấu hình này là để trỏ rsyslog vào chứng chỉ mà chúng ta vừa tải xuống.

#################
#### MODULES ####
#################

module( load="imuxsock" )
module( load="imklog" )
module( load="builtin:omfile"
        fileOwner="syslog"
        fileGroup="adm"
        fileCreateMode="0644"
        dirOwner="syslog"
        dirGroup="adm"
        dirCreateMode="0755"
)
module( load="impstats"
        interval="600"
        severity="7"
        log.syslog="off"
        log.file="/var/log/rsyslog_stats.log"
)

###########################
#### GLOBAL DIRECTIVES ####
###########################

global (
    maxMessageSize="64k"
    defaultNetstreamDriverCAFile="/etc/rsyslog.d/keys/ca.d/logs-01.loggly.com_sha12.crt"
    defaultNetstreamDriver="gtls"
    workDirectory="/var/spool/rsyslog"
)

#
# Include all config files in /etc/rsyslog.d/
#
include(file="/etc/rsyslog.d/*.conf")

Phần quan trọng của mã là defaultNetstreamDriverCAFilevà defaultNetstreamDriver. Các chỉ thị này cần được cấu hình chính xác để trỏ đến chứng chỉ đã tải xuống.

Sau khi đăng nhập vào tài khoản Loggly của bạn, bạn sẽ cần tạo mã thông báo khách hàng. Điều này nằm trong Cài đặt nguồn> Mã thông báo khách hàng. Vì có một giao diện người dùng mới sắp ra mắt, bao gồm bên dưới là ảnh chụp màn hình cho cả giao diện cũ và mới.

Mã thông báo khách hàng để tạo mã thông báo khách hàng mới
Mã thông báo khách hàng để tạo mã thông báo khách hàng mới

Khi bạn đã điều hướng đến Mã thông báo của khách hàng, hãy nhấp vào nút Thêm Thêm mới để tạo mã thông báo mới. Tốt nhất là cung cấp mã thông báo này.

Mã thông báo khách hàng để tạo mã thông báo khách hàng mới

Cuối cùng, bạn sẽ có một mã thông báo mà bạn có thể sử dụng. Sao chép này để sử dụng sau trong các tập tin cấu hình của chúng tôi.

Mã thông báo khách hàng để tạo mã thông báo khách hàng mới

Cấu hình rsyslog cho Loggly

Bước cuối cùng để định cấu hình rsyslog cho Loggly là xác định tệp cấu hình của chúng tôi và khởi động lại rsyslog. Dưới đây là một tệp cấu hình mặc định nằm trong /etc/rsyslog.d/22-remote.confđó sẽ cho rsyslog gửi syslogcác sự kiện tới Loggly.

Số 22này không quan trọng, đây chỉ là một cách để xác định thứ tự tải các tệp cấu hình. Chọn một số có ý nghĩa trong cấu hình của bạn.

template(
    name="LogglyFormat"
    type="string"
    string="<%pri%>%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% %msgid% [ca35d899-0232-4888-a8d5-118fbf5caf8d tag=\\"RsyslogTLS\\"] %msg%\\n"
)

# Send all Syslog Messages to Remote
action(
    type="omfwd"
    protocol="tcp"
    target="logs-01.loggly.com"
    port="6514"
    template="LogglyFormat"
    StreamDriver="gtls"
    StreamDriverMode="1"
    StreamDriverAuthMode="x509/name"
    StreamDriverPermittedPeers="*.loggly.com"
    ResendLastMSGOnReconnect="on"
    queue.spoolDirectory="/var/spool/rsyslog"
    queue.filename="queue_sendToLoggly"
    queue.size="5000"
    queue.dequeuebatchsize="300"
    queue.highwatermark="4500"
    queue.lowwatermark="3500"
    queue.maxdiskspace="1g"
    queue.saveonshutdown="on"
    queue.type="LinkedList"
)

Trong cấu hình này, chúng tôi xác định định dạng để gửi nhật ký, giúp Loggly phân loại đúng các bản ghi. Các actioncấu hình để gửi tất cả Syslogcác tin nhắn đến Loggly theo mặc định. Cuối cùng để cấu hình này có hiệu lực, chúng ta cần khởi động lại rsyslog.

sudo service rsyslog restart

rsyslog Xử lý sự cố

Nếu bạn gặp phải sự cố với cấu hình, có xu hướng là quyền hoặc cấu hình sai, thì bạn có thể xem nhật ký hiện tại ở đây : /var/log/rsyslog.log. Ngoài ra, để bật mức ghi nhật ký cao hơn, hãy thêm các dòng sau vào rsyslog.conftệp của bạn và khởi động lại rsyslog.

$DebugFile /var/log/rsyslog_debug.log
$DebugLevel 2

Phần kết luận

Sự kết hợp của rsyslog và Loggly là một sự kết hợp mạnh mẽ. Cho phép bạn củng cố, xác nhận và phân tích nhật ký của bạn là rất quan trọng để duy trì một tư thế bảo mật thích hợp. Bạn sẽ nhanh chóng thấy rằng các tính năng nâng cao của Loggly rất đáng để thiết lập khi được sử dụng cùng với cấu hình ghi nhật ký nâng cao của bạn cho rsyslog.

Để lại một bình luận