مهدی مزرعه ملایی
مهدی مزرعه ملایی
خواندن ۲ دقیقه·۳ سال پیش

امن سازی کرنل لینوکس (پارت اول)

Linux Kernel
Linux Kernel


چرا حالا امن سازی کرنل؟ شاید بنظرم اومد برای شروع امن کردن سرورمون بهتر از هسته یا کرنلش شروع کنیم تا به سطح ایمن سازی سرویس هاشم برسیم.

خود کرنل به خودی خود نمیگیم نا امنه اما خب توش مَلَقم خیلی میشه زد بطوری که هم سرویسهامون دچار مشکل بشه هم سرور دیگه حال سرویس دهی نداشته باشه.

گمونم چون نشستین دارین امن سازی کرنل لینوکس میخونین ، میدونین لینوکس چیه و محتویات زیرشاخه هاش چی هستن . ( ت پرانتز فقط زیرشاخه proc رو بگم که پراسس های ما و بطور کلی kernel module Parameter ها ک میشن پارامترهای کرنل توی این زیرشاخه دسته بندی شدن )

بحث امن سازی کرنل حول محور proc میچرخه . sysctl که اکثرا بحث مارو پوشش میده هم رابط ما برای تغییر یا دیدن پارامترهاییه که برای کرنل تعریف شده.

مشاهده پرامترهای کرنل :

sysctl -a

یا

ls /proc/sys/kernel

برای تغییر هم بهتره خودتون رو تو زحمت نندازین ک محتوای مسیر /proc/sys/kernel رو عوض کنین چون محتویات proc موقتی هستن و با ریبوت از بین میرن...

برای فیلتر یک پارامتر خاص در sysctl :

sysctl -ar [ parameter ]
sysctl -ar version

یا

cat /proc/sys/kernel/version

مقدار دهی موقت (Temporary) به کرنل پارامترها :

sysctl -w kernel.domainname='local'

یا

echo 'local' > /proc/sys/kernel/domainname


برای تغییر دائمی تغییرات باید از دو مسیر زیر فایل کانفیگها رو تغییر یا ایجاد کنیم:

/etc/sysctl.conf
/etc/sysctl.d

حالا که با کلیات اینکه sysctl چیه آشنا شدیم بریم سراغ اصل داستان:

این تکنیک از سال 2001 برای رندومایز کردن محل اجرای برنامه ها جهت بکار گرفته شد تا از آسیب پذیری های حافظه جلوگیری شود.

بطور دیفالت ASLR در توزیع های لینوکسی فعال است . برای دیدن پارامتر ASLR :

2 یا 1: فعال

0: غیرفعال

cat /proc/sys/kernel/randomize_va_space sysctl -ar randomize

برای غیرفعال کردن یا فعال کردن ASLR:

echo 0 > /proc/sys/kernel/randomize_va_space
sysctl -w kernel.randomize_va_space='0'


برای دائمی کردن تغییرات :

echo kernel.randomize_va_space='0' > /etc/sysctl.conf sysctl --system


تصویر زیر محل اجرایی bash رو دو حالت برای فعال بودن و غیرفعال بود پارامتر randomize نشان می دهد.

Randomize
Randomize


  • IP Spoofing :

یکی از شایعترین نوع حملات در شبکه است که مهاجم با تغییر Source IP در Header پکت ها ، سعی در Bypass کردن رولهای OS برای اخلال در شبکه را دارد. این مورد در مواقعی که از OS به عنوان فایروال یا روتر نمود دارد.

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

مشاهده ، فعال سازی موقت و فعال سازی دائمی :

sysctl -ar net.ipv4.conf.default.rp_filter
sysctl -ar net.ipv4.conf.all.rp_filter
sysctl -w net.ipv4.conf.default.rp_filter='1'
sysctl -w net.ipv4.conf.all.rp_filter='1'
echo net.ipv4.conf.default.rp_filter=1 > /etc/sysctl.conf
echo net.ipv4.conf.all.rp_filter=1 > /etc/sysctl.conf


  • SYN Flooding :

[ ابر آروان : ]حمله‌ی SYN flood در دسته‌ی حمله‌های DDoS قرار می‌گیرد و مانند این حمله‌ها، سعی می‌کند با ارسال درخواست و مشغول نگه‌ داشتن سرور، ظرفیت سرور برای پاسخ‌گویی به درخواست‌ها را به حداقل ممکن برساند و مانع دسترسی کاربران به سرویس شود. بیشتر بخوانید...

برای جلوگیری از حملات SYN Flood :

sysctl -w net.ipv4.tcp_syncookies=1 sysctl -w net.ipv4.tcp_max_syn_backlog=3072 sysctl -w net.ipv4.tcp_synack_retries=0 sysctl -w net.ipv4.tcp_syn_retries=0 sysctl -w net.ipv4.conf.all.send_redirects=0 sysctl -w net.ipv4.conf.all.accept_redirects=0 sysctl -w net.ipv4.conf.all.forwarding=0 sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1



kernellinuxلینوکسکرنلامن
شاید از این پست‌ها خوشتان بیاید