وقتی یه سرور میخریم یه یوزر Root بهمون میدن با یه Password که خب اصلا امن نیست و توصیه همه اینه که در اولین فرصت یه سری کارای امنیتی انجام بدیم براش. حالا یه سری کارای ساده رو لیست میکنم که به ترتیب باهم انجام بدیم و تا حدود قابل قبولی سرورمون رو امن کنیم.
من مثال این مقاله رو با 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 رو ریست کنیم تا تغییرات اعمال شه:
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 "iptables denied: " --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
خیلی ممنونم که تا انتهای این مقاله رو مطالعه کردید. امیدوارم مواردی که گفته شد براتون مفید بوده باشه. میخوام یه تشکر از دوست و همکار بسیار محترمم سعید طاهری بکنم که سخاوتمندانه دانشش رو در اختیارم قرار داد که نتیجش شد این مقاله. خوشحال میشم اگه هرجای مقاله رو خدایی نکرده نامفهوم توضیح دادم بهم بگید که اصلاح کنم.