Định cấu hình tệp nhật ký tùy chỉnh cho iptables


8

Tôi đang cố gắng đăng nhập các gói bị rơi vào một tệp tùy chỉnh thay vì /var/log/messages.

Để đạt được điều này, tôi đã thêm hai dòng này vào cuối tệp cấu hình của mình:

    -A INPUT -m limit --limit 5/min -j LOG --log-prefix "IPTables-INPUT-Dropped: " --log-level 4
    -A OUTPUT -m limit --limit 5/min -j LOG --log-prefix "IPTables-OUTPUT-Dropped: " --log-level 4

Điều này hoạt động vì tôi đã cấu hình chuỗi INPUT và OUTPUT theo DROP theo mặc định, vì vậy nếu gói không đáp ứng bất kỳ quy tắc nào trước đó, nó sẽ được ghi lại và loại bỏ.

Tuy nhiên, tôi không thể đăng nhập chúng vào một tập tin tùy chỉnh. Họ đăng nhập thành công /var/log/messages, nhưng tôi muốn họ đăng nhập /var/log/iptables.log. Tôi đã tạo tệp /etc/rsyslog.d/iptables.confcó nội dung sau:

    :msg, contains, "IPTables-INPUT-Dropped: " - /var/log/iptables.log
    & ~

sau đó tôi khởi động lại rsyslog /etc/init.d/rsyslog restartvà gửi một số gói mà tôi biết sẽ bị hủy. Tuy nhiên, chúng không được đăng nhập vào iptables.log, chúng vẫn đang được đăng nhập /var/log/messages.

Cấu hình nào bị thiếu?

SOLVED Vấn đề là không nên có một khoảng trống giữa -/


Điều đó sẽ làm việc (tôi sử dụng nó). Tuy nhiên, tôi có nó /etc/rsyslog.conftrước các chỉ thị khác, để tin nhắn bị bỏ đi trước khi bất cứ điều gì khác đưa nó lên. Hãy thử điều đó và kill -HUP `pidof rsyslogd`. Có thể mất khoảng trống ở cuối chuỗi trích dẫn.
goldilocks

Tôi đã thêm dòng đầu tiên vào rsyslog.conf nhưng vẫn không hoạt động
Ay0

Câu trả lời:


4

Vấn đề là không nên có khoảng cách giữa - và /


2

Đây là một cách tiếp cận khác bằng cách sử dụng ulogd. Tôi sẽ đề nghị cơ chế này vì nó dừng -m LOGsử dụng cơ chế ghi nhật ký kernel (có tác dụng phụ đáng tiếc dmesglà cũng điền vào nhật ký của bạn ).

Trước tiên, bạn sẽ cần ulogd, mà bạn có thể nhận được với một apt-get install ulogd. Chỉnh sửa của bạn /etc/ulogd.conf, kích hoạt mô-đun này (bằng cách loại bỏ #ở đầu dòng):

plugin="/usr/lib/ulogd/ulogd_LOGEMU.so"

và thay đổi / thêm phần [LOGEMU]:

[LOGEMU]
file="/var/log/iptables.log"
sync=1

Và sau đó khởi động lại ulogd của bạn với /etc/init.d/ulogd restart. Sau đó, thay vì -j LOGsử dụng -j ULOGcác quy tắc iptables của bạn. Mô-đun ULOG không có khái niệm về --log-levelvì vậy bạn có thể loại bỏ các tùy chọn đó. Nó cũng sử dụng --ulog-prefixthay vì --log-prefix.


nó không hoạt động.
Ay0

Bạn đã khởi động lại ulogd sau khi thêm mục? ( /etc/init.d/ulogd restartlà root)
Drav Sloan

vâng, tất nhiên rồi Trên thực tế, nó là ulogd2 chứ không phải ulogd
Ay0

ah bạn cần một bước nữa sẽ thêm nó vào câu trả lời.
Drav Sloan

Không, nó được kích hoạt theo mặc định.
Ay0

2

Điều này có thể được sử dụng:

Để tắt nhật ký iptables trong syslog, hãy sửa đổi như dưới đây trong /etc/rsyslog.d/50-default.conf:

*.*;auth,authpriv.none;kern.*=!kern.warning             -/var/log/syslog

Để đăng nhập tập tin riêng biệt; nối thêm:

kern.=warning -/var/log/iptables.log

sau đó một lần khởi động lại sysloghay rsyslogtailcác bản ghi

/etc/init.d/rsyslog restart

Nó hoạt động trong syslogrsyslogcũng


2

Tài chính

& ~không được dùng trong rsyslog mới, bạn nên sử dụng stopthay thế.

/etc/rsyslog.d/10-iptables

if ( $msg contains 'IN=' and $msg contains 'OUT=' ) 
then { 
    /var/log/10-iptables.log
    stop
}

/etc/logrotate.d/iptables

/var/log/iptables.log
{
        rotate 30
        daily
        missingok
        notifempty
        delaycompress

        postrotate
                service rsyslog rotate > /dev/null
        endscript
}

Lưu ý tôi đặt tiền tố thành 10- để bắt trước khi nó đạt các quy tắc mặc định (50 mặc định).


0

Một giải pháp làm việc với ulogd

a) Đảm bảo bạn có mô-đun này khi bắt đầu

modprobe nf_log_ipv4
cp /etc/modules /etc/modules.bak
echo nf_log_ipv4 >> /etc/modules

b) chỉnh sửa tệp /etc/ulogd.conf kích hoạt các plugin đó (uncomment #)

plugin="/usr/lib64/ulogd/ulogd_inppkt_NFLOG.so"
plugin="/usr/lib64/ulogd/ulogd_filter_IFINDEX.so"
plugin="/usr/lib64/ulogd/ulogd_filter_IP2STR.so"
plugin="/usr/lib64/ulogd/ulogd_filter_PRINTPKT.so"
plugin="/usr/lib64/ulogd/ulogd_output_LOGEMU.so"
plugin="/usr/lib64/ulogd/ulogd_raw2packet_BASE.so"

thêm dòng này trước # stack nhận xét đầu tiên

stack=firewall11:NFLOG,base1:BASE,ifi1:IFINDEX,ip2str1:IP2STR,print1:PRINTPKT,emu11:LOGEMU

và cuối cùng ở cuối tập tin thêm những dòng đó

[firewall11]
group=11

[emu11]
file="/var/log/iptables.log"
sync=1

c) Bây giờ, tôi thích sử dụng phương pháp cũ của tập lệnh iptables thay vì tường lửa, trong tập lệnh iptables của tôi, tôi sử dụng các dòng đó để ghi nhật ký.

# Log
iptables -N LOGGING
iptables -A INPUT -j LOGGING
iptables -A FORWARD -j NFLOG
iptables -A LOGGING -j NFLOG --nflog-prefix "[firewall-drop]:" --nflog-group 11
iptables -A LOGGING -j DROP

d) phần cuối cùng

touch /var/log/iptables.log
systemctl restart ulogd

Xác minh nếu làm việc với lệnh này

tail -f /var/log/iptables.log

Bạn sẽ thấy một số dòng sau một sự kiện: nmap portscan hoặc đơn giản là telnet đến máy của bạn (hy vọng bị vô hiệu hóa hoặc tường lửa).

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.