امنیت سرور خود را با این مقاله افزایش دهید ، نوین هاست یار نوین شماست : برخی فکر می کنند اگر هیچ سرویس در حال اجرایی روی سرور وجود نداشته باشد ، خطرناک نیست و مهم نیست که همه درگاه ها باز باشند. اگر اتصال ها به پورتهای بلااستفاده مسدود شده یا از بین بروند ، اکثر مزاحمان مخرب به دستگاه های دیگری منتقل می شوند که درگاه های آن ها در حال پذیرش آن ها هستند. تنظیم یک فایروال فقط چند دقیقه طول می کشد – بنابراین ما به شدت توصیه می کنیم برای افزایش امنیت سرور ( سرور مجازی , سرور اختصاصی ) خود این کار را انجام دهید.
سپس بعد از ایجاد سرور ابری جدید ، توصیه می کنیم کارهای زیر را برای تقویت امنیت سرور انجام دهید.
ورود به سرور :
با داشتن آدرس IP و رمز عبور خود ، با استفاده از دستور SSH زیر وارد سرور خود شوید:
ssh root@123.45.67.890
توجه: اگر وارد یک سرور مجازی بازسازی شده شده اید ، ممکن است پیامی را ببینید که می گوید شناسایی میزبان از راه دور تغییر کرده است. هنگام بازسازی سرور ابری ، کلید میزبان از راه دور تغییر می کند ، که نشان دهنده فعالیت غیرمعمول یا مشکوک در رایانه شما است. برای جلوگیری از این مشکل ، ورودی قدیمی تر را برای آدرس IP سرور حذف کنید. در رایانه خود ، با استفاده از دستور زیر ، پرونده SSH هاست را ویرایش کنید و هر ورودی که به آدرس IP سرور cloud خود اشاره دارد را حذف کنید:
nano ~/.ssh/known_hosts
اگر سیستم شما سیستم عامل دیگری غیر از لینوکس یا Mac OS X را اجرا می کند ، مکان پرونده هاست ها متفاوت خواهد بود. برای پیدا کردن مکان این پرونده ها به مستندات سیستم عامل خود مراجعه کنید.
تغییر پسورد روت :
پس از ورود به سرور خود طبق دستور زیر رمز خود را تغییر دهید :
Passwd
اضافه کردن user admin
۱- طیق دستور زیر user admin را وارد کرده و نام کاربری مورد نظر خود را وارد نمایید :
adduser demo
توجه: پس از مرحله اولیه ، شما نباید به عنوان کاربر اصلی وارد شوید . تا سرور مجازی عملیات روزانه را روی خود انجام دهد. با این حال ، برای انجام این کارهای اداری به امتیازات فوق العاده کاربر (sudo) نیاز دارید.
۲-برای اختصاص امتیازات sudo به user admin ، طبق دستور زیر عمل کنید ، که این دستور ویرایشگر nano را بطور پیش فرض در اوبونتو فراخوانی می کند:
Visudo
۳-در پایان کار ، نام user admin خود و متن زیر را وارد نمایید :
demo ALL=(ALL) ALL
۴-پس از پایان کار از پرونده خارج شوید و آن را طبق دستور زیر ذخیره کنید :
- Ctrl-X را فشار دهید تا خارج شوید.
- y را فشار دهید تا تغییرات را تأیید کنید.
- Enter را فشار دهید تا پرونده به عنوان /etc/sudoers.tmp ذخیره شود.
توجه: در حین کار در ویرایشگر نانو ، کلید backspace / Delete بطور غیر منتظره ای کار می کند ، و به جای پشت سر ، کلیدهای جلوی مکان نما را پاک می کنید. شما می توانید این مشکل را با ویرایش پرونده / etc / nanorc , طبق دستور زیر حل کنید:
set rebinddelete
بعد از ذخیره کردن پرونده و باز کردن مجدد نانو ، تغییرات جدید اعمال می شود.
تنظیم کلیدهای عمومی و خصوصی (keygen SSH)
یکی از راه های موثر برای دسترسی SSH به سرور ابری استفاده از یک کلید عمومی / خصوصی است ، به این معنی که یک کلید عمومی روی سرور اختصاصی قرار می گیرد و کلید خصوصی روی رایانه شما است. این کار باعث می شود که شخصی با استفاده از رمز عبور نتواند وارد سیستم شما شود . آنها باید کلید خصوصی داشته باشند. این تنظیم شامل مراحل زیر است: کلید را در رایانه خود ایجاد کنید ، کلید عمومی را روی سرور کپی کنید و مجوزهای صحیح را برای این کلید تنظیم کنید.
مرحله ۱ : ایجاد کلید های عمومی و خصوصی
I. طبق دستور زیر در رایانه خود برای نگه داری کلید ها یک پوشه ایجاد کنید :
mkdir ~/.ssh
II. طبق دستور زیر کلید های ssh را در رایانه خود ایجاد کنید :
ssh-keygen -t rsa
بعد از انجام مراحل فوق id_rsa و id_rsa.pub در دایرکتوری .ssh ایجاد می شود .و پرونده ras-pub حاوی کلید عمومی است که شما میتوانید آن را روی سرور خود قرار دهید .
پرونده id-ras حاوی کلید خصوصی شما است . شما هرگز نباید آن را در رایانه خود نگه دارید و یا آن را در معرض دید افراد قرار دهید . زیرا افراد سودجو با در دست داشتن کلید خصوصی شما میتوانن به سرور شما راه پیدا کنند .
مرحله ۲ : کپی کردن کلید عمومی
شما میتوانید با استفاده از دستور scp کلید عمومی خود را در روی سرور خود قرار دهید .
I. طبق دستور زیر شما میتوانید user admin خود ,آدرس ip و user directory خود را جایگزین کنید :
scp ~/.ssh/id_rsa.pub demo@123.45.67.890:/home/demo/
II. در صورت درخواست رمز عبور user admin خود را وارد نمایید .
III. طبق دستور زیر دایرکتوری را در پوشه خانگی سرور به نام ssh ایجاد کنید و کلید عمومی را داخل آن قرار دهید :
mkdir /home/demo/.ssh
mv /home/demo/id_rsa.pub /home/demo/.ssh/authorized_keys
مرحله ۳ : اصلاح مجوز های SSH
طبق دستورات زیر مجوز های صحیح را بر روی کلید های عمومی و خصوصی تنظیم کرده و تنظیمات کاربر (پیش فرض ) را به کاربر خود تغییر دهید .
chown -R demo:demo /home/demo/.ssh
chmod 700 /home/demo/.ssh
chmod 600 /home/demo/.ssh/authorized_keys
اکنون شما با موفقیت کلید را ایجاد کرده و آن را در سرور خود کپی کرده اید و مجوز های صحیح را برای آن ایجاد کرده اید .
تغییر پیکربندی SSH :
نگه داشتن سرویس SSH در درگاه ۲۲ آن را به یک هدف آسان تبدیل می کند. توصیه می کنیم تنظیمات پیش فرض SSH را تغییر دهید تا امنیت آن بیشتر شود.
I. دستور زیر را صادر نمایید :
nano /etc/ssh/sshd_config
II. طبق دستور زیر پورت پیش فرض ۲۲ را به یکی از انتخاب های خود تغییر دهید ، و ورود به سیستم root را خاموش کنید و تعریف کنید که کاربران می توانند وارد سیستم شوند :
Port 22 <— change to a port of your choosing
Protocol 2
PermitRootLogin no
PasswordAuthentication no
UseDNS no
AllowUsers demo
از آنجا که شما یک کلید عمومی / خصوصی تنظیم کرده اید ، می توانید پارامتر PasswordAuthentication را روی شماره تنظیم نکنید. با این حال ، اگر قصد دسترسی از طریق رایانه های مختلف را به سرور ابری و سرور مجازی خود دارید ، ممکن است بخواهید رمزعبور را تأیید کنید. در این حالت فقط در صورت ایمن بودن رایانه, از کلید خصوصی استفاده کنید (یعنی کلید خصوصی را روی رایانه کار قرار ندهید).
تنظیمات شما هنوز فعال نیستند قبل از شروع مجدد SSH با استفاده از درگاه جدید ، باید با استفاده از iptables یک فایروال ساده ایجاد کنید.
تنظیم فایروال خصوصی امنیت سرور با استفاده از iptables
ابزاری به نام iptables فایروال سیستم های لینوکس است. این کار با امتناع از اتصال به درگاهها یا خدماتی که مشخص کرده اید ، کار می کند. به عنوان بخشی از این رویه ، شما سه درگاه باز خواهید کرد: ssh ، http و https.
سپس دو پرونده ایجاد خواهید کرد:
/etc/iptables.test.rules
/etc/iptables.up.rules
دسته اول مجموعه ای از قوانین موقتی و دسته دوم مجموعه دائمی از قوانین است که از iptables استفاده می شود.
توجه: برای تکمیل مراحل ، باید مجوزهای کاربر را ریشه یابی کنید. اگر در حال حاضر به عنوان root وارد نشده اید ، از دستور sudo در مقابل دستورات زیر استفاده کنید .
I. دستور زیر را صادر کنید تا ببینید چه فرآیندهایی در حال اجرا هستند:
iptables –L
بعد از اجرای دستور فوق شما فرایند های زیر را مشاهده خواهید کرد :
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
این بدان معنی است که سرور, هر شخصی را در هر پورت قبول می کند.
II. طبق دستور زیر برای ساخت فایروال ، پرونده /etc/iptables.test.rules را ایجاد کرده و برخی از قوانین را اضافه کنید. اگر قبلاً از طریق این مراحل کار کرده اید ، ممکن است این پرونده خالی نباشد:
nano /etc/iptables.test.rules
III. در صورت لزوم پورت ها را تغییر داده و اضافه کنید.
IV. دستور زیر را برای اعمال قوانین روی سرور خود صادر کنید:
iptables-restore < /etc/iptables.test.rules
V. دستور زیر را برای ذکر تفاوت صادر کنید:
iptables –L
VI. اگر تغییری در خروجی رخ نداد ، مراحل قبل را تکرار کنید و دوباره امتحان کنید.
VII. قوانین را بررسی کنید و ببینید دقیقاً چه چیزی پذیرفته شده و رد می شود. هنگامی که از قوانین راضی هستید ، با صدور دستور زیر آنها را برای همیشه ذخیره کنید:
iptables-save > /etc/iptables.up.rules
توجه: اگر سرور قبل از ذخیره دائمی قوانین , دوباره راه اندازی مجدد شود ، تغییرات از بین می روند و سرور (ابری و سرور مجازی ) به تنظیمات قبلی برمی گردد.
طبق دستور زیر اسکریپتی را اضافه کنید که سیستم با شروع رابط های شبکه شما اجرا شود:
nano /etc/network/if-pre-up.d/iptables
دستور زیر را به پرونده جدید اضافه کنید :
#!/bin/sh
/sbin/iptables-restore < /etc/iptables.up.rules
طبق دستور زیر تغییرات خود را ذخیره کنید ، و سپس اسکریپت جدید را اجرایی کنید:
chmod +x /etc/network/if-pre-up.d/iptables
تنظیم iptables در Red Hat :
اگر از توزیع red hat استفاده می کنید ، iptables کمی متفاوت از آنچه در توزیع اوبونتو انجام می شود کار می کند. با استفاده از دستورات زیر می توانید خط iptables را مستقیماً از خط فرمان تغییر دهید.
HTTP – port 80
برای RHEL 7 و CentOS 7 ، از دستور زیر استفاده کنید تا پورت ۸۰ را برای ترافیک HTTP (وب) در فایروال iptables خود باز کنید:
sudo firewall-cmd –add-service=http –permanent
و برای نسخه های قدیمی تر سیستم عامل CentOS 7 و RHEL 7 ، از دستور زیر استفاده کنید:
sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp –dport http -j ACCEPT
HTTPS/SSL – port 443
برای RHEL 7 و CentOS 7 ، از دستور زیر برای باز کردن پورت ۴۴۳ برای ترافیک امن HTTP استفاده کنید:
sudo firewall-cmd –add-service=https –permanent
و برای نسخه های قدیمی تر سیستم عامل CentOS 7 و RHEL 7 ، از دستور زیر استفاده کنید :
sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp –dport https -j ACCEPT
SSH – port 22
اگرچه پورت ۲۲ بصورت پیش فرض باز است تا بتواند پس از ساخته شدن به SSH به سرور خود اجازه دسترسی دهد ، دستور زیر به شما نشان می دهد که چگونه می توانید پورت ۲۲ را در RHEL 7 و CentOS 7 باز کنید:
sudo firewall-cmd –add-service=ssh –permanent
اگر یک درگاه دلخواه برای SSH تنظیم کرده اید ، میتوانید از دستور زیر برای RHEL 7 و CentOS 7 استفاده کنید:
sudo firewall-cmd –add-port=<customport>/tcp –permanent
شما میتوانید برای نسخه های قدیمی تر سیستم عامل ، از دستور زیر برای باز کردن پورت ۲۲ استفاده کنید:
sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp –dport ssh -j ACCEPT
FTP – port 21
FTP یک سرویس معمول برای انتقال پرونده است ، اما به دلیل اینکه یک پروتکل مطمئن نیست ، منسوخ شده است. ما اکیداً توصیه می کنیم به جای آن از یک پروتکل انتقال فایل امن مانند SFTP استفاده کنید. اگر کاملاً مجبور به استفاده از FTP هستید. از دستور زیر برای باز کردن پورت پیش فرض ۲۱ در RHEL 7 و CentOS 7 استفاده کنید:
sudo firewall-cmd –add-service=ftp –permanent
شما میتوانید برای نسخه های قدیمی تر سیستم عامل ، از دستورات زیر استفاده کنید:
sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp –dport ftp -j ACCEPT
sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp –dport ftp-data -j ACCEPT
MySQL – port 3306
اگر می خواهید از سرور دیگری اتصال به راه دور را به پایگاه داده MySQL خود برقرار کنید. باید در iptables پورت ۳۳۰۶ را باز کنید. شما میتوانید از دستور زیر برای RHEL 7 و CentOS 7 استفاده کنید:
sudo firewall-cmd –add-service=mysql –permanent
و برای نسخه های قدیمی تر سیستم عامل CentOS 7 و RHEL 7 ، از دستور زیر استفاده کنید :
sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp –dport mysql -j ACCEPT
ذخیره کردن قوانین امنیت سرور :
برای ذخیره کلیه قوانینی که ایجاد کرده اید شما میتوانید از دستور زیر استفاده کنید. اگر قبل از راه اندازی مجدد سرور شما ذخیره نشود ، آیین نامه iptables به صفحه اصلی پیش فرض باز می گردد و همه ترافیک را به جز درگاه ۲۲ مسدود می کند. اگر از RHEL 7 یا CentOS 7 استفاده می کنید ، این مرحله لازم نیست:
sudo /sbin/service iptables save
راه اندازی مجدد iptables
تغییرات شما در iptables فقط پس از ذخیره قوانین و در سرویس iptables قابل اجرا است. به یاد داشته باشید ، اگر iptables را قبل از ذخیره کردن قوانین خود مجدداً راه اندازی کنید ، iptables به صفحه پیش فرض برگردانده می شود.
برای راه اندازی مجدد iptables در RHEL 7 و CentOS 7 از دستور زیر استفاده کنید:
firewall-cmd –reload
و برای نسخه های قدیمی تر میتوانید از دستور عمل زیر استفتده کنید :
sudo /sbin/service iptables restart
بررسی قوانین امنیت سرور
برای بررسی قوانین پس از بارگیری مجدد فایروال در RHEL 7 و CentOS 7 ، میتوانید از دستورات زیر استفاده کنید:
firewall-cmd –get-active-zones
طبق دستور عمل زیر شما میتوانید مشاهده کنید که کدام منطقه فعال است :
firewall-cmd –zone=<zone> –list-all
دستور فوق سرویس های فعال شده در یک منطقه را مشخص میکند .
راه اندازی مجدد ssh
اکنون می توانید سرویس SSH را مجدداً راه اندازی کنید. با راه اندازی مجدد ssh وارد سیستم شوید و آنرا با اتصال جدید آزمایش کنید. به این ترتیب اگر خطایی رخ دهد ، می توانید آن را راحت تر عیب یابی کنید.
در اکثر توزیع ها ، سرویس sshd است ، و شما میتوانید با دستور زیر آن را مجدداً راه اندازی می کنید:
sudo service sshd restart
در اوبونتو و برخی توزیع های دیگر ، به این سرویس ssh گفته می شود و شما میتوانید با دستور زیر آن را مجدداً راه اندازی کنید:
sudo service ssh restart
اگر بعد از راه اندازی مجدد SSH در ایجاد ارتباط جدید مشکلی دارید ، علائم آن را بررسی کنید تا تشخیص دهید چه اشتباهی ممکن است باشد.
در صورت قطع زمان اتصال ، ممکن است در پیکربندی iptables مشکلی ایجاد شود.
اگر درباره یک کلید خصوصی هشدار دهد ، ممکن است کلید شما به درستی روی سرور نصب نشده باشد .
اگر در حال بازسازی سرور هستید ، لازم است قبل از برقراری ارتباط ، کلید میزبان را از پرونده معروف_هاست خود حذف کنید.
پیکربندی نادرست SSH ، sudo یا iptables باعث می شود سیستم شما از سیستم خارج شود. در صورت بروز چنین اتفاقی ، به صفحه کنترل Rackspace Cloud وارد شوید و از حالت اضطراری کنسول یا حالت نجات برای تعمیر پیکربندی ها استفاده کنید.
اینها اصول اولیه اتصال به یک سرور ابری لینوکس و تنظیم امنیت است. برای انجام این مراحل روی سرور ویندوز ، به سرور Windows مراجعه کنید.