مدل تهدید
قبل از هر ابزار امنیتی بفهم از چه چیزی، در برابر چه کسی محافظت میکنی: دارایی، تهدید، آسیبپذیری و ریسک، سه هدف محرمانگی و درستی و دسترسپذیری، انواع مهاجم (رباتها، فرصتطلب، خودی، هدفمند)، سطح حمله، اولویتبندی ریسک، قانون و اخلاق کار امنیتی، ساختن آزمایشگاه دوماشینهی این دوره، و فهرستبرداری از سطح حملهی یک سرور.
- حدود ۱۹ دقیقه مطالعه
- ۵ مثال اجراشده
- ۳ تمرین با جواب
- متوسط تا پیشرفته
- بهروزرسانی: ۲۹ مهر ۱۴۰۵
توی این درس یاد میگیری قبل از نصب هر ابزار امنیتی، درست فکر کنی. «امن» بهتنهایی معنی ندارد؛ سؤال درست این است: چه چیزی را، در برابر چه کسی، تا چه حد باید محافظت کنی؟ با چهار مفهوم پایه (دارایی، تهدید، آسیبپذیری، ریسک) و سه هدف امنیت (محرمانگی، درستی، دسترسپذیری) آشنا میشوی، مهاجمهای واقعی را میشناسی (بیشترشان رباتاند، نه هکرهای فیلمها)، سطح حملهی یک سرور را فهرست میکنی و ریسکها را اولویتبندی میکنی. آزمایشگاه دوماشینهی این دوره را هم میسازی و قانون اول کار امنیتی را یاد میگیری: فقط روی سیستمهایی که مال خودت است یا اجازهی کتبی داری.
مسئله: امنیت بیهدف
Section titled “مسئله: امنیت بیهدف”خیلیها امنیت را با خرید یا نصب ابزار شروع میکنند: یک فایروال گران، یک آنتیویروس، یک «اسکنر امنیتی». بعد از شش ماه، سرور با رمز admin123 روی پنل مدیریت هک میشود؛ چیزی که هیچکدام از آن ابزارها به آن نگاه نمیکرد. مشکل ابزار نبود؛ مشکل این بود که کسی ننشسته بود فکر کند «ارزشمندترین چیز ما چیست و از کجا ممکن است به آن برسند؟».
تشبیه: امنیت خانه
Section titled “تشبیه: امنیت خانه”برای امنیت خانه، اول نمیروی دوربین بخری. میپرسی: چه چیز ارزشمندی دارم؟ (طلا، مدارک، لپتاپ؛ نه صندلیهای حیاط.) از چه کسی میترسم؟ (دزد محله، نه یک تیم حرفهای که برای یک الماس خاص آمده؛ و البته آتش و آب هم «تهدید»اند.) از کجا میتوانند بیایند؟ (در، پنجرهی طبقهی همکف، کلیدی که زیر گلدان است.) بعد بر اساس اینها خرج میکنی: قفل خوب برای در، نرده برای پنجرهی پایین، صندوق برای مدارک، و کلید زیر گلدان را برمیداری (ارزانترین و مؤثرترین کار!). مدل تهدید همین فکر کردن است، برای سرور.
چهار کلمهی پایه
Section titled “چهار کلمهی پایه”| کلمه | معنی | مثال در یک فروشگاه آنلاین |
|---|---|---|
| دارایی (asset) | چیزی که ارزش دارد و باید محافظت شود | دیتابیس مشتریها، کلید خصوصی HTTPS، دسترسی root، اعتبار برند |
| تهدید (threat) | کسی یا چیزی که میتواند به دارایی آسیب بزند | ربات حدس رمز، کارمند ناراضی، خرابی دیسک |
| آسیبپذیری (vulnerability) | ضعفی که تهدید از آن استفاده میکند | رمز ضعیف SSH، نرمافزار وصلهنشده، تزریق SQL |
| ریسک (risk) | احتمال × اثر | «ربات رمز ضعیف SSH را حدس بزند و همهچیز را بگیرد»: احتمال بالا، اثر خیلی بالا |
ریسک فقط وقتی هست که هر سه کنار هم باشند: دارایی ارزشمند، تهدیدی که بخواهد و بتواند، و آسیبپذیریای که راه بدهد. کار تو معمولاً کم کردن آسیبپذیریها و اثرهاست؛ تهدیدها را نمیتوانی حذف کنی.
سه هدف: CIA
Section titled “سه هدف: CIA”همهی حملهها در نهایت یکی از این سه را میزنند (اسمش از حروف اول انگلیسی است و ربطی به سازمان معروف ندارد):
- محرمانگی (Confidentiality): فقط کسانی که باید، داده را ببینند. نقض: نشت دیتابیس، رمز در لاگ.
- درستی (Integrity): داده فقط بهدست کسانی که باید، تغییر کند. نقض: تغییر قیمتها، جا دادن کد مخرب در سایت، دستکاری بکاپ.
- دسترسپذیری (Availability): سرویس وقتی لازم است در دسترس باشد. نقض: حملهی DDoS، باجافزار که دیسک را رمزنگاری میکند، دیسک پرشده با لاگ.
هر دفاعی را با این سه بسنج: HTTPS محرمانگی و درستی در مسیر را میدهد (دورهی مبانی)، بکاپ دسترسپذیری و درستی را (دورهی SQL)، و دسترسی کم (GRANT و کاربر جدا) هر سه را.
مهاجمها چه کسانیاند؟
Section titled “مهاجمها چه کسانیاند؟”| مهاجم | انگیزه | روش رایج | سهم در حملههایی که میبینی |
|---|---|---|---|
| رباتهای خودکار | هر سرور ضعیفی، برای استخراج رمزارز، ارسال اسپم یا شبکهی بات | اسکن کل اینترنت، حدس رمز، سوءاستفاده از آسیبپذیریهای معروف | بیشترین؛ از دقیقههای اول روشن شدن سرور |
| فرصتطلب | پول یا سرگرمی | ابزارهای آماده روی هدفهای آسان | زیاد |
| خودی (insider) | نارضایتی، اشتباه، پول | دسترسیای که از قبل دارد | کم ولی پرخسارت |
| هدفمند | یک سازمان خاص | صبور، ترکیبی، مهندسی اجتماعی | کم برای بیشتر کسبوکارهای کوچک |
نتیجهی عملی: برای بیشتر سرورها، دفاع در برابر رباتها و اشتباههای خودمان (یا همکار) ۹۰٪ کار است: وصله، رمز و کلید درست، پورتهای بسته، بکاپ. این دوره هم با همینها شروع میشود.
سطح حمله
Section titled “سطح حمله”سطح حمله (attack surface) یعنی همهی درهایی که از آنها میشود به سیستم رسید. هر پورت باز، هر کاربر، هر برنامهای که ورودی از بیرون میگیرد، هر کلید و رمزی که جایی ذخیره شده. قانون طلایی: سطح حمله را کوچک کن. سرویسی که نیست، هک نمیشود.
از فهرست تا اولویت
Section titled “از فهرست تا اولویت”یک روش ساده برای هر کسبوکار کوچک، در یک جدول:
- داراییها را فهرست کن (چه چیزی گم شود یا لو برود، به ما ضربه میزند؟).
- برای هر کدام: چه کسی و از کجا (کدام در سطح حمله) میتواند به آن برسد؟
- احتمال (کم/متوسط/زیاد) و اثر (کم/متوسط/زیاد) را تخمین بزن.
- از بالاترین ریسک شروع کن و برای هر کدام یک اقدام بنویس.
قانون و اخلاق: فقط آزمایشگاه خودت
Section titled “قانون و اخلاق: فقط آزمایشگاه خودت”مثالهای عملی
Section titled “مثالهای عملی”مثال ۱: آزمایشگاه دوماشینه
Section titled “مثال ۱: آزمایشگاه دوماشینه”همان روش دورهی لینوکس (درسهای فایروال و پروژهی سرور): دو ماشین Multipass روی کامپیوتر خودت. server نقش سرور آسیبپذیری را دارد که سختسازی میکنیم، و client نقش «بیرون» (اینترنت، مهاجم، یا لپتاپ تو) را. اگر ماشینهای درسهای قبل را داری، برای شروع تمیز پاکشان کن:
multipass delete --purge server clientmultipass launch 24.04 --name server --cpus 2 --memory 2G --disk 10Gmultipass launch 24.04 --name client --cpus 1 --memory 1G --disk 8Gmultipass listName State IPv4 Imageclient Running 192.168.64.6 Ubuntu 24.04 LTSserver Running 192.168.64.5 Ubuntu 24.04 LTSIPها روی سیستم تو فرق میکنند؛ در همهی درسها 192.168.64.5 را با IP server خودت عوض کن. روی server چند سرویس نصب کن تا چیزی برای دیدن و سختسازی باشد:
multipass shell serversudo apt update && sudo apt install -y nginx(SSH روی Ubuntu سرور از قبل نصب است.) هر وقت در درسها نوشته شد «روی server» یا «روی client»، با multipass shell server یا multipass shell client وارد همان ماشین شو. اگر جایی چیزی خراب شد، multipass delete --purge و دوباره ساختن، دو دقیقه کار است: این آزادی، بزرگترین مزیت آزمایشگاه است.
مثال ۲: فهرست درهای شبکه
Section titled “مثال ۲: فهرست درهای شبکه”روی server، اولین سؤال: چه چیزهایی از شبکه در دسترساند؟
sudo ss -tulpnNetid State Recv-Q Send-Q Local Address:Port Peer Address:Port Processudp UNCONN 0 0 127.0.0.54:53 0.0.0.0:* users:(("systemd-resolve",pid=548,fd=16))udp UNCONN 0 0 127.0.0.53%lo:53 0.0.0.0:* users:(("systemd-resolve",pid=548,fd=14))udp UNCONN 0 0 192.168.64.5%enp0s1:68 0.0.0.0:* users:(("systemd-network",pid=512,fd=22))tcp LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:* users:(("systemd-resolve",pid=548,fd=15))tcp LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=1712,fd=5),("nginx",pid=1711,fd=5))tcp LISTEN 0 4096 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1023,fd=3),("systemd",pid=1,fd=72))tcp LISTEN 0 4096 127.0.0.54:53 0.0.0.0:* users:(("systemd-resolve",pid=548,fd=17))tcp LISTEN 0 511 [::]:80 [::]:* users:(("nginx",pid=1712,fd=6),("nginx",pid=1711,fd=6))tcp LISTEN 0 4096 [::]:22 [::]:* users:(("sshd",pid=1023,fd=3),("systemd",pid=1,fd=73))-t و -u یعنی TCP و UDP، -l در حال گوش دادن، -p برنامه، -n عدد (دورهی لینوکس، درس پورت و سوکت). ستون Local Address را بخوان: هر چه روی 127.0.0.x است فقط از داخل ماشین در دسترس است (DNS داخلی). درهای واقعی به بیرون، آنهاییاند که روی 0.0.0.0 یا [::] هستند: SSH روی ۲۲ و nginx روی ۸۰. (پورت ۶۸ UDP مال DHCP است و جواب دریافت IP را میگیرد.) این دو سطر، سطح حملهی شبکهای این سرور است.
مثال ۳: چه کسانی میتوانند وارد شوند؟
Section titled “مثال ۳: چه کسانی میتوانند وارد شوند؟”awk -F: '$7 !~ /(nologin|false|sync)$/ {print $1, "uid=" $3, $7}' /etc/passwdgetent group sudoroot uid=0 /bin/bashubuntu uid=1000 /bin/bashsudo:x:27:ubuntuawk (دورهی لینوکس) کاربرهایی را نشان میدهد که پوستهی ورود دارند؛ بقیه کاربرهای سیستمیاند که نمیتوانند وارد شوند. اینجا دو کاربر: root و ubuntu، و ubuntu در گروه sudo است، یعنی در عمل او هم root است. هر کاربر با پوسته یک در است و هر عضو sudo یک کلید همهجا.
مثال ۴: فایلهایی با قدرت ویژه
Section titled “مثال ۴: فایلهایی با قدرت ویژه”برنامههای SUID با دسترسی صاحبشان (معمولاً root) اجرا میشوند، هر کس که اجرایشان کند (دورهی لینوکس، درس مجوزهای ویژه). هر کدام اگر باگ داشته باشد، پلهای است برای رسیدن به root:
find / -xdev -perm -4000 -type f 2>/dev/null/usr/bin/chfn/usr/bin/su/usr/bin/sudo/usr/bin/passwd/usr/bin/umount/usr/bin/gpasswd/usr/bin/chsh/usr/bin/fusermount3/usr/bin/mount/usr/bin/newgrp/usr/lib/openssh/ssh-keysign/usr/lib/dbus-1.0/dbus-daemon-launch-helper/usr/lib/polkit-1/polkit-agent-helper-1این فهرست برای یک Ubuntu تازه عادی است. ارزش این دستور در مقایسه است: خروجی امروز را در یک فایل نگه دار؛ اگر روزی فایل SUID جدیدی (مثلاً /tmp/.x یا /home/ubuntu/bash) ظاهر شد، علامت جدی نفوذ است (درس واکنش به حادثه).
مثال ۵: یک مدل تهدید واقعی، در یک جدول
Section titled “مثال ۵: یک مدل تهدید واقعی، در یک جدول”برای فروشگاه آزمایشی این دوره (nginx روی server، یک برنامهی وب، یک دیتابیس، SSH برای مدیریت):
| دارایی | تهدید و در | احتمال | اثر | اقدام (درس) |
|---|---|---|---|---|
| دسترسی root سرور | رباتها، حدس رمز روی SSH ۲۲ | زیاد | خیلی زیاد | فقط کلید، بستن root، fail2ban (سختسازی SSH، حدس رمز) |
| دیتابیس مشتریها | تزریق SQL از فرم جستوجو | متوسط | خیلی زیاد | کوئری پارامتری، کاربر دیتابیس با دسترسی کم (حملههای وب؛ دورهی SQL) |
| حساب کاربرها | XSS و دزدیدن جلسه | متوسط | زیاد | خروجی escapeشده، کوکی HttpOnly، CSP (حملههای وب، سختسازی Nginx) |
| کل سرور | آسیبپذیری معروف در بستهی وصلهنشده | زیاد | زیاد | بهروزرسانی خودکار (بهروزرسانی و secret) |
| رمز دیتابیس و کلیدهای API | لو رفتن در گیت | متوسط | زیاد | secret بیرون از کد، اسکن تاریخچه (بهروزرسانی و secret) |
| دسترسپذیری سایت | پر شدن دیسک، سرویس خوابیده | متوسط | متوسط | پایش و هشدار (لاگ و پایش) |
| همهی دادهها | باجافزار، اشتباه انسانی | کم تا متوسط | خیلی زیاد | بکاپ بیرون از سرور، آزمایش بازیابی (دورهی SQL، واکنش به حادثه) |
این جدول نقشهی همین دوره است: هر درس جلوی یک یا چند ردیف را میگیرد، و در پروژهی پایانی همه را روی server پیاده میکنی.
کدام کار برای یک VPS تازهی یک فروشگاه کوچک بیشترین کاهش ریسک را با کمترین هزینه دارد؟
جواب درست: بستن ورود با رمز SSH و فعال کردن بهروزرسانی خودکار
بیشتر حملهها رباتاند و دنبال رمز ضعیف و نرمافزار وصلهنشده میگردند.
پشت پرده: دفاع در عمق و کمترین دسترسی
Section titled “پشت پرده: دفاع در عمق و کمترین دسترسی”دو اصل که در همهی درسهای بعد تکرار میشوند:
- دفاع در عمق (defense in depth): هیچ لایهای کامل نیست، پس چند لایه بگذار تا شکستن یکی کافی نباشد. فایروال پورت دیتابیس را میبندد، و دیتابیس فقط روی
127.0.0.1گوش میدهد، و کاربر برنامه فقط به جدولهای لازم دسترسی دارد، و کوئریها پارامتریاند. اگر برنامه هک شود، مهاجم هنوز نمیتواند جدولها را پاک کند (دورهی SQL). - کمترین دسترسی (least privilege): هر کاربر، برنامه و کلید فقط همان دسترسیای را داشته باشد که برای کارش لازم است، و فقط تا وقتی لازم است. nginx با کاربر
www-dataاجرا میشود نه root؛ اسکریپت بکاپ فقط خواندن دیتابیس را دارد؛ کلید SSH همکاری که رفته، همان روز حذف میشود.
یک اصل سوم هم هست که به آن کمتر فکر میشود: فرض کن نفوذ رخ میدهد. یعنی علاوه بر جلوگیری، تشخیص (لاگ و پایش) و بازیابی (بکاپ، برنامهی واکنش) را هم بساز. سازمانی که فقط روی دیوار سرمایهگذاری کرده، وقتی دیوار شکست، نه میفهمد و نه میداند چه کند.
جدولهای مرجع
Section titled “جدولهای مرجع”| دستور (روی server) | سؤالی که جواب میدهد |
|---|---|
sudo ss -tulpn |
کدام پورتها و برنامهها بازاند؟ |
awk -F: '$7 !~ /nologin|false/' /etc/passwd |
کدام کاربرها میتوانند وارد شوند؟ |
getent group sudo |
چه کسانی root هستند؟ |
find / -xdev -perm -4000 -type f |
کدام برنامهها SUIDاند؟ |
systemctl list-units --type=service --state=running |
چه سرویسهایی اجرا میشوند؟ |
ls -la ~/.ssh/ /root/.ssh/ |
چه کلیدهایی اجازهی ورود دارند؟ |
| اصطلاح | معنی |
|---|---|
| asset / threat / vulnerability / risk | دارایی / تهدید / آسیبپذیری / ریسک |
| CIA | محرمانگی، درستی، دسترسپذیری |
| attack surface | همهی درهای ورود به سیستم |
| defense in depth | چند لایهی مستقل |
| least privilege | کمترین دسترسی لازم |
اشتباهات رایج
Section titled “اشتباهات رایج”۱) شروع با ابزار
Section titled “۱) شروع با ابزار”ابزار بدون مدل تهدید، روی چیزهای اشتباه تمرکز میکند. راهحل: اول جدول مثال ۵ را برای سیستم خودت پر کن.
۲) «کسی با ما کاری ندارد»
Section titled “۲) «کسی با ما کاری ندارد»”رباتها نمیدانند تو کی هستی و برایشان مهم نیست؛ هر IP را امتحان میکنند. راهحل: فرض کن سرور از دقیقهی اول زیر حمله است (چون هست؛ درس لاگ و پایش).
۳) فراموش کردن دسترسپذیری
Section titled “۳) فراموش کردن دسترسپذیری”همه به نشت داده فکر میکنند، کمتر کسی به دیسکی که با لاگ پر میشود یا بکاپی که برنمیگردد. راهحل: هر سه هدف CIA را در جدول ریسک بیاور.
۴) سرویسهای فراموششده
Section titled “۴) سرویسهای فراموششده”یک پنل آزمایشی که سال پیش روی پورت ۸۰۸۰ بالا آمد و هیچوقت خاموش نشد. راهحل: ss -tulpn منظم، و هر چیزی که نمیشناسی را بررسی کن.
۵) آزمایش روی سیستم دیگران
Section titled “۵) آزمایش روی سیستم دیگران”حتی با نیت خوب. راهحل: فقط آزمایشگاه خودت؛ برای سیستم شرکت، اجازهی کتبی با محدودهی مشخص.
برای یک وبلاگ شخصی روی یک VPS (وردپرس، بدون فروش و بدون اطلاعات مشتری) سه دارایی، سه تهدید و برای هر کدام یک اقدام بنویس. کدام هدف CIA برای این وبلاگ از همه مهمتر است؟
دیدن جواب
| دارایی | تهدید | اقدام |
|---|---|---|
| دسترسی مدیر وردپرس | حدس رمز روی صفحهی ورود | رمز قوی و یکتا، تأیید دومرحلهای، محدود کردن تلاشهای ورود |
| خود سرور | افزونهی وصلهنشده | بهروزرسانی خودکار، حذف افزونههای بیاستفاده |
| نوشتههای چندساله | خرابی دیسک یا هک و پاک شدن | بکاپ خودکار بیرون از سرور |
مهمترین هدف اینجا درستی و دسترسپذیری است: دادهی محرمانهی زیادی نیست (نوشتهها عمومیاند)، ولی کسی نباید بتواند محتوای وبلاگ را عوض کند یا در آن کد مخرب بگذارد، و سالها نوشته نباید از بین برود. برای همین بکاپ و جلوگیری از دسترسی مدیر، بالاترین اولویتاند.
روی server یک اسکریپت surface.sh بنویس که در یک صفحه سطح حمله را خلاصه کند: پورتهایی که روی همهی آدرسها گوش میدهند، کاربرهای دارای پوسته، اعضای گروه sudo و تعداد فایلهای SUID. خروجی را در ~/surface-$(date +%F).txt ذخیره کن تا بعداً مقایسه کنی.
دیدن جواب
#!/usr/bin/env bashecho "== surface report: $(hostname) $(date '+%F %T')"echo "-- listening on all addresses:"sudo ss -tulpnH | awk '$5 ~ /^(0\.0\.0\.0|\[::\]|\*):/ {print " " $1, $5, $7}'echo "-- users with a login shell:"awk -F: '$7 !~ /(nologin|false|sync)$/ {print " " $1}' /etc/passwdecho "-- sudo group: $(getent group sudo | cut -d: -f4)"echo "-- SUID files: $(sudo find / -xdev -perm -4000 -type f 2>/dev/null | wc -l)"chmod +x surface.sh./surface.sh | tee ~/surface-$(date +%F).txt== surface report: server 2026-10-22 10:12:40-- listening on all addresses: tcp 0.0.0.0:80 users:(("nginx",pid=1712,fd=5),("nginx",pid=1711,fd=5)) tcp 0.0.0.0:22 users:(("sshd",pid=1023,fd=3),("systemd",pid=1,fd=72)) tcp [::]:80 users:(("nginx",pid=1712,fd=6),("nginx",pid=1711,fd=6)) tcp [::]:22 users:(("sshd",pid=1023,fd=3),("systemd",pid=1,fd=73))-- users with a login shell: root ubuntu-- sudo group: ubuntu-- SUID files: 13-H در ss سرتیتر را حذف میکند تا awk فقط داده ببیند؛ ستون پنجم آدرس محلی است. tee هم روی صفحه چاپ میکند و هم در فایل مینویسد. با diff surface-قدیم.txt surface-جدید.txt (دورهی لینوکس) هر تغییری در سطح حمله را میبینی.
برای فروشگاه آزمایشی، جدول مثال ۵ را با یک ستون «امتیاز ریسک» گسترش بده (کم=۱، متوسط=۲، زیاد=۳، خیلی زیاد=۴؛ امتیاز = احتمال × اثر) و ردیفها را از بالاترین امتیاز مرتب کن. با یک برنامهی کوچک پایتون این کار را انجام بده تا فردا با اضافه کردن ریسک جدید، فقط یک خط عوض کنی.
دیدن جواب
LEVEL = {"کم": 1, "متوسط": 2, "زیاد": 3, "خیلی زیاد": 4}
risks = [ ("حدس رمز SSH", "زیاد", "خیلی زیاد"), ("تزریق SQL", "متوسط", "خیلی زیاد"), ("XSS و دزدیدن جلسه", "متوسط", "زیاد"), ("بستهی وصلهنشده", "زیاد", "زیاد"), ("secret در گیت", "متوسط", "زیاد"), ("پر شدن دیسک", "متوسط", "متوسط"), ("باجافزار", "کم", "خیلی زیاد"),]
scored = sorted(risks, key=lambda r: LEVEL[r[1]] * LEVEL[r[2]], reverse=True)for name, likelihood, impact in scored: print(f"{LEVEL[likelihood] * LEVEL[impact]:>2} {name} ({likelihood} × {impact})")python3 risks.py12 حدس رمز SSH (زیاد × خیلی زیاد) 9 بستهی وصلهنشده (زیاد × زیاد) 8 تزریق SQL (متوسط × خیلی زیاد) 6 XSS و دزدیدن جلسه (متوسط × زیاد) 6 secret در گیت (متوسط × زیاد) 4 پر شدن دیسک (متوسط × متوسط) 4 باجافزار (کم × خیلی زیاد)ترتیب کار روشن شد: اول SSH، بعد وصلهها، بعد تزریق SQL. باجافزار امتیاز کمی گرفت چون احتمالش پایین است؛ ولی اثرش «خیلی زیاد» است و این نوع ریسکها (کماحتمال، فاجعهبار) را با کم کردن اثر مدیریت میکنی، نه احتمال: بکاپ بیرون از سرور که برمیگردد. یک عدد هرگز جای فکر را نمیگیرد. (sorted با key و lambda در دورهی پایتون، درس توابع.)
آزمونک
Section titled “آزمونک”ریسک چه وقت وجود دارد؟
جواب درست: وقتی دارایی ارزشمند، تهدید و آسیبپذیری کنار هم باشند
ریسک = احتمال × اثر، برای یک دارایی مشخص.
باجافزاری که دیسک را رمزنگاری میکند، بیش از همه کدام هدف را میزند؟
جواب درست: دسترسپذیری
داده هست ولی در دسترس نیست؛ بکاپ درمان اصلی است.
بیشتر حملههایی که یک VPS معمولی میبیند از کجاست؟
جواب درست: رباتهای خودکار که کل اینترنت را اسکن میکنند
از دقیقههای اول روشن شدن.
سطح حمله یعنی…
جواب درست: همهی درهایی که از آنها میشود به سیستم رسید
پورتها، کاربرها، برنامهها، کلیدها...
در ss -tulpn، سرویسی روی 127.0.0.1:5432 گوش میدهد. در سطح حملهی شبکهای از بیرون است؟
جواب درست: خیر؛ فقط از داخل همان ماشین قابلدسترسی است
درهای بیرونی روی 0.0.0.0 یا [::] هستند.
اسکن پورت سرور یک سایت دیگر «فقط برای یاد گرفتن» چطور است؟
جواب درست: بدون اجازهی صاحبش، غیرمجاز و در بسیاری کشورها جرم است
فقط آزمایشگاه خودت یا اجازهی کتبی.
جمعبندی
Section titled “جمعبندی”- امنیت با سؤال شروع میشود، نه ابزار: چه چیزی، در برابر چه کسی، از کدام در.
- دارایی، تهدید، آسیبپذیری؛ ریسک = احتمال × اثر؛ اولویت با بیشترین ریسک.
- سه هدف CIA: محرمانگی، درستی، دسترسپذیری.
- بیشتر مهاجمها رباتاند؛ وصله، کلید درست، پورت بسته و بکاپ بیشتر کار است.
- سطح حمله را کوچک کن:
ss -tulpn، کاربرها، sudo، SUID؛ و تغییراتش را مقایسه کن. - دفاع در عمق، کمترین دسترسی، و فرض نفوذ (تشخیص و بازیابی).
- همهی آزمایشها فقط روی آزمایشگاه خودت:
serverوclient.
| دستور | کاری که میکند |
|---|---|
multipass launch 24.04 --name server | ساختن ماشین آزمایشی |
sudo ss -tulpn | درهای شبکه |
awk -F: '$7 !~ /nologin|false/' /etc/passwd | کاربرهای دارای پوسته |
getent group sudo | چه کسانی root هستند |
find / -xdev -perm -4000 -type f | فایلهای SUID |
ریسک = احتمال × اثر | اولویتبندی |
CIA | محرمانگی، درستی، دسترسپذیری |
فقط آزمایشگاه خودت | قانون اول |