منبع اصلی نوشتار زیر در این لینک قرار دارد

مواردی برای ورود به حوزه امنیت FreeBsd

با سلام ;

امروزه خیلی از سازمان ها و جاهایی که بحث هایی مثل data losing یا Mirorring یا مباحث دیگری که در پست های قبلی در مورد برتری فری بی اس دی نسبت به توزیع های شبه یونیکسی توضیح دادم ، براشون مهم هست میل به سمت این سیستم عامل دارند تا با خیال راحت به فارغ از ترس و وحشت از دست دادن اطلاعات به کارشون ادامه بدهند . ولی خوب همینطور که میدونید سیستم های یونیکسی همون قدر که قوی هستند توی بخش بازده و کارایی اگر به قول معروف چفت و بست های امنیتی داخلش رعایت نشه به مراتب خطر پذیر تر خواهد بود . قصد دارم به یاری ایزد منان توی همین پورتال به صورت زنجیری مباحث امنیتی این سیستم عامل قدرتمند رو پایه ریزی کنم تا یک ویکی یا رفرنسی برای خودم و دوستان عزیز تر از جانم باشه .

خوب حالا که تا اینجا اومدین بیاین چند پله از پله های اولیه ی این نردبون بلند رو با هم بالا بریم ، به امید نقطه ی اوج …

خوب فرض کنید یه سرور بهتون دادند که فری بی اس دی 10 روش نصبه . اولین چیزی که خود بنده به ذهنم میرسه که لازم به تغییر در اون هست ، نوع الگوریتم پسورد های سیستم هست که به صورت پیشفرش MD5 و باید به BlowFish تغییر کنه . چطوری ؟

# /etc/login.conf
Edit This Arg >>>> :passwd_format=blf:

بعد از اینکه این فایل ویرایش شد لازمه که یه بار دیتابیس لاگین اصطلاحا Rebuild شه .

# cap_mkdb /etc/login.conf

خوب مرحله بعدی تغییر Security Level ها توی فایل sysctl.conf هست :

# vi /etc/sysctl.conf

kern.securelevel=2
security.bsd.see_other_uids=0
security.bsd.stack_guard_page=1
net.inet.ip.random_id=1

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

# vi /etc/periodic.conf
daily_clean_tmps_enable="YES"

توی مرحله بعد پیشنهاد میکنم از فایروال محبوب pf مخفف packet filter که فری بی اس دی به صورت وراثتی از اوپن بی اس دی دریافتش کرده :دی استفاده کنید ، لازم به ذکره که بگم این فایروال یه محیط کاملا Practical در اختیارتون قرار میده تا بتونین تحت هر شرایطی نقش هاتون رو تعریف کنید مثل Iptables با رابط کاربری بهتر . برای فعالسازی این فایروال و پیاده سازی رول ها به شکل زیر باید عمل کنید :

 

root@oslearn-bsd:/root # vi /etc/pf.conf		# edit ruleset
root@oslearn-bsd:/root # pfctl -nf /etc/pf.conf	# test ruleset
root@oslearn-bsd:/root # pfctl -f /etc/pf.conf	# apply ruleset
root@oslearn-bsd:/root # pfctl -e			# enable firewall

به عنوان مثال هم یه رول در اختیارتون میذارم که راحت تر بتونید تفسیر کنید :

ext_if = "em0"
broken="224.0.0.22 127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, 
        10.0.0.0/8, 169.254.0.0/16, 192.0.2.0/24, 
        192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24, 
        169.254.0.0/16, 0.0.0.0/8, 240.0.0.0/4, 255.255.255.255/32"
set block-policy drop
set skip on lo0
match in all scrub (no-df max-mss 1440)
block in all
pass out quick on $ext_if inet keep state
antispoof quick for ($ext_if) inet
block out quick inet6 all
block in quick inet6 all
block in quick from { $broken urpf-failed no-route } to any
block out quick on $ext_if from any to { $broken no-route }
table <childrens> persist
block in quick proto tcp from <childrens> to any
table <chuugoku> persist file "/etc/cn.zone"
block in quick proto tcp from <chuugoku> to any port { 80 22 }
pass in on $ext_if proto tcp from any to any port 80 flags S/SA synproxy state
pass in on $ext_if proto tcp from 1.2.3.4 to any port { 137, 139, 445, 138 }
pass in on $ext_if proto tcp to any port ssh flags S/SA keep state 
(max-src-conn 5, max-src-conn-rate 5/5, overload <childrens> flush)
pass inet proto icmp icmp-type echoreq

برای محکم کاری رول ها هم که همچین Stable بشه باید سطح امنیت کرنل رو روی 3 بزاریم ( تو پست های بعد در مورد این سطوح بیشتر توضیح خواهم داد.)

root@oslearn-bsd:/root # sysctl kern.securelevel=3

یه مساله ای هم که همیشه به عنوان ادمین باید در نظر داشته باشید اینه که همیشه باید همه آپدیت ها و نصب ها و نصب شده ها تحت مانیتورتون باشند . یه نرم افزار مناسب توی پورت های بی اس دی هست به اسم portaudit

root@oslearn-bsd:/root # cd /usr/ports/ports-mgmt/portaudit
root@oslearn-bsd:/usr/ports/ports-mgmt/portaudit # make install clean
root@oslearn-bsd # portaudit -a

این دستورم واسه آپدیت کردن دیتابیسش هست :

root@oslearn-bsd: # portaudit -Fd

خوب مورد بعدی که قطعا باهاش آشنا هستید چک کردن مداوم پورت های باز روی سیستم هست ، لازم به ذکره که خود بی اس دی به صورت پیشفرض پورتی رو روی سیستم باز نمیذاره مگر اینکه مثلا میل سرویس یا وب سرور یا سرویس های به این شکل راه اندازی کنید ، برای دیدن پورت هایی که به صورت Real Time مورد استفاده قرار گرفته شدند میشه از sockstat استفاده کرد .

root@oslearn-bsd:/root # sockstat -4l
USER     COMMAND    PID   FD PROTO  LOCAL ADDRESS         FOREIGN ADDRESS      
unbound  unbound    7620  5  udp4   127.0.0.1:53          *:*
unbound  unbound    7620  6  tcp4   127.0.0.1:53          *:*
root     sendmail   831   3  tcp4   127.0.0.1:25          *:*
root     sshd       803   4  tcp4   *:22                  *:*
root     syslogd    677   7  udp4   *:514                 *:*

سوئیچی که استفاده کردم برای sockstat کانکشن های از نوع Listening تحت Ipv4 رو نشون میده واسه دیدن ipv6 هم می تونین از -6l استفاده کنید . برای دیدن جفتش کنار هم میتونین از -l استفاده کنید .

خوب تا اینجای کار امیدوارم توضیحات به کارتون اومده باشه . منتظر بخش های بعدی باشید.

از همراهیتون ممنونم

نویسنده : محمد ورمزیار (N3td3v!l)

منبع : او اس لرن دات آی آر



برچسب ها : , , ,