لینوکس ۳۰۳ در ۴۰ شب؛ امنیت با آزمایش، نه با حدس
تصور کن مسئول یک کتابخانهٔ آنلاین شدهای: کتابها باید در دسترس باشند، پروندهٔ اعضا محرمانه بماند و تغییرهای مهم بیردپا انجام نشوند. این دوره از همین داستان شروع میکند و قدمبهقدم به رمزنگاری، کنترل دسترسی، امنیت شبکه و بررسی شواهد میرسد. هدف، حفظ کردن چهل فهرست فرمان نیست؛ میخواهیم برای هر کنترل بگوییم چه مسئلهای را حل میکند، چطور درستیاش را میسنجیم و اگر خراب شد چطور برمیگردیم.
مبنای برنامه، اهداف رسمی LPIC-3 Security
نسخهٔ 3.0 با کد آزمون 303-300 است. این دورهٔ مستقل و تألیفی برای یادگیری طراحی
شده است؛ ترجمهٔ صفحهبهصفحهٔ جزوهها، بانک سؤال آزمون یا دورهٔ رسمی LPI نیست.
نسخهٔ سرفصل را در آغاز آمادگی آزمون دوباره از منبع رسمی بررسی کن.
برای چه کسی و با چه سرعتی؟#
باید بتوانی با shell کار کنی، کاربر و مجوز فایل را بشناسی، سرویس systemd را مدیریت کنی و مفهوم IP، subnet، route، DNS و TCP/UDP را بفهمی. آشنایی در حد LPIC-2 مناسب است؛ این دوره جای آموزش مقدماتی نصب لینوکس و شبکه نیست. اگر از یک اصطلاح مطمئن نیستی، همان جلسه مکث کن و یک مثال کوچکتر بساز.
برای بیشتر درسها حدود ۶۰ تا ۹۰ دقیقه مطالعه و تمرین در نظر بگیر؛ آمادهسازی PKI، VPN یا feed اسکنر میتواند زمان بیشتری بخواهد. «شب» ترتیب مطالعه است، نه الزام به تمام کردن هر آزمایش در یک ساعت. تمام چهل درس با تاریخ انتشار یکسان در دسترساند؛ میتوانی با سرعت خودت جلو بروی.
برای هر جلسه در دفترچه سه وضعیت جدا داشته باش: مطالعهشده، تمرینشده و آزمودهشده. خواندن فرمان و دیدن خروجی واقعی یکسان نیستند. متن هر درس نتیجهٔ مورد انتظار را توضیح میدهد؛ این نتیجهها ادعای اجرای تمام آزمایشهای سیستمی روی زیرساخت نویسنده نیستند.
قرارداد آزمایشگاه#
سه VM یا Clone قابل بازگشت داشته باش. VM کماختیار داخل container جای آزمایش کامل
systemd، audit، bootloader یا MAC را نمیگیرد. حساب اصلیِ دارای sudo را نگه دار و
یک حساب غیرمدیر به نام student برای آزمون مجوزها بساز. در Ubuntu از sudo adduser student
و در Rocky از sudo useradd -m student و سپس sudo passwd student استفاده کن؛
این حساب را برای تمرینهای کماختیاری عضو گروه sudo یا wheel نکن.
| ماشین | محیط مبنا | آدرس کارت Host-only | کاربرد |
|---|---|---|---|
srv | Ubuntu Server 24.04 LTS | 192.168.56.10/24 | سرویس، فایروال، VPN و بررسی میزبان |
client | Ubuntu Server 24.04 LTS | 192.168.56.20/24 | درخواست مجاز و مشاهده از بیرون |
mac | Rocky Linux 9 | 192.168.56.30/24 | SELinux و نمونههای خانوادهٔ RHEL |
شبکهٔ Host-only باید از LAN واقعی جدا باشد. کارت NAT جدا، فقط برای دریافت بسته و
بهروزرسانی است. DHCP، RA و ruleهای روتر آزمایشی را به شبکهٔ خانه یا محل کار وصل نکن.
نام interface را با ip -br address پیدا کن؛ enp0s8 و enp0s9 در متن، نام نمونهاند.
نام سرویس library.example.test است. .test برای همین مثال محلی است و از CA عمومی
گواهی آماده نمیگیرد. برای بعضی آزمایشها از /etc/hosts یا curl --resolve استفاده
میکنیم؛ DNS سیستم را بیدلیل تغییر نمیدهیم. CA آزمایشگاهی میتواند در یک Clone
یا حساب جدا باشد؛ فقط فایلهایی که هر نقش نیاز دارد منتقل شوند، نه کل پوشهٔ PKI.
| توسعهٔ توپولوژی | قرارداد |
|---|---|
| IPv6 در شب ۳۰ | fd30:303::10/64 روی srv و fd30:303::20/64 روی client، فقط در lab |
| مسیریابی شب ۳۱ | کارت دوم srv برابر 192.168.57.1/24؛ backend برابر 192.168.57.20/24 |
| OpenVPN | شبکهٔ تونل 10.30.0.0/24 |
| IPsec | آدرسهای داخلی 10.31.0.1/32 و 10.31.0.2/32 |
| WireGuard | 10.32.0.1/30 و 10.32.0.2/30 |
این subnetها نباید با شبکهٔ واقعی میزبان تداخل داشته باشند. در شب ۳۱ میتوانی Clone ماشین mac را backend کنی و یک کارت Host-only دوم به آن بدهی؛ نقش قبلی آن را با این آزمایش مخلوط نکن. برای اسکنر Greenbone یا Snort 3، VM جدا با منابع و نسخهٔ مطابق مستندات همان release آماده کن. Wi-Fi، USBGuard و TPM به سختافزار یا قابلیت مجازی مناسب نیاز دارند؛ بدون آن، بخش مربوط فقط مطالعه و طراحی محسوب میشود.
آمادهسازی و قواعد اجرای تمرین#
ابتدا نسخهٔ سیستمعامل، kernel، ابزار، وضعیت ساعت و شبکه را ثبت کن. بستهها را از مخزن معتبر توزیع نصب کن؛ همهٔ اسکنرها را روی یک VM جمع نکن. ابزارهای پایهٔ Ubuntu میتوانند با این مجموعه آماده شوند؛ بستههای تخصصی در هر درس معرفی شدهاند:
sudo apt update
sudo apt install openssl gnupg curl openssh-server acl attr libcap2-bin \
tcpdump tshark nmap lsof
mkdir -p ~/lpic303/evidence
نصب tshark ممکن است دربارهٔ مجوز capture کاربر عادی سؤال کند؛ برای این دوره،
capture محدود با sudo کافی است و رابط گرافیکی Wireshark با کاربر عادی اجرا میشود.
در Rocky، ابزارهای Apache و SELinux را در درس مربوط با بستههای همان توزیع آماده کن؛
نام service و مسیر config خانوادههای Debian و RHEL را جابهجا نکن.
پیش از هر ماژول Snapshot و کنسول مستقل داشته باش. فرمانها برای وضعیت آغازِ اعلامشدهاند؛
آنها را بهصورت یک اسکریپت بزرگ روی سرور کاری paste نکن. هنگام تغییر SSH، فایروال یا
boot، نشست فعلی را نگه دار و نتیجه را با یک ورود تازه از کلاینت بررسی کن. خطای
مجوز را با 777 و خطای گواهی را با خاموش کردن بررسی TLS درمان نکن.
آزمایشهای iptables، nftables و firewalld و هر VPN از Snapshot مستقل شروع میشوند. یک مدیر اصلی فایروال در هر VM داشته باش. ruleهای نمونه، جای قواعد میزبان دارای Docker، Kubernetes یا سرویسهای واقعی دیگر را نمیگیرند. پیکربندیهای دارای placeholder باید پیش از اجرا با مقادیر واقعی همان lab تکمیل شوند؛ نمونهٔ راز، credential عملیاتی نیست.
دفترچهٔ هر تمرین شامل سؤال اولیه، وضعیت قبل، تغییر، آزمون مثبت، آزمون منفی و راه
برگشت باشد. خروجی واقعی را ذخیره کن؛ گاهی سکوت یک فرمان موفقیت است، گاهی نبودن
شاهد. کلید، PSK، فایل shadow واقعی، capture خصوصی و خروجی خام ip xfrm state
را در گزارش عمومی قرار نده.
تطبیق با اهداف آزمون#
وزن رسمی، اهمیت نسبی در آزمون را بیان میکند؛ تعداد درسها کپیِ وزنها نیست. جلسههای جمعبندی هم چند موضوع را دوباره به هم وصل میکنند. جدول زیر راهنمای پیدا کردن درس مربوط است؛ متن کامل هدفها را در صفحهٔ رسمی LPI بخوان.
| هدف | وزن | مسیر اصلی این دوره |
|---|---|---|
331.1 | ۵ | ۲، ۴ و ۵؛ کلید، گواهی و چرخهٔ CA |
331.2 | ۴ | ۶ و ۷؛ TLS و هویت دوطرفه |
331.3 | ۳ | ۸ و ۹؛ ذخیرهسازی رمزشده و بازیابی |
331.4 | ۵ | ۱۰ تا ۱۲؛ DNS و اعتماد |
332.1 | ۵ | ۱۳ تا ۱۶؛ محدودسازی میزبان و SSH |
332.2 | ۵ | ۲۳ تا ۲۶؛ شواهد و بررسی میزبان |
332.3 | ۳ | ۲۲؛ بودجهٔ منابع |
333.1 | ۳ | ۱۷؛ مجوز، ACL و metadata |
333.2 | ۵ | ۱۹ تا ۲۱؛ policy اجباری |
334.1 | ۴ | ۲۸ و ۲۹؛ دید شبکه و هویت اتصال |
334.2 | ۴ | ۳۶ و ۳۷؛ حسگر و ارزیابی |
334.3 | ۵ | ۳۰ تا ۳۲؛ مسیر بسته و policy |
334.4 | ۴ | ۳۳ تا ۳۵؛ تونلهای امن |
335.1 | ۲ | ۱، ۱۸، ۲۵ و ۲۷؛ مدل تهدید |
335.2 | ۳ | ۳۸ و ۳۹؛ ارزیابی محدود و گزارش |
شب ۴۰ مرور هر پانزده هدف و پروژهٔ تحویل است. سرفصل رسمی همچنان مرجع دامنه و وزنهاست؛ موضوعهای افزودهٔ این دوره به معنی تغییر سرفصل LPI نیستند.
چه چیزهایی از جزوهها نگه داشتیم و چه چیزهایی را تازه کردیم؟#
۳۵ PDF محلی lpic-303/ برای شناخت موضوعها و سناریوهای اولیه بررسی شدند.
آنها ترکیبی از توضیح و workshop هستند و بعضی به CentOS/RHEL 6، Ubuntu 12.04،
Samba 3 و نسلهای قدیمی ابزار اشاره دارند. نام فایلها در جدول زیر برای ردیابی
منبع است؛ خود PDFها فایل دانلود عمومی دوره نیستند.
| گروه جزوهها | فایلهای محلی | استفاده در دوره |
|---|---|---|
| رمزنگاری و ذخیرهسازی | GPG.pdf، GNUGPG_V0.3.pdf، GPG_Scenario_v.1.pdf، Hash_Commands_in_Linux_V0.1.pdf، Disk_Encryption.pdf، Luks_v0.3.pdf | ایدهٔ تمرین در شبهای ۲، ۳، ۸ و ۹؛ مثال تازه با keyring جدا و تصویر دیسک خالی |
| مجوز و هویت میزبان | ACL_V0.1.pdf، Linux_Security_Module_v0.2.pdf، Selinux_scenrio_V0.3.pdf، Set_Password_Policy.pdf، John_V0.1.pdf | شبهای ۱۷ تا ۲۱ و ۲۷؛ ACL mask، label پایدار و ممیزی روی رمز ساختگی |
| مشاهدهٔ میزبان | AIDE_V0.1.pdf، System Auditing_v0.1.pdf، chkrootkit.pdf، Linux_Malware _Detect.docx.pdf، lsof.pdf، OpenScap.pdf، Puppet_v.0.1.pdf | شبهای ۲۳ تا ۲۶ و عیبیابی storage؛ baseline قابل اعتماد و اصلاح محدود |
| شبکه و سرویس | Name_server_security_V0.1.pdf، Securing OpenSSH_v.0.1.pdf، Iptables_Logging.pdf، Firewalld_v1.pdf، ipsec.pdf، Nmap_V0.1.pdf، Snort.pdf | DNS، SSH، فایروال، IPsec و حسگر؛ TSIG با SHA-256 و strongSwan بهجای racoon |
| ارزیابی | Active_Information_Gathering.docx.pdf، Passive_Information_Gathering.pdf، Openvas.pdf | شبهای ۳۷ تا ۳۹؛ scope آزمایشگاهی، feed و کیفیت گزارش |
| LDAP، Samba و SMTP | Scenario5_Working with ldap tools.pdf، LDAP_Over-SSL_TLS_V0.1.pdf، LDAP_with_SASL_v0.1.pdf، Intgrate_Ldap_Http.pdf، Scenario_9_Samba_And_LDAP_Intgration.pdf، Authenticated SMTP_V0.1.pdf، Authenticated SMTP_V0.1_Scenario.pdf | زمینهٔ تکمیلی شب ۷؛ تفکیک TLS، SASL و مجوز برنامه؛ نصب کامل Samba/LDAP هدف این دوره نیست |
GPG در شب ۳ یک مکمل مستقل است. تمرین عملی AppArmor، جزئیات PAM و sudo، نمونهٔ Puppet و firewalld هم برای فهم رفتار اضافه شدهاند؛ سطح یا جایگاه رسمی آنها در هر درس روشن است. X.509، SSH CA، systemd sandbox، resource control، FreeRADIUS، OpenVPN و WireGuard کمک میکنند برنامه فقط به موضوعهای PDFهای قدیمی محدود نماند.
LUKS1، eCryptfs و iptables را بهخاطر قدیمیتر بودن از مطالعهٔ آزمون حذف نمیکنیم. در مقابل، نمونههای HMAC-MD5، سرویسهای SysV و فایلهای config قدیمی را بهعنوان تنظیم آمادهٔ محیط امروزی ارائه نمیکنیم. نسخه و راهنمای رسمی هر ابزار همراه درس آمده است.
فهرست مطالعه#
شروع و رمزنگاری#
- شب ۱: اول آزمایشگاه، بعد قهرمانبازی
- شب ۲: هش، رمز و امضا؛ سه ابزار با سه کار
- شب ۳: GPG؛ نامهای که هم خصوصی است هم قابل اعتماد
- شب ۴: گواهی X.509؛ کارت شناسایی یک سرویس
- شب ۵: CA کوچک ما؛ صدور، انقضا و ابطال
- شب ۶: HTTPS؛ قفل سبز را با مدرک تحویل بگیر
- شب ۷: mTLS؛ این بار کلاینت هم کارت نشان میدهد
- شب ۸: LUKS؛ اگر دیسک گم شد چه میشود؟
- شب ۹: باز کردن خودکار، keyslot و روز مبادا
- شب ۱۰: DNS و TSIG؛ پاسخدهندهای که زیادی مهربان نیست
- شب ۱۱: DNSSEC؛ امضا داریم، اعتماد هم داریم؟
- شب ۱۲: CAA، DANE و DNS خصوصی؛ هرکدام کدام مشکل را حل میکنند؟
میزبان و کنترل دسترسی#
- شب ۱۳: درِ سرور فقط پورت شبکه نیست
- شب ۱۴: یک سرویس کوچک، یک اختیار کوچک
- شب ۱۵: SSH امن؛ در را ببند، کلید خودت را جا نگذار
- شب ۱۶: SSH CA؛ کلید تازه بدون کپی روی صد سرور
- شب ۱۷: مجوزها؛ چرا ۷۷۷ درمان ۴۰۳ نیست؟
- شب ۱۸: رمز خوب و sudo کماختیار؛ سیاستی که آدمها بتوانند رعایت کنند
- شب ۱۹: SELinux؛ صاحب فایل بودن همهٔ ماجرا نیست
- شب ۲۰: پروندهٔ ۴۰۳؛ از AVC تا اصلاح کوچک
- شب ۲۱: AppArmor و Smack؛ نگهبانها لهجههای متفاوت دارند
- شب ۲۲: وقتی یک برنامه تمام میز را میگیرد
شواهد و تهدیدها#
- شب ۲۳: auditd؛ چه کسی قفسه را عوض کرد؟
- شب ۲۴: AIDE؛ عکس قبل و بعد از قفسهها
- شب ۲۵: هشدار بدافزار؛ نه وحشت، نه بیخیالی
- شب ۲۶: OpenSCAP و تغییرات قابل تکرار؛ نمرهٔ خوب کافی نیست
- شب ۲۷: از گذرواژهٔ ضعیف تا تزریق؛ مهاجم کدام اعتماد را قرض میگیرد؟
شبکه و تحویل#
- شب ۲۸: tcpdump و Wireshark؛ بستهها چه قصهای میگویند؟
- شب ۲۹: RADIUS و Wi-Fi؛ رمز مشترک کل ساختمان یا هویت هر نفر؟
- شب ۳۰: iptables و IPv6؛ یک در بسته، یک پنجرهٔ باز
- شب ۳۱: NAT، conntrack و ipset؛ بسته در کدام قفسه است؟
- شب ۳۲: nftables و firewalld؛ یک policy، چند روش مدیریت
- شب ۳۳: OpenVPN؛ تونل بالا است، سرویس هم میرسد؟
- شب ۳۴: IPsec و IKEv2؛ قرارداد قبل از عبور بسته
- شب ۳۵: WireGuard؛ کلید ساده، مسیریابی جدی
- شب ۳۶: Snort؛ هشدار بساز تا بفهمی هشدار از کجا میآید
- شب ۳۷: OpenVAS؛ گزارش بلند را به سه اصلاح درست تبدیل کن
- شب ۳۸: Nmap؛ موجودی سرویسها را با حدس اشتباه نگیر
- شب ۳۹: تست نفوذ؛ پایان کار یک گزارش قابل اصلاح است
- شب ۴۰: تحویل کتابخانهٔ امن؛ با مدرک، نه با تعداد ابزار
چه زمانی دوره را تمام کردهای؟#
وقتی بتوانی یک سرویس آزمایشگاهی را با هویت درست، دسترسی محدود، دادهٔ حفاظتشده و مسیر شبکهٔ روشن تحویل بدهی؛ تغییر یا شکست کنترلشده را با شواهد پیدا کنی؛ و از backup و کنسول مستقل برگردی. لازم نیست تمام ابزارها همزمان فعال باشند. باید بتوانی برای انتخابهایت دلیل بیاوری و محدودیت بخشهای انجامنشده را صریح ثبت کنی.
برای ادامه، مسیرهای یادگیری و دفترچهٔ پروژهٔ خودت را کنار هم نگه دار. امنیت یک چکلیست یکبارمصرف نیست؛ تغییر نسخه، شبکه و کاربران باید آزمونهای پذیرش را دوباره به جریان بیندازد.