چهل نکته درباره Linux Server Hardening
۱. رمزنگاری ارتباطات در سرور لینوکس:
تمام دادههایی که از شبکه ارسال میشوند، قابل شنود هستند. بهتر است همیشه دادههای ارسالی را با رمزنگاری کردن، محافظت کنیم.
برای انتقال فایل میتوان از scp, ssh, rsync و sftp استفاده کرد که همگی رمزنگاری دارند. همچنین میتوان درایو سرور دیگر یا home کاربری خود را با استفاده از sshfs یا fuse محافظت شده مانت کرد.
برای رمزنگاری دادههای خروجی، میتوان از گنوپیجی استفاده کرد. همچنین برای اتصالات شبکهای میتوان از اپنویپیان یا تینک استفاده کرد که ارتباطات شبکهای را رمزنگاری میکنند.
برای رمزنگاری وبسرورها نیز میتوان از الایتتیپیدی، آپاچی و انجیناکس با استفاده از SSL استفاده کرد.
۲. از استفاده از سرویسهای FTP، Telnet و Rlogin/Rsh در لینوکس خودداری کنید!!
از استفاده از سرویسهای FTP، Telnet و Rlogin/Rsh در لینوکس خودداری کنید.
در بسیاری از تنظیمات شبکه، نام کاربریها، رمزهای عبور، دستورات FTP/telnet/rsh و فایلهای انتقالی توسط هر فردی که در همان شبکه حضور دارد، با استفاده از یک برنامه (Packet Sniffer)، قابل ضبط میباشند. راه حل معمول برای این مشکل استفاده از OpenSSH، SFTP یا FTPS (FTP over SSL) است که به FTP رمزنگاری SSL یا TLS را اضافه میکنند.
برای حذف سرویسهای قدیمی و غیرمطمئن مانند NIS، rsh و سایر سرویسها، دستور yum زیر را وارد کنید:
yum erase xinetd ypserv tftp-server telnet-server rsh-server
اگر از سرور مبتنی بر دبیان/اوبونتو استفاده میکنید، از دستور apt-get/apt برای حذف سرویسهای ناامن استفاده کنید.
sudo apt-get --purge remove xinetd nis yp-tools tftpd atftpd tftpd-hpa telnetd rsh-server rsh-redone-server
توضیح:
این بخش از متن به شما هشدار میدهد که استفاده از سرویسهای FTP، Telnet و Rlogin/Rsh در لینوکس باعث بروز ریسک امنیتی میشود. در شبکههای عمومی، اطلاعات کاربران، رمزهای عبور، دستورات و فایلهای انتقالی به راحتی توسط افرادی که در همان شبکه حضور دارند قابل ضبط و دسترسی هستند. برای حل این مشکل، توصیه میشود از سرویسهای امنتر مانند OpenSSH، SFTP و FTPS استفاده کنید. همچنین، دستورات لازم برای حذف سرویسهای قدیمی و غیرمطمئن از سیستمعامل لینوکس نیز در اینجا آورده شده است.
packet sniffer:
برنامه (Packet Sniffer) یک نوع نرمافزار یا دستگاه است که بستههای دادهای که در یک شبکه عبور میکنند را ضبط و تجزیه میکند. هدف اصلی این برنامهها، مشاهده و آنالیز ترافیک شبکه است.
وقتی دادهها در یک شبکه ارسال میشوند، آنها به شکل بستههای کوچکتر تقسیم میشوند که حاوی اطلاعات مانند آدرس مبدأ و مقصد، داده اصلی و سایر اطلاعات مربوطه هستند. برنامههای packet sniffer این بستهها را دریافت کرده و میتوانند اطلاعات مفیدی مانند نام کاربری، رمز عبور، دستورات ارسالی و فایلهای انتقالی را از آنها استخراج کنند.
استفاده از برنامههای packet sniffer در شبکههای عمومی یا شبکههایی که به آنها دسترسی عمومی دارید، ممکن است برای جاسوسی یا به دست آوردن اطلاعات حساس به کار گرفته شود. با استفاده از این برنامه ها، فرد مورد نظر میتواند بستههای شبکه را ضبط کند و اطلاعات را بررسی کند، حتی اگر این اطلاعات به طور عادی رمزنگاری شده باشند.
از طرف دیگر، برنامههای packet sniffer نیز میتوانند به عنوان ابزارهای مفیدی برای آنالیز و عیبیابی شبکه استفاده شوند. با استفاده از این برنامهها، میتوانید ترافیک شبکه را بررسی کنید، مشکلات را تشخیص دهید و عملکرد بهتری را برای شبکه خود فراهم کنید.
برنامههای packet sniffer معمولاً در قالب نرمافزارهای مختلفی مانند Wireshark، tcpdump، WinPcap و Capsa قابل دسترسی هستند و در سیستمعاملهای مختلفی مانند لینوکس و ویندوز قابل استفاده هستند.
۳. کاهش نرم افزار های نصب شده به منظور کاهش آسیب پذیری در لینوکس:
آیا واقعا نیاز به همه نوع سرویس هایی که نصب شده اند دارید؟ با حذف نرم افزار های اضافی امنیت و عملکرد سرور خودتون رو بهبود ببخشید.
از مدیر بسته RPM مانند yum یا apt-get و/یا dpkg استفاده کنید تا مجموعهای از نرمافزارهای نصب شده روی سیستم را بررسی کنید. تمامی بستههای ناخواسته را حذف کنید.
yum list installed
yum list packageName
yum remove packageName
یا
dpkg --list
dpkg --info packageName
apt-get remove packageName
#linux
#hardning
@code_crafters
۱. رمزنگاری ارتباطات در سرور لینوکس:
تمام دادههایی که از شبکه ارسال میشوند، قابل شنود هستند. بهتر است همیشه دادههای ارسالی را با رمزنگاری کردن، محافظت کنیم.
برای انتقال فایل میتوان از scp, ssh, rsync و sftp استفاده کرد که همگی رمزنگاری دارند. همچنین میتوان درایو سرور دیگر یا home کاربری خود را با استفاده از sshfs یا fuse محافظت شده مانت کرد.
برای رمزنگاری دادههای خروجی، میتوان از گنوپیجی استفاده کرد. همچنین برای اتصالات شبکهای میتوان از اپنویپیان یا تینک استفاده کرد که ارتباطات شبکهای را رمزنگاری میکنند.
برای رمزنگاری وبسرورها نیز میتوان از الایتتیپیدی، آپاچی و انجیناکس با استفاده از SSL استفاده کرد.
۲. از استفاده از سرویسهای FTP، Telnet و Rlogin/Rsh در لینوکس خودداری کنید!!
از استفاده از سرویسهای FTP، Telnet و Rlogin/Rsh در لینوکس خودداری کنید.
در بسیاری از تنظیمات شبکه، نام کاربریها، رمزهای عبور، دستورات FTP/telnet/rsh و فایلهای انتقالی توسط هر فردی که در همان شبکه حضور دارد، با استفاده از یک برنامه (Packet Sniffer)، قابل ضبط میباشند. راه حل معمول برای این مشکل استفاده از OpenSSH، SFTP یا FTPS (FTP over SSL) است که به FTP رمزنگاری SSL یا TLS را اضافه میکنند.
برای حذف سرویسهای قدیمی و غیرمطمئن مانند NIS، rsh و سایر سرویسها، دستور yum زیر را وارد کنید:
yum erase xinetd ypserv tftp-server telnet-server rsh-server
اگر از سرور مبتنی بر دبیان/اوبونتو استفاده میکنید، از دستور apt-get/apt برای حذف سرویسهای ناامن استفاده کنید.
sudo apt-get --purge remove xinetd nis yp-tools tftpd atftpd tftpd-hpa telnetd rsh-server rsh-redone-server
توضیح:
این بخش از متن به شما هشدار میدهد که استفاده از سرویسهای FTP، Telnet و Rlogin/Rsh در لینوکس باعث بروز ریسک امنیتی میشود. در شبکههای عمومی، اطلاعات کاربران، رمزهای عبور، دستورات و فایلهای انتقالی به راحتی توسط افرادی که در همان شبکه حضور دارند قابل ضبط و دسترسی هستند. برای حل این مشکل، توصیه میشود از سرویسهای امنتر مانند OpenSSH، SFTP و FTPS استفاده کنید. همچنین، دستورات لازم برای حذف سرویسهای قدیمی و غیرمطمئن از سیستمعامل لینوکس نیز در اینجا آورده شده است.
packet sniffer:
برنامه (Packet Sniffer) یک نوع نرمافزار یا دستگاه است که بستههای دادهای که در یک شبکه عبور میکنند را ضبط و تجزیه میکند. هدف اصلی این برنامهها، مشاهده و آنالیز ترافیک شبکه است.
وقتی دادهها در یک شبکه ارسال میشوند، آنها به شکل بستههای کوچکتر تقسیم میشوند که حاوی اطلاعات مانند آدرس مبدأ و مقصد، داده اصلی و سایر اطلاعات مربوطه هستند. برنامههای packet sniffer این بستهها را دریافت کرده و میتوانند اطلاعات مفیدی مانند نام کاربری، رمز عبور، دستورات ارسالی و فایلهای انتقالی را از آنها استخراج کنند.
استفاده از برنامههای packet sniffer در شبکههای عمومی یا شبکههایی که به آنها دسترسی عمومی دارید، ممکن است برای جاسوسی یا به دست آوردن اطلاعات حساس به کار گرفته شود. با استفاده از این برنامه ها، فرد مورد نظر میتواند بستههای شبکه را ضبط کند و اطلاعات را بررسی کند، حتی اگر این اطلاعات به طور عادی رمزنگاری شده باشند.
از طرف دیگر، برنامههای packet sniffer نیز میتوانند به عنوان ابزارهای مفیدی برای آنالیز و عیبیابی شبکه استفاده شوند. با استفاده از این برنامهها، میتوانید ترافیک شبکه را بررسی کنید، مشکلات را تشخیص دهید و عملکرد بهتری را برای شبکه خود فراهم کنید.
برنامههای packet sniffer معمولاً در قالب نرمافزارهای مختلفی مانند Wireshark، tcpdump، WinPcap و Capsa قابل دسترسی هستند و در سیستمعاملهای مختلفی مانند لینوکس و ویندوز قابل استفاده هستند.
۳. کاهش نرم افزار های نصب شده به منظور کاهش آسیب پذیری در لینوکس:
آیا واقعا نیاز به همه نوع سرویس هایی که نصب شده اند دارید؟ با حذف نرم افزار های اضافی امنیت و عملکرد سرور خودتون رو بهبود ببخشید.
از مدیر بسته RPM مانند yum یا apt-get و/یا dpkg استفاده کنید تا مجموعهای از نرمافزارهای نصب شده روی سیستم را بررسی کنید. تمامی بستههای ناخواسته را حذف کنید.
yum list installed
yum list packageName
yum remove packageName
یا
dpkg --list
dpkg --info packageName
apt-get remove packageName
#linux
#hardning
@code_crafters
❤3👍3
اجرا هر سرویس در یک سیستم نمونه مجازی:
اجرای سرویسهای شبکه مختلف را در سرورها یا نمونههای مجازی جداگانه انجام دهید. این محدودیت تعداد سرویسهای دیگری که ممکن است قربانی شود را محدود میکند. به عنوان مثال، اگر یک حملهکننده قادر به بهرهبرداری موفق از یک نرمافزار مانند Apache شود، او میتواند به تمامی سرور شامل سرویسهای دیگری مانند MySQL/MariaDB/PGSql، سرور ایمیل و غیره دسترسی پیدا کند.
مثال:
فرض کنید شما یک سرور لینوکس دارید که شامل سرویسهای Apache و MySQL است. به جای اجرای هر دو سرویس روی یک سرور، شما میتوانید سرور Apache را روی یک سیستم مجازی و سرور MySQL را روی یک سیستم مجازی جداگانه اجرا کنید. اینکار به شما امکان میدهد که سرویسهای مختلف را در محیطی مستقل و جداگانه اجرا کنید. در نتیجه، اگر سرویس Apache مورد عنایت قرار گیرد، دسترسی به سرویس MySQL در سیستم مجازی جداگانه محدود خواهد شد و امنیت سیستم شما حفظ خواهد شد.
استفاده از کانتینر داکر میتواند یک روش مناسب برای پیادهسازی این رویکرد باشد. با استفاده از کانتینرها، شما میتوانید هر سرویس شبکه را در یک کانتینر جداگانه اجرا کنید. این کانتینرها محیطی مستقل از یکدیگر ایجاد میکنند و از هم جدا بوده و امکان دسترسی به سرویسهای دیگر را محدود میکنند.
برای پیادهسازی این رویکرد با استفاده از کانتینر داکر، شما میتوانید به شکل زیر عمل کنید:
1. ایجاد یک تصویر داکر برای هر سرویس شبکه: شما باید یک تصویر داکر برای هر سرویس شبکه مورد نظر ایجاد کنید. این تصویر شامل تنظیمات و پیکربندیهای مربوط به سرویس شبکه خاص است.
2. اجرای کانتینرها: با استفاده از ابزار داکر، شما میتوانید کانتینرهای مربوط به هر سرویس را بر اساس تصاویر داکر ایجاد شده، اجرا کنید. هر کانتینر در یک محیط مجازی جداگانه اجرا میشود و از هم جدا است.
3. پیکربندی شبکه: برای ارتباط بین کانتینرها و اجرای سرویسهای شبکه، شما میتوانید شبکههای داکر را پیکربندی کنید. این شبکهها به کانتینرها امکان میدهند تا از طریق شبکه با یکدیگر ارتباط برقرار کنند.
با این رویکرد، شما هر سرویس شبکه را در یک کانتینر جداگانه اجرا میکنید و از ارتباط مستقیم بین سرویسها جلوگیری میکنید. اگر یک سرویس تحت حمله قرار بگیرد، تأثیر آن روی سایر سرویسها محدود خواهد بود و امنیت سیستم شما حفظ میشود.
۵. نگهداری از هسته لینوکس و بروز بودن نرم افزار ها:
اعمال پچهای امنیتی بخش مهمی از نگهداری سرور لینوکس است. لینوکس ابزارهای لازم برای بهروزرسانی سیستم شما را فراهم میکند و همچنین امکان بهروزرسانی آسان بین نسخهها را فراهم میکند. تمامی بروزرسانیهای امنیتی باید اعمال شوند. از مدیر بسته RPM مانند yum و/یا apt-get و/یا dpkg برای اعمال تمامی بروزرسانیهای امنیتی استفاده کنید.
# yum update
یا
# apt-get update && apt-get upgrade
شما میتوانید Red Hat / CentOS / Fedora Linux را بهگونهای پیکربندی کنید که از طریق ایمیل اطلاعیههای بروزرسانی بسته yum را دریافت کند. یک گزینه دیگر نیز استفاده از کرون جاب برای اعمال تمامی بروزرسانیهای امنیتی است. در Debian / Ubuntu Linux میتوانید از apticron برای ارسال اطلاعیههای امنیتی استفاده کنید. همچنین امکان پیکربندی بروزرسانیهای بدون نیاز به تداخل برای سرور Debian / Ubuntu Linux با استفاده از دستور apt-get/apt نیز وجود دارد:
$ sudo apt-get install unattended-upgrades apt-listchanges bsd-mailx
نحوه پیکربندی apticron:
برای استفاده از apticron در سرور Debian/Ubuntu Linux و ارسال اطلاعیههای امنیتی، میتوانید مراحل زیر را دنبال کنید:
1. نصب apticron: ابتدا باید برنامه apticron را در سیستم خود نصب کنید. برای این کار، از دستور زیر استفاده کنید:
sudo apt-get install apticron
2. پیکربندی apticron: پس از نصب، باید فایل تنظیمات apticron را پیکربندی کنید. فایل پیکربندی برای apticron در مسیر /etc/apticron/apticron.conf قرار دارد. باز کنید و ویرایش کنید:
sudo nano /etc/apticron/apticron.conf
3. تنظیمات ایمیل: در فایل تنظیمات، بخشی با عنوان EMAIL وجود دارد. در این بخش، آدرس ایمیل خود را به جای root@example.com قرار دهید. برای مثال:
EMAIL="your-email@example.com"
4. تنظیمات بستههای اطلاعیههای امنیتی: در فایل تنظیمات، بخشی با عنوان PACKAGE_NAMES وجود دارد. در این بخش، باید نام بستههایی که میخواهید اطلاعیههای امنیتی آنها را دریافت کنید را مشخص کنید. برای مثال:
PACKAGE_NAMES="apache2 mysql-server php"
5. ذخیره و بستن فایل تنظیمات: پس از اعمال تغییرات، فایل را ذخیره کنید و ببندید
#linux
#hardning
@code_crafters
اجرای سرویسهای شبکه مختلف را در سرورها یا نمونههای مجازی جداگانه انجام دهید. این محدودیت تعداد سرویسهای دیگری که ممکن است قربانی شود را محدود میکند. به عنوان مثال، اگر یک حملهکننده قادر به بهرهبرداری موفق از یک نرمافزار مانند Apache شود، او میتواند به تمامی سرور شامل سرویسهای دیگری مانند MySQL/MariaDB/PGSql، سرور ایمیل و غیره دسترسی پیدا کند.
مثال:
فرض کنید شما یک سرور لینوکس دارید که شامل سرویسهای Apache و MySQL است. به جای اجرای هر دو سرویس روی یک سرور، شما میتوانید سرور Apache را روی یک سیستم مجازی و سرور MySQL را روی یک سیستم مجازی جداگانه اجرا کنید. اینکار به شما امکان میدهد که سرویسهای مختلف را در محیطی مستقل و جداگانه اجرا کنید. در نتیجه، اگر سرویس Apache مورد عنایت قرار گیرد، دسترسی به سرویس MySQL در سیستم مجازی جداگانه محدود خواهد شد و امنیت سیستم شما حفظ خواهد شد.
استفاده از کانتینر داکر میتواند یک روش مناسب برای پیادهسازی این رویکرد باشد. با استفاده از کانتینرها، شما میتوانید هر سرویس شبکه را در یک کانتینر جداگانه اجرا کنید. این کانتینرها محیطی مستقل از یکدیگر ایجاد میکنند و از هم جدا بوده و امکان دسترسی به سرویسهای دیگر را محدود میکنند.
برای پیادهسازی این رویکرد با استفاده از کانتینر داکر، شما میتوانید به شکل زیر عمل کنید:
1. ایجاد یک تصویر داکر برای هر سرویس شبکه: شما باید یک تصویر داکر برای هر سرویس شبکه مورد نظر ایجاد کنید. این تصویر شامل تنظیمات و پیکربندیهای مربوط به سرویس شبکه خاص است.
2. اجرای کانتینرها: با استفاده از ابزار داکر، شما میتوانید کانتینرهای مربوط به هر سرویس را بر اساس تصاویر داکر ایجاد شده، اجرا کنید. هر کانتینر در یک محیط مجازی جداگانه اجرا میشود و از هم جدا است.
3. پیکربندی شبکه: برای ارتباط بین کانتینرها و اجرای سرویسهای شبکه، شما میتوانید شبکههای داکر را پیکربندی کنید. این شبکهها به کانتینرها امکان میدهند تا از طریق شبکه با یکدیگر ارتباط برقرار کنند.
با این رویکرد، شما هر سرویس شبکه را در یک کانتینر جداگانه اجرا میکنید و از ارتباط مستقیم بین سرویسها جلوگیری میکنید. اگر یک سرویس تحت حمله قرار بگیرد، تأثیر آن روی سایر سرویسها محدود خواهد بود و امنیت سیستم شما حفظ میشود.
۵. نگهداری از هسته لینوکس و بروز بودن نرم افزار ها:
اعمال پچهای امنیتی بخش مهمی از نگهداری سرور لینوکس است. لینوکس ابزارهای لازم برای بهروزرسانی سیستم شما را فراهم میکند و همچنین امکان بهروزرسانی آسان بین نسخهها را فراهم میکند. تمامی بروزرسانیهای امنیتی باید اعمال شوند. از مدیر بسته RPM مانند yum و/یا apt-get و/یا dpkg برای اعمال تمامی بروزرسانیهای امنیتی استفاده کنید.
# yum update
یا
# apt-get update && apt-get upgrade
شما میتوانید Red Hat / CentOS / Fedora Linux را بهگونهای پیکربندی کنید که از طریق ایمیل اطلاعیههای بروزرسانی بسته yum را دریافت کند. یک گزینه دیگر نیز استفاده از کرون جاب برای اعمال تمامی بروزرسانیهای امنیتی است. در Debian / Ubuntu Linux میتوانید از apticron برای ارسال اطلاعیههای امنیتی استفاده کنید. همچنین امکان پیکربندی بروزرسانیهای بدون نیاز به تداخل برای سرور Debian / Ubuntu Linux با استفاده از دستور apt-get/apt نیز وجود دارد:
$ sudo apt-get install unattended-upgrades apt-listchanges bsd-mailx
نحوه پیکربندی apticron:
برای استفاده از apticron در سرور Debian/Ubuntu Linux و ارسال اطلاعیههای امنیتی، میتوانید مراحل زیر را دنبال کنید:
1. نصب apticron: ابتدا باید برنامه apticron را در سیستم خود نصب کنید. برای این کار، از دستور زیر استفاده کنید:
sudo apt-get install apticron
2. پیکربندی apticron: پس از نصب، باید فایل تنظیمات apticron را پیکربندی کنید. فایل پیکربندی برای apticron در مسیر /etc/apticron/apticron.conf قرار دارد. باز کنید و ویرایش کنید:
sudo nano /etc/apticron/apticron.conf
3. تنظیمات ایمیل: در فایل تنظیمات، بخشی با عنوان EMAIL وجود دارد. در این بخش، آدرس ایمیل خود را به جای root@example.com قرار دهید. برای مثال:
EMAIL="your-email@example.com"
4. تنظیمات بستههای اطلاعیههای امنیتی: در فایل تنظیمات، بخشی با عنوان PACKAGE_NAMES وجود دارد. در این بخش، باید نام بستههایی که میخواهید اطلاعیههای امنیتی آنها را دریافت کنید را مشخص کنید. برای مثال:
PACKAGE_NAMES="apache2 mysql-server php"
5. ذخیره و بستن فایل تنظیمات: پس از اعمال تغییرات، فایل را ذخیره کنید و ببندید
#linux
#hardning
@code_crafters
❤4👍1