آ

آموزشگاه سانانت | یادگیری دواپس و مفاهیم لینوکس

۱۵۲ عضو
thumbnail
Terraform چیه دقیقاً؟Terraform یک ابزار Infrastructure as Code یا همان زیرساخت به‌عنوان کد است.یعنی به‌جای اینکه سرور، دیتابیس، شبکه، فایروال، Load Balancer یا سرویس‌های ابری را دستی از داخل پنل AWS، Azure، Google Cloud یا هر سرویس دیگری بسازیم، آن‌ها را با کد تعریف می‌کنیم.مثلاً به Terraform می‌گوییم:«من یک سرور با این مشخصات می‌خواهم، یک دیتابیس با این تنظیمات، یک شبکه با این دسترسی‌ها و این تعداد Resource.»بعد Terraform می‌آید وضعیت فعلی زیرساخت را بررسی می‌کند، تفاوتش را با چیزی که در کد نوشته‌ایم می‌سنجد و همان تغییرات لازم را اعمال می‌کند.مزیت اصلی Terraform این است که زیرساخت ما:قابل تکرار می‌شود،قابل مستندسازی می‌شود،قابل نسخه‌بندی در Git می‌شود،و خطای انسانی در ساخت و تغییر زیرساخت کمتر می‌شود.به زبان ساده‌تر:Terraform مثل یک نقشه مهندسی برای زیرساخت است.شما نقشه را با کد می‌نویسید، Terraform طبق همان نقشه زیرساخت را می‌سازد یا اصلاح می‌کند.برای همین در تیم‌های DevOps، Cloud، Platform Engineering و حتی تیم‌های نرم‌افزاری مدرن، Terraform یکی از ابزارهای کلیدی محسوب می‌شود.چون در دنیای امروز، مدیریت زیرساخت فقط کلیک‌کردن در پنل‌های ابری نیست؛زیرساخت هم باید مثل نرم‌افزار، دقیق، قابل کنترل و قابل توسعه باشد.#Terraform #DevOps #Cloud #InfrastructureAsCode #IaaC #SoftwareEngineering
undefined۴

۲۳۵

۱۰:۳۹

thumbnail
undefined بچه‌ها اگه دنبال یه نمونه کامل و اصولی برای راه‌اندازی Root CA و Intermediate CA هستید، این Git repo رو ببینید.توش مراحل راه‌اندازی Root CA و Intermediate CA به‌صورت کامل اومده و ساختارش هم مطابق مدل اصولی PKI طراحی شده؛ یعنی هم CA اصلی رو دارید، هم CA میانی رو، که برای مدیریت امن‌تر و استانداردتر گواهی‌ها استفاده می‌شه.لینک repo:https://github.com/arezoomohammadi22/cryptography/tree/main/root-intermediate-caبرای کسایی که به امنیت، رمزنگاری، PKI و گواهی‌های دیجیتال علاقه دارن، دیدنش واقعاً می‌تونه کاربردی باشه undefined
undefined۴

۲۴۹

۱۴:۲۴

thumbnail
undefined استفاده از Repository داخلی Ubuntu در زمان اختلال اینترنت
وقتی اینترنت بین‌الملل کند یا قطع می‌شود، نصب و آپدیت پکیج‌ها در Ubuntu هم به مشکل می‌خورد.مثلاً همین دستور ساده:
sudo apt update
sudo apt install nginx

ممکن است خطا بدهد، چون سیستم نمی‌تواند به مخازن اصلی Ubuntu وصل شود. بله، حتی نصب nginx هم گاهی نیازمند صلح جهانی است.
---
undefined راه‌حل چیست؟
می‌توانیم از mirrorهای داخلی مثل ابر آروان استفاده کنیم تا پکیج‌ها از یک مخزن داخلی دریافت شوند.
مزایا:
• سرعت بهتر• پایداری بیشتر در زمان اختلال اینترنت• کاهش وابستگی به اینترنت خارجی• مناسب برای سرورها و محیط‌های سازمانی
---
undefined بررسی نسخه Ubuntu
اول نسخه سیستم را ببینید:
lsb_release -a

یا:
cat /etc/os-release

به کدنام نسخه دقت کنید:
• Ubuntu 24.04 → noble• Ubuntu 22.04 → jammy• Ubuntu 20.04 → focal
---
undefined نمونه تنظیم برای Ubuntu 22.04
ابتدا backup بگیرید:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup

فایل را باز کنید:
sudo nano /etc/apt/sources.list

برای Ubuntu 22.04 این موارد را قرار دهید:
deb http://mirror.arvancloud.ir/ubuntu/ jammy main restricted universe multiverse
deb http://mirror.arvancloud.ir/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirror.arvancloud.ir/ubuntu/ jammy-backports main restricted universe multiverse
deb http://mirror.arvancloud.ir/ubuntu/ jammy-security main restricted universe multiverse

بعد اجرا کنید:
sudo apt update

---
undefined تست نصب
sudo apt install curl

اگر بدون خطا نصب شد، تنظیمات درست است.
---
undefined نکته مهم
قبل از تغییر repository همیشه backup بگیرید و کدنام نسخه Ubuntu را درست وارد کنید.برای سرورهای production هم اول روی محیط تست بررسی کنید، چون خراب کردن سرور اصلی هنر نیست؛ حادثه است.
---
undefined جمع‌بندی
در زمان اختلال اینترنت، استفاده از repository داخلی برای Ubuntu باعث می‌شود نصب و آپدیت پکیج‌ها سریع‌تر و پایدارتر انجام شود.
برای تیم‌های DevOps و SysAdmin، تنظیم mirror داخلی یک کار ضروری است، نه تزئینی.
#Ubuntu #Linux #DevOps #SysAdmin #Repository #Mirror #ArvanCloud
undefined۴

۲۵۹

۱۰:۰۶

thumbnail
undefined استفاده از Repositoryهای داخلی داکر در زمان اختلال یا قطعی اینترنت
در شرایطی که دسترسی به اینترنت بین‌الملل دچار اختلال می‌شود، یکی از اولین مشکلاتی که برای تیم‌های فنی، DevOps، ادمین‌های لینوکس و برنامه‌نویس‌ها پیش می‌آید، نصب و آپدیت ابزارهاست.
مثلاً می‌خواهیم یک پکیج نصب کنیم، یک image از Docker بگیریم، وابستگی‌های پروژه را نصب کنیم یا سرور را آپدیت کنیم؛ اما سیستم با افتخار اعلام می‌کند که به مخزن اصلی وصل نمی‌شود. خیلی هم باشکوه، دقیقاً وسط کار ضروری.
اینجاست که Repositoryها و Mirrorهای داخلی مثل ابر آروان و سرویس‌های مشابه می‌توانند کمک‌کننده باشند.
---
undefined Repository یا Mirror داخلی چیست؟
Mirror داخلی یعنی یک نسخه کپی‌شده یا واسط از مخازن اصلی نرم‌افزاری که داخل کشور میزبانی می‌شود.
به‌جای اینکه سیستم ما مستقیم به منابع خارجی مثل Docker Hub، Ubuntu Repository، PyPI یا npm وصل شود، درخواست‌ها از طریق یک سرویس داخلی انجام می‌شود.
نتیجه چیست؟
• سرعت بهتر در دانلود• کاهش وابستگی به اینترنت بین‌الملل• پایداری بیشتر در زمان اختلال• مصرف کمتر ترافیک خارجی• مناسب برای سرورها و محیط‌های سازمانی
---
undefined مثال برای Docker
در حالت عادی برای دریافت nginx می‌نویسیم:
docker pull nginx

اما اگر دسترسی به Docker Hub مشکل داشته باشد، می‌توان از mirror داخلی استفاده کرد.
نمونه:
docker pull docker.arvancloud.ir/nginx

یا برای نسخه خاص:
docker pull docker.arvancloud.ir/nginx:alpine

همچنین می‌توان mirror را در تنظیمات Docker تعریف کرد تا Docker به‌صورت پیش‌فرض از آن استفاده کند.
فایل زیر را باز یا ایجاد کنید:
sudo nano /etc/docker/daemon.json

و مقدار زیر را قرار دهید:
{
  "registry-mirrors": [
    "https://docker.arvancloud.ir"
  ]
}

سپس Docker را ری‌استارت کنید:
sudo systemctl restart docker

برای تست:
docker pull nginx

---
undefined برای Linux Repositoryها
در سرورهای لینوکسی هم می‌توان از mirrorهای داخلی برای نصب و آپدیت پکیج‌ها استفاده کرد.
مثلاً به‌جای اینکه Ubuntu یا Debian از سرورهای خارجی پکیج‌ها را دانلود کند، می‌توان source list را به mirror داخلی تغییر داد.
این کار مخصوصاً برای دیتاسنترها، شرکت‌ها و سرورهایی که همیشه باید در دسترس باشند، بسیار مهم است.
---
undefined برای ابزارهای توسعه
در شرایط محدودیت یا اختلال، بهتر است برای ابزارهای زیر هم mirror داخلی یا cache داخلی در نظر گرفته شود:
• Docker Registry• Ubuntu / Debian Repository• npm Registry• PyPI برای Python• Composer برای PHP• Maven Repository• Git Mirror برای پروژه‌های مهم
---
undefined نکته امنیتی مهم
استفاده از mirror داخلی مفید است، اما نباید کورکورانه انجام شود.
قبل از استفاده، باید مطمئن شویم:
• سرویس معتبر است• از HTTPS استفاده می‌کند• imageها و packageها دست‌کاری نشده‌اند• نسخه‌ها مشخص و قابل بررسی هستند• برای محیط production، سیاست امنیتی سازمان رعایت شده است
چون نصب پکیج از منبع نامطمئن یعنی دعوت رسمی از خرابکاری به سرور. آن هم با فرش قرمز.
---
undefined بهترین کار چیست؟
برای تیم‌های فنی بهتر است قبل از بحران، این موارد آماده شود:
• تنظیم mirror داخلی برای Docker• تعریف repository داخلی برای Linux• ساخت cache داخلی برای dependencyها• نگهداری imageهای مهم Docker در registry سازمانی• مستندسازی روش نصب ابزارهای ضروری• تست دوره‌ای در شرایط بدون اینترنت خارجی
---
undefined جمع‌بندی
در زمان قطعی یا اختلال اینترنت، استفاده از repoها و mirrorهای داخلی مثل ابر آروان می‌تواند کار تیم‌های فنی را نجات دهد.
اما این راهکار باید از قبل آماده شده باشد، نه زمانی که سرور production خوابیده و همه با چشمان نگران به ترمینال خیره شده‌اند.
در DevOps همیشه یک اصل مهم وجود دارد:
زیرساختی که فقط در شرایط عادی کار کند، زیرساخت قابل اعتماد نیست.
#DevOps #Docker #Linux #Repository #ArvanCloud #Infrastructure #SysAdmin #Cloud
undefined۶

۲۹۶

۱۰:۱۷

terraform-sananetco.pdf

۲.۱۸ مگابایت

توی این فایل آموزشی با مفاهیم Infrastructure as Code (IaC) آشنا می‌شیم و یاد می‌گیریم چطور با Terraform زیرساخت‌ها رو به صورت کد مدیریت کنیم.موضوعات اصلی این آموزش:مفهوم IaC و اهمیتش تو مدیریت زیرساختمعرفی Terraform و مزایای استفاده از اوننصب و راه‌اندازی Terraformچرخه عمر (Cycle) ایجاد، تغییر و مدیریت زیرساخت‌ها با Terraform
undefined۸

۲۳۶

۱۲:۲۴

thumbnail
undefined Let’s Encrypt چیست؟
Let’s Encrypt یک Certificate Authority رایگان و معتبر است که به ما کمک می‌کند برای سایت یا سرویس خودمان SSL/TLS Certificate بگیریم.
یعنی ارتباط کاربر با سایت از حالت ناامن HTTP به حالت امن HTTPS تبدیل می‌شود.
اما Let’s Encrypt قبل از صدور Certificate باید مطمئن شود که ما واقعاً کنترل آن domain را داریم.
به این مرحله می‌گوییم:
undefined Domain Validationیا همان احراز هویت domain
روش‌های رایج احراز هویت در Let’s Encrypt:
undefined HTTP Challengeدر این روش، Let’s Encrypt یک فایل یا token موقت را از طریق وب‌سرور بررسی می‌کند. اگر آن فایل از طریق domain قابل دسترسی باشد، یعنی کنترل سرور دست ماست.
🧾 DNS Challengeدر این روش، باید یک TXT Record مخصوص داخل DNS دامنه قرار بدهیم. اگر Let’s Encrypt بتواند آن record را ببیند، مالکیت domain تأیید می‌شود. این روش برای wildcard certificate هم کاربرد دارد.
undefined TLS-ALPN Challengeدر این روش، اعتبارسنجی از طریق TLS روی پورت 443 انجام می‌شود و بیشتر در سناریوهای خاص یا automation استفاده می‌شود.
undefined پس Let’s Encrypt فقط SSL رایگان نمی‌دهد؛ اول مطمئن می‌شود domain واقعاً تحت کنترل ماست، بعد certificate صادر می‌کند.
در پست بعدی می‌رویم سراغ اینکه چطور با Let’s Encrypt برای Nginx SSL بگیریم و آن را روی Nginx bind کنیم.
undefined۴
undefined۲

۲۴۴

۱۱:۱۳

nginx-and-letsencrypt-certbot.pdf

۲.۵ مگابایت

undefined گرفتن SSL برای Nginx با Let’s Encrypt
اگر با Nginx کار می‌کنی، دیر یا زود به SSL و HTTPS می‌رسی.
توی فایل آموزشی جدید، قدم‌به‌قدم توضیح دادم که چطور با Let’s Encrypt و Certbot برای Nginx SSL Certificate بگیریم و آن را روی Nginx bind کنیم.
داخل این فایل یاد می‌گیری:
undefined Let’s Encrypt چیستundefined Certbot چه کاری انجام می‌دهدundefined روش‌های احراز هویت مثل HTTP Challenge و DNS Challenge چه تفاوتی دارندundefined چطور SSL Certificate برای domain بگیریمundefined چطور Certificate را روی Nginx config کنیمundefined چطور HTTPS را تست کنیمundefined چطور renewal را بررسی و مدیریت کنیمundefined اگر خطا گرفتیم، از کجا troubleshooting را شروع کنیم
undefined این فایل فقط توضیح تئوری نیست.
داخلش commandها، configurationها، تست‌ها و نکات عملی آورده شده تا بتوانی واقعاً روی سرور اجرا کنی و نتیجه بگیری.
اگر می‌خواهی Nginx را برای HTTPS آماده کنی و دقیق بفهمی پشت SSL گرفتن چه اتفاقی می‌افتد، این فایل می‌تواند یک راهنمای کاربردی و مرحله‌به‌مرحله برایت باشد.
undefined فایل را دانلود کن و کنار تمرین‌های Nginx نگه دار.
undefined۵
undefined۲

۲۹۰

۱۱:۱۵

thumbnail
undefined SSH Key-Based Authentication یعنی چی؟
معمولاً برای ورود به سرور با SSH از password استفاده می‌کنیم:
ssh user@server-ip

اما روش حرفه‌ای‌تر این است که به جای password از SSH key استفاده کنیم.
در این روش دو کلید داریم:
`Private Key` → روی سیستم خودمان می‌ماند و نباید share شود.`Public Key` → روی سرور قرار می‌گیرد.
ساخت key:
ssh-keygen -t ed25519 -C "your-email@example.com"

کپی کردن public key روی سرور:
ssh-copy-id user@server-ip

بعد از آن می‌توانیم بدون وارد کردن password وارد شویم:
ssh user@server-ip

مزیت‌ها:
undefined امن‌تر از passwordundefined مناسب برای server و DevOpsundefined کاربردی برای GitHub/GitLabundefined مناسب برای automation و CI/CD
نکته مهم:`Private Key` مثل کلید اصلی خانه شماست؛ هیچ‌وقت آن را برای کسی نفرستید.
undefined۱

۱۲۹

۱۰:۰۲

thumbnail
undefined چند نکته مهم برای SSH Hardening
اگر سرور Linux دارید، فقط راه‌اندازی SSH کافی نیست؛ باید آن را امن‌تر هم کنید.
چند کار مهم:
undefined استفاده از SSH Key به جای passwordundefined غیرفعال کردن login مستقیم با rootundefined تغییر default port در صورت نیازundefined محدود کردن userهایی که اجازه SSH دارندundefined فعال کردن firewallundefined نصب ابزارهایی مثل Fail2Ban برای جلوگیری از brute-forceundefined بستن password authentication بعد از تست key login
مثلاً در فایل:
/etc/ssh/sshd_config

می‌توانیم تنظیماتی مثل این داشته باشیم:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes

بعد هم SSH را restart می‌کنیم:
sudo systemctl restart ssh

undefined نکته مهم: قبل از تغییر تنظیمات SSH، همیشه یک session باز نگه دارید تا اگر اشتباهی رخ داد، دسترسی‌تان به سرور قطع نشود.
undefined فایل آموزشی کامل SSH Hardening فردا داخل کانال قرار می‌گیرد.
undefined۱

۱۳۶

۱۰:۰۷

thumbnail
undefined Fail2Ban فقط برای SSH نیست؛ یک Log-Based Intrusion Prevention Tool است.
`Fail2Ban` لاگ سرویس‌ها را مانیتور می‌کند، patternهای مشکوک را با filterهای regex تشخیص می‌دهد و بعد از رسیدن تعداد خطاها به حد مشخص، با actionهایی مثل `iptables` یا `nftables`، IP مهاجم را موقتاً ban می‌کند.
undefined نصب در Ubuntu/Debian:
sudo apt updatesudo apt install fail2ban -ysudo systemctl enable --now fail2ban
ساخت تنظیمات جداگانه:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
نمونه jail برای SSH:
[sshd]enabled = trueport = sshfilter = sshdlogpath = /var/log/auth.logmaxretry = 5findtime = 10mbantime = 1h
نمونه jail برای Nginx authentication error:
[nginx-http-auth]enabled = trueport = http,httpsfilter = nginx-http-authlogpath = /var/log/nginx/error.logmaxretry = 5findtime = 10mbantime = 1h
undefined مفهوم پارامترها:
`maxretry` یعنی چند تلاش ناموفق مجاز است.`findtime` یعنی این تلاش‌ها در چه بازه‌ای بررسی شوند.`bantime` یعنی IP چه مدت ban بماند.`filter` یعنی کدام regex pattern روی لاگ‌ها اعمال شود.`action` یعنی ban با چه مکانیزمی انجام شود.
بررسی وضعیت:
sudo fail2ban-client statussudo fail2ban-client status sshd
Restart بعد از تغییرات:
sudo systemctl restart fail2ban
undefined مناسب برای SSH، Nginx، Apache، Mail Server، FTP، WordPress Login و حتی endpointهای سفارشی APIundefined کاهش brute-force و credential stuffingundefined قابل اتصال به firewall backend مثل `iptables` و `nftables`undefined قابل توسعه با filter و jail سفارشی
undefined نکته مهم:Fail2Ban جای secure configuration، firewall، rate limiting و SSH key authentication را نمی‌گیرد؛ بلکه یک لایه reactive defense روی لاگ‌هاست.
undefined۴

۱۷۷

۱۳:۱۳