LR_ANONYMIZE.IN(1) LogReport's Lire Documentation LR_ANONYMIZE.IN(1)

lr_anonymize - ناشناس‌سازی فایل ثبت وقایع (لاگ‌فایل)

lr_anonymize dumpfilestem

دستور lr_anonymize معمولاً هنگام ارسال لاگ‌ها به یک پاسخ‌دهنده (responder) استفاده می‌شود. برای مثال‌های کاربردی، به بخش «ارسال فایل‌های گزارش ناشناس‌شده به پاسخ‌دهنده» در فصل «استفاده از پاسخ‌دهنده» در راهنمای کاربری Lire مراجعه کنید.

دستور lr_anonymize فایلی حاوی نشانی‌های ایمیل، شماره‌های IP و نام‌های میزبان (معمولاً یک فایل لاگ از یک سرویس اینترنتی) را از ورودی استاندارد (stdin) می‌خواند و نسخه «ناشناس‌شده» این فایل را در خروجی استاندارد (stdout) چاپ می‌کند. این ابزار اطلاعات لازم برای بازگردانی هویت («هویت‌بخشی» یا deanonymize) فایل با استفاده از lr_deanonymize(1) را در ۵ پایگاه داده Berkeley DB ذخیره می‌کند؛ نام فایل‌های نگهدارنده این پایگاه‌های داده با الحاق رشته‌های 'inaddr'، 'maildomain'، 'email'، 'ip' و 'domain' به dumpfilestem ساخته می‌شود. dumpfilestem می‌تواند برای نمونه /tmp/dump، ../../var/dump یا dump باشد. فایل‌های دیتابیس ایجاد شده در صورت یافتن فایل‌های قدیمی، بدون اخطار روی آن‌ها بازنویسی می‌شوند.

این اسکریپت فایل‌های موقت می‌سازد. به‌طور پیش‌فرض، این فایل‌ها در /tmp ایجاد می‌شوند. کاربر می‌تواند با تنظیم متغیر محیطی TMPDIR این مسیر را بازنویسی کند.

هنگام اجرای:

$ lr_anonymize dump < log > log.anon
$ lr_deanonymize dump < log.anon > log.new

آنگاه log و log.new محتوای یکسانی خواهند داشت (به‌جز تفاوت در بزرگی و کوچکی حروف، که می‌توانید با diff -i آن را بررسی کنید).

ما سعی کرده‌ایم این اسکریپت را از نظر میزان مصرف حافظه بهینه‌سازی کنیم. این موضوع این اشکال را دارد که هنگام ناشناس‌سازی یک لاگ‌فایل بزرگ، اجرای اسکریپت برای مدتی طول خواهد کشید.

ما این اسکریپت را روی یک فایل لاگ ۲۵ مگابایتی sendmail اجرا کرده‌ایم.

مقادیر معمول در چنین شرایطی حدود ۲۵۰۰ کیلوبایت کل حافظه فیزیکی مصرف‌شده، و ۱۵ دقیقه زمان واقعی (real)، ۸ دقیقه زمان کاربر (user) و ۲۲ ثانیه زمان سیستم (systime) صرف‌شده روی سیستمی با ۶۴ مگابایت حافظه و یک پردازنده ۳۰۰ مگاهرتزی پنتیوم ۲ است. بازگردانی هویت این فایل ۱۱ دقیقه زمان واقعی، ۸ دقیقه زمان کاربر و ۱۷ ثانیه زمان سیستم برده است.

ما دامنه‌های ایمیل را در فایل تخلیه ذخیره می‌کنیم. این اطلاعات توسط lr_deanonymize(1) استفاده می‌شوند، در صورتی که نشانی‌های ایمیل در فایل ورودی ما در فایلی که توسط lr_deanonymize(1) خوانده می‌شود به شکل تفکیک‌شده تکرار شوند؛ به این معنی که مثلاً joe.user@example.com هم به‌صورت joe.user@example.com و هم به‌صورت example.com در فایلی که قرار است هویت‌بخشی شود ظاهر گردد.

تمام اشیای تخلیه‌شده به حروف کوچک تبدیل می‌شوند.

جهت سهولت، بخشی از سند rfc822 را نقل می‌کنیم:

SPACE       =  <ASCII SP, space>            ; (     40,      32.)
CTL         =  <any ASCII control           ; (  0- 37,  0.- 31.)
                character and DEL>          ; (    177,     127.)
specials    =  "(" / ")" / "<" / ">" / "@"  ; Must be in quoted-
            /  "," / ";" / ":" / "\" / <">  ;  string, to use
            /  "." / "[" / "]"              ;  within a word.
atom        =  1*<any CHAR except specials, SPACE and CTLs>
quoted-string = <"> *(qtext/quoted-pair) <">; Regular qtext or
                                            ;   quoted chars.
word        =  atom / quoted-string
domain-ref  =  atom                         ; symbolic reference
domain-literal =  "[" *(dtext / quoted-pair) "]"
sub-domain  =  domain-ref / domain-literal
domain      =  sub-domain *("." sub-domain)
local-part  =  word *("." word)             ; uninterpreted
                                            ; case-preserved
addr-spec   =  local-part "@" domain        ; global address

و بخشی از سند rfc 2181:

The DNS itself places only one restriction on the particular labels
that can be used to identify resource records.  That one restriction
relates to the length of the label and the full name.  The length of
any one label is limited to between 1 and 63 octets.  A full domain
name is limited to 255 octets (including the separators).

سند rfc1123:

However, a valid host name can never
have the dotted-decimal form #.#.#.#, since at least the
highest-level component label will be alphabetic.

سند rfc819:

<domain> ::= <naming-domain> | <naming-domain> "." <domain>
<naming-domain> ::=  <simple-name> | <address>
<simple-name> ::= <a> <ldh-str> <let-dig>
<ldh-str> ::= <let-dig-hyp> | <let-dig-hyp> <ldh-str>
<let-dig> ::= <a> | <d>
<let-dig-hyp> ::= <a> | <d> | "-"
<a> ::= any one of the 52 alphabetic characters A through Z in upper
case and a through z in lower case
<d> ::= any one of the ten digits 0 through 9

یک «فایل لاگ» مانند:

blaat fkrf 1.2.3.4.in-addr.arpa] pietje@bigcompany.com bla 1 2 3 lj;agas;gag
blaat 1.2.3.4 fkrf 3.2.3.4.in-addr.arpa] bla 1 www.hotsex.com 2 3 lj;agas;gag 
jan@blaat.frut.com agagag
blaat fkrf 4.2.3.4.in-addr.arpa] bla pietje@bigcompany.com www.hotsex.com 
234.34.2.0 jan@blaat.frut.com 4.2.3.4.in-addr.arpa1 2 3 lj;agas;gag
blaat fkrf tweede 3.2.3.4.in-addr.arpa] bla 1.2.3.4 1 blablabla.com 
2 mdcc.cx 
3 lj;agas;gag

به این صورت ناشناس‌سازی خواهد شد:

blaat fkrf 1.0.0.10.in-addr.arpa] john.doe.1@example.com bla 1 2 3 lj;agas;gag
blaat 10.0.0.1 fkrf 2.0.0.10.in-addr.arpa] bla 1 1.example.com 2 3 lj;agas;gag 
john.doe.2@example.com agagag
blaat fkrf 3.0.0.10.in-addr.arpa] bla john.doe.1@example.com 1.example.com 
10.0.0.2 john.doe.2@example.com 3.0.0.10.in-addr.arpa1 2 3 lj;agas;gag
blaat fkrf tweede 2.0.0.10.in-addr.arpa] bla 10.0.0.1 1 2.example.com 
2 3.example.com 
3 lj;agas;gag

فایل‌های تخلیه (dumps) چیزی شبیه به این خواهند بود:

ip 234.34.2.0 10.0.0.2
ip 1.2.3.4 10.0.0.1
inaddr 3.2.3.4.in-addr.arpa 2.0.0.10.in-addr.arpa
inaddr 1.2.3.4.in-addr.arpa 1.0.0.10.in-addr.arpa
inaddr 4.2.3.4.in-addr.arpa 3.0.0.10.in-addr.arpa
domain mdcc.cx 3.example.com
domain blablabla.com 2.example.com
domain www.hotsex.com 1.example.com
email jan@blaat.frut.com john.doe.2@example.com
email pietje@bigcompany.com john.doe.1@example.com

ما نمی‌توانیم فایل‌های حاوی نام‌های میزبان یا نشانی‌های ایمیل در دامنه example.com، نام‌های کاربری به صورت john.doe.<someletters> یا شماره‌های IP در شبکه خصوصی تعریف‌شده در rfc 1918 یعنی 10.0.0.0 - 10.255.255.255 (پیشوند 10/8) را مدیریت کنیم.

ما رشته‌های نقل‌قول‌شده ('quoted-string') در نشانی‌های ایمیل را مدیریت نمی‌کنیم. ما مقادیر لفظی دامنه ('domain-literal') در دامنه نشانی‌های ایمیل را مدیریت نمی‌کنیم.

ما 999.999.999.999 را به عنوان یک نشانی IP در نظر می‌گیریم: محدودیت 255 را بررسی نمی‌کنیم.

ما نشانی‌های IP شبکه مانند 100.10.3 را به عنوان نشانی IP تلقی نمی‌کنیم. این موارد ناشناس نخواهند شد.

lr_deanonymize(1)، فایل README.lire-client در بسته توزیعی Lire.

$Id: lr_anonymize.in,v 1.5 2006/07/23 13:16:32 vanbaal Exp $

حق نشر © 2000-2001 متعلق به Stichting LogReport Foundation LogReport@LogReport.org

این برنامه یک نرم‌افزار آزاد است؛ شما می‌توانید آن را تحت شرایط «پروانه عمومی همگانی گنو» (GNU General Public License) طبق آنچه بنیاد نرم‌افزارهای آزاد منتشر کرده است، چه نگارش ۲ پروانه یا (به انتخاب خودتان) هر نگارش جدیدتر دیگری، بازتوزیع کرده یا تغییر دهید.

این برنامه با این امید توزیع شده است که مفید واقع شود، اما بدون هرگونه ضمانت؛ حتی ضمانت ضمنی قابل فروش بودن یا مناسب بودن برای یک مقصود خاص. برای جزئیات بیشتر به «پروانه عمومی همگانی گنو» مراجعه فرمایید.

شما باید یک نسخه از پروانه عمومی همگانی گنو را به همراه این برنامه دریافت کرده باشید (پرونده COPYING را ببینید)؛ در غیر این صورت، به نشانی http://www.gnu.org/copyleft/gpl.html مراجعه کنید.

Joost van Baal <joostvb@logreport.org>

2025-09-28 Lire 2.1.1