اولین قدم‌ها برای لینوکس نو روی VPS

قدیم‌ها که از ویندوز استفاده میکردم بعد از نصب ویندوز جدید یکسری کارهای اولیه و برنامه‌های کاربردی رو باید نصب میکردم و اینکار رو هر ماه یکبار باید انجام میدادم. البته لینوکس بعد از یکی دو ماه نیاز به نصب مجدد نداره و سالها مثل ساعت کار میکنه ولی هر از گاهی وقتی که یک وی پی اس یا سرور جدید میگرم نیاز هست یکسری مراحل رو تکرار کنم. ممکنه یک روش خودکار و سریع‌تر برای اینکارها وجود داشته باشه ولی برای فعلا توی این نوشته مراحل رو مینویسم. دستورات زیر در Ubuntu 16.04 اجرا شده. اگه از نسخه و مشخصات لینوکس‌ نصب شده مطمئن نیستین برای اطلاع از نسخه لینوکس از یکی از دستورهای زیر میتونیم استفاده کنیم.cat /etc/*-release lsb_release -a cat /proc/version۱. بروزرسانیاول از همه چیز سیستم عامل رو بروز میکنم. دستور update ریپازیتوری‌ها رو به روز میکنه و دنبال نسخه جدید برای آنچه که نصب هست میگرده و لیست‌ها رو که در مسیر چیز جدیدی نصب نمیکنه. /etc/apt/sources.list : ریپازیتوری‌ها توی این مسیر قرار دارن دستور دوم نسخه‌های جدیدی که پیدا شدن رو دانلود و نصب میکنه.sudo apt-get update sudo apt-get upgrade۲. ایجاد یوزر جدیدحالا یه یوزر جدید میسازم که با یوزر root وارد نشم و با یوزر خودم وارد بقیه کار‌ها رو انجام میدم. البته این یوزر رو هم به گروه rootها اضافه میکنم تا تغییرات اساسی روی سیستم بتونم بدم.sudo adduser pharzanیوزر جدید رو به گروه sudoها اضافه میکنم. برای اینکار ویرایش فایل etc/sudoers/ توصیه نمیشه و بجاش با visudo‌انجام میدم. و یا دستور زیر رو اعمال میکنیم.usermod -aG sudo pharzanهمین کار رو با visudo هم میشه انجام داد و یا بهتر یک گروهی ایجاد کرد که اعضای این گروه به همه چیز دسترسی داشته باشن و با دستور بالا یوزرمون رو به گروه جدید اضافه کنیم.بعد از اجرای visudo سطر زیر رو با حذف # به حالت اجرایی در میاریم و اگر هم وجود نداشت بدون # اضافه میکنیم.# %wheel ALL=(ALL) ALLحالا با یوزر جدیدمون به سیستم لاگ‌این میشیم.ssh pharzan@SERVER_IP۳. خدای من! زد شلگام بعد نصب یه شل اینترفیس بهتره که بنظرم ZSH و Oh my ZSH بهترین و معمول‌ترین گزینه باشن. میشه روش plugin هم نصب کرد که باعث میشه بسیار کاربردی تر و دینامیک بشه. اول دو تا پکیج لازم برای oh my zsh رو نصب میکنیم.sudo apt install git-core zsh و بعد از مخزن Robby Russell، شل رو نصب میکنیم.sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"برای اینکه یکم تنظیمات دستکاری کنیم و تم رو عوض کنیم از دستور زیر فایل تنظیمات رو باز میکنیم.تمام تم‌ها اینجا موجود هستن.nano ~/.zshrc برای تغییر تم شل لینوکسمون ZSH_THEME از فایل تنظیمات پیدا میکنیم و تغییرش میدیم. من از robbyrussell به honukai تغییر میدم. ولی قبل از اینکار اول این تم رو زیر پوشه cd ~/.oh-my-zsh/themes با wget دانلود میکنم.honukai cd ~/.oh-my-zsh/themes wget https://raw.githubusercontent.com/oskarkrawczyk/honukai-iterm-zsh/master/honukai.zsh-theme -------------------------------------------------------------------------------------------------- nano ~/.zshrc : سطر زیر توی فایل کانفیگ قرار میدم ZSH_THEME="honukai"حالا وقتشه zsh رو بعنوان شل اصلی تعریف کنیم تا همیشه بعد از لاگ‌این با همین شل روبرو بشم،‌ فقط با این دستور مراقب باشین چون اگه مشکلی پیش بیاد توی لاگ‌این بعدی باعث خرابکاری میشه. برای بدست آوردن مسیر از which استفاده میکنم و قبلش با اجرای zsh مطمئن میشم که درست کار میکنه. البته بد نیست pluginها رو هم نصب کنیم و بعدش اینکار رو انجام بدیم.chsh -s $(which zsh) حالا نوبت plugin‌هاست که همشون اینجا موجود هستن. افضونه زیر دستورات رو رنگی میکنه. برای اینکار به پوشه cd ~/.oh-my-zsh/custom/plugins میریم و با Git پوشه افضونه رو کپی میکنیم.cd ~/.oh-my-zsh/custom/plugins git clone https://github.com/zsh-users/zsh-syntax-highlighting و حالا فایل تنظیمات oh my zsh رو ویرایش میکنیم و افضونه رو به لیست افضونه‌های موجود اضافه میکنیم.nano ~/.zshrc به این شکل افضونه‌ها رو اضافه میکنیم۴. نام سیستمنام و یکسری مشخصات اونو میشه با دستور hostnamectl دید و یا با دستور hostname -s اسم سیستم رو ببینیم. اگر خواستیم اسمش رو عوض کنیم میتونیم با دستور زیر عوضش کنیم.sudo hostnamectl set-hostname pharzan-VPS-005اگه بعد از اینکار گاها با پیام sudo: unable to resolve host rain مواجه شدین میتونین فایل hosts رو ویرایش کنین و سطر زیر رو بهش اضافه کنین.nano /etc/hosts127.0.1.1 pharzan-VPS-005۵. زمانبه احتمال زیاد منطقه زمان (Time Zone) درست تنظیم نشده و میتونین برای مطمئن شدن با دستور timedatectl چک کرد. در صورت نیاز میشه به شکل زیر تغییرش داد.sudo timedatectl set-timezone Asia/Tehran۶. دیوار آتش!اگر قبلا با ip tables کار کرده باشید با پیچیدگیش آشنا هستین ولی خوشبختانه ufw یک رابط راحت‌تر برای دیوار آتش ip tables هست. با sudo ufw status وضعیت فایروال رو میشه دید ولی قبل از فعال سازی، ssh رو بهش اضافه کنیم که ارتباطمون قطع نشه و باعث خرابکاری هم نشه و بعدا دوباره بتونیم وارد سیستم بشیم.sudo ufw allow OpenSSH sudo ufw allow ssh sudo ufw app list Available applications: OpenSSH sshحالا که مطمئن شدیم که دفعه بعد هم اجازه ورود داریم میتونیم فعالش کنیم.sudo ufw enableپورت‌های http و https رو هم باز میکنیم. هم میشه عدد پورت رو وارد کرد و هم میشه پروتکل پورت رو.sudo ufw allow http sudo ufw allow 80 #Same as above sudo ufw allow https sudo ufw allow 443 #Same as above و یا هر دو رو یکجا با دستور زیر میشه اعمال کرد.sudo ufw allow proto tcp from any to any port 80,443۷. بروزرسانی اتوماتیکشاید هفته‌ها و ماه‌ها به سروری که در حال کار کردن هست لاگ‌این نکینیم و آپدیت‌های امنیتی جدید و مهمی وجود داشته باشه که غافل بمونیم. میتونیم بروزرسانی اتوماتیک رو فعال کنیم و کمی خیالمون راحت باشه. برای اینکار اول unattended-upgrades رو نصب میکنم.apt-get install unattended-upgrades nano /etc/apt/apt.conf.d/10periodicو فایل etc/apt/apt.conf.d/10periodic ویرایش میکنم و بصورت زیر مینویسم.APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Download-Upgradeable-Packages "1"; APT::Periodic::AutocleanInterval "7"; APT::Periodic::Unattended-Upgrade "1";فایل /etc/apt/apt.conf.d/50unattended-upgrades رو هم باید ویرایش کنیم.nano /etc/apt/apt.conf.d/50unattended-upgradesو سطر بصورت زیر در بیاوریم.Unattended-Upgrade::Allowed-Origins { "${distro_id}:${distro_codename}-security"; این سطر میمونه // "${distro_id}:${distro_codename}"; این سطر رو غیر فعال میکنیم };۸. ایمیل روزانه لاگ‌هالاگ‌واچ یک سرویس یا دیمون خیلی بدرد بخوریه که میتونه خلاصه‌ایی از لاگ‌های سرور رو براتون بصورت روزانه یا هرطور که بخواین ایمیل بزنه. به احتمال زیاد ایمیل‌ها به پوشه اسپم میره چونکه mail serverتون بصورت استاندارد پیکربندی نشده.اول نصبش میکنیمsudo apt-get install logwatch حالا فایلی که مسئول ارسال ایمیل هست رو ویرایش میکنیمnano /etc/cron.daily/00logwatchو خط زیر رو یا اضافه میکنیم و یا اگر وجود داشت ایمیلمون رو بصورت درست وارد میکنیم./usr/sbin/logwatch --output mail --mailto test@gmail.com --detail highالبته فایل تنظیمات اصلی رو هم از مسیر زیر میتونین پیدا کنین و مقادیر توی عکس رو عوض کنینnano /usr/share/logwatch/default.conf/logwatch.confاگه پیشنهادی برای کامل تر شدن و یا بهبود این مطلب دارین لطفا از طریق توییتر pharzan@ یا ایمیل pharzan@outlook.com به من اطلاع بدین.