تنظیمات پیش فرض سروری که تازه نصب شده برای راه افتادن سریع انتخاب شده اند و امنیت در این انتخاب اولویت نداشته است. سرویس هایی روشن اند که کسی از آن ها استفاده نمی کند، ورود با رمز عبور از اینترنت باز است و پیکربندی اولیه را هر مهاجمی از قبل می شناسد. هاردنینگ برای بستن همین فاصله است. اول توضیح می دهیم hardening چیست و CIS Benchmark کجای کار قرار می گیرد، و بعد سراغ قدم های سرور لینوکس و ویندوز می رویم، به همان ترتیبی که باید انجامشان داد.
Hardening چیست؟
Hardening یا هاردنینگ (در منابع فارسی گاهی «مقاوم سازی» یا «امن سازی») یعنی کاهش سطح حمله یک سیستم. سطح حمله مجموع همه راه هایی است که از طریق آن ها می شود به سیستم دسترسی گرفت یا به آن آسیب زد: پورت های باز، سرویس های اضافه، حساب های کاربری، دسترسی های بیش از نیاز، نرم افزارهای به روزنشده و تنظیمات ضعیف.
در عمل، هر چیزی که برای وظیفه سرور لازم نیست حذف یا غیرفعال می شود و هر چیزی که لازم است، با کمترین دسترسی و امن ترین تنظیم اجرا می شود. هاردنینگ یکی از لایه های دفاع است و کنار فایروال، آنتی ویروس و بکاپ کار می کند؛ شانس موفقیت حمله را پایین می آورد و اگر نفوذی هم رخ دهد، پیشروی مهاجم را سخت تر می کند.
cis hardening چیست؟
CIS (Center for Internet Security) یک سازمان غیرانتفاعی است که برای سیستم عامل ها، دیتابیس ها، مرورگرها و سرویس های ابری راهنماهای پیکربندی امن به نام CIS Benchmark منتشر می کند. هر Benchmark فهرست بلندی از تنظیمات است که برای هر مورد توضیح، دلیل، روش بررسی و روش اصلاح دارد. «CIS hardening» هم یعنی اعمال همین تنظیمات روی سرور.
بیشتر Benchmark ها دو سطح دارند:
- Level 1 تنظیماتی را در بر می گیرد که روی اغلب سرورها بدون اختلال جدی اجرا می شوند و برای شروع مناسب اند.
- Level 2 برای محیط های حساس است و تنظیمات سخت تری دارد که ممکن است روی عملکرد یا سازگاری برخی نرم افزارها اثر بگذارد.
کنار CIS، راهنماهای DISA STIG و Security Baseline های مایکروسافت هم رایج اند. هیچ کدام را کورکورانه اعمال نکنید و هر قاعده را با نقش سرور بسنجید. سروری که cPanel روی آن است یا دیتابیس سنگین اجرا می کند استثناهای خودش را دارد و این استثناها باید مستند شوند.
قبل از شروع هاردنینگ سرور
- از سرور بکاپ یا snapshot بگیرید تا اگر تنظیمی سرویس را از کار انداخت، سریع به حالت قبل برگردید.
- مطمئن شوید دسترسی کنسول دارید (KVM، iDRAC، iLO یا کنسول هایپروایزر). اشتباه در تنظیم SSH یا فایروال می تواند دسترسی شبکه ای را قطع کند.
- بنویسید سرور چه کاری انجام می دهد، کدام پورت ها باید از کجا در دسترس باشند و چه کسانی به آن وارد می شوند.
- اگر چند سرور مشابه دارید، تغییرات را اول روی یکی تست کنید و بعد با ابزاری مثل Ansible یا Group Policy روی بقیه اعمال کنید.
هاردنینگ سرور لینوکس
دستورهای زیر برای AlmaLinux 9 و Ubuntu 22.04 و 24.04 نوشته شده اند.
1. به روزرسانی امنیتی خودکار
# Ubuntu
sudo apt install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades
# AlmaLinux 9
sudo dnf install dnf-automatic
# در /etc/dnf/automatic.conf:
# upgrade_type = security
# apply_updates = yes
sudo systemctl enable --now dnf-automatic.timer
به روزرسانی کرنل تا ریبوت بعدی اعمال نمی شود، پس برای ریبوت پنجره زمانی مشخصی بگذارید.
2. امن سازی SSH
فایل اصلی را مستقیم ویرایش نکنید و تنظیمات را در یک فایل جدا در /etc/ssh/sshd_config.d/ بنویسید. در sshd اولین مقداری که خوانده شود اعمال می شود، پس نام فایل را طوری انتخاب کنید که قبل از فایل های دیگر (مثل 50-cloud-init.conf) خوانده شود:
# /etc/ssh/sshd_config.d/00-hardening.conf
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
MaxAuthTries 3
LoginGraceTime 30
X11Forwarding no
AllowGroups sshusers
قبل از غیرفعال کردن ورود با رمز، کلید SSH کاربر خودتان را اضافه و تست کنید، گروه را با sudo groupadd sshusers بسازید و کاربر را با sudo usermod -aG sshusers username عضو آن کنید. بعد تنظیمات را بررسی و اعمال کنید. جلسه فعلی را تا وقتی از یک ترمینال جدید با موفقیت وارد نشده اید نبندید:
sudo sshd -t # بررسی خطای نگارشی
sudo sshd -T | grep -Ei 'permitrootlogin|passwordauthentication'
sudo systemctl reload sshd # در Ubuntu نام سرویس ssh است
3. فایروال و پورت های باز
اول ببینید چه سرویس هایی گوش می دهند و کدام ها واقعا لازم اند:
sudo ss -tulpn
systemctl list-unit-files --type=service --state=enabled
سرویس های اضافه را با systemctl disable --now خاموش کنید. بعد فقط پورت های لازم را باز بگذارید و SSH را به شبکه مدیریت محدود کنید:
# Ubuntu با ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow from 10.0.0.0/24 to any port 22 proto tcp
sudo ufw allow 443/tcp
sudo ufw enable
# AlmaLinux با firewalld
sudo firewall-cmd --list-all
sudo firewall-cmd --permanent --remove-service=cockpit
sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.0/24" service name="ssh" accept'
sudo firewall-cmd --reload
4. محدود کردن تلاش های ورود با Fail2ban
وقتی SSH یا پنل مدیریتی ناچار باید از اینترنت در دسترس باشد، Fail2ban آدرس هایی را که پشت سر هم ورود ناموفق دارند برای مدتی مسدود می کند. در AlmaLinux بسته از مخزن EPEL نصب می شود.
# /etc/fail2ban/jail.local
[sshd]
enabled = true
maxretry = 5
findtime = 10m
bantime = 1h
5. SELinux و AppArmor را خاموش نکنید
خیلی از آموزش ها برای «رفع مشکل» می گویند SELinux را غیرفعال کنید، و این از رایج ترین توصیه های اشتباه است. در AlmaLinux با getenforce مطمئن شوید حالت روی Enforcing است و اگر سرویسی خطا داد، با ausearch -m avc -ts recent علت را پیدا کنید و boolean یا context درست را تنظیم کنید. در Ubuntu وضعیت AppArmor را با aa-status ببینید.
6. تنظیمات کرنل، لاگ و ممیزی
# /etc/sysctl.d/60-hardening.conf
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.tcp_syncookies = 1
kernel.dmesg_restrict = 1
با sudo sysctl --system اعمال کنید. سرویس auditd را فعال نگه دارید و لاگ ها را به یک سرور لاگ مرکزی بفرستید؛ این طوری اگر سرور آلوده شود، مهاجم نمی تواند ردپای خودش را کامل پاک کند.
7. ممیزی با Lynis و OpenSCAP
بعد از تغییرات، وضعیت را با یک ابزار ممیزی بسنجید. Lynis روی بیشتر توزیع ها اجرا می شود و فهرستی از پیشنهادها بیرون می دهد. OpenSCAP سرور را با پروفایل CIS مقایسه و گزارش HTML تولید می کند:
sudo lynis audit system
# AlmaLinux 9
sudo dnf install openscap-scanner scap-security-guide
oscap info /usr/share/xml/scap/ssg/content/ssg-almalinux9-ds.xml
sudo oscap xccdf eval \
--profile xccdf_org.ssgproject.content_profile_cis_server_l1 \
--report cis-report.html \
/usr/share/xml/scap/ssg/content/ssg-almalinux9-ds.xml
در Ubuntu، ابزار Ubuntu Security Guide (USG) که با اشتراک Ubuntu Pro ارائه می شود، همین کار را برای پروفایل های CIS انجام می دهد.
هاردنینگ ویندوز سرور
در ویندوز بیشتر کار هاردنینگ با Group Policy انجام می شود. مایکروسافت در Security Compliance Toolkit، baseline های آماده برای نسخه های ویندوز سرور همراه ابزار Policy Analyzer برای مقایسه با تنظیمات فعلی منتشر می کند. در Windows Server 2025 امکان OSConfig هم برای اعمال baseline امنیتی اضافه شده است.
بررسی های سریع با PowerShell
# SMBv1 نصب است؟ (باید Available یا Removed باشد)
Get-WindowsFeature FS-SMB1
Uninstall-WindowsFeature -Name FS-SMB1 -Restart
# فایروال ویندوز در همه پروفایل ها روشن است؟
Get-NetFirewallProfile | Select-Object Name, Enabled, DefaultInboundAction
# RDP فقط با Network Level Authentication (مقدار 1)
(Get-CimInstance -Namespace root\cimv2\TerminalServices -ClassName Win32_TSGeneralSetting -Filter "TerminalName='RDP-tcp'").UserAuthenticationRequired
# چه کسانی ادمین محلی هستند؟
Get-LocalGroupMember -Group Administrators
# سیاست ممیزی فعلی
auditpol /get /category:*
# وضعیت Microsoft Defender
Get-MpComputerStatus | Select-Object RealTimeProtectionEnabled, AntivirusSignatureLastUpdated
حساب ها و دسترسی ها
- برای کارهای مدیریتی حساب جدا از حساب روزمره (ایمیل و مرورگر) داشته باشید.
- تعداد اعضای Domain Admins را به حداقل برسانید و از این حساب ها فقط روی Domain Controller استفاده کنید.
- Windows LAPS را فعال کنید تا رمز ادمین محلی روی هر سرور متفاوت باشد و خودکار عوض شود.
- روی Domain Controller ها سرویس Print Spooler را غیرفعال کنید، مگر اینکه واقعا لازم باشد.
- پروتکل های قدیمی مثل LLMNR و NTLMv1 را با Group Policy خاموش کنید.
- RDP را روی اینترنت باز نگذارید؛ دسترسی باید از طریق VPN یا RD Gateway و با احراز هویت دومرحله ای باشد.
چک لیست هاردنینگ سرور
| مورد | لینوکس | ویندوز |
|---|---|---|
| به روزرسانی امنیتی | unattended-upgrades یا dnf-automatic | WSUS یا Windows Update با زمان بندی |
| حذف سرویس های اضافه | ss -tulpn و systemctl disable |
حذف Role و Feature های بلااستفاده |
| فایروال میزبان | ufw یا firewalld با قاعده deny پیش فرض | Windows Defender Firewall در هر سه پروفایل |
| دسترسی مدیریتی | SSH با کلید، بدون root، محدود به شبکه مدیریت | RDP با NLA، فقط از VPN یا Gateway |
| حساب ها | sudo به جای root، حذف کاربران بلااستفاده | حساب ادمین جدا، Windows LAPS |
| کنترل دسترسی اجباری | SELinux در حالت Enforcing یا AppArmor | Credential Guard و ASR در صورت پشتیبانی |
| لاگ و ممیزی | auditd و ارسال لاگ به سرور مرکزی | Advanced Audit Policy و جمع آوری Event Log |
| محافظت در برابر بدافزار | بررسی یکپارچگی فایل، اسکن دوره ای | Microsoft Defender یا EDR با کنسول مرکزی |
| سنجش | Lynis، OpenSCAP با پروفایل CIS | Policy Analyzer، مقایسه با Security Baseline |
| مستندسازی | فهرست تغییرات و استثناها با دلیل | فهرست GPO ها و استثناها با دلیل |
اصول تنظیم ورود امن در SSH چیست آمده، نصب گواهی و HSTS در نصب SSL روی سرور، و فایروال متن باز pfSense در آموزش pfSense.
اشتباهات رایج در هاردنینگ
- اسکریپت آماده ای که همه قواعد CIS را یکجا و بدون بررسی اعمال می کند، ممکن است سرویس اصلی سرور را از کار بیندازد.
- اگر فایروال یا SSH را بدون دسترسی کنسول و بدون یک جلسه باز پشتیبان تنظیم کنید، ممکن است خودتان پشت فایروال بمانید.
- تغییر پورت SSH تعداد لاگ ها را کم می کند، ولی اگر تنها اقدام شما باشد جلوی مهاجم هدفمند را نمی گیرد.
- با گذشت زمان نرم افزار جدید نصب می شود، پورت هایی موقتا باز می شوند و کاربر اضافه می شود، و تنظیمات از حالت اولیه فاصله می گیرند. برای همین هاردنینگ یک باره کافی نیست و ممیزی را باید دوره ای تکرار کرد.
هاردنینگ را از کجا شروع کنیم؟
اگر وقت کم دارید، از این چهار قدم شروع کنید: به روزرسانی، بستن دسترسی مدیریتی از اینترنت، حذف سرویس های اضافه و فایروال میزبان. همین ها بخش بزرگی از حمله های خودکار را بی اثر می کنند و ممیزی با CIS و بقیه موارد را می شود بعد انجام داد.
اصول فیلتر ترافیک و قوانین پیش فرض در فایروال چیست آمده است.
باز کردن RDP روی اینترنت یکی از خطرهای رایج است؛ جزئیات در RDP چیست آمده.
وصله امنیتی به موقع در WSUS چیست شرح داده شده است.
اعمال یکسان تنظیمات امنیتی روی همه سرورها در تفاوت Terraform و Ansible آمده است.
منابع و مستندات رسمی
- مستندات Ubuntu درباره USG و استاندارد CIS
- مستندات Microsoft درباره Security Baseline ویندوز
- راهنمای NIST برای امن سازی سرور (SP 800-123)
در سرویس هاردنینگ سرور لینوکس و ویندوز، همین کار روی سرورهای شما و با توجه به نقش هر سرور انجام می شود: اول وضعیت فعلی ممیزی می شود، تغییرات روی محیط آزمایشی تست و بعد اعمال می شوند، و در پایان گزارشی از تغییرات و استثناها دریافت می کنید. اگر هنوز نمی دانید سرورتان از بیرون چه نقاط ضعفی دارد، می توانید با اسکن امنیتی رایگان شروع کنید و بعد درباره امن سازی سرور تصمیم بگیرید.



