علی ناصری
علی ناصری
خواندن ۵ دقیقه·۴ سال پیش

چند تا کار لازم و ضروری که بعد از خرید VPS باید انجام بدیم

وقتی یه سرور میخریم یه یوزر Root بهمون میدن با یه Password که خب اصلا امن نیست و توصیه همه اینه که در اولین فرصت یه سری کارای امنیتی انجام بدیم براش. حالا یه سری کارای ساده رو لیست می‌کنم که به ترتیب باهم انجام بدیم و تا حدود قابل قبولی سرورمون رو امن کنیم.

  • اضافه کردن یک یوزر جدید
  • فعال‌سازی Login فقط از طریق SSH
  • غیرفعال کردن Login توسط یوزر Root
  • غیرفعال کردن Login با پسورد
‌من مثال این مقاله رو با Centos 7 پیش می‌برم. بعضی از دستورها روی نسخه‌های مختلف لینوکس متفاوت هست که با گوگل کردن راحت بدستش میارید

یه نکته‌ای رو همین ابتدای کار متذکر شدم. لطفا هیچ کدوم از ترمینال‌هاتون رو تا انتها این مقاله نبندید تا از اتصال درست به سرورتون مطمئن بشید.

خب توی قدم اول ما میایم یه یوزر توی سرور برای خودمون درست می‌کنیم که با اون Login کنیم و هر کاری که روی سرور داریم رو با یوزر خودمون انجام بدیم بجای یوزر Root. برای این کار از دستور زیر استفاده میکنیم:

adduser ali

برای اینکه یه پسورد هم براش بزاریم ازین دستور استفاده می‌کنیم:

passwd ali

حالا با استفاده از دستور زیر یوزر جدیدمون رو توی wheel group قرار میدیم که بتونه از sudo استفاده کنه و به اصطلاح sudoer یا sudoable می‌کنیم یوزرمون رو:

usermod -aG wheel ali

خب بسیار عالی. الان اگه بخواید switch شید بین یوزرها و برید روی یوزر خودتون کار کنید از دستور زیر باید استفاده کنید:

su ali

خب حالا می‌خوایم SSH سیستم خودمون رو اضافه کنیم به یوزر ali روی سرور که از سیستم خودمون با SSH لاگین شیم روی یوزر ali روی سرور. توی یوزر ali روی سرور این دستور و می‌زنیم که directory عه SSH رو درست کنه برامون:

mkdir ~/.ssh

بعدش Permission لازم رو میدیم به directory عه SSH:

chmod 700 ~/.ssh

بعد یه فایل authorized_keys درست می‌کنیم توی directory عه SSH:

vi ~/.ssh/authorized_keys

یکم vim هم کار کنیم باهم اینجا. اول i رو بزنید که برید توی حالت insert mode. بعد public key عه سیستم خودتون (ssh/id_rsa.pub./~) رو کپی کنید توی همین vim. بعد ESC رو بزنید که خارج بشید از حالت insert mode و بعد wq: رو بزنید و فایل و save کنید و بیاید بیرون. واسه اینکه مطمئن شید درست کار کردید یبار cat کنید فایلتون رو ببینید درست کپی کردید یا نه:

cat ~/.ssh/authorized_keys

حالا Permission لازم رو میدیم به فایلمون

chmod 600 ~/.ssh/authorized_keys

حالا میرسیم به قسمت جذاب ماجرا و اونم modify کردن سرویس SSH سرورمونه. این فایل رو با vim باز کنید لطفا تا بریم دونه دونه موارد لازم رو ویرایش کنیم:

sudo vi /etc/ssh/sshd_config

خب حالا دنبال این خط ها بگردید و طبق دستورهای زیر تغییرشون بدید تا خط به خط باهم ببینیم هر کدوم برای چیه:

Port 8899 PermitRootLogin no PubkeyAuthentication yes PasswordAuthentication no AllowUsers ali x y z
  • اولین مورد که مشخصه پورت SSH رو عوض میکنیم که روی حالت پیش فرض نباشه و تا حدودی Secure بشه
  • دومین مورد میگه با یوزر ًRoot دیگه کسی نتونه لاگین شه
  • سومین مورد میگه میخوایم با SSH وصل شیم به سرور (در واقع با Public key ای که اضافه کردیم قراره بتونیم لاگین شیم)
  • چهارمین مورد هم کاملا مشخصه و قراره جلوی لاگین با پسورد رو بگیریم
  • آخرین مورد هم میگه فقط این یوزرها می‌تونن وصل شن به سرور

خب بعد از اینکه این موارد رو تغییر دادید یک بار نیاز هست که سرویس SSH رو ریست کنیم تا تغییرات اعمال شه:

sudo systemctl restart sshd.service

خب حالا بریم سراغ نصب iptables که در واقع Connection هایی که به سرورمون الکی زده میشه رو جلوشو میگیره و طبق rule ای که براش تنظیم خواهیم کرد فقط به اونا جواب میده و بقیه رو Drop میکنه اصطلاحا. اولین کار نصبش روی سرورمون هستش:

sudo yum install iptables-services

حالا یه فایل توی home درست می‌کنیم که rule های iptables رو توش قرار بدیم:

vi ~/iptables.rules

و این دستورات رو قرار بدید داخلش:

*filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -i lo -j ACCEPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p tcp -m tcp --dport 8899 -j ACCEPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT -A INPUT -m limit --limit 5/min -j LOG --log-prefix &quotiptables denied: &quot --log-level 7 -A INPUT -j REJECT --reject-with icmp-port-unreachable -A FORWARD -j REJECT --reject-with icmp-port-unreachable -A OUTPUT -j ACCEPT COMMIT

یه نگاهی به فایل بندازید متوجه میشید که سه تا پورت 8899 که برای SSH تغییر دادیم و پورت‌های 80 و 443 برای وب رو باز کردیم و بقیه رو drop کردیم. (من دیگه خط به خط این فایل رو توضیح نمیدم چون مقاله خییییلی طولانی خواهد شد. اگه جالب بود براتون که بدونید بقیه موارد چی کار میکنه یه گوگل ساده به جواب می‌رسونه شمارو).

حالا این تغییرات رو با استفاده از دستور زیر اعمال می‌کنیم روی سرویس iptables و save می‌کنیم:

sudo iptables-restore < ~/iptables.rules sudo service iptables save

برای اینکه متوجه شید سرویس iptables در حال اجرا هست هم از دستور زیر استفاده کنید:

sudo service iptables status

محض اطمینان این دستور زیر رو هم بزنید برای اینکه مطمئن بشیم سرویس iptables همیشه فعال خواهد بود روی سرورمون:

sudo service iptables enable

حالا برای اینکه ببینید rule های iptables درست روی این سرویس اعمال شده با این دستور چک کنید:

sudo iptables -S

اگه همه چی درست تنظیم شده باشه محتوایت فایل iptables.rules مون رو باید ببیند.


خب دیگه کارمون تموم شده روی سرور. الان روی سیستم خودمون یه سری کارای ریز قراره انجام بدیم که اتصالمون به سرورمون رو راحت تر کنه. برای اینکار لطفا برید توی directory عه ssh. سیستم خودتون و یه فایل config درست کنید و اینارو توش قرار بدید

Host * UseKeychain yes AddKeysToAgent yes IdentityFile ~/.ssh/id_rsa Host myserver HostName YOUR_SERVER_IP_ADDRESS Port 8899 User ali

حالا فقط کافیه توی یه ترمینال جدید بزنید:

ssh myserver

و خیلی راحت به سرورتون وصل می‌شید.


در آخر شمارو دعوت می‌کنم به خوندن این مقاله از مقالات معروف سایت Digitalocian


خیلی ممنونم که تا انتهای این مقاله رو مطالعه کردید. امیدوارم مواردی که گفته شد براتون مفید بوده باشه. میخوام یه تشکر از دوست و همکار بسیار محترمم سعید طاهری بکنم که سخاوتمندانه دانشش رو در اختیارم قرار داد که نتیجش شد این مقاله. خوشحال میشم اگه هرجای مقاله رو خدایی نکرده نامفهوم توضیح دادم بهم بگید که اصلاح کنم.

vpsسرورsshrootسرور مجازی
https:/alinaseri.dev
شاید از این پست‌ها خوشتان بیاید