توسعه کسب و کارهای اینترنتی و خدمات مجازی و همینطور کارایی بالای سرورهای لینوکس باعث شده است تا بسیاری از سازمان‌ها و استارتاپ‌ها، خدمات، سایت و دیتابیس‌های خود را روی این سرورها ارائه کنند. پشتیبانی، مدیریت و امن‌سازی سرورهای لینوکس نیاز به تخصص و تجربه فراوان دارد. خدمات شرکت پیشگامان برای پشتیبانی سرورهای لینوکس، شامل: امن سازی، مدیریت، نصب سرویس، پشتیبانی و راهکارهای بکاپ از اطلاعات و پایگاه‌داده‌های سرورهای لینوکس است.

یکی از معیارهای مهم سایت‌ها، سرعت بارگذاری آن‌ها است. سرعت وبسایت نه تنها باعث رضایت بازدیدکنندگان از سایت می‌شود، بلکه به صورت مستقیم روی سئو سایت و رتبه سایت در موتورهای جستجو تاثیر می‌گذارد. یکی از روش‌هایی که تاثیر به سزایی در افزایش سرعت سایت دارد، پیاده‌سازی سیستم کش (cache) است. با توجه به استفاده فراوان از سایت‌های وردپرس (wordpress)، افزونه‌های زیادی برای کش کردن سایت وجود دارند. گرچه نصب افزونه‌های کش بسیار راحت بوده، اما کارایی آن در مقابل سیستم کش ngnix به مراتب پایین‌تر است.

اگر سایت شما دیر لود می‌شود و TTFB (time to first byte) بالایی دارد، استفاده از سیستم کش nginx تاثیر زیادی روی افزایش سرعت سایت وردپرس شما خواهد داشت. TTFB به معنای زمان دریافت اولین بایت از سرور است و گاها تا چند ثانیه طول کشیده و سایت شما را کند می‌کند. با نصب و پیکربندی سیستم کش، این زمان تا کمتر از ۳۰۰ میلی ثانیه کاهش پیدا می‌کند. در صورتی که سرور شما به میزان کافی حافظه رم دارد، می‌توانید با انتقال فضای کش از هارد به رم،‌ سرعت سایت خود را بیش از پیش افزایش دهید. استفاده از nginx cache در کنار php-fpm ترکیبی بسیار پرسرعت برای سایت شما خواهد بود.

اولین مرحله در کانفیک کش nginx (که از FastCGI استفاده می‌کند)‌، اضافه کردن کدهای زیر به به قسمت http در فایل nginx.conf است. این فایل معمولا در آدرس زیر قرار دارد.

vim /etc/nginx/nginx.conf

fastcgi_cache_path /etc/nginx-cache levels=1:2 keys_zone=phpcache:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";

در این تنظیمات، phpcache اسم key zone و ۱۰۰m بیانگر میزان فضای اختصاص یافته به حافظه کش (به مگابایت) است. ۶۰m هم مدت زمانی است که در صورت عدم تقاضای داده، آن‌ها از کش پاک می‌شوند. همچنین /etc/nginx-cache هم نشان‌دهنده محل ذخیره سازی فایل‌های کش nginx است.

مابقی تنظیمات باید در فایل nginx مربوط به سایت انجام شود.‍

vim /etc/nginx/sites-enabled/default

location ~ [^/]\.php(/|$) {
fastcgi_cache phpcache;
fastcgi_cache_valid 200 30m;
fastcgi_cache_methods GET HEAD;
add_header X-Fastcgi-Cache $upstream_cache_status;
}

در این مرحله می‌توانید سرویس nginx را ریستارت کنید. فراموش نکنید که قبل از آن حتما تنظیمات nginx را چک کنید.

nginx -t
service nginx restart

حالا سیستم کش سایت شما فعال شده و باید افزایش سرعت سایت را به طور محسوس ببینید. در سایت مورد بررسی شرکت پیشگامان، میانگین TTFB (یا همان Server response time) از بیش از ۵ ثانیه به کمتر از ۵۰۰ میلی ثانیه کاهش پیدا کرد و امتیاز سرعت سایت در ابزار سنجش سرعت سایت گوگل (PageSpeed Insights) از ۴۰ به ۸۶ افزایش داشت.

سیستم پیاده سازی شده فایل‌های کش را روی هارد دیسک ذخیره می‌کند. در صورتی که از SSD یا NVMe استفاده می‌کنید کارایی بالاتری خواهید داشت. در هر صورت استفاده از حافظه رم کارایی به مراتب بالاتری خواهد داشت. برای انتقال حافظه کش nginx به رم، کافی است خط زیر را به fstab اضافه کرده، فایل را ذخیره کرده و آن را مونت کنید.

vim /etc/fstab

tmpfs /etc/nginx/cache tmpfs defaults,size=100M 0 0

mount -a

برای مشاهده میزان استفاده از فضای تخصیص یافته به سیستم کشینگ سایت، از این دستور استفاده کنید:

df -h

به خاطر داشته باشید که در صورت استفاده از حافظه رم برای ذخیره سازی کش وبسایت، اگر سرور ریست شود حافظه کش نیز پاک شده و مجددا صفحات سایت کش خواهند شد. در صورت نیاز به پاک کردن دستی کش nginx هم می‌توانید وارد دایرکتوری کش سایت شده و فایل‌ها را پاک کنید.

در صورتی که مدیریت سرورهای اختصاصی و مجازی را به عهده دارید، حتما با سیستم عامل لینوکس نیز سر و کار داشته‌اید. گرچه سیستم عامل لینوکس و مخصوصا نسخه سرور آن، از لحاظ امنیتی بسیار مطمئن‌تر از سیستم عامل ویندوز سرور است، اما به صورت دوره‌ای باید مورد بررسی و ممیزی امنیتی قرار بگیرد تا آسیب‌پذیری‌های امنیتی و رخنه‌های احتمالی وصله یا پچ شوند.

برای بررسی امنیتی و مقاوم سازی سرورهای لینوکس ابزارهای زیادی وجود دارد که بررسی همه‌ی آن‌ها از حوصله‌ی مدیران و ادمین‌های سرور خارج است. یکی از کامل‌ترین آن‌ها، OpenSCAP است که ابزارهای زیادی را برای بررسی، شناسایی، اندازه‌گیری و اعمال موارد امنیتی مهیا کرده است.

در این مطلب، نحوه استفاده از این ابزار را در لینوکس اوبونتو ۱۸.۰۴ آموزش خواهیم داد. این آموزش برای اکثر توزیع‌های دیگر لینوکس نیز به همین صورت بوده و تنها نیازمندی آن، یک حساب کاربری با دسترسی روت است.

برای نصب این ابزار کافی است دستور زیر را در ترمینال سرور خود وارد کنید:

sudo apt-get install libopenscap8 -y

دستور بالا برای سرورهای لینوکس دبیان کاربرد دارد، در صورتی که از لینوکس مبتی بر ردهت استفاده می‌کنید، این دستور را وارد کنید:

sudo yum install openscap-scanner

بعد از اتمام نصب، باید پروفایل OVAL (یک زبان متن باز برای توسعه ارزیابی آسیب‌پذیری در سیست‌های کامپیوتری) که برای بررسی آسیبپذیری‌های امنیتی استفاده می‌شود را دانلود یا بارگذاری کنید:

wget https://people.canonical.com/~ubuntu-security/oval/com.ubuntu.xenial.cve.oval.xml

پروفایل OVAL مربوط به توزیع ردهت و سنتوس را هم می‌توانید از آدرس زیر دانلود کنید:

wget https://www.redhat.com/security/data/oval/com.redhat.rhsa-RHEL7.xml.bz2

بعد از اتمام دانلود، با دستور زیر پروفایل را اکسترکت کنید:

bunzip2 com.redhat.rhsa-RHEL7.xml.bz2

بعد از استخراج مخازن OVAL، با دستور زیر ارزیابی امنیت سرور لینوکس خود را شروع کنید. توجه داشته باشید که اجرای این دستور ممکن است زمان زیادی طول بکشد.

oscap oval eval --results /tmp/oscap_results.xml --report /tmp/oscap_report.html com.ubuntu.xenial.cve.oval.xml

حالا می‌توانید با کپی کردن فایل خروجی در فولدر پابلیک html سایت خود، به راحتی به نتیجه آنالیز امنیتی سرور خود دسترسی داشته باشید. توجه کنید که اگر آدرس روت وب سرور شما متفاوت است، این آدرس را عوض کنید.

sudo cp /tmp/oscap_report.html /var/www/html/

linux security

همانطور که در نتایج گزارش مشاهده خواهید کرد، بیش از ۱۳۰۰۰ آسیب پذیری بررسی شده و به همراه نتیجه و لینک ارجاع به صفحه CVE برای وصله کردن و نصب پچ‌های امنیتی، لیست شده‌اند.

یک رخنه امنیتی جدید که اخیرا در پردازشگرهای اینتل کشف شده است، هکرها را قادر می‌سازد تا به آخرین اطاعاتی که پردازشگر خوانده، دسترسی داشته باشند. این باگ امنیتی حتی برای سرورهای ابری (کلود) هم مصداق دارد، چراکه در فضای ابری پردازشگر بین سرورهای مجازی مشترک است؛ بنابراین هکر می‌تواند به اطلاعات سرورهای مجازی دیگری که روی همان سرور قرار دارند نیز دسترسی داشته باشند.

این باگ امنیتی که زامبی لود (حمله زامبی) نام گرفته است،‌ توسط کارشناسان امنیتی دانشگاه صنعتی گرز (Graz) اتریش شناسایی شده و به شرکت اینتل (Intel) نیز گزارش شده است. البته هنوز مشخص نیست که چه تعداد رایانه مورد نفوذ قرار گرفته‌اند. اینتل وصله جدیدی برای رفع این رخنه امنیتی منتشر کرده است، اما این بروزرسانی باید ابتدا توسط شرکت‌های تولیدکننده کامپیوتر منتشر شود و سپس کاربران آن را نصب کنند.

ظاهرا اپل و گوگل آپدیت‌های این آسیب‌پذیری امنیتی را منتشر کرده‌اند، مایکروسافت نیز به تازگی انتشار آن‌ها را اعلام کرده است. باگ امنیتی زامبی‌لود، تمام سی‌پی‌یوهای اینتل که از سال ۲۰۱۱ تولید شده‌اند را شامل می‌شود. این باگ از عوارض جانبی ویژگی «گمان پردازی» یا همان Speculative Execution پردازشگرهای اینتل است. این ویژگی، که در گذشته نیز منجر به آسیب‌پذیری‌های امنیتی اسپکتر و ملت‌دان شده بود، با پیش‌بینیِ آینده، دستوراتی را از پیش اجرا می‌کند. رفع این آسیب‌پذیری کمی کارایی پردازشگر را کاهش می‌دهد و نتیجه آن نیز صددرصد نیست.

اکثر فضای میزبانی در اینترنت را سرورهای اختصاصی و مجازی لینوکس تشکیل می‌دهند. همانطور که می‌دانید مدیریت و پشتیبانی سرورهای لینوکس از طریق ارتباط SSH صورت می‌گیرد. بنابراین ایمن‌سازی SSH و حفاظت از آن در برابر هک و حملات سایبری از اهمیت بالایی برخوردار است. اگر اخبار و مقالات امنیتی پیشگامان را دنبال کرده باشید، می‌دانید که در مطلب گذشته درباره ایمن‌سازی سرور لینوکس در مقابل حملات SSH نوشته بودیم. حالا در این مطلب نحوه فعال‌سازی تایید دو مرحله‌ای (Two Factor Authentication) را برای اتصالات SSH توضیح می‌دهیم که تاثیر بسیاری در امنیت سرور مجازی لینوکس خواهد داشت.

دستورات این آموزش بر مبنای توزیع فدورا هستند، اما با اندکی تغییر برای لینوکس‌های اوبونتو یا دبیان هم کاربرد دارند. قبل از شروع آموزش، پیشنهاد می‌کنیم از دسترسی فیزیکی یا کنسول به سرور لینوکس خود اطمینان حاصل کنید تا در صورت وقوع مشکل امکان بازیابی و رفع مشکل سرور خود را داشته باشید.

نصب احراز هویت دو مرحله‌ای

ابتدا یک ترمینال باز کنید و برای نصب ابزار احراز هویت گوگل، دستور زیر را وارد کنید:

sudo dnf install google-authenticator nano -y

بعد از نصب، با دستور زیر می‌توانید ابزار را اجرا کنید:

google-authenticator

سپس به دو سوال بعدی جواب مثبت دهید. در مرحله بعدی به شما یک QR کد نمایش داده می‌شود که باید با اپلیکیشن authenticator گوشی همراه خود اسکن کنید. همچنین تعدادی کد امنیتی هم به شما نمایش داده می‌شود که باید در محلی امن ذخیره کنید. در ادامه سه سوال دیگر هم از شما پرسیده می‌شود که باید جواب بله بدهید.

تنظیم SSH

به صورت پیشفرض دیمن SSH در فدورا فعال نیست. با دستورات زیر SSH را فعال کنید:

sudo systemctl start sshd
sudo systemctl enable sshd

بعد از اجرای SSH، کلیدهای خود را با دستور زیر به سرور لینوکس اضافه کنید.

ssh-copy-id USER@FEDORA_IP

بعد از اضافه کردن کلید SSH خود، حالا باید امکان تایید دو مرحله‌ای را در تنظیمات SSH سرور فعال کنید. برای این منظور دستور زیر را در ترمینال سرور لینوکس وارد کنید:

sudo nano /etc/pam.d/sshd

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

#auth substack password-auth
auth sufficient pam_google_authenticator.so

فایل را ذخیره کنید و آن را ببندید. حالا باید تنظیمات دیمن SSH را درست کنید. سپس تنظیمات خط‌های بعدی را به ترتیب به بله و خیر تغییر دهید:

sudo nano /etc/ssh/sshd_config
ChallengeResponseAuthentication yes
PasswordAuthentication no

سپس خط زیر را به آخر فایل اضافه کرده و فایل را ذخیره کنید:

AuthenticationMethods publickey,password publickey,keyboard-interactive

در نهایت برای اعمال تغییرات سرویس SSH را ریست (راه‌اندازی مجدد!) کنید:

sudo systemctl restart sshd

حالا خواهید دید که بعد از SSH به سرور لینوکس، از شما کد تایید خواسته می‌شود که باید با استفاده از برنامه تایید دو مرحله‌ای که در گوشی خود دارید، آن را وارد کنید.

 

گرچه SSH یا ارتباط شل امن، برای مدیریت و پشتیبانی سرور لینوکس ابزاری حیاتی است اما ممکن است سرور شما را دربرابر حملات کورکورانه یا بروت فورس SSH آسیب پذیر کند. راه‌های زیادی برای محافظت از سرور لینوکس شما وجود دارد که یکی از آن‌ها استفاده از ابزار denyhosts است. این ابزار متن باز بوده و در کنار جلوگیری از حملات به سرور شما، لاگ‌های آن را هم ذخیره می‌کند. همچنین بوسیله این ابزار می‌توانید آی پی های مجاز را به لیست سفید یا همان وایت لیست اضافه کنید. علاوه بر این، امکان ارسال هشدار از طریق ایمیل هم وجود دارد.

نصب و پیکربندی این ابزار روی سرورهای لینوکس بسیار آسان است. در ادامه، آموزش نصب و تنظیم آن روی لینوکس اوبونتو ۱۸.۰۴ را خواهید خواند. البته این آموزش برای توزیع های دیگر سرور لینوکس هم کم و بیش همینگونه است.

نصب

برای نصب این ابزار کافی است در ترمینال دستور زیر را وارد کنید:

sudo apt-get install denyhosts -y

پیکربندی

اولین کاری که باید پس از نصب انجام دهید، اضافه کردن آی پی های مجاز است؛ در غیر این صورت ممکن است دسترسی خودتان به سرور را هم بلاک کنید. ابتدا فایل مربوطه را باز کرده، سپس آی پی های مجاز را در انتهای آن اضافه کنید:

sudo nano /etc/hosts.allow
sshd: [IP 1]
sshd: [IP 2]
sshd: [IP 3]

بعد از اضافه کردن آی پی ها، فایل را ذخیره کرده و آن را ببندید. برای تغییر تنظیمات این ابزار فایل زیر را باز کنید:

sudo nano /etc/denyhosts.conf

در این مرحله می‌توانید تنظیمات امنیتی مختلف را تغییر دهید، به عنوان مثال آپشن زیر تعداد لاگین‌های ناموفقی که باعث بلاک شدن کاربر می‌شود را مشخص می‌کند:

DENY_THRESHOLD_INVALID = 5

همچنین می‌توانید با استفاده از آپشن زیر، ایمیلی که می‌خواهید هشدارها به آن ارسال شود را تعیین کنید:

ADMIN_EMAIL =

توجه داشته باشید که این ابزار به صورت پیشفرض از پورت ۲۵ لوکال برای ارسال ایمیل استفاده می‌کند. در صورت نیاز به تغییر، می‌توانید از تنظیمات زیر استفاده کنید:

SMTP_HOST =
SMTP_PORT =
SMTP_FROM =

بعد از انجام تنظیمات مورد نظر، یک بار سرویس denyhosts را ریست و فعال کنید:

sudo systemctl restart denyhosts
sudo systemctl enable denyhosts

بررسی لاگ

ابزار denyhosts به صورت پیشفرض رخدادها را لاگ می‌کند، برای مشاهده لاگ‌های امنتیی به صورت  بلادرنگ، از دستور زیر استفاده کنید:

tail -f /var/log/auth.log

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