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

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

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

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

به گفته کسپراسکای بیش از ده مورد APT  (advanced persistent threat) شناسایی شده اند که از بد افزارهایی مرتبط با لینوکس و یا ماژول های مبتنی بر آن استفاده می‌کنند. اخیرا، این مورد در کمپین های بدافزار LightSpy نیز مشاهده شده است. Lightspy قابلیت هدف قرار دادن ویندوز و لینوکس را داشته و حتی می‌تواند سیستم عامل iOS و دستگاه های Mac را نیز مورد حمله قرار دهد.

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

به عنوان مثال، گروه روسی مولد تورلا در طول سال‌ها مجموعه ابزار خود را تغییر داده است، از جمله این تغییرات می‌توان به تغییر Linux backdoors اشاره کرد. طبق گفته کسپراسکای، تغییر Linux backdoor در ورژن penguinx64 اکنون ده‌ها سرور در اروپا و ایالات متحده را تحت تاثیر قرار داده است.

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

علاوه بر این به سازمان ها توصیه می‌شود تا همواره تعدادی از منابع نرم افزاری را در نظر داشته باشند و استفاده از کانال های به روز رسانی نشده و رمزگذاری شده را محدود کنند، از احراز هویت ssh که مبتنی بر key است استفاده کنند، از احراز هویت دو عاملی استفاده کنند و کلیدهای حساس را روی دستگاه های خارجی ذخیره کنند و در ضمن از اجرای اسکریپت های مختلف از منابع غیر قابل اعتماد دوری کنند.

نکات امنیتی استفاده از سرورهای لینوکس

ایمن‌سازی سرورهای لینوکس جنبه های مثبت مختلفی در جهت محافظت داده‌ها، مالکیت معنوی و سایر موارد دارد. مدیر سیستم مسئول بررسی و تامین مقدمات امنیتی سیستم است.
در قسمت اول این مطلب ما 10 نکته امنیتی مهم برای نصب سیستم لینوکس را ارائه می‌دهیم.
بایستی توجه داشته باشید که دستوراتی که در ادامه به آن ها اشاره می‌کنیم با ورژن‌های Ubuntu/Debian و CentOS/RHEL لینوکس سازگاری دارند.

1- رمزگذاری ارتباط داده‌ها برای سرور لینوکس:

تمامی داده‌هایی که در طول شبکه انتقال پیدا میکنند قابل نظارت کردن هستند و همینطور میتوانید این داده‌ها را به وسیله پسورد و یا certificate مخصوص، رمزگذاری کنید. به چند نمونه از این روش‌ها اشاره می‌کنیم.
• برای انتقال فایل می‌توانید از دستورهای ssh، scp، rsync و یا sftp استفاده کنید. همچنین با استفاده دستور sshf می‌توانید فایل‌های سرور ریموت و یا دایرکتوری خود را mount کنید.
• GnuPG به شما اجازه می‌دهد تا داده‌ها و ارتباطات خود را با استفاده از یک سیستم مدیریت کلیدی متنوع و همچنین دسترسی به ماژول‌های مختلف دایرکتوری کلیدهای عمومی رمزگذاری کنید.
• نصب و استفاده از Apache SSL
• نصب و استفاده از Lighttpd SSL

2- استفاده از سرویس‌های FTP، Telnet را بر روی لینوکس متوقف کنید:

تحت اکثر تنظیمات شبکه، نام کاربری، رمز عبور، دستورات rsh، telnet، FTP و همینطور فایل‌های منتقل شده توسط هر شخصی در همان شبکه قابل ضبط هستند. راه حل متداول برای رفع این مشکل استفاده از OpenSSH، SFTP و یا FTPS است که رمزگذاری SSL یا TLS را به FTP اضافه می‌کنند.
برای این منظور به شکل زیر از دستور yum استفاده کنید:

yum erase xinetd ypserv tftp-server telnet-server rsh-server#

اگر از سرور لینوکسی بر پایه ی اوبونتو/دبیان استفاده میکنید، از دستور زیر برای حذف سرویس های نا امن استفاده کنید:

sudo apt-get --purge remove xinetd nis yp-tools tftpd atftpd tftpd-hpa telnetd rsh-server rsh-redone-server$
3- برای حداقل‌سازی آسیب به لینوکس از نصب نرم افزارهای اضافه خودداری کنید:

برای جلوگیری از آسیب پذیری به نرم افزار از نصب نرم افزارهای غیرضروری خودداری کنید. از سیستم‌های مدیریت بسته RPM مانند Yum و apt-get و dpkg برای بررسی و مرور بسته‌های نصب شده بر روی سیستم خود استفاده کنید.برای پاک کردن پکیج های غیر ضروری، مانند دستور زیر عمل کنید:

yum list installed#
yum list packageName#
yum remove packageName#

یا

dpkg --list#
dpkg --info packageName#
apt-get remove packageName#
4- کرنل لینوکس خود را آپدیت نگه دارید:

استفاده از پچ‌های امنیتی یکی از مهم‌ترین بخش‌های حفظ و نگهداری سرورهای لینوکس است. لینوکس تمام ابزارهای لازم برای به روزرسانی سیستم شما را فراهم میکند و هم‌چنین امکان استفاده آسان بین نسخه ها را نیز فراهم می‌کند.
همه‌ به روزرسانی‌های امنیتی باید در اسرع وقت بررسی و اعمال شوند، برای این منظور بایستی از دستورات yum و یا apt-get استفاده کنید.

yum update#

یا

apt-get update && apt-get upgrade#
5- حساب‌های کاربری لینوکس و استفاده از رمز عبور قوی برای آن‌ها:

از دستورات useradd/usermod برای ایجاد و نگهداری حساب‌های کاربری استفاده کنید؛ همچنین اطمینان حاصل کنید که از یک رمز عبور قوی استفاده می‌کنید. به عنوان مثال یک رمز عبور خوب شامل 8 کاراکتر و ترکیبی از اعداد و کاراکترها و حروف بزرگ و کوچک است.
برای یافتن رمز عبورهای ضعیف می‌توانید از ابزاری مانند “John the ripper” استفاده کنید.

6- تنظیم رمز عبور مدت‌دار برای کاربران لینوکس در جهت امنیت بهترسیستم:

دستور change command تاریخ بین تغییر پسورد، از اولین پسورد تنظیم شده تا اخرین پسورد را اندازه گیری کرده و تغییر می‌دهد. سیستم از این اطلاعات برای تعیین کردن زمان تغییر پسورد توسط کاربر استفاده می‌کند.

7- محدودسازی استفاده از رمزهای عبور قبلی در لینوکس:

می‌توانید از استفاده مجدد پسورد توسط کاربران جلوگیری کنید. با استفاده از پارامتر pam_unix می‌توانید استفاده مجدد از پسوردهای قدیمی را محدود کنید.

8- می‌توانید از دستور faillog برای نمایش سوابق عدم ورود موفق به سیستم و یا محدود کردن ورود ناموفق به سیستم، استفاده کنید:

دستور faillog محتوای failure log را از آدرس var/log/faillog database/log file فرمت می‌کند. همچنین می‌توانید برای ذخیره تعداد ورودهای ناموفق به سیستم از آن استفاده کنید. برای دیدن تلاش های ناموفق ورود به سیستم مانند زیر عمل کنید:

Faillog

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

faillog -r -u userName

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

# lock Linux account
passwd -l userName
# unlock Linux account
passwd -u userName
9- چگونه اطمینان حاصل کنیم که هیچ اکانتی پسورد خالی ندارد:

دستور زیر را اجرا کنید:

# awk -F: '($2 == "") {print}' /etc/shadow

برای قفل کردن همه‌ی حساب ها با رمز عبور خالی:

# passwd -l accountName
10- چگونه اطمینان حاصل کنیم که هیچ اکانتی غیر از Root مقدار UID برابر 0 ندارد:

فقط اکانت root دارای UID برابر 0 و مجوز کامل برای دسترسی به سیستم است. دستور زیر را اجرا کنید تا همه اکانت‌ها با UID=0 نمایش داده شوند:

# awk -F: '($3 == "0") {print}' /etc/passwd

در ادامه باید تنها یک خط مانند زیر ببینید:

root:x:0:0:root:/root:/bin/bash

اگر خطوط دیگری را مشاهده می‌کنید آن ها را حذف کنید.

11- غیرفعال کردن سرویس‌های غیر ضروری:

همه خدمات غیرضروری و سرویس‌هایی که در پس زمینه اجرا میشوند را متوقف کنید، تمام سرویس هایی که در start-up اجرا می‌شوند را متوقف کنید. دستور زیر را اجرا کنید تا تمام سرویس‌هایی که در بوت اجرا می‌شوند را ببینید.

chkconfig --list | grep '3:on'#

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

service serviceName stop#
chkconfig serviceName off#

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

systemctl disable service#
systemctl disable httpd.service#

برای شروع، توقف، ری‌استارت کردن سرویس از دستور زیر استفاده کنید:

systemctl disable service#
systemctl disable httpd.service#

برای گزارش وضعیت سرویس از دستور زیر استفاده کنید:

systemctl status service#
systemctl status httpd.service#

برای دریافت گزارشات لاگ، از دستور زیر استفاده کنید:

journalctl#
journalctl -u network.service#
journalctl -u ssh.service#
journalctl -f#
journalctl -k#
12- پورت‌های باز شبکه را پیدا کنید. (Listening Ports):

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

netstat -tulpn

یا از دستور SS به همین منظور:

$ ss -tulpn

و یا:

nmap -sT -O localhost
nmap -sT -O server.example.com
13- از SUID و SGID های غیرضروری جلوگیری کنید:

زمانی که فایل های SUID و SGID مشکلی دارند ممکن است با مشکلات امنیتی و باگ های سیستمی رو به رو شوید، بروز این مشکلات برای تمام کاربرانی که با سیستم کار میکنند امکان پذیر است در نتیجه پیشنهاد میکنیم برای پیدا کردن این مشکلات از دستور زیر استفاده کنید:

#See all set user id files:
find / -perm +4000
# See all group id files
find / -perm +2000
# Or combine both in a single command
find / \( -perm -4000 -o -perm -2000 \) -print
find / -path -prune -o -type f -perm +6000 -ls
14- پیدا کردن فایل های World-Writable:

فایل های world-writable میتوانند تبدیل به یک مشکل امنیتی شوند، از دستور زیر برای پیدا کردن این فایل ها استفاده کنید:

find /dir -xdev -type d \ (-perm -0002 -a! -perm -1000 \) -print

بعد از این میتوانید مقادیری که میخواهید را نگه داشته و بقیه را حذف کنید.

15- فایل هایی که مربوط به هیچ کاربری نمیشوند را پیدا کنید:

فایل هایی که توسط کاربر یا گروهی اداره نمیشوند ممکن است به مشکلات امنیتی بیانجامد، این فایل ها را با استفاده از دستور زیر پیدا کنید:

find /dir -xdev \ (-nouser -o -nogroup \) -print

بعد از اینکه این فایل ها را پیدا کردید، بایستی آن را به یک کاربر یا گروه خاص اختصاص داده یا آن را حذف کنید.

16- دستگاه های USB، Firewire، thunderbolt را غیرفعال کنید:

برای غیرفعال کردن دیوایس های USB از دستور زیر استفاده کنید:

echo 'install usb-storage /bin/true' >> /etc/modprobe.d/disable-usb-storage.conf#

همچنین برای غیرفعال کردن ماژول های firewire و thunderbolt، از دستور زیر استفاده کنید:

echo "blacklist firewire-core" >> /etc/modprobe.d/firewire.conf#
echo "blacklist thunderbolt" >> /etc/modprobe.d/thunderbolt.conf#

پس از انجام دادن این کار کاربران نمیتوانند داده های حساس را به سرعت در دستگاه های USB کپی کرده و یا بدافزار یا ویروس را بر روی سیستم لینوکس نصب کنند.

17- سرویس هایی که از آن ها استفاده نمیکنید را غیر فعال کنید:

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

sudo systemctl stop service $
sudo systemctl disable service $

به عنوان مثال، اگر نمیخواهید مدتی از سرویس NginX استفاده کنید، آن را غیرفعال کنید:

sudo systemctl stop nginx $
sudo systemctl disable nginx $
18- امن سازی سرور Apache، PHP، Nginx:

فایل httpd.conf را ادیت کرده و مقادیر زیر را اضافه کنید:

ServerTokens Prod
ServerSignature Off
TraceEnable Off
Options all -Indexes
Header always unset X-Powered-By

برای ری استارت کردن سرویس های hhtpd/apache2 بر روی لینوکس، دستور زیر را اجرا کنید:

sudo systemctl restart apache2.service $

و یا :

sudo systemctl restart httpd.service $

چنانچه موارد فوق را برای VPS لینوکسی خود انجام داده‌اید، می‌توانید از ابزار OpenSCAP برای بررسی امنیت سرور مجازی خود استفاده کنید.

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

برای بررسی امنیتی و مقاوم سازی سرورهای لینوکس ابزارهای زیادی وجود دارد که بررسی همه‌ی آن‌ها از حوصله‌ی مدیران و ادمین‌های سرور خارج است. یکی از کامل‌ترین آن‌ها، 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 کرده و سرور لینوکس خود را مدیریت کنید.