Linux Kernel Security
با سلام…
امیدوارم همیشه سلامت و شاد باشید…
این امتحانات ما هم تمام شد و بعد از کلی بدبختی کشیدن برای انتخاب ۶ تا واحد پفکی برای ترم تابستان ، حالا دیگه مطالعه کردن های خودم شروع شده … حسابی گیج و منگ شدم .. اینقده مطلب زیاده که نگو … خودم هم نمی دونم کدومشون رو بخونم … البته فعلا رفتم تو کف کتاب ” راز داوینچی ” … چونکه چند شب پیش فیلم ” The Davichi Code ” رو دیدم ، حسابی کف کردم و رفتم دنباله کتابش که خیلی مطالب جالب و خواندنی داره و چونکه بر اساس مطالعات دقیق تاریخی بوده ، خیلی چیزها رو زیر سوال می بره و البته خیلی چیزها رو به بنده یاد میده … توصیه اکید می کنم و همچنین فتوای دینی می دهم که خواندن این کتاب لازم کفایی و از مستحبات و همچنین احتیاط واجب به مطالعه است !!! … دیروز هم رفتم نمایشگاه کامپیوتر که در کرمانشاه برگزار شده بود ، حالم به هم خورد ، خیلی مسخره و به درد نخور بود … دانشگاه هم که چه عرض کنم ، قراره هفته ی آینده جشنواره تئاتر از طرف دانشگاه در منطقه ۱۱ شروع بشه ، بازم سرم شلوغه ، باید کمک دوستان بکنم و البته برای بنده افتخاری هست … البته احتمالا اینجوری که خبرها میرسه ، قرار هست که اونهایی که کنسرت آقای سراج رو در کرمانشاه تعطیل کردن با اون وضع افتضاح ، اینجا هم پیداشون بشه که البته ما هم برای این دوستان بازدیدکننده عزیز ، مراسم بسیار جالبی رو در حال تدارک دیدن هستیم که به امید خدا و با یاری آقا امام زمان ، یه بزن بزنی بشه اون سرش ناپیدا !!! … حتما خبرها هفته ی آینده خبرگذاریها رو مطالعه بفرمائید … شاید تصویر زخمی شده و یا فیلم کتک خودن من رو در یوتیوب ببینین !!! … بگذریم … چند روز پیش مجبور شدم که از یه مطلبی اطمینان پیدا کنم در مورد بعضی از تنظیمات فایل sysctl.conf در لینوکس که به عبارتی ، تنظیمات اصلی ماژول های قابل بارگذاری در هنگام فراخوانی هسته لینوکس هستش … حالا گفتم که چیزهای خوبی برای یادگیری شما دوستان هست ، گفتیم اینجا هم بزاریم که اگه شما دوستان ، مایل بودین از این تنظیمات بسیار مفید استفاده کنین … البته درست هست که این چیزها رو صدها هزار !!! فروم امنیتی ایرانی قرار دادن و همه ی هکرهای ایرانی این ها رو بلدن و از حفظ هستن ، ولی گفتیم ما هم توضیحاتی ، هرچند بچه گانه در این مورد خدمتدون عرض کنیم !!! …
بنده چند قمست مهم این تنظیمات رو خدمتدون عرض می کنم ، بعدش یه نمونه خوب از تنظیمات این فایل مورد نظر رو در آخر براتون قرار می دم . در حالت کلی ، باید موارد زیر رو در تنظیمات این فایل رعایت کنیم تا تنظیمات خوبی داشته باشیم ، مواردی همچون :
۱٫Limit networktransmitted configuration for IPv4
2.Limit networktransmitted configuration for IPv6
3.Turn on execshield protection
4.Prevent against the common ’syn flood attack’
5.Turn on source IP address verification
6.Prevents a cracker from using a spoofing attack against the IP address of the server
7.Logs several types of suspicious packets, such as spoofed packets, source routed packets, and redirects
خوب ، همونطور که می دونیم ، در بین اینها ، موارد مهمی هست که به چند مورد زیر اشاره می کنم . در زیر توضیحات هر کدام از تغییرات در بالای اون نوشته شد ه است . تنظیماتی همچون جلوگیری از حملات IP spoofing و یا غیر فعال کردن IP source routing و یا روشن کردن ماژول execshield برای جلوگیری از حملات buffer overflows و یا تنظیم ثبت رخداد ها برای spoofed packets ها … این تنظیمات رو در زیر می بینین :
# Turn on execshield
kernel.exec-shield=1
kernel.randomize_va_space=1
# Enable IP spoofing protection
net.ipv4.conf.all.rp_filter=1
# Disable IP source routing
net.ipv4.conf.all.accept_source_route=0
# Ignoring broadcasts request
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.icmp_ignore_bogus_error_messages=1
# Make sure spoofed packets get logged
net.ipv4.conf.all.log_martians = 1
هر جا در مقابل مقداری عدد صفر بود ، یعنی اون قسمت رو غیر فعال کرده و اگه عدد یک بود ، یعنی اون رو فعال کرده … در زیر ، یک نمونه خیلی خوب از بقیه تنظیمات نسبتا مهم رو برای هسته لینوکس می بینیم :
# The following is suitable for dedicated web server, mail, ftp server etc.
#
# BOOLEAN Values:
# a) ۰ (zero) disabled / no / false
# b) Non zero enabled / yes / true
#
# Controls IP packet forwarding
net.ipv4.ip_forward = ۰
# Controls source route verification
net.ipv4.conf.default.rp_filter = ۱
net.ipv4.conf.default.accept_source_route = ۰
# Controls the System Request debugging functionality of the kernel
kernel.sysrq = ۰
# Controls whether core dumps will append the PID to the core filename
# Useful for debugging multithreaded applications
kernel.core_uses_pid = ۱
# Controls the use of TCP syncookies
#net.ipv4.tcp_syncookies = ۱
net.ipv4.tcp_synack_retries = ۲
########## IPv4 networking start ##############
# Send redirects, if router, but this is just server
net.ipv4.conf.all.send_redirects = ۰
net.ipv4.conf.default.send_redirects = ۰
# Accept packets with SRR option? No
net.ipv4.conf.all.accept_source_route = ۰
# Accept Redirects? No, this is not router
net.ipv4.conf.all.accept_redirects = ۰
net.ipv4.conf.all.secure_redirects = ۰
# Log packets with impossible addresses to kernel log? yes
net.ipv4.conf.all.log_martians = ۱
net.ipv4.conf.default.accept_source_route = ۰
net.ipv4.conf.default.accept_redirects = ۰
net.ipv4.conf.default.secure_redirects = ۰
# Ignore all ICMP ECHO and TIMESTAMP requests sent to it via broadcast/multicast
net.ipv4.icmp_echo_ignore_broadcasts = ۱
# Prevent against the common ’syn flood attack’
net.ipv4.tcp_syncookies = ۱
# Enable source validation by reversed path, as specified in RFC1812
net.ipv4.conf.all.rp_filter = ۱
net.ipv4.conf.default.rp_filter = ۱
########## IPv6 networking start ##############
# Number of Router Solicitations to send until assuming no routers are present.
# This is host and not router
net.ipv6.conf.default.router_solicitations = ۰
# Accept Router Preference in RA?
net.ipv6.conf.default.accept_ra_rtr_pref = ۰
# Learn Prefix Information in Router Advertisement
net.ipv6.conf.default.accept_ra_pinfo = ۰
# Setting controls whether the system will accept Hop Limit settings from a router advertisement
net.ipv6.conf.default.accept_ra_defrtr = ۰
#router advertisements can cause the system to assign a global unicast address to an interface
net.ipv6.conf.default.autoconf = ۰
#how many neighbor solicitations to send out per address?
net.ipv6.conf.default.dad_transmits = ۰
# How many global unicast IPv6 addresses can be assigned to each interface?
net.ipv6.conf.default.max_addresses = ۱
########## IPv6 networking ends ##############
#Enable ExecShield protection
kernel.execshield = ۱
kernel.randomize_va_space = ۱
# TCP and memory optimization
# increase TCP max buffer size setable using setsockopt()
#net.ipv4.tcp_rmem = ۴۰۹۶ ۸۷۳۸۰ ۸۳۸۸۶۰۸
#net.ipv4.tcp_wmem = ۴۰۹۶ ۸۷۳۸۰ ۸۳۸۸۶۰۸
#net.core.rmem_max = ۸۳۸۸۶۰۸
#net.core.wmem_max = ۸۳۸۸۶۰۸
#net.core.netdev_max_backlog = ۵۰۰۰
#net.ipv4.tcp_window_scaling = ۱
# increase system file descriptor limit
fs.filemax = ۶۵۵۳۵
#Allow for more PIDs
kernel.pid_max = ۶۵۵۳۶
#Increase system IP port limits
net.ipv4.ip_local_port_range = ۲۰۰۰ ۶۵۰۰۰
راستی ، یه چیزی داشت یادم می رفت ، این فایل مورد نظر ما برای تنظیمات هسته لینوکس در آدرس etc/sysctl.conf/ هستش ها !!! …. یه چیزه دیگه ، اگه کلا خواستین از دستورات خط فرمان sysctl استفاده کنین ، از option های زیر می تونین استفاده کنین :
# sysctl -a
# sysctl -A
# sysctl mib
# sysctl net.ipv4.conf.all.rp_filter
برای فراخوانی setting های مورد نظر هم می تونین از دستور زیر استفاده کنین :
#sysctl -p
خوب دوستان ، این هم یه مطلب جالب … البته شما باید قبلا با چند نوع از حملات هکری آشنایی داشته باشین تا بتونین از مفاهیم فوق به خوبی استفاده کنین … امیدوارم که بدردتون بخوره … فعلا صفای همتون … کوچیک همه ی دوستان … وحید



