dmesg tràn ngập các bản ghi tường lửa


8

Trong iptables của tôi, tôi có một quy tắc ghi lại các gói bị mất:

-A INPUT -i eth0       -j   LOG  --log-prefix "FW: " --log-level 7
-A INPUT -i eth0       -j   DROP

Và trong /etc/rsyslog.conf, tôi có một quy tắc khác gửi các bản ghi này đến một tệp chuyên dụng /var/log/firewall.log.

:msg, contains, "FW: "                    -/var/log/firewall.log
& ~

Việc & ~xóa các bản ghi ngay lập tức, để chúng không bị ngập sysloghoặc các tệp nhật ký khác.

Điều này hoạt động tốt, ngoại trừ việc nó tràn ngập dmesgcác bản ghi tường lửa (không phải /var/log/dmesglà đầu ra của lệnh dmesg).

Có cách nào để ngăn chặn những bản ghi này được hiển thị trong dmesg?


Điểm nào trong việc đăng nhập mọi thứ?
0xC0000022L

1
Nó thực sự không có ý tưởng tốt để ghi lại tất cả các gói bị rơi. Điều tốt hơn là loại bỏ các triệu chứng sẽ được cụ thể hơn với quy tắc đăng nhập của bạn. Ví dụ, sẽ không khôn ngoan khi ghi nhật ký bất kỳ gói tin nào không liên quan đến bất kỳ kết nối nào và không làm gì cả »đặc biệt« (như kích hoạt kết nối). Sẽ tốt hơn nhiều nếu cắt nó xuống những thứ có liên quan như »Máy chủ A muốn kết nối với cổng B«. Có khả năng số lượng lý do một gói bị bỏ đi lớn hơn số lượng lý do bạn sẽ bỏ nó vì một lý do có liên quan .
Andreas Wiese

1
@Andreas Wiese - Tôi đã đơn giản hóa quy tắc của mình vì câu hỏi này. Quy tắc của tôi là tinh vi và cụ thể hơn. Nhưng dù sao, câu hỏi là làm thế nào để ngăn chặn dmesgbị ngập lụt, không phải về các quy tắc tường lửa.
Martin Vegter

Xem thêm câu trả lời này về trình nền ghi nhật ký Netfilter ulogd2. Đó là cách tôi giải quyết vấn đề.
mivk

Câu trả lời:


4

Bạn có thể sử dụng NFLOGmục tiêu thay vì LOG:

NFLOG
    This target provides logging of matching packets. When this  target  is  set  for  a
    rule, the Linux kernel will pass the packet to the loaded logging backend to log the
    packet. This is usually used in combination with nfnetlink_log as  logging  backend,
    which  will multicast the packet through a netlink socket to the specified multicast
    group. One or more userspace processes may subscribe to the  group  to  receive  the
    packets.  Like  LOG, this is a non-terminating target, i.e. rule traversal continues
    at the next rule.

Tất cả những gì bạn cần là một nfnetlink_logchương trình đăng nhập có khả năng. Tin nhắn sẽ đến đó và quá trình không gian người dùng sẽ quyết định có ghi nhật ký gói hay không.

Một điều khác bạn có thể thử sẽ giới hạn LOGquy tắc ở một ngưỡng cụ thể:

-A INPUT -i eth0 -m limit --limit 10/minutes -j LOG --log-prefix "FW: " --log-level 7
-A INPUT -i eth0 -j DROP

Điều này sẽ trung bình đăng nhập 10 gói mỗi phút. Tất nhiên bạn có thể điều chỉnh điều này theo nhu cầu của bạn.


Tôi không thể tìm thấy bất kỳ thông tin nào về cách cấu hình rsyslogđể ghi nhật ký các NFLOGgói. Tôi cần một số giải pháp sẽ làm việc với rsyslog.
Martin Vegter

2
@MartinVegter - NFLOG sẽ hoạt động với rsyslog. Đối với NFLOG, bạn sẽ sử dụng ulogd (tôi nghĩ rằng ulogd2 là cần thiết) làm trung gian. Nó sẽ lắng nghe trên ổ cắm netlink để lấy nhật ký và phân phối chúng (như được cấu hình) để syslog. Nếu ulogd2 không có sẵn, hãy sử dụng ulogd (1.x) và mục tiêu ULOG.
Christopher Cashell

0

Nó có thể liên quan đến cấp độ nhật ký bạn đang sử dụng trong iptables. Theo tôi hiểu từ các cấp nhật ký tài liệu rsyslog là: "Ưu tiên là một trong những từ khóa sau, theo thứ tự tăng dần: gỡ lỗi, thông tin, thông báo, cảnh báo, cảnh báo (giống như cảnh báo), err, error (giống như err), phê bình, cảnh giác, nổi lên, hoảng loạn (giống như nổi lên). " Còn về việc cố gắng chỉ định cấp độ nhật ký trong iptables bằng cách sử dụng tên của nó, tức là 'thông báo'. Vâng phục vụ tôi ngay để đăng mà không cần kiểm tra vì bây giờ tôi nghĩ đó không phải là vấn đề. Tôi đã thực hiện một sơ đồ tương tự như đã nêu ở trên và tôi gặp vấn đề tương tự. Hạt nhân centos 7 của tôi là v3.10.0 và dường như từ phiên bản 3.5, có vẻ như việc ghi nhật ký kernel được thực hiện bằng cách sử dụng / dev / kmsg và tôi cho rằng dmesg bằng cách nào đó có được đầu vào từ đó.


0

Khi bạn đã đặt mức ghi nhật ký thành 7 bằng lệnh:

-A INPUT -i eth0       -j   LOG  --log-prefix "FW: " --log-level 7

Sau đó, bạn có thể chỉ cần lọc các tin nhắn này bằng cách chuyển ngưỡng cấp độ cho dmesg:

dmesg --level=err,warn

-7

Bạn quan tâm làm gì? dmesglà một công cụ cấp thấp để in các tin nhắn kernel gần đây và bạn đã yêu cầu kernel ghi nhật ký các gói bị rơi.

Định cấu hình hệ thống nhật ký hệ thống của bạn để ghi nhật ký tin nhắn iptables trong một tệp nhật ký riêng biệt với các thông điệp kernel khác và sử dụng các tệp nhật ký mà nó ghi thay vì dmesg.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.