مراحل اولیه برای ایمن سازی راکی لینوکس #
مقدمه #
این راهنما برخی از بهترین شیوههای امنیتی برای یک سرور جدید Rocky Linux را شرح میدهد. شما یاد خواهید گرفت که چگونه:
- از کلید SSH استفاده کنید
- یک حساب کاربری استاندارد جدید ایجاد کنید و به آن امتیازات sudo بدهید
- دسترسی SSH را برای کاربر root غیرفعال کنید
- تغییر پورت پیشفرض SSH
- غیرفعال کردن تغییر منطقه فایروال
پیش نیاز ها #
شما باید یک ایستگاه کاری محلی با OpenSSH نصب شده مانند ویندوز ۱۰ یا بالاتر، macOS یا لینوکس داشته باشید.
اگر کلید SSH ندارید، باید قبل از استقرار سرور، یکی ایجاد کرده و آن را به حساب نگارنوین خود اضافه کنید.
- یک ترمینال روی ایستگاه کاری محلی خود باز کنید.
- از
ssh-keygenبرای تولید یک کلید SSH جدید استفاده کنید.$ ssh-keygen -t ed25519 -C email@example.com -f ~/.ssh/id_ed25519-negarnovin-example* گزینه
-tنوع کلید را مشخص میکند. ed25519 توصیه میشود زیرا از RSA امنتر است. اگر کلیدهای RSA یا DSA را ترجیح میدهید، id_ed25519 را به id_rsa یا id_dsa تغییر دهید.- پرچم
-Cتوضیح مربوط به کلید را مشخص میکند. این اختیاری است. اضافه کردن آدرس ایمیل ایده خوبی است. - پرچم
-fفایلی را که کلید در آن ذخیره میشود مشخص میکند. این اختیاری است. نام پیشفرض برای فرمت ed25519،~/.ssh/id_ed25519. است. میتوانید مانند تصویر بالا، از نام دیگری برای شناسایی کلید استفاده کنید.
- پرچم
این یک جفت کلید خصوصی/عمومی ایجاد میکند. با فرض اینکه کلید خود را مطابق شکل بالا نامگذاری کردهاید، جفت کلید در پوشه ~/.ssh/ قرار دارد و نام آن:
- Private key: id_ed25519-negarnovin-example
- Public key: id_ed25519-negarnovin-example.pub
شما باید کلید خصوصی را مخفی نگه دارید. فایل *.pub را آپلود کرده و آن را روی سرور نصب خواهید کرد.
- وارد ناحیه شوید.
- روی نام خود در بالا سمت راست کلیک کنید، سپس از منوی کشویی، SSH Keys را انتخاب کنید.
- برای افزودن کلید، روی دکمه آبی «علامت بعلاوه» کلیک کنید.
- یک نام توصیفی برای کلید وارد کنید.
- کلید عمومی خود را در ترمینال خود مشاهده کنید. باید چیزی شبیه به این باشد:
$ cat ~/.ssh/id_ed25519-negarnovin-example.pub ssh-ed25519 AAAAC3N/EXAMPLE/EXAMPLE/EXAMPLE/8Tlzou61bXpnMemiFfDbS/LRha7uFQu9iEWyI email@example.com - رشته خروجی را در فیلد SSH Key کپی کنید. چیزی شبیه به این خواهد بود:

- برای افزودن کلید SSH به حساب کاربری خود، روی دکمهی «افزودن کلید SSH» کلیک کنید.
نصب یک سرور #
در پورتال مشتری نگارنوین ، یک سرور ابری جدید Rocky Linux راهاندازی کنید. هنگام راهاندازی، حتماً کلید SSH خود را در پورتال مشتری انتخاب کنید و نگار نوین به طور خودکار آن کلید را برای کاربر root نصب خواهد کرد.
این راهنما در تمام مثالهای زیر از ۱۹۲.۰.۲.۱۲۳ به عنوان آدرس IP سرور استفاده میکند.
از ترمینال محلی خود، با دسترسی روت به سرور SSH کنید:
$ ssh root@192.0.2.123اگر کلید خصوصی شما در مکان استاندارد نیست، از پارامتر -i مانند این استفاده کنید:
$ ssh -i /path/to/your/key/privatekeyfile root@192.0.2.123اگر همه چیز به درستی کار کند، بدون درخواست رمز عبور وارد سیستم خواهید شد.
۱. یک کاربر استاندارد با دسترسی sudo اضافه کنید. #
این یک روش امنیتی خوب است که کارهای نگهداری عادی را با کاربر معمولی انجام دهید و برای دستوراتی که به دسترسی بالاتری نیاز دارند از sudo استفاده کنید. برای اکثر اهداف، نباید به طور معمول با کاربر root وارد سیستم شوید. در اینجا نحوه انجام این کار آمده است:
- یک حساب کاربری جدید ایجاد کنید.
# adduser example_user - برای کاربر جدید یک رمز عبور قوی تعیین کنید.
# passwd example_user Changing password for user example_user. New password: Retype new password: passwd: all authentication tokens updated successfully. - کاربر جدید را با استفاده از usermod به گروه wheel اضافه کنید.
# usermod -aG wheel example_user - فایل sudoers را با
visudoبررسی کنید.# visudo - به دنبال گروه چرخ بگردید. اگر خط غیرفعال است، کامنت را حذف کنید. وقتی آماده ذخیره فایل شدید، باید به این شکل باشد.
## Allows people in group wheel to run all commands %wheel ALL=(ALL) ALL - ذخیره کنید و از vi خارج شوید. Esc, سپس ColonWQ, و در نهایت Enter را تایپ کنید.
نکته: ابزار visudo قبل از اعمال ویرایشهای شما در فایل، بررسی نحوی انجام میدهد. یک فایل sudoers ناقص میتواند سیستم شما را از کار بیندازد. هرگز فایل /etc/sudoers را مستقیماً ویرایش نکنید. برای مثال، اگر خطایی رخ دهد، هنگام خروج از visudo این خطا را مشاهده خواهید کرد.
visudo: >>> /etc/sudoers: syntax error near line 64 <<< What now? Options are: (e)dit sudoers file again e(x)it without saving changes to sudoers file (Q)uit and save changes to sudoers file (DANGER!) - برای آزمایش دسترسی sudo به کاربر جدید بروید.
# su - example_userبا استفاده از
whoami,تأیید کنید که کاربر جدید هستید، سپس دسترسی sudo را باsudo whoami, آزمایش کنید، که باید root را برگرداند.$ whoami example_user $ sudo whoami [sudo] password for example_user: root - از ترمینال خارج شوید و سرور را ببندید.
۲. فعال کردن دسترسی SSH برای کاربر جدید #
یک ترمینال جدید در ایستگاه کاری محلی خود باز کنید، سپس از ssh-copy-id برای اضافه کردن کلید SSH به کاربر استاندارد جدید استفاده کنید. این کار کلید SSH عمومی را در فایل authorized_keys کاربر جدید کپی میکند.
$ ssh-copy-id -i ~/.ssh/id_ed25519-negarnovin-example.pub example_user@192.0.2.123هرگز کلید خصوصی خود را روی سرور کپی نکنید.
به عنوان کاربر جدید وارد سرور شوید. اگر همه چیز به درستی کار کند، بدون درخواست رمز عبور وارد سیستم خواهید شد.
$ ssh example_user@192.0.2.123۳. پیکربندی SSH #
بهترین روش این است که SSH را برای حساب کاربری root غیرفعال کنید و دسترسی SSH مبتنی بر رمز عبور را نیز غیرفعال کنید.
- فایل پیکربندی سرور SSH را باز کنید:
$ sudo nano /etc/ssh/sshd_config - SSH را برای کاربر root غیرفعال کنید. به دنبال خط PermitRootLogin بگردید و دستورالعمل آن را به NO تغییر دهید.
PermitRootLogin no - احراز هویت با رمز عبور SSH را غیرفعال کنید. دستورالعمل PasswordAuthentication را به NO تغییر دهید.
PasswordAuthentication no> با این تنظیم، شما باید از کلیدهای SSH برای احراز هویت استفاده کنید.
- فایل را ذخیره کنید و ببندید.
- با راهاندازی مجدد SSH، تغییرات را فعال کنید:
$ sudo systemctl reload sshd
از این مرحله به بعد، باید به عنوان کاربر استاندارد خود وارد شوید. برای دستوراتی که نیاز به دسترسی بیشتری دارند، از sudo استفاده کنید.
۴. تغییر پورت پیش فرض SSH #
تغییر پورت پیشفرض SSH یک کار اختیاری است. برخی از مدیران شبکه این کار را برای کاهش تعداد تلاشهای اسکن پورت روی سرور توصیه میکنند. برای تغییر آن:
- فایل پیکربندی سرور SSH را ویرایش کنید.
$ sudo nano /etc/ssh/sshd_config - به دنبال خط مربوط به Port 22 بگردید، آن را از حالت کامنت خارج کنید و شماره پورت را به پورت دلخواه خود تغییر دهید. مانند این:
Port 22022پورت باید این باشه:
- بزرگتر از ۱۰۲۴
- کمتر از ۶۵۵۳۵
- توسط سرویس دیگری روی سیستم شما استفاده نمیشود
- همچنین ایده خوبی است که از استفاده از هر یک از پورتهای ثبت شده IANA خودداری کنید.
- فایل را ذخیره کنید و ببندید.
- SELinux را از این تغییر مطلع کنید تا به SSH اجازه اتصال به پورت جدید را بدهد.
$ sudo semanage port -a -t ssh_port_t -p tcp 22022 - تأیید کنید که اعلان پورت موفقیتآمیز بوده است.
$ semanage port -l | grep ssh ssh_port_t tcp 22022, 22 - فایروال را طوری پیکربندی کنید که ترافیک از طریق پورت جدید مجاز باشد.
$ sudo firewall-cmd --add-port=22022/tcp --permanent - تمام ترافیک SSH از طریق پورت جدید عبور خواهد کرد. تخصیص پیشفرض سرویس SSH را از فایروال حذف کنید.
$ sudo firewall-cmd --remove-service=ssh --permanent - فایروال و SSH را مجدداً راه اندازی کنید.
$ sudo systemctl restart firewalld sshd
برای آزمایش اتصال، یک ترمینال جدید روی کامپیوتر محلی خود باز کنید. از گزینه -p برای مشخص کردن پورت SSH جدید استفاده کنید.
$ ssh -p22022 example_user@192.0.2.123۵. غیرفعال کردن Zone Drifting در فایروال #
FirewallD، برنامه فایروال برای Rocky Linux 8، نصب و فعال است. وضعیت را با استفاده از دستور زیر مشاهده کنید:
$ sudo systemctl status firewalld
firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2022-03-22 02:08:57 UTC; 2h 18min ago
Docs: man:firewalld(1)
Main PID: 4712 (firewalld)
Tasks: 2 (limit: 5980)
Memory: 27.8M
CGroup: /system.slice/firewalld.service
└─۴۷۱۲ /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid
Mar 22 02:08:56 rocky8 systemd[1]: Starting firewalld - dynamic firewall daemon...
Mar 22 02:08:57 rocky8 systemd[1]: Started firewalld - dynamic firewall daemon.
Mar 22 02:08:57 rocky8 firewalld[4712]: WARNING: AllowZoneDrifting is enabled. This is considered an insecure configuration optionآخرین خط در آن خروجی میگوید که zone drifting یک پیکربندی ناامن است که باید غیرفعال شود. در یک فایروال مبتنی بر zone مانند FirewallD، بسته به پیکربندی، ممکن است ترافیکی که برای عبور از یک zone پیکربندی شده است، از zone دیگری که برای آن در نظر گرفته نشده است نیز عبور کند. به این حالت Zone Drifting میگویند. غیرفعال کردن آن توسط توسعهدهندگان FirewallD اکیداً توصیه میشود.
برای غیرفعال کردن آن:
- فایل پیکربندی فایروال را باز کنید.
$ sudo nano /etc/firewalld/firewalld.conf - به دنبال خط AllowZoneDrifting(در انتهای فایل) بگردید و دستورالعمل آن را به no تغییر دهید.
AllowZoneDrifting=no - فایل را ذخیره کنید و ببندید.
- فایروال را مجدداً راه اندازی کنید.
$ sudo systemctl restart firewalld
