امنیت شبکه

فصل اول
مقدمه

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

از طرف ديگر گسترش ارباطات شبكه‌اي و نفوذ آن به دور دست‌ترين نقاط جهان باعث شده است زمينه‌ي سوء استفاده افراد سودجو و شرور هم فراهم شود. در حالي كه هم اكنون انجام معاملات شبكه‌هاي كامپيوتري و اينترنت قابل انجام است. اما انجام اين امور بدون درنظر گرفتن تمام جوانب امنيتي ممكن است باعث ضررهاي جبران‌ناپذيري گردد بنابراين آشنايي با راهكارهاي امنيتي در استفاده از شبكه‌ها كامپيوتري نيازي بس حياتي است.

در اين پايان نامه سعي شده به موضوع و امنيت اطلاعات در شبكه از جنبه هاي مختلف پرداخته شود . ساختار مطالب گردآوري شده به شكل زير است:
در فصل دوم به تعريف مفاهيم شبكه ، تقسيم بندي شبكه ، شباهتها و تفاوتها و مزاياي آن خواهيم پرداخت .

فصل سوم بررسي سرويس هاي امنيتي در شبكه و در فصل چهارم اصول رمزنگاري مطرح مي شود و در انتها در فصل پنجم امضاهاي ديجيتالي ارائه شده است .

چكيده:
امروزه در عصر اينترنت و شبكه‌هاي كامپيوتري استفاده از سيستم عامل مناسب و نحوه‌ي بكارگيري سيستم عامل در شبكه و ترفندهاي سيستم عاملي براي جلوگيري از ضررهاي ناشي از استفاده از شبكه مانند هكرها و ويروس‌هاي مخرب و… بسيار شايان توجه است. به همين خاطر اين پروژه به بررسي امنيت سيستم عامل‌هايي كه مورد استفاده‌ي بسياري از كاربران در سراسر جهان قرار مي‌گيرد مي‌پردازيم.
اين سيستم عامل‌ها عبارتند از:

۱ـ سيستم عامل يونيكس unix
2ـ سيستم عامل ويندوز NT
3ـ سيستم عامل ويندوز ۲۰۰۰

خلاصه:
ـ بررسي امنيت يونيكس و تنظيم سيستم به همراه راه‌كارهاي مكمل
ـ امنيت ويندوز NT به علاوه‌ي تنظيمات رجيستري و پيكربندي سيستم
ـ امنيت ويندوز ۲۰۰۰ و تنظيم و پيكره‌بندي سيستم
ـ مقايسه‌ي امنيت يونيكس و ويندوز
ـ بررسي لوگ فايل‌ها و جستجوي علائم مشكوك در سيستم عامل‌هاي فوق
ـ مديريت كاربر و مديريت سيستم

در تاريخ اينترنت ، سيستمهاي يونيكس سابقه بيشتري دارند بطوريكه بيشتر سرويسهاي موجود روي شبكه توسط آن ارائه مي‌شد. وقتي هكر و هك كردن بصورت مشكلي روي اينترنت ظاهر شد، سيستم يونيكس بيتشرين توجه را به سوي خود جلب كرد. تا امروز استفاده از سيستم يونيكس روي اينترنت متداول ور ايج است و لازم است براي جلوگيري از هك شدن بدرستي پيكره‌بندي شود.
تنظيم سيستم

بطور معمول وقتي سيستم يونيكس ساخته ميشود، داراي آسيب‌پذيريهايي است. اما با استفاده از برنامه‌هاي مكمل و تغيير در فايلهاي پيركه‌بندي مي‌توان آسيب‌پذيريهاي اوليه را تصحيح كرد. در بخشهاي بعدي به بعضي از محتمل‌ترين معضلات موجود و چگونگي تصحيح آنها تشريح شده است.
فايلهاي Startup

سيستم يونيكسس با استفاده از فايلهاي startup، خود را به هنگام راه‌اندازي پيكره‌بندي مي‌كند. بسته به اينكه نسخة يونيكس چه باشد فايلهاي startup در مكانهاي مختلف قرار مي‌گيرد. در سيتم عامل solaris فايلهاي startup در /etc/rc2.d پيدا مي‌شود و در سيتم‌عامل Linux آنها را در /etc/rc.d/rc2.d خواهيد يافت.

در فايلهاي startup تعدادي سرويس راه‌اندازي مي‌شود. تعدادي از اين سرويسها (همانند شبكه، نصب فايلهاي سيستمي و شروع واقعه‌نگاري) براي عملكرد سيستم لازم است به همين دليل بايد به آنها اجازه داده شود فعال بمانند. در مقابل سرويسهاي ديگر ضروري نيست و بسته به روش استفاده از آنها اجازه داده شود فعال بمانند. در مقابل سرويسهاي ديگر ضروري نيست و بسته به روش استفاده از سيستم، نبايد راه‌اندازي شوند. براي جلويگري از راه‌اندازي سرويس مي‌توان براحتي نام فايل را عوض كرد. مطمئن شويد نام جديد فايل با “S” يا “k” شروع نشود. قرار دادن علامت راهنماي “.” در اسم فايل خوب كمار مي‌كند (و علاوه بر اين فايل را از ديد مخفي مي‌كند بنابراين با فايلي كه عملياتي سرويسهايي كه عموماً توسط فايلهاي startup راه‌اندازي مي‌شود عبارتند از:

• Sendmail
• Roued
• NFS
• RPC

• Web service
• Inetd
• NTP

با مراجعه به فايلهاي start up سرويسهاي غير ضروري را تعيين كنيد. براي شناسايي سرويسهاي غير ضروري بخش بعد را ببينيد.
• Chargen
• Rusersd
• Rquotad

• Sprayd
• Walld
• Rexd
• Routed
علاوه بر اين اگر از سرويسهاي SNMPD و Daytime استفاده نميشود خاموش شوند. Daytime توسط بعضي سيستمهاي همزمان‌كننده زمان استفاده ميشود و SNMPD براي مديريت سيستم كاربرد دارد. احتمالاً توجه داريد كه در فايل inetd.conf، سرويسهاي Telnet و FTP در حالت عادي روشن هستند. اين دو پروتكل امكان عبور password, user ID را بصورت واضح از طريق شبكه فراهم مي‌كنند. اين امكان وجود دارد كه براي محافظت password، از نسخه‌هاي رمز شده اين پروتكل‌ها استفاده شود. توصيه مي‌شود روي Telnet از (Secure Shell)SSH استفاده شود. برخي نسخه‌هاي SSH وجود دارد كه براي انتقال فايل از برنامه (Secure Copy) SCP استفاده مي‌كند.

Network File System:NFS
ممكن است سازمان شما از NFS استفاده كند. اما اگر به آن نيازي نيست سرويس NFS را روي سيستم خاموش كنيد. از NFS براي نصب فايل سيستمي از روي يك كامپيوتر به روي كامپيوتر ديگر استفاده مي‌شود. اگر NFS بدرستي پيكره‌بندي نشود اين امكان هست كه برخي افراد به فايلهاي حساس دس پيدا كنند. براي پيكره‌بندي درست NFS بايد فايل /etc/dfs/dfstab را ويرايش كنيد.

توجه: فرستادن فايلهاي سيستمي به خراج از سازمان كار عاقلانه‌اي نيست.
سيستم DMZ
از سيستم يونيكس مي‌توان در DMZ و به عنووان سرور وب، سرور پست الكترونيك و سرور DMZ استفاده كرد. در اينصورتلازم است اين سيستم نسبت به حالتي كه فقط بصورت داخلي استفاده مي‌شود با امنيت بيشتري پيكره‌بندي شود. احتمال اينكه روي اين قبيل سيستمها به فايلهاي startup حذف كرد.
سرور و كامپيوتر روميزي

برخي سازمانها از يونيكس هم بصورت سرور هم بصورت سيستم روميزي استفاده مي‌كنند. وقتي يونيكس بصورت سيستم روميزي استفاده مي‌شود بگونه‌اي پيكره‌بندي مي‌شود كه X Windows را اجرا كند. در سيستم Solaris استفاده از Tooltalk هم لازم است. (Tooltalk يك برنامه RPC است است كه براي كنترل desktop بصورت گرافيكي استفاده مي‌شود). اين سرويسها روي سرور لازم نيست. به طريقه مشابه روي كامپيوتر روميزي هم سرويس DNS لازم نمي‌شود. اگر از سيستم يونيكس استفاده ميشود لازم است براي سرور و كامپيوتر روميزي از دو پيكره‌بندي متفاوت استفاده كنيد.
توجه: روي سيستم ٍخمشقهس، برنامه ‏خخمفشمن از طريق فايل هدثفي.زخدب كنترل مي‌شود. براي از كار انداختن آن سطر زير را از حالت توضيحي خارج كنيد.

“۱۰۰۸۳/۱ tli rpcltcp wait root / usr / dt / bin / rpc. Ttdbserverd / user / dt/bin/rpc.ttdbserverd.”
استفاده از TCP Wrappers

اگر از Telner و FTP استفاده مي‌كنيد مي‌توانيد براي امنيت بيشتر از Wrappers TCP (كه مي‌توانيد آنرا از ftp://ftp.porcupine.org/pub/security بدست آوريد) ساتفاده كنيد. كلمه wrapps به معناي پوشاندن و مخفي كردن است، به همين دليل wrappers TCP با پوشاندن سرويسهاي FTP و Telnet، كنترل دسترسي و واقعه‌نگاري بيشتري را فراهم مي‌كند. به منظور استفاده از TCP Wrappers لازم است فايل inetd.conf بگونه‌اي اصلاح شود كه سطرهاي ftp و telnet بصورت زيزر باشد:

ftp system tep ftp nowait root/ usr/local/bin/ecpd/user/sbin/in.ftpd
telnet stream tcp nowait root/user/local/bin/tcpd/user/sbin/in.telnetd

سطرهاي پيكره‌بندي فوق باعث مي‌شود هر وقت كسي سعي كند به سيستم telnet يا FTP كند، inetd سرويس TCP Wrappers(tcpd) را فراخواني كند.
توجه: از TCP Wrappers مي‌توانند همانند سرويسهاي telnet و FTP رويس سرويسهاي ديگر مانند POP و IMAP هم استفاده كرد. البته همانند سطرهاي فوق تغيرات مناسب لازم است.

TCP Wrappers قادر است دسترسي شبكه‌ها و كامپيوترهاي خانگي خاص را به سرويس telnet يا FTP مسدود كند يا اجازه آن را صادر كند. فايلهايي كه براي اين پيكره‌بندي استفاده مي‌شوند عبارتند از ./etc/hosts.allow , /etc/hosts.deny در ادامه مثالي از اين فايلها آمده است:
<wrapped program name>:<ip address>/<network mask>
فايلهاي زير مثالي از فايلهاي پيكره‌بندي TCP Wrappers مي‌باشد:
Hosts.allow:

#Allow telnets from my internal network910.1.1.x)
in.telnet:10.1.1.0/255.255.255.0
#Allow ftp from the world

in.ftpd:0.0.0.0/0.0.0.0
hosts.deny:
#Deny telnets from anywhere else
in.telnetd:0.0.0.0/0.0.0.0
ابتدا فايل hosts.allow ارزيابي مي‌شود و پس از آن hosts.deny. بنابراين ابتدا تمام سيستمهايي را كه مجاز به استفاده از سرويسهاي مختل هستند پيكره‌بندي نماييد و پس از آن هر چيز ديگري را در hosts.deny ممنوع كنيد.
توجه: لازم است در پيكره‌بندي واقعه‌نگاري هم تغييراتي دهيد تا TCP Wrappers بتواند اطلاعات را روي سيستم ثبت كند. نحوه اين تغييرات را در بخش «لوگ فايلها» در ادامه همين فصل خواهيد ديد.

فايلهاي پيكره‌بندي سيستم
با اعمال تغييراتي در فغايلهاي پيكره‌بندي سيستم مي‌توان امنيت كلي سيستم را افزايش داد. دامنه اين تغييرات از پيامهاي اخطاردهنده تا حفاظت در برابر سرريز شدن بافر قابل انجام است. انجام هر تغييري در پيكره‌بندي بايد با سياست امنيتي سازمان مطابقت داشته باشد. علاوه بر اين بخاطر داشته باشيد مكان قرارگيري فايلهاي پيكره‌بندي در نسخه‌هاي مختلف يونيكس با هم فرق دارد. با استفاده از كتابچه‌هاي راهنمايي كه از نسخه خاص يونيكس در اختيار داريد مطمئن شويد تغييرات اعمالي با نسخه يونيكس مطابقت و تناسب دارد.

پيامهاي اخطاري يا Banners
با استفاده از پيامهاي اخطاري، قبل از آنكه به كاربري اجازه ورود (يا llogin) داده شود يك جمله حقوقي براي او نمايش داده مي‌شود. زبان پيامهاي اخطاري بايد همان زباني باشد كه بخش حقوقي سازمان تصويب كرده است.

پيام login در /etc/motd ذخيره شده است.(نام فايل motd مخفف massage of the day است). اما اين پيام زماني نمايش داده ميشود كه كاري براي ورود به سيستم اقدام كرده باشد لذا قبل از آن نمايش داده نمي‌شود. لازم است قبل از آن كه كاربر وارد شود اكثر تذكرات حقوقي برايش نماش داده شود.
به منظور نمايش پيام قبل از ورود كاربر روشي وجود دارد كه در اينجا به آن اشاره مي‌شود. تذكرات لازم قبل از ورود در سيستم Soaris در /etc/default/telnet ذخيره شده است. مي‌توان براي FTP هم پيام اخطاري ايجاد كرد. اين كار با ويرايش فايل /etc/default/ftpd قابل انجام است. با اضافه كرده سطري شبيه آنچه در ادامه آمده است مي‌توان يك پيام اخطاري ايجاد كرد.

BANNER=”/n/n<Enter Your Lagal Massage Here/n/n”
در سطر فوق “n” دلالت بر سطر جديد دارد. اما شما مي‌توانيد از كاراكترهاي كنترلي موردنظر خودتان استفاده كنيد تا پيام نمايش داده شود.
در سيستم linux از دو فايل /etc/issue.net و /etc/issue براي پيامهاي اخطاري Telnet استفاده مي‌شود. فايل issue براي ترمينال‌هايي كه بطور مستقيم وصل شده‌اند استفاده مي‌شود. Issue.net زمانيكه شخص از طريق شبكه اقدام به telnet مي‌كند استفاده مي‌شود. متأسفانه وياريش فايلهاي مذكور باعث ايجاد پيامهاي اخطاري نمي‌شود. چون هر بار كه كامپيوتر بوت شود اين فايلها نيز مجدداً ايجاد مي‌شود. اما مي‌توانيد اسكريپت راه‌اندازي كه باعث ايجاد اين فايل مي‌شود را اصلاح كنيد. مجدداً ايجاد مي‌شود. اما مي‌توانيد اسكريپت راه‌اندازي كه باعث ايجاد اين فايل مي‌شود را اصلاح كنيد.

فايلهاي issue و issue.net در اسكريپت راه‌اندازي /etc/rc.d/rc.local قرار دارند. براي آنكه از ايجاد مجدد اين فايل جلوگيري شود، سطحهاي زير را از دو حالت توضيحي خارج كنيد.
#Tis will overwrite/etc/issue at every boot. So, make any changes you
#want to make to/etc/issue here or you will lose them when hou reboot.

Echo “l”>/etc/issue
Echo”$R”>>/etc/issue

Echo “Kernel $(uname-r) on $a $SMP$ (uname-m)”>>/etc/issue
بعد از انجام اين كار مي‌توانيد فايلهاي /etc/issue و /etc/issue.net را با متن حقوقي مناسب ويرايش نماييد.
تنظيم كلمه عبور (passwoed)
در سيستم يونيكس به منظور مديريت صحيح كلمه عبور سه مرحله وجود دارد:
• تنظيم درست نيازهاي كلمه عبور
• ممانعت از ورود بدون كلمه عبور

• ايجاد كلمه عبور مناسب بطوريكه نيازها را در بر بگيرد.
تنظيم درست نيازهاي كلمه عبور طول كلمه عبور و عمر آن از جمله نيازهايي است كه با وياريش يك فايل پيكره‌بندي در سيستم يونيكس تعيين مي‌شوند. در Solaris اين فايل، /etc/default/passwd است. اين فايل داراي سطرهاي زير مي باشد و بر طبق سياست امنيتي سازمانتان ويرايش مي‌گردد.
#ident “@(#)passwd.dfl 1.3 92107114 SMI”
MAXWEEKS=7
MINWEEKS=1
PASSLENGTH=8
توجه كنيد اعدادي كه جلوي MAXWEEK و MINWEEK وارد مي‌كنيد، حداقل و حداكثر طول عمر كلمه عبور برحسب هفته مي‌باشد. جلوي PASSLENGTH طول كلمه عبور را برحسب تعداد كاراكتر وارد نماييد.
در سيستم Linux نيازهاي كلمه عبور در فايل /etc/login.defs قرار داده شده است. سطرهاي زير كه مربوط به اين فايل است تنظيمات قابل انجام را نشان مي‌دهد.
#Password aging controls:
#

#PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS _ MIN _ DAYS Minimum number of days allowed between password changes

.
# PASS_MIN_LEN Minimum accentable p;assw9rd length.
# PASS_WARN_AGE Number of days warning given before a password expires.
PASS_MAX_DAYS 45
PASS_MIN_DAYS 1

PASS_MIN_LEN 8
PASS_WARN_AGE 7
به خاطر داشته باشيد در سيستم Linux حداقل و حداكثر طول عمر برحسب روز است (در حاليكه در Solaris برحسب هفته است). Linux به شما اين اختيار را نيز مي‌دهد كه تعداد روزهاي باقيمانده تا باطل شدن كلمه عبور، به اطلاع كاربر رسانده شود.

ممانعت از ورود بدون كلمه عبور برنامه‌هايي از قبيل rexec,rsh و rlogin به كاربر امكان مي‌دهد بدون آنكه مجدداً كلمه عبور را وارد كند از سيستمهاي خاص وارد سيستم ديگر شود. اما اين كار خوبي نيست چون مهاجمي كه توانسته به يك سيستم نفوذ كند ميتواند از طريق برنامه‌هاي فوق به سيستمهاي ديگر دست پيدا كند. بنابران براي رفع اين مشكل اولاً بايد سرويسهاي rec, rsh, login را از فايل /etc/inetd.conf پاك كنيد. و ثانياً فايل /etc/host.equiv و هر فايلي يا پسوند »قاخسف را پيدا كرده و آنرا حذف نماييد. باي حصول اطمينان تمام دايركتوري‌هاي خانگي كاربران را بدقت نگاه كنيد.

ايجاد كلمه عبور نامناسب بطوريكه نيازها را در بر بگيرد بهترين راه بهبود امنيت سيستم آن است كه از انتخاب كلمه عبور نامناسب توسط كاربران جلوگيري شود. متأسفانه تا اين اواخر فقط چند راه براي انجام اينكاردر سيستم يونيكس وجود داشته است. براي سيستم Linux برنامه‌هايي از قبيل npasswd و passwd+ وجود دارد اما براي Swlaris برنامه‌اي وجود نداشت. با استفاده از اين برنامه‌ها مي‌توانيد نيازهاي كلمه عبور قوي را تعيين كنيد. اين برنامه‌ها كاربر را مجبور مي‌كند كلمه عبور را در جهت برآورده شده قواعد موردنظرتا انتخاب كند.

هم‌اكنون در Solaris 2.6 و آخرين نسخة Linux ابزار بهتري براي نظارت بر قدرت كلمه عبور كاربر وجود دارد. نام اين ابزار PAM و مي توانيد اطلاعات بيشتر درباره نحوه ساخت فيلترهاي كلمه عبور را در آدرس http://www.sun.com/Solarispam پيدا كنيد.
توجه: برخي از نسخه‌هاي يونيكس همانند HPUX از ابتدا و بطور پيش‌فرض از كلمه عبور قدرتمندي برخوردار است. در اين نسخه‌ها اگر به هنگام ورودي اشتباهات متعدد رخ دهد اكانت قف مي‌شود.

كنترل دسترسي به فايل
در سيستم يونيكس دسترسي به فايلها توسط مجموعه‌اي از مجوزها كنترل مي‌شود. كاربر مي‌تواند امتياز خواندن، نوشتن و اجراي فايل را داشته باشد.
مالك يك فايل ممكن است يك نفر، يك گروه يا همه باشند، شما مي‌تونيد به آنها اجازه خواندن، نوشتن و اجراي آن فايل را بدهيد. عوض كردن مجوز فايل با دستور chmod انجام مي‌شود. اگر چه كاربر ميتواند فايلهايي ايجاد كند كه قابل خواندن و نوشتن توسط همه باشد اما بهتر است اين اجازه به كاربر داد نشود.

هر كاربري مي‌توان روي يك سيستم اين فايلها را بخواند و يا بنويسد. بنابراين اگر مزاحمي به يك user ID دست پيدا كند قادر به خواندن و نوشتن خواهد بود.
از آنجا كه متقاعد كردن همه كاربران به اينكه وقتي فايل را ايجاد كردند دسترسي به آنرا عوض كنند كار مشكلي است لذا قصد داريم مكانيزم پيش‌فرضي ايجاد كنيم كه به هنگام ايجاد فايل، دسترسي به آن بطور خودكار تنظيم شود. اين كار با پارامتر umask قابل انجام است. در Solaris پارامتر مذكور در فايل

/etc/default/login و در Linux در فايل /etc/rofile قرار دارد. دستور بكار رفته بصورت زير است:
umask 077
ارقامي كه بعد از دستور آمده است معرف اجازه‌اي است كه بطور پيش‌فرض از فايلهاي جديد ايجاد شده گرفته مي‌شود (مضايقه مي‌شود) از سمت چپ اولين رقم معرف اجازه‌اي است كه از مالك فايل گرفته مي‌شود. رقم دوم معرف اجازه‌اي است كه از مالك گروهي گرفته مي‌شود و رقم سوم معرف اجازه‌اي است كه از همه گرفته مي شود. در مثال فوق چون اولين رقم صفر است بنابراين روي مالك فايل محدوديتي اعمال نمي‌شود بنابراين وي مي‌تواند فايلهايي كه از اين به بعد ايجاد مي شود را بخواند يا اجرا كند. اما به مالكين گروهي و ديگران هيچ اجازه‌اي داده نشده است.

در ادامه اجازه‌هايي كه توسط ارقام تعريف مي‌شود آورده شده است:
اجازه خواندن ۴
اجازه نوشتن ۲
اجازه اجرا ۱

بنابراين اگر بخواهيد گروه بصورت پيش‌فرض اجازه خواندن داشتهباشد اما اجازه نوشتن و اجرا نداشته باشد بايد از دستور umask 037 استفاده شود و اگر بخواهيد اجازه نوشتن را از گروه بگيريد بايد از دستور umask 027 استفاده ناييد. توجه كنيد ك در مثال umask037 ، عدد ۳ مجموعه اعداد ۱ و ۲ است و از آنجا كه اعداد ۱و ۲ و بهترتيب اجازه اجرا و نوشتن فايل را سلب مي‌كنند، پس گروه فقط اجازه خواندن فايل را دارد.

دسترسي Root
در سيستم يونيكس بالاترين سطح دسترسي در اختيار root مي‌باشد بطوريكه وقتي كاربري با root وارد شود مي‌تواند هر كاري انجام دهد. از اينرو يكي از كارهاي خوب اين است كه ورودي مستقيم با اكانت root را محدود كنيد. بدين ترتيب حتي مديريت سيستم براي ورود به root بايد ابتدا با اكانت خودش وارد شود و پس از آن مي‌تواند با دستور su root وارد root شود. با انجام اين كار خواهيد توانست با مشاهده لوگ فايلها تشخيص دهيد كدام user ID سعي داشته به سطح دسترسي root برسد.

مي‌توان در Solaris و Linux ورود به root را فقط به كنسول محدود نمود. براي اينكار در solaris فايل /etc/default/login را بصورت زير ويرايش نماييد:
#If CONSOLE is set, root can only login on that device.
#Comment this line out to allowremote login by root
#

CONSOLE=/dev/ console
اينكار سيستم را مجبور مي‌كند ورود به root فقط در كنسول مجاز باشد. همين پيكره‌بندي را مي‌توان با ويرايش فايل /etc/securetty در سيستم Linux انجام داد. اين فايل ليستي از ttyهايي است كه مي‌توان از آنها جهت ورود به root استفاده كرد. اين فايل بايد محتوي /dev/tty1 باشد. اگر براي مديريت سيستم از ارتباط سريال استفاده مي كنيد بايد فايل مذكور حاوي /dev/ttySo باشد. ttyهاي شبكه معمولاً /dev/ttyp1 و بالاتر از آن مي‌باشد.
اگر قصد كنترل دسترسي root را داريد مي‌توانيد دسترسي به root به FTP را كنترل نماييد. در سيستم Solaris و Linux، اكانتهايي كه اجازه FTP به سيستم را ندارند در فايل /etc/ftpusers فهرست مي‌شود . از وجود root در اين ليست مطمئن شويد.
حفاظت در برابر سرريز شدن بافر

يكي از اسيب‌پذيريهاي خطرناك در كامپيوتر، سرريز شدن بافر است. Solaris روشي ارائه مي‌كند كه امكان اجراي دستورات off the stack را در حمله سريز كردن بافر از بين مي‌برد. براي انجام اين كار سطرهاي زير را به فايل /etc/system اضافه كنيد:
set noexec_user_stack=1
set noexec_user_stck_log=1

سطر اول از اجراي دستور off stack جلوگيري مي‌كند و سطر دوم تلاش‌هاي انجام گرفته را ثبت مي‌كند.
توجه: در برخي برنامه‌ها نياز است دستور off the stack اجرا شود. بنابراين اگر تغيير فوق را انجام دهيد اين برنامه از كار خواهد افتاد (crash مي‌كند). لذا قبل از انجام اينكار از آزمايش اين دستور مطمئن شويد.
غير فعال كردن اكانتهاي غير مفيد

يونيكس تعدادي اكانت ايجاد مي‌كند كه براي وارد مختلف (از قبيل مالك فايلهاي خاص) نياز ميشود اما براي ورود به سيستم هيچ‌وقت استفاده مي‌شود. اين اكانتها عبارتند ازnuucp, uucp, sys و listen . به منظور جلوگيري از ورود به اين اكانتها، فايل /etc/shodow را به صورت زير تصحيح نماييد:
bin:*LK*10960:0:99999:7: : :
daemon:*LK*10960:0:99999:7: : :
adm:*LK*10960:0:99999:7: : :
lp:*LK*10960:0:99999:7: : :

sync:*LK*10960:0:99999:7: : :
shutdown:*LK*10960:0:99999:7: : :
halt:*LK*10960:0:99999:7: : :
mail:*LK*10960:0:99999:7: : :

news:*LK*10960:0:99999:7: : :
uucp:*LK*10960:0:99999:7: : :
operator:*LK*10960:0:99999:7: : :
games:*LK*10960:0:99999:7: : :

gopher:*LK*10960:0:99999:7: : :
ftp:*LK*10960:0:99999:7: : :
nobody:*LK*10960:0:99999:7: : :
هر سطر از دو بخش تشكيل شده است كه بخش اول اكانت و بخش دوم كلمه عبور آن است. اكانت كاربر معمولي داراي كلمه عبور رمز شده مي‌باشد. در مورد اكانت‌هايي كه هيچ‌وقت اجازه ورود ندارند، بخش دوم شامل كاراكتر “*” با هيچ كلمه عبوري اجازه ورود ندارد به همين دليل كسي نمي‌تواند آن را بشكند. با قرار دادن عبارتي همانند “*LK*” بطور مفيد و مختصر قفل بودن اين اكانت بيان مي‌شود (LK نماينده كلمه Lock است).
برنامه‌هاي مكمل

سيستم يونيكس از نظر برنامه‌هاي مكملي كه بصورت نرم‌افزاري براي تصحيح باگ‌ها و رفع مشكلات امنيتي استفاده ميشود تفاوتي با ويندوز NT ندارد. برنامه‌هاي مكمل بطور منظم روي سيستم نصب مي‌شود تا آسيب‌پذيريهاي موجود برطرف شود. هنگام دان‌لود كردن برنامه‌هاي مكمل Solaris توجه داشته باشيد شركت Sun برنامه‌هاي مكمل بسياري را بصورت گروهي روي سايت خود قرار مي‌دهد،‌اما ممكن است برخي برنامه‌هاي مكمل امنيتي در آن گروه نباشد. لذا بايد آنها را بصورت تك‌تك دان‌لود كرده و بصورت دستي نصب كنيد. نصب برنامه‌هاي مكمل را وصله‌كاري گويند.
مديريت كاربر

همانند تمام سيستمهاي كامپيوتري، مديريت كاربران و روابط بين آنها نقش حياتي در امنيت كلي سيستم دارد. هر سازماني بايد پروسه مديريت كاربر داشته باشد. در اين پروسه مراحل لازم براي زمانيكه كاربري تقاضاي دسترسي به سيستم نداشته باشد شرح داده شده است. علاوه بر اين در اين پروسه مراحل لازم براي موقعي كه يكي از پرسنل سازمان را ترك مي‌كند شرح داده مي شود.

بخاطر داشته باشيد سيستم يونيكس انواع زيادي دارد. ابزارهايي كه هم براي مديريت كاربر استفاده مي‌شود در نسخه‌هاي مختلف تفاوت دارد و از فروشنده‌اي به فروشنده‌ديگر فرق مي‌كند.
افزودن كاربر به سيستم

در اكثر نسخه‌هاي يونيكس، ابزارهايي براي افزودن كاربر به سيستم ارائه شده است. وظايف اصلي اين ابزار عبارتند از:
• افزودن نام كاربر به فايل Password
• تعيين و اختصاص شماره user ID
• تعيين و اختصاص شماره group ID
• تعيين Shell مناسب براي ورود

• افزودن نام كاربر به فايل Shadow
• اختصاص كلمه عبور مناسب اوليه
• تعيين Allias مناسب براي پست الكترونيك (Allias يعني نام مستعار)
• ايجاد دايركتوري خانگي براي هر كاربر

حال به تشريح هر يك از وظايف مي‌پردازيم.
افزودن نام كاربر به فايل Password
فايل /etc/passwd شامل ليست كاربراني است كه به سيستم تعلق دارد. هر كاربر داراي نام كاربر يكتايي است كه حداكثر از هشت كاراكتر تشكيل شده است. به ازاء هر ركوردي كه در فايل passwd ثبت مي‌شود اطلاعات بيشتري نيز درباره هويت واقعي كاربر ثبت مي‌شود كه باي شناسايي فردي كه در قبال آن اكانت مسئول است بكار مي‌رود. اين اطلاعات در بخش GECOS اضافه مي‌شود.
تعيين و اختصاص شماره User ID

به هر نام كاربر، يك شماره User ID مناسب اختصاص داده مي شود كه به اختصار UID گفته ميشود. UID بايد در سيستم يكتا باشد. عموماً بايد UID كاربر عددي بزرگتر از ۱۰۰ انتخاب شود. از آنجا كه عدد صفر براي اكانت root است، از اينرو هيچ گاه به عنوان UID انتخاب نمي شود. سيستم براي شناسايي فايلهاي روي سيستم از UID استفاده مي‌كند. از اينرو استفاده مجدد از UID (يعني استفاده از يك UID براي چند نفر) توصيه نمي‌شود.
اختصاص شماره Group ID

لازم است هر كاربر داراي يك گروه اصلي باشد. اين شماره به نام كاربر در فال /etc/passwd اختصاص دهيد. كاربران عادي نبايد عضو گروه wheel باشند چون اين گروه براي مقاصد مديريتي استفاده مي‌شود.
تعيين Shell مناسب براي ورود

وقتي كاربر تعاملي قصد ورود به سيستم دارد، بايد به او يك Shell داده شود كه در حالت عادي csh, ksh و bash مي‌باشد. به كاربراني كه نبايد وارد سيستم شوند برنامه‌اي داده مي‌شود كه Shellنيست. به عنوان مثالي از كاربران تعاملي مي‌توان به كاربراني اشاره كرد كه از طريق pop يا IMAP پيامهاي پست الكترونيك خود را كنترل مي‌كنند، لذا مي‌توانيد امكان تعويض كلمه عبورشان را بصورت تعمالي فراهم نماييد. در اين حالت براي كاربر يك Shellتعريف مي‌كنيد كه bin/passwd مي‌باشد. هر وقت يكي از كاربران به سيستم telnet كند مي‌تواند كلمه عبورش را عوض كند و پس از تكميل عمليات از آن shell خارج شود.
افزودن نام كاربر به فايل Shadow

از آنجا كه فايل /etc/passwd قابل خواندن توسط همه است لذا نبايد كلمات عبور در آن ذخيره شود تا كسي نتواند با شكستن كلمه عبور وارد سيستم شود. كلمات عبور در فايل /etc/shadow ذخيره مي‌‌شود بنابراين همان نام كاربر به فايل /etc/shadow افزوده مي‌شود.
اختصاص كلمه عبور مناسب اوليه

بعد از ايجاد اكانت براي كاربر، بايد كلمه عبور اوليه‌اي براي آن تعيين شود. اكثر ابزارهايي كه براي افزودن كاربر مورد استفاده قرار مي‌گيرد پرومپتي براي اين منظور در اختيار مي‌گذارند. در غير اينصورت با نام كاربر وارد شويد و از دستور passwd براي تغيير كلمه عبور استفاده كنيد. كلمه عبور اوليه بايد گبونه‌اي باشد كه حدس زدن آن آسان نباشد و بهتر است كلمه عبور اوليه براي تمام اكانتها يكسان نباشد. اگر از كلمه عبور يكسان براي همه كاربران استفاده شود، امكان دارد مهاجمي با استفاده از اكانت جديد و قبل از اينكه كاربر قانوني از اكانت خود استفاده كند وارد سيستم شود و كلمه عبور را عوض كند.
تعيين Alias مناسب براي پست الكترونيك

وقتي كاربري ايجاد مي‌شود بطور خودكار يك آدرس پست الكترويكي به شكل username@home خواهد داشت. حال اگر كاربر بخواهد از يك نام مستعار براي آدرس پست الكترونيك خود استفاده كند. اين كار با استفاده از e-mail alias قابل انجام است. براي اين منظور بايد فايل /etc/aliases ويرايش شود. فرمت اين فايل بصورت زير است:
alias: username

بعد از آنكه alias ايجاد شد برنام newaliases را اجرا كنيد تا فايل alias.db ايجاد شود.
ايجاد دايركتوري خانگي براي كاربر

براي هر كاربر بايد يك دايركتوري خانگي ايجاد شود. اين دايركتوري در فايل /etc/passwd تعريف مي‌شود. پس از آنكه در محل مناسبي روي سيستم، دايركتوري خانگي كاربر ايجاد شد(معمولاً در شاخه /home يا /export) مالك دايركتوري را عوض كنيد. با استفاده از دستور زير كاربر موردنظر تنها مالك فايل خواهد شد:
chown<username> <directory name>

حذف كاربر از روي سيستم
وقتي كاربري سازمان را ترك مي‌كدن و يا به جاي ديگر منتقل مي‌شود بطوريكه به اكانت كاربري خود بيش از داين نياز نداشته باشد لازم است پروسه مديريت كاربري مناسبي دنبال شود. در سيستم يونيكس مالك تمام فايلهاي كاربر، UID است. بنابراين اگر UID كاربري براي كاربر جديد استفاده شود، كاربر يا اكانت جديد مالك تمام فايلهاي كاربر قديمي خواهد شد.

اصولاً وقتي كاربر بيش از اين به اكانت نياز نداشته باشد بايد اكانت را قفل كرد. براي اينكا در فايل /etc/shadow كلمه عبور كاربر با عبارت “*LK*” جايگزين مي‌شود. بعد از مدت زمان مناسبي (معمولاً ۳۰ روز) مي‌توان فايلهاي آن كاربر را حذف كرد. مهلت ۳۰ روزه بدين منظور است كه مديريت كاربران در اين مدت فايلهاي موردنياز سازمان را در محل مناسب كپي كند.

مديريت سيستم
مديريت سيستم در يونيكس (از لحاظ امنيتي) شامل برقرار كردن سطوح مناسبي از ورود و نظارت بر سيستم براي يافتن فعاليتهاي مشكوك مي‌باد. سيستم يونيكس اطلاعات خوبي درباره آنچه به دنبالش هستيد ارائه مي‌كند. البته ابزارهايي هم وجود دارد كه مي‌توان براي شناسايي فعاليتهاي مشكوك از آنها استفاده كرد.
بازرسي سيستم

در اكثر نسخه‌هاي يونيكس، سيستم واقعه‌نگاري استانداري ارائه شده است كه مي‌تواند اطالعات امنيتي را به مقدار كافي در اختيار بگذارد. با اينحال در برخي موارد به اطلاعات بيشتري از بازرسي نياز مي شود. Solaris براي اين منظور Basic security module را ارائه كرده است كه به اختصار BSM گفته مي‌شود. BSM در حالت عادي فعال نيست و در صورتيكه كاربر به اطلاعات بيشتري نياز داشته باشد آن را به راه مي‌اندازد.

به منظور فعال كردن BSM، اسكريپت /etc/security/bsmconv را اجرا كنيد. اگر چه اينكار پروسه بازرسي را راه‌اندازي مي‌كند اما نياز به ري‌بوت سيستم دارد. پيكره‌بندي بازرسي در فايل /etc/secuity/dudit_control تعيين مي‌شود. اطلاعات كامل در مورد اين فايل را مي‌توانيد در صفحات راهنماي آن پيدا كنيد (بدين منظور دستور man audit _ control را اجرا كنيد) اما براي شروع پيكره‌بندي زير درنظر بگيريد:
#dentify the location of the audit file directory

dir: <directory>
#identify the file system free space percentage when a warning should occur
minfree:20
#flags for what to audit. This example audits login, administrative

#functions and failed file reads, writes, and attribute changes
flags: lo,ad,_fm
#This set of flags tellls the system to also audit login and administrative
#events that cannot be attributed to a user
naflags:lo,ad
پس از پيكره‌ فايل، گردآوري گزارشات بازرسي شروع مي‌شود. با استفاده از دستور audit-n مي‌توان فايل مربوط به گزارشات فعلي را بست و فايل جديدي را شروع كرد. براي مرور محتواي فايل بازرسي از دستور prudit<audit file name> استفاده كنيد.
توجه: BSM بار كاري سيستم را افزايش مي‌دهد لذا فقط زماني استفاده شود كه امنيت سيستم به آن نياز دارد.
لوگ فايلها
در اكثر سيستمهاي يونيكس ابزار نسبتاً جامعي در Syslog فراهم شده كه براي واقعه‌نگاري بكار مي‌رود. Syslog قابليتي است كه مطابق پيكره‌بندي انجام گرفته، اطلاعات را ثبت مي‌كند. Syslog از طريق فايل /etc/syslog.conf پيكره‌بندي مي‌شود. عموماً گفته مي‌شود فقط root مجاز به ديدن لوگ فالها است و كس ديگري نبايد آنها را دستكاري كند.
در بيشتر فايلهاي syslog.conf پيامهاي واقعه‌نگاري به فايلهاي /var/log/message يا /var/adm/log/messages هدايت مي‌شوند. اگر syslog.conf بدرستي پيكره‌بندي شده باشد بايد دستور پيكره‌بندي زير در آن لحاظ شده باشد:
auth.info /var/log/auth.log
دستور فوق به يونيكس مي‌گويد اطلاعات مربوط به تلاش‌هاي صورت گرفته براي reboot, su, login و ديگر وقايع مرتبط با امنيت را جمع‌آوري كند. مطمئن شويد فايل /var/log/auth.log به منظور جمع‌آوري اطلاعات زير ايجاد شده است:
#touch / var/ log/ auth. log

#chown root/ var/ loglauth.log
#chmod 600 /var/loglauth.log
در Solaris مي‌توانيد با ايجاد فايل /var/adm/loginlog تلاش‌هاي اشتباهي كه براي ورد صورت گرفته است را نيز ثبت نماييد. فايل مذكور را بصورت زير ايجاد نماييد:
#touch/var/adm/loginlog
#chmod 600/var/adm/loginlog
#chown root/var/adm/loginlog
#chgrp yss/var /adm/loginlog
دايركتوري /var بايد فضاي كافي داشته باشد تا لوگ فايلها را جمع‌آري كند. اگر /var روي پارتيشن قرار داشته باشد و لوگ فايلهاي جمع‌آوري شده خيلي بزرگ باشند. امكان اشغال شدن فايل سيستمهاي root وجود دارد،‌لذا بهتر است دايركتوري /var در مكان ديگري قرارداشته باشد.
فايلهاي مخفي
فايلهاي مخفي توان ايجاد مشكل براي سيستم يونيكس را دارند. دستور استاندارد Ls نمي‌تواند فايلي را كه با “.” شروع شده است، نمايش دهد. اما دستور Ls -a تمام فايلهاي مخفي را نمايش مي‌دهد. هكرها آموخته‌اند با استفاده از فايلهاي مخفي فعاليت خود را پنهان سازند. بطور مثال هكر مي‌تواند فايل خود را در يك دايركتوري مخفي قرار دهد و بدينوسيله آنها فايل را مخفي كند. هم‌چنين ممكن است هكر فايل خود را در دايركتوري‌هايي مخفي كند كه ديدن آن براي مديريت مشكل است. براي مثال اگر يك دايركتوري “…” ناميده شود جلب توجه نمي كند. اگر بعد از سومين نقطه در نام اين دايركتوري. كاراكتر space قرار داده شود. (به عبارت ديگر”…” )بررسي آن دايركتوري سخت مي‌شود مگر اينكه از وجود space در نام دايركتوري اطلاع داشته باشيد. با استفاده از دستور زير مي‌توانيد تمام فايلها و دايركتوري مخفي را روي سيستم خود پيدا كنيد:
#find / -name “*” -ls
اگر چه مي‌توان بجاي “-ls” از “-print” استفاده كرد اما استفاده از “-ls” اطلاعات جزئي‌تري درباره مكان فايل ارائه مي‌كند. لازم است اين دستور بصورت دوره‌اي اجرا شود و وجود فايلهاي مخفي مورد بررسي قرار گيرد.