मैं एक अलग फ़ाइल में iptables संदेशों को लॉग करने के लिए syslog.conf फ़ाइल को कैसे कॉन्फ़िगर कर सकता हूं?


10

किसी विशिष्ट फ़ाइल के /etc/syslog.confबारे iptablesमें लॉग जानकारी को सहेजने के लिए मैं फ़ाइल को कैसे कॉन्फ़िगर कर सकता हूं ।

मैं इन सूचनाओं को अलग से सहेजना चाहता हूं, इसलिए मैं जो चाहता हूं उसे आसानी से और तेजी से निकाल सकता हूं।


क्या आप syslog.conf या rsyslog.conf का उपयोग कर रहे हैं?
SLM

जवाबों:


13

syslog

के लिए मैन पेज पर एक नज़र डालें iptables। यह एक लक्ष्य को दर्शाता है जिसे कहा जाता LOGहै कि आप क्या चाहते हैं।

उदाहरण

  1. LOG4 के लिए लॉगिंग स्तर सेट करें ।

    # DROP everything and Log it
    iptables -A INPUT -j LOG --log-level 4
    iptables -A INPUT -j DROP
    
  2. syslog.confइन संदेशों को एक अलग फ़ाइल में लिखने के लिए कॉन्फ़िगर करें।

    # /etc/syslog.conf
    kern.warning     /var/log/iptables.log
    
  3. Syslogd को पुनरारंभ करें।

    Debian / Ubuntu

    $ sudo /etc/init.d/sysklogd restart
    

    फेडोरा / CentOS / RHEL

    $ sudo /etc/init.d/syslog restart
    

नोट: लॉगिंग की इस विधि को निश्चित प्राथमिकताएँ कहा जाता है। वे या तो संख्याएँ या नाम हैं (1,2,3,4, ..) या (DEBUG, WARN, INFO, आदि)।

rsyslog

यदि संयोग से आप उपयोग कर रहे हैं rsyslog, तो आप संपत्ति आधारित फ़िल्टर बना सकते हैं जैसे:

# /etc/rsyslog.conf
:msg, contains, "NETFILTER"       /var/log/iptables.log
:msg, contains, "NETFILTER"     ~

उसके बाद अपने iptables नियमों में थाइलिस स्विच जोड़ें जिसे आप लॉग इन करना चाहते हैं:

–log-prefix NETFILTER

एक विकल्प के रूप में आप इस प्रकार के प्रॉपर्टी फ़िल्टर का उपयोग करके संदेशों को लॉग इन कर सकते हैं:

:msg, startswith, "iptables: " -/var/log/iptables.log
& ~
:msg, regex, "^\[ *[0-9]*\.[0-9]*\] iptables: " -/var/log/iptables.log
& ~

नोट: इस 2 विधि को किसी भी परिवर्तन की आवश्यकता नहीं है iptables

संदर्भ


इस स्थिति में, अंदर /var/log/iptablesऔर बाहर भी घुसपैठ को बचाया जा सकेगा /var/log/messages। मैं इस डेटा से केवल एक कॉपी चाहता हूंiptables.log
आबिद

1
मैंने आबिद के प्रश्न को कवर करने के लिए अपना जवाब भी जोड़ दिया, साथ ही लापता लॉगरेट कॉन्फिग। "स्टॉप" या "& ~" संदेशों को / var / log / संदेशों को भी प्राप्त करने के लिए rsyslog के नियमों को जारी रखने से रोकता है।
पीटर

6

यह मानता है कि आपका फ़ायरवॉल पहले से ही लॉग बनाता है, जैसा कि किसी भी फ़ायरवॉल को होना चाहिए। कुछ उदाहरणों के लिए, इसे पहचान योग्य संदेश की आवश्यकता होती है, जैसे स्लम के उदाहरण में "नेटफिल्टर"।

rsyslog.d में एक फ़ाइल बनाएं

vim /etc/rsyslog.d/10-firewall.conf

यह CentOS 7 में काम करता है। मुझे नहीं पता कि यह कैसे सत्यापित किया जाए कि यह IN और OUT की तलाश के अलावा फ़ायरवॉल से आया है ... CentOS अजीब है। इसका उपयोग न करें जब तक कि अगला संस्करण काम न करे।

# into separate file and stop their further processing
if  ($msg contains 'IN=' and $msg contains 'OUT=') \
then {
    -/var/log/firewall
    & ~
}

यह CentOS 7 में काम करता है और संदेश की सामग्री के लिए भी जाँच करता है ("Shorewall को बदलें" जो आपके -j लॉग नियम के संदेश में है)

# into separate file and stop their further processing
if  ($msg contains 'Shorewall') and \
    ($msg contains 'IN=' and $msg contains 'OUT=') \
then {
    -/var/log/firewall
    & ~
}

यह दूसरों (Ubuntu, Debian, openSUSE) में काम करता है। और यह इसे करने का सबसे अच्छा तरीका है। संदेश में तार नहीं खोजना:

# into separate file and stop their further processing
if  ($syslogfacility-text == 'kern') and \\
($msg contains 'IN=' and $msg contains 'OUT=') \\
then    -/var/log/firewall
    &   ~

और यहाँ एक डिफॉल्ट ओपनसैस मशीन है (जो मुझे लगता है कि हर डिस्ट्रो में होनी चाहिए और गायब है) (अंतर "& ~" के बजाय केवल "स्टॉप" लगता है; सभी सिस्टम दोनों सिंटैक्स का समर्थन नहीं करते हैं):

if  ($syslogfacility-text == 'kern') and \
    ($msg contains 'IN=' and $msg contains 'OUT=') \
then {
    -/var/log/firewall
    stop
}

और उपरोक्त सभी के लिए, एक logrotate.d फ़ाइल भी न भूलें:

vim /etc/logrotate.d/firewall

युक्त

/var/log/firewall {
    rotate 7
    size 500k
    postrotate
        # before using this, run the command yourself to make sure 
        # it is right... the daemon name may vary
        /usr/bin/killall -HUP rsyslogd
    endscript
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.