1. saeed_m_farid
  2. عمومی - ایزابل، الستیکس، فری پی بی اکس ...
  3. یکشنبه, 23 اسفند 1388
با سلام
دوستان یه مدت نبودم واسه اینکه شما عذر بنده رو بپذیرید، با یه آموزش اومدم!

بعنوان مقدمه (و طبعاً سلب تکلیف!) باید بگم این آموزش تنها نقطه شروع برای داشتن یک سیستم امن هست، واسه اینکه بتونید شب بخوابید (البته نه کاملاً بی دغدغه) و به هیچ وجه نمیشه اون رو بعنوان یه راه حل کامل در نظر گرفت که هرکسی مرحله به مرحله بره، به یک سیستم کاملاً امن میرسه! بعبارت دیگه اینا ترفندهایی هستند واسه شروع داشتن یک سیستم الستیکس امن! که حداقل خودم امتحان کردم. خواهشاً اگه نکته ای به نظر دوستان میاد که در کامل تر کردن آموزش کمک می کنه، دریغ نکنند …

************************************
معمولاً ما (توسعه دهندگان سیستم مثل خودم رو میگم نه اساتید قدیمی!) تا وقتی که سیستم راه نیافتاده (در مراحل pilot یا توسعه) و درخواست های کارفرما یکی پشت سر دیگری میرسه، اصلاً به فکر امنیت سیستم نیستیم، یعنی میگیم فعلاً بذار راه بیافته ببینیم چی میشه؛ بعدش هم اینقدر مشکلات تسویه و بدقولی ها و ... داریم که آخرش از روی بی حوصلگی فوقش دو سه تا پسورد عوض کنیم و سرور رو بذاریم پشت NAT یا فایروال، این میشه یه سیستم امن! ولی از من میشنوید کسی که بیشترین ضرر رو میکنه خودمون هستیم، چرا؟ چون اولاً اعتبار و ارزش کار زیر سوال میره و مهمتر از اون موجب شکست بازار داخلی و تضعیف سیستم های سورس باز در مقابل پکیج های گرانقیمت مثل آلکاتل، اریکسون، پاناسونیک و ... میشه؛ و سوء استفاده از مَثَل معروف [color=navy]"هرچقدر پول بدی آش میخوری"[/color]! رواج پیدا می کنه، و ما هم باید قید توسعه سیستم، برنامه نویسی سیستمی، سیستم های تلفنی متن باز و ... رو بزنیم و بریم زیر سایه اربابان سرمایه. بگذریم، چونه درازی بسه؛ از هرچه بگذریم سخن فنی خوش تر است!!!
مراجعی که تا حال حاضر استفاده کردم عبارتند از :
[left]
**** Resources *****
[color=blue][size=10pt][font=Verdana]* Elastix without Tears: By Ben Sharif
* [url]http://www.sureteq.com/asterisk/rsa_auth.htm[/url]
* [url]http://www.linux-books.us/centos_0004.php[/url]
(Red Hat Enterprise Linux 4 Security Guide)
* Securing Trixbox CE: By Tim Yardley
* [url]http://www.linuxtopia.org/online_books/centos_linux_guides/centos_linux_security_guide[/url]
[/font][/size][/color][/left]

************************************

مراحل اساسی تامین امنیت اولیه سرور (های) یکپارچه ارتباطی الستیکس رو میشه در موارد زیر خلاصه کرد، که به تفکیک در مورد هر کدوم در مراحل آتی صحبت می کنیم :
[color=blue]
1. از کار انداختن کردن سرویس های غیرضروری
2. محدودسازی کاربران و تغییر پسورد ها
3. قرار دادن سرور پشت دیواره آتش
4. امن کردن HTTP
5. هفت مرحله امنیتی SIP در Asterisk
[/color]
************************************
برای اینکه حوصله تون سر نره، من تو پست های مجزا مراحل رو میارم، البته امروز دو تاشون رو می نویسم و یقیه اش اگه عمری بود ادامه میدیم ...
نظر
هنوز هیچ نظری ارسال نشده است!
پاسخ پذیرفته شده Pending Moderation
0
رای
بازگشت
قبل از شروع (با اینکه مراحل رو امتحان کردم)، مطمئن بشید که روی یک سیستم آزمایشی این مراحل رو آزموده و به مشکلی برنخوردید :
[color=blue]1. ازکار انداختن کردن سرویس های غیرضروری :[/color]
اولین قدم در ایمن سازی یک سرور پس از اتمام مرحله گذر پروژه و رسیدن به ثبات، غیرفعال کردن سرویس های غیرضروری سیستم هست. برای اینکار شما می تونید از دستور chkconfig استفاده کنید، جهت دیدن سرویس هایی که در زمان بوت شدن سیستم راه اندازی میشن، میتونید دستور زیر رو اجرا کرده و لیستی شبیه این خواهد داشت :
[left]
[root@voip ~]# chkconfig –list
LCDd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
acpid 0:off 1:off 2:on 3:on 4:on 5:on 6:off
asterisk 0:off 1:off 2:on 3:on 4:on 5:on 6:off
atd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
auditd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
capi 0:off 1:off 2:off 3:off 4:off 5:off 6:off
crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
cyrus-imapd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
dahdi 0:off 1:off 2:on 3:on 4:on 5:on 6:off
dc_client 0:off 1:off 2:off 3:off 4:off 5:off 6:off
dc_server 0:off 1:off 2:off 3:off 4:off 5:off 6:off
dhcdbd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
dhcpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
dhcrelay 0:off 1:off 2:off 3:off 4:off 5:off 6:off
haldaemon 0:off 1:off 2:off 3:on 4:on 5:on 6:off
httpd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
hylafax 0:off 1:off 2:on 3:on 4:on 5:on 6:off
iaxmodem 0:off 1:off 2:on 3:on 4:on 5:on 6:off
ip6tables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
isdn 0:off 1:off 2:on 3:on 4:on 5:on 6:off
kudzu 0:off 1:off 2:off 3:on 4:on 5:on 6:off
lcdelastix 0:off 1:off 2:off 3:off 4:off 5:off 6:off
lm_sensors 0:off 1:off 2:on 3:on 4:on 5:on 6:off
lvm2-monitor 0:off 1:on 2:on 3:on 4:on 5:on 6:off
mailman 0:off 1:off 2:off 3:off 4:off 5:off 6:off
mcstrans 0:off 1:off 2:on 3:on 4:on 5:on 6:off
mdmonitor 0:off 1:off 2:on 3:on 4:on 5:on 6:off
mdmpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
messagebus 0:off 1:off 2:off 3:on 4:on 5:on 6:off
mISDN 0:off 1:off 2:off 3:off 4:off 5:off 6:off
multipathd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
mysqld 0:off 1:off 2:off 3:on 4:on 5:on 6:off
netconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:off
netfs 0:off 1:off 2:off 3:on 4:on 5:on 6:off
netplugd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
nfs 0:off 1:off 2:off 3:off 4:off 5:off 6:off
nfslock 0:off 1:off 2:off 3:on 4:on 5:on 6:off
ntpd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
openfire 0:off 1:off 2:on 3:on 4:on 5:on 6:off
portmap 0:off 1:off 2:off 3:on 4:on 5:on 6:off
postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off
psacct 0:off 1:off 2:off 3:off 4:off 5:off 6:off
rdisc 0:off 1:off 2:off 3:off 4:off 5:off 6:off
restorecond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
rpcgssd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
rpcidmapd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
rpcsvcgssd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
saslauthd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
snmpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
snmptrapd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
spamassassin 0:off 1:off 2:off 3:off 4:off 5:off 6:off
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
syslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off
vsftpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
wanrouter 0:off 1:off 2:on 3:on 4:on 5:on 6:off
webmin 0:off 1:off 2:on 3:on 4:off 5:on 6:off
wpa_supplicant 0:off 1:off 2:off 3:off 4:off 5:off 6:off
xfs 0:off 1:off 2:on 3:on 4:on 5:on 6:off
xinetd 0:off 1:off 2:off 3:on 4:on 5:on 6:off

xinetd based services:
chargen-dgram: off
chargen-stream: off
daytime-dgram: off
daytime-stream: off
discard-dgram: off
discard-stream: off
echo-dgram: off
echo-stream: off
eklogin: off
ekrb5-telnet: off
gssftp: off
klogin: off
krb5-telnet: off
kshell: off
tcpmux-server: off
tftp: on
time-dgram: off
time-stream: off[/left]

این لیست سرویسهایی است که در الستیکس اجرا میشن و ممکنه لیست سرویسهای شما، کمی با چیزی که اینجا می بینید متفاوت باشه، اکثر سرویس ها بصورت پیش فرض در الستیکس موقع بوت راه اندازی میشن، و این بسته به نیاز شماست که چه سرویس هایی رو باید حتماً داشته باشید و کدوم ها رو باید غیرفعال کنید.
با توجه به نیاز من موارد زیر رو اول متوقف می کنم :
[left]service ip6tables stop
service iptables stop
service isdn stop
service mcstrans stop
service nfslock stop
service portmap stop
service restorecond stop
service rpcgssd stop
service rpcidmapd stop
service vsftpd stop[/left]
می تونید همه سرویس ها را متوقف کنید! من برای اینکه شما رو از شر مطالعه و بررسی تک به تک سرویس ها راحت کنم این سرویس ها رو متوقف کردم و شما می تونید علاوه بر اینها مواردی رو که نیاز ندارید رو هم به موارد بالا اضافه کنید. برای توضیح اضافه کنم که مثلاً من تو این سیستم با خطوط E1 یا سایر خطوط دیجیتال کاری ندارم پس isdn رو stop می کنم یا چون FTP استفاده نمی کنم vsftpd رو هم stop می کنم و ... ممکنه نیازهای سیستم شما با اینا فرق کنه، ضمناً نگران نباشید، اگه سرویسی رو غیرفعال کردید و سیستم دچار اشکال شد، می تونید فقط یه بار سیستم رو رست کنید و همه چی بر میگرده به حالت اول.
در نهایت وقتی مطمئن شدید که نیازی به سرویسهای stop شده ندارید، اونها رو off کرده و دیگه سرویس موردنظر رو نخواهید داشت :
[left]chkconfig ip6tables off
chkconfig iptables off
chkconfig isdn off
chkconfig mcstrans off
chkconfig nfslock off
chkconfig portmap off
chkconfig restorecond off
chkconfig rpcgssd off
chkconfig rpcidmapd off
chkconfig vsftpd off
[/left]

اگه سرور رو راه اندازی مجدد کردید و بخوبی و سلامتی سرویس دهی آغاز شد؛ مرحله اول رو رد کردید، تبریک میگم. اگه هم نه که من اولش گفته بودم، قبلش یه تستی بکنید، شما حرف گوش نکردید، مشکل من نیست! ;D
نظر
هنوز هیچ نظری ارسال نشده است!
پاسخ پذیرفته شده Pending Moderation
0
رای
بازگشت
[color=blue]2. محدودسازی کاربران و تغییر پسوردها[/color]

قبل از همه پسوردهای پیش فرض (Default passwords) رو تغییر بدین، چون الان دیگه بقال محله هم این پسوردها رو حفظه :
برای راحت تر شدن کار هکر/کراکر/روکم-کن های (با انواع کلاهها) عزیز هم که دوستان، طراح همه اونها رو بصورت کاملاً مستند و بدون رمزگذاری در مسیر etc/amportal.conf/ قرار دارن!

[left]Elastix admin Palosanto
FreePBX admin Admin
FOP admin eLaStIx.2oo7
Calling Cards (A2Billing) admin Mypassword
MySQL mysql –p (from root) eLaStIx.2oo7
SugarCRM admin Password
vTiger admin Admin
[/left]
روش تغییر پسورد بصورت پست های مجزا در این فروم چندین بار اومده که با یه جستجوی ساده می تونید پیداشون کنید.
فقط چند تا نکته موقع گذاشتن پسورد رو رعایت کنید :

2-1. برای جلوگیری از راحت تر شدن حمله Brute Force حتماً از ترکیب حروف، اعداد و علائم استفاده کنید؛ ضمناً قرار دادن چند تا فاصله بین حروف هم خیلی کار هکر محترم رو سخت تر میکنه.

2-2. اگه نمیتونید کلمات بیمعنی (که تو دیکشینری معنی نداره) در خاطر نگهدارید، با اینکه شاید گفتنش درست نباشه ولی سعی کنید از کلمات رکیک و دشنام و ... استفاده کنید! اگه هم خیلی بددهن هستید سعی کنید از کلمات توهین دارتر استفاده کنید، که اگه سرخ نشدید، از به زبون آوردنشون حداقل یکمی شرمنده بشین! چرا؟ برای اینکه نتونید راحت به کسی پسورد رو بگید، یا اگه گفتید یا آبروی خودتون بره یا طرف بهش بربخوره!

2-3. اگه فقط نرم افزارها و ابزارهای حرفه ای قابل دسترس عموم برای حدس زدن پسوردها رو دیده باشید (با الگوریتمهای روانشناسی فوق حرفه ای برای بدست آورن پسورد کاری ندارم) دیده باشید، اونوقت دیگه هیچوقت از چسبوندن دو تا کلمه و مثلاً گذاشتن یه عدد مثل 123 اول و آخرش! به خودتون افتخار نمی کنید! چون حدس زدنش دو ثانیه هم وقت CPU های جدید رو نمیگیره؛ سعی کنید از حروف کوچک و بزرگ، اعداد متقاطع در بین اونها، سمبل ها، و ... به تعداد زیادتر از حداقل 12 کاراکتر استفاده کنید، چون شما که پسورد ایمیل یا لاگ این ساده یه فروم نمیذارید که از سر بازش کنید! خودتون رو ناظر یه سیستم امنیتی درنظر بگیرید چون همه که مثل من و شما ناشی نیستند، یکی میتونه بیاد از سیستم شما بعنوان ترمینیت بین الملل استفاده کنه و فردا سر از جاهای ناشناس در بیارید، خدای نکرده! دیر رسیدن (دوسه کاراکتر اضافی تایپ کردن) بهتر ار هرگز نرسیدن (خداحافظی از آرامش یا حداقلش رفتن آبرو و کساد بازار ما بدبخت ها!) هست...

2-4. یکمی بیشتر به سیستم تون اهمیت بدین و رو این مورد تاکیداً وقت بذارین و دوره ای عوضش کنید، حالا هرچقدر که به کار شما ارزش ندادن و ... حداقل شما به سواد و معلومات و اعتبار خودتون ارزش قائل بشید و همه عالم رو تو سیستم تون شریک نکنید؛ در ضمن نگید بیخیال حالا بذار بعداً دیگه، چون 10 دقیقه بیشتر وقتتون رو نمی گیره؛ اگه اینکار ها رو تا الان نکردید، همین الان مراحل رو دنبال کنید و مطمئن باشید که خیلی بیشتر از اونی که فکر می کنید به نفع زمان و هزینه من و شماست.

حالا مراحل انجام این کار :
[left]
[root@voip init.d]# useradd yekUser2roshesabi
[root@voip init.d]# passwd yekUser2roshesabi
Changing password for user yekUser2roshesabi.
New UNIX password: یه پسورد با شرایط بالا
Retype new UNIX password: تکرار همون پسورد
passwd: all authentication tokens updated successfully.
[/left]

حالا یکبار از putty (یا هر رابط SSH که استفاده می کنید) خارج بشید و با نام کاربری جدید که ساختید وارد لینوکس بشید؛ اگر بدون مشکل تونستید با کاربر موردنظر وارد شده و همه موارد دستیابی رو امتحان کردید، وقتشه که خطر عمده حمله brute force رو برطرف کنید. برای اینکار فایل ssh_config در مسیر /etc/ssh رو باز کرده و # رو از اول خط PermitRootLogin yes برداشته و مقدارش رو به no تغییر بدین، در اینحالت دیگه کسی با کاربر root نمیتونه وارد سیستم بشه، حالا با اضافه کردن خط زیر باید به کاربری که ایجاد کردین اجازه بدین وارد سیستم بشه :
[left] AllowUsers yekUser2roshesabi [/left]
در مرحله بعد میخواهیم با توجه به اینکه همه پورت پیش فرض SSH رو میدونن، کاری کنیم که فکر کنن SSH سیستم شما بسته است و بیخیال بشن! (ولی همیشه بدونین، دزدها 1 قدم از پلیس ها جلوترن!) برای اینکار پورت استاندارد 22 رو به یه پورتی باید تغییر بدین که با پورت های پیش فرض تضاد (conflict) نداشته باشه و ضمناً خودتون هم یادتون نره؛ مثلاً 4000 یا 2222 یا هرچیز دیگه ای مثلاً شماره شناسنامه عمه برادرزاده تون (به شرطی که 8888 یا 8000 و ... نباشه) و # اول خط Port 22 رو برداشته و به مقدار موردنظرتون تغییر بدین. در نهایت در صورتی که مطمئن شدید که تنظیمات رو درست انجام دادین و همه چی رو در حافظه تون مرور کردین (مخصوصاً اگه سرور یه جایی هست که نمیشه راحت بهش دسترسی داشت و تنها راه ارتباطی SSH هست)، سرویس sshd رو باید restart کنید تا تنظیمات اعمال بشه : service sshd restart
حالا می تونید امتحان کنید که با نام کاربری root نمیشه دستیابی داشت و کاربری که جدیداً درست کردید باید بتونه داخل بشه، فقط اگه نتونستید داخل بشید، احتمال داره که دارین با پورت پیش فرض وصل میشین، پورت رو تو putty تغییر بدین یا از p port- مورد نظر استفاده کنید.(من سعی کردم تمام مراحل رو قدم به قدم بگم و اگه نتونید بعد restart ssh به سرورتون وصل بشید، مشکل از کاربر هست، لطفاً الکی پسوردتون رو به بنده نسبت ندین!)

[color=blue][size=14pt][font=Impact]ادامه دارد...[/font][/size][/color]
نظر
هنوز هیچ نظری ارسال نشده است!
پاسخ پذیرفته شده Pending Moderation
0
رای
بازگشت
[font=impact][color=red][size=36pt]توجه : همیشه آخرین فایل PDF جمع بندی و تصحیح شده پست ها اینجاست[/size][/color][/font]
من جمع بندی مطالب رو از این به بعد همیشه تو این پست میذارم تو یه فایل pdf، تا کم کم که کاملتر شد و دوستان نظرشون رو گفتن اون رو آپدیت کنیم و یه آموزش درست حسابی ازش دربیاد ...
ضمناً میدونم که ممکنه خیلی از کدهایی که تو پست های این تاپیک هستند، به علت ماهیت R2L درست نشون داده نشوند، پس بهتره همیشه این نسخه رو داشته باشید.

موفق باشید.

نسخه جاری :
[left] Elastix Security, [color=red]Version 0.3[/color] 02:00 PM 2010/04/06[/left]

[font=Georgia][size=12pt][color=blue]فایل ضمیمه با هر پست جدید در مورد امنیت آپدیت میشود، مطمئن شوید که آخرین نسخه را برداشته اید، برای اطمینان، نسخه ذکرشده در این پست را با آخرین نسخه و تاریخ ذکر شده در صفحه اول PDF خودتان مقابسه کنید[/color][/size][/font]
نظر
هنوز هیچ نظری ارسال نشده است!
پاسخ پذیرفته شده Pending Moderation
0
رای
بازگشت
بسيار عالي بود.. ممنون از شما...
به زودي اين مقاله رو در سايت هم قرار خواهيم داد..
نظر
هنوز هیچ نظری ارسال نشده است!
پاسخ پذیرفته شده Pending Moderation
0
رای
بازگشت
ممنون.
مقاله خيلي خوبي بود.
بي صبرانه منتظر قسمت‌هاي بعدي هستيم :)
نظر
هنوز هیچ نظری ارسال نشده است!
پاسخ پذیرفته شده Pending Moderation
0
رای
بازگشت
2- 1. نحوه تعویض کلمات کاربری :

2-1- 1. تعویض پسورد دسترسی وب الستیکس : برای اینکار با نام کاربری admin و پسورد پیش فرض palosanto وارد صفحه وب تنظیمات شده و به مسیر System>User Management>Users>Admin رفته و این کاربر رو حذف کنید! یک یا چند کاربر جدید با نام کاربری و پسورد مناسب (بند 2-2) با اختصاص سطح دسترسی و Extension موردنیاز ایجاد کنید.

2-1- 2. حالا وارد صفحه وب FreePBX شده و روی Admin>Setup>Basic>Administrators کلیک کرده و General Settings مقادیر Username , Password رو عوض کرده و یه Admin Access رو به ALL SECTIONS برداشته و مواردی رو که واقعاً نیاز هست، قرار بدید (با Ctrl)؛ که اگه یه موقع هم لو رفت حداقل به تمام موارد دستیابی نداشته باشه.
مثلاً معمولاً Feature Codes، General Settings فقط یکبار اولش تنظیم میشوند (یا اصلاً دست نمیخوردند) و موارد موجود در Internal Options & Configuration و Third Party Addon به ندرت استفاده میشوند و همچنین اکثر زیر منوهای System Administration هم یا اکثراً ازطریق رابط های SSH و SFTP قابل دسترس هستند یا به برنامه نویسی مربوط میشوند، و فقط باعث ایخاد رخنه تو سیستم شما میشوند، پس فقط هرچی رو که حتماً استفاده می کنید رو انتخاب کنید.

2-1- 3. برای تغییر پسورد FOP (Flash Operator Panel) هم کافیه به مسیر /etc/amportal.conf رفته و خطی که در اون FOPPASSWORD رو eLaStIx.2oo7 گذاشته به پسور خودتون تغییر بدین، البته تا اونجایی که من میدونم فعلاً با این تغییر ممکنه ماژولهای extensions, blacklist, day/night control, follow me غیرفعال بشن! که با بگردوندن پسورد به مقدار پیش فرض این مشکل مرتفع میشه، به هرصورت اگه شما جلوی ورود غیرمجاز به FreePBX رو بگیرید، این مورد زیاد اهمیت نداره.

2-1- 4. اگه مستقیماً از پایگاه داده های موجود در MySQL الستیکس استفاده می کنید، یا به کلاینت (های) دیگه ای برای استفاده از جداول Grant دادید، باید خیلی بیشتر از معمول مراقب باشید. در غیر اینصورت هم تکلیف از شما ساقط نمیشه! یعنی حداقل باید پسورد رو عوض کنید،

• برای انجام این کار در لینوکس، کافیه یک خط کد زیر رو تایپ کنید :

[left]$ mysqladmin -uroot -p eLaStIx.2oo7 password ‘newpass’[/left]

- اگه هم میخواهید خیلی کارتون رو محکم بگیرید، میتونید بک پسورد خیلی بزرگ رو Hash کنید (یا رمزگذاری) و بریزید تو یک فایل مثل /etc/mypass/rsa-mysql.shadow و بصورت زیر وارد mysql بشید :

[left]$ mysql -uroot -p‘cat /etc/mypass/rsa-mysql.shadow’[/left]

• اگر مشکلی در روشهای بالا پیدا کردید و یا میخواهید از خود mysql برای اینکار استفاده کنید، مراحل زیر رو دنبال کنید:
[left]
$ mysql -u root -p
mysql> use mysql;
mysql> update user set password=PASSWORD("NEWPASSWORD";) where User='root';
mysql> flush privileges;
mysql> quit
[/left]
• اگر به کلاینت دیگری برای استفاده از پایگاه داده grant میدهید، کاملاً زمام پایگاه داده رو دستش ندهید! یعنی اینکه اینکار هم در مورد IP که این اجازه رو دریافت میکنه و هم privilege که داده میشه، باید حساب شده انجام شود، مثلاً فقط SELECT یا INSERT و ... برای IP مورد نظر مثلاً 192.168.1.10 و با کاربر مثلاً user1 نه اینکه بنویسید، چون من خیلی دیدم نمونه اش رو که از راحت طلبی مینویسن: [color=red]grant * ON *.* To root@’%’ IDENTIFIED BY ‘mypass’ !!![/color]


پیشنهاد من یه کدی مثل زیر هست :
[left]
$ mysql -uroot -p‘cat /etc/mypass/rsa-mysql.shadow’
mysql>GRANT SELECT ON database.* TO root@'192.168.1.10' IDENTIFIED BY 'clientpass';
mysql>FLUSH PRIVILEGES;
mysql>quit[/left]
• بحث در مورد پایگاه داده خیلی طولانی هست، من به همین مقدار بسنده میکنم.

2-1- 5. برای ماژول های A2Billing، SugarCRM، vTiger اگر اونها رو راه انداخته باشید که میدونید همه شون یه قسمت برای Change Password دارند که مطمئناً کسی که این ماژول ها رو راه اندازی میکنه خیلی بیشتز از اینها باید برای حفظ امنیت شون تدبیر بکنه، امیدوارم وقت بشه تا در آینده در مورد اونها هم صحبت بشه ولی مطمئناً تو این فرصت و آموزش کوتاه نمیشه حتی شروعی برای تامین امنیت این ماژول ها تهیه کرد...
نظر
هنوز هیچ نظری ارسال نشده است!
پاسخ پذیرفته شده Pending Moderation
0
رای
بازگشت
[color=blue]3. قرار دادن سرور پشت دیواره آتش: [/color]
چون نمیخوام بریم تو جزئیات و بنده هم سوادم بیشتر از اینا قد نمیده، من از دو تا نمونه ساده از فایروال برای لینوکس استفاده می کنم که در نوع خودشون بد هم نیستن و از طرف دیگه کاربرد آسونی هم دارند و باعث نمیشن که آدم بره دنبال فایروال سخت افزاری یا کلاً بیخیال بشه! rfxnetworks دو تا محصول داره بنام های apf (Advanced Policy Firewall) و bfd (Brute Force Detection)؛ که می تونید جزئیات شون رو از لینک های زیر مشاهده و دانلود (بارگیری!) کنید :
[left]
apf - [url]http://www.rfxn.com/projects/advanced-policy-firewall[/url]
bfd - [url]http://www.rfxn.com/projects/brute-force-detection[/url] [/left]

apf از طریق کنترل iptables سیستم و اجازه یا عدم دسترسی پورت های اون عمل میکنه. این فایروال علاوه بر این شامل امکاناتی چون Reactive address blocking (RAB), QoS (TOS), direct integration with BFD و ... هست که با یه نگاه به Summary of features میتونه سرتون رو گیج ببره، ولی با اینحال خیلی راحت پیکربندی میشه؛
bfc هم لاگ این (login) های ناموفق به سیستم رو بررسی کرده آدرسهاس IP اونها رو مسدود میکنه، bfc بعنوان یک cron daemon (یه چیزی مثل Schedule های ویندوز) عمل میکنه و خیلی خوب با apf منطبق (match) میشه. برای نصب اونها هم می تونید از اسکریپتی که در لینک زیر در حالتی که به اینترنت وصلید، استفاده کنید (کار خاصی نمیکنه، دانلود، uncompress و اجرای install.sh مربوطه) :
[left]$ wget [url]http://engineertim.com/install_apf_bfd.sh[/url]
$ chmod 755 install_apf_bfd.sh
$./install_apf_bfd.sh[/left]

3- 1. فایروال APF :
با اینکه کلیه تنظیمات بصورت مفصل در سایت ارائه دهنده فایروال آمده است، ولی برای پیکربندی اولیه کافیه بعد از نصب، در مسیر /etc/apf و فایل conf.apf رو با چند تا تغییر که در زیر میاد، راه اندازی کنید.
البته توجه کنید که من بعنوان نمونه پورت SSH رو از مقدار پیش فرض مثلاً به 2222 تغییر دادم، این تغییر پورت میتونه شامل تمام پورت ها مثل SIP، IAX و ... بشه :
[left]SET_TRIM=”0”
TOS_8="21,20,80,4569,5060,10000_20000"
HELPER_SSH_PORT="2222"
IG_TCP_CPORTS="2222,69,80,5060,6600,10000_20000"
IG_UDP_CPORTS="69,5060,10000_20000"
EGF=”0”
[/left]
با همین چند خط، حالا ما آماده ایم که APF رو برای اولین بار راه اندازی کنیم؛ اگه شما APF رو اجرا کرده و دیدید که سیستم با مشکل مواجه شد یا چیزی درست نبود، سکته نزنید! تا 5 دقیقه فایروال خودبخود غیرفعال میشه. فلگ ای که موجب اینکار میشه DEVEL_MODE و اولین تنظیم فایل conf.apf هست. تا زمانی که مطمئن نشدید که همه چیز سرجاش هست و از همه لحاظ قابلیت های سیستم رو امتحان نکردید باید این مقدار رو “1” بذارید بمونه، وقتی 100 درصد مطمئن شدید که همه چیز روبراه هست، می تونید با صفر کردن این فلگ، فایروال از حالت development در بیاید. برای مشاهده انتخاب های خط فرمان apf کافیه این کلمه رو بدون فلگ بزنید:
[left]
$ apf
apf(3402): {glob} status log not found, created
APF version 9.6 <apf@r-fx.org>
Copyright (C) 1999-2007, R-fx Networks <proj@r-fx.org>
Copyright (C) 2007, Ryan MacDonald <ryan@r-fx.org>
This program may be freely redistributed under the terms of the GNU GPL
usage /usr/local/sbin/apf [OPTION]
-s|--start ......................... load all firewall rules
-r|--restart ....................... stop (flush) & reload firewall rules
-f|--stop........ .................. stop (flush) all firewall rules
-l|--list .......................... list all firewall rules
-t|--status ........................ output firewall status log
-e|--refresh ....................... refresh & resolve dns names in trust rules
-a HOST CMT|--allow HOST COMMENT ... add host (IP/FQDN) to allow_hosts.rules and
immediately load new rule into firewall
-d HOST CMT|--deny HOST COMMENT .... add host (IP/FQDN) to deny_hosts.rules and
immediately load new rule into firewall
-u|--remove HOST ................... remove host from [glob]*_hosts.rules
and immediately remove rule from firewall
-o|--ovars ......................... output all configuration options

[/left]
بازم تاکید میکنم : این تنظیمات بسیار ابتدایی و ممکنه برای همه جوابگو نباشه، مثلاً اگه شما از Extension های IAX برای ارتباط با الستیکس استفاده می کنید، باید پورت هایی که واسه IAX تعریف کردید رو هم اینجا اعمال کنید (البته این موضوع برای ارتباط بین الستیکس یا استریسک صادق نیست، یعنی با همین تنظیمات می تونید دو – یا بیشتر- استریسک رو با ترانک IAX بهم وصل کنید).

یه نکته دیگه که می تونم اضافه کنم اینه که با فلگ –a میتونید به یک IP اجازه بدید که از فایروال و قوانینش عبور کنه و تمام پورت ها بدون شرط برای اون IP باز بشه؛ مثلاً اگه میخواهید برای یه کلاینت مشخص SNMP یا IAX و ... رو باز کنید :
[left]$ apf -a 192.168.1.216[/left]

در ضمن اگه خواستید برعکس این مورد رو اعمال کنید، یعنی یه IP یا کلاً یک Subnet کامل رو ببندید، باید از فلگ –d استفاده کنید؛ اولی برای یک کلاینت خاص و دومی برای کل یک subnet هست :
[left]$ apf -d 192.168.0.11
$ apf -d 217.219.111.0/24
[/left]
در نهایت شما آمده هستید که APF رو با فلگ –s راه اندازی کنید:

[left]$ apf -s
apf(3445): {glob} activating firewall
apf(3489): {glob} determined (IFACE_IN) eth0address 192.168.1.31
apf(3489): {glob} determined (IFACE_OUT) eth0address 192.168.1.31
apf(3489): {glob} loading preroute.rules
apf(3489): {resnet} downloading [url]http://r-fx.ca/downloads/reserved.networks[/url]
apf(3489): {resnet} parsing reserved.networks into
/etc/apf/internals/reserved.networks
apf(3489): {glob} loading reserved.networks
apf(3489): {glob} SET_REFRESH is set to 10 minutes
apf(3489): {glob} loading bt.rules
apf(3489): {dshield} downloading [url]http://feeds.dshield.org/top10-2.txt[/url]
apf(3489): {dshield} parsing top10-2.txt into /etc/apf/ds_hosts.rules
apf(3489): {dshield} loading ds_hosts.rules
apf(3489): {sdrop} downloading [url]http://www.spamhaus.org/drop/drop.lasso[/url]
apf(3489): {sdrop} parsing drop.lasso into /etc/apf/sdrop_hosts.rules
apf(3489): {sdrop} loading sdrop_hosts.rules
apf(3489): {glob} loading common drop ports
...........trimmed for this document.........
apf(3489): {glob} default (ingress) input drop
apf(3445): {glob} firewall initalized
apf(3445): {glob} !!DEVELOPMENT MODE ENABLED!! - firewall will flush every 5
minutes.
[/left]
3- 2. ابزار BFD
Brute Force Detect برای جلوگیری از تلاشهای مکرر ورود به سیستم و login های متوالی استفاده میشود. با این تفسیر حتماً متوجه شدید که چندان چیز پیچیده ای نیست ولی بسیار در دفع این حملات موثر عمل میکنه. مخصوصاً برای سیستم هایی که پورت ssh خودشون رو عوض نکردند، بسیار زیاد این مشهود هست و هرکسی که میخواد شروع کنه به شیطونی اول از همه شروع به اینکار میکنه!
فایل پیکربندی این ابزار رو میشه در مسیر /usr/local/bfd بنام conf.bfd مشاهده کرد. اولین متغیری که در این فایل می تونید بینید، TRIG هست که مقدار پیش فرضش 15 بوده و تعداد تلاشهای ناموفق کاربر (agent، هکر و ...) برای ورود به سیستم هست. توجه کنید که این عدد به ازاء هر IP هست نه کاربر! مثلاً اگه یکی از یک IP با 15 تا کاربر متفاوت و یکبار به ازاء هرکدوم امتحان کنه، IP اش بقول معروف Ban میشه. سعی کنید زیاد هم این عدد رو بزرگ نذارید، همونطوریکه معمول هست تو فروم ها، عدد 5 میتونه گزبنه خوبی باشه.
BFD قادر هست که IP هایی رو که به تعداد موردنظر شما یا بیشتر تلاش ناموفق داشتند به مدیر سیستم ایمیل کنه، که البته نیاز به راه اندازی ایمیل سرور الستیکس داره که قبلاً (در فروم Voip-Iran) در موردش بحث شده و در حوصله ای آموزش نیست، ولی اگه فرستادن ایمیل از الستیکس رو فعال کرده باشید، کافیه مقدار EMAIL_ALERTS رو 1 کرده و ایمیل مدیر سیستم رو به EMAIL_ADRESS انتساب بدید.
BFD از طریق قرار دادن یک کرون در /etc/cron.d هر 3 دقیقه یکبار اجرا میشه. شما می تونید لیستIP هایی رو که متخلف بودند رو برای بررسی و بلاک کردن (مثلاً با apf -d) با دستور زیر بگیرید :
[left]$ bfd –d[/left]
نظر
هنوز هیچ نظری ارسال نشده است!
پاسخ پذیرفته شده Pending Moderation
0
رای
بازگشت
واقعا کارتون خیلی عالیه ...
ممنون.
نظر
هنوز هیچ نظری ارسال نشده است!
پاسخ پذیرفته شده Pending Moderation
0
رای
بازگشت
دوستان همگی لطف دارید، خواهش میکنم.
نظر
هنوز هیچ نظری ارسال نشده است!
پاسخ پذیرفته شده Pending Moderation
0
رای
بازگشت
خیلی عالی بود
دسته شما درد نکنه
نظر
هنوز هیچ نظری ارسال نشده است!
پاسخ پذیرفته شده Pending Moderation
0
رای
بازگشت
[color=blue]4. امن کردن HTTP[/color]

یک موردی که معمولاً برای یک توسعه دهنده سیستم که به امنیت سیستم هاش اهمیت میده آزاردهنده هست، صفحه اولیه کاملاً تابلو الستیکس (یا سایر UCS ها مثل استریسک، TrixBox، [color=blue][size=8pt]*1[/size][/color]PiaF و ...) هست که برای همه تنها با دونستن IP سرور قابل دسترس هست و با یک نگاه میشه به ماهیت سرور پی برد، البته میشه با دستکاری فایلهای tpl درون themes یه مقداری سفارشی کرد ولی بازم واسه همه همین صفحه نشون داده میشه، چه خودی، چه نخودی و چه بیخودی؛ یعنی هرکسی کافیه IP رو تایپ کنه و یک اینتر : دروازه ورودی ما بروش باز میشه و فقط باید دنبال کلید باشه یا از دیوار بپره تو و ...
کاری که میخواهیم بکنیم اینه که لیستی از کاربران رو در MySQL تعریف کرده و از طریق نصب یک ماژول mod_auth_mysql اجازه دسترسی کاربران ناخواسته (همون نخودی/بیخودی ها یا hacker ها) رو به رابط وب قطع کنیم. برای اینکار مراحل زیر رو به ترتیب پیش میریم :

[left]yum install mod_auth_mysql[/left]

یه سوال [y/N] می پرسه که طبیعتاً باید y بزنید، با اینکار ماژول موردنظر ما در محل مناسب نصب میشه. حالا لازمه فابل پیکربندیش رو دستکاری کنیم؛ این فایل در مسیر /etc/httpd/conf.d و بنام auth_mysql.conf هست؛ فایل رو با ادیتور دلخواهتون باز کرده و بصورت زیر (یا چیزی مشابه این متناسب با نیازتون[color=blue][size=8pt]*2[/size][/color]) تغییر بدین :
[left]
LoadModule mysql_auth_module modules/mod_auth_mysql.so
<Directory /var/www/html>
AuthName "Authentication Required"
AuthType Basic
AuthMYSQLEnable on
AuthMySQLUser root
AuthMySQLPassword passw0rd
AuthMySQLDB userauth
AuthMySQLUserTable users
AuthMySQLNameField user_name
AuthMySQLPasswordField user_passwd
AuthMySQLGroupTable groups
AuthMySQLGroupField user_group
require group user
require valid-user
</Directory>
<Directory /var/www/html/admin>
AuthName "Authentication Required"
AuthType Basic
AuthMYSQLEnable on
AuthMySQLUser root
AuthMySQLPassword passw0rd
AuthMySQLDB userauth
AuthMySQLUserTable users
AuthMySQLNameField user_name
AuthMySQLPasswordField user_passwd
AuthMySQLGroupTable groups
AuthMySQLGroupField user_group
require group admin
</Directory>
[/left]
حالا باید پایگاه داده خودمون رو درست کنیم، مثلاً اسمش رو میذاریم userauth، بصورت زیر (البته ازتون پسورد میخواد که باید وارد کنید):
[left]mysqladmin -uroot -p create userauth[/left]
حالا برای اینکه جداول و schema پایگاه خودمون رو باید درست کنیم، سطرهای زیر رو در یک فایل به نام userauth.schema.sql ذخیره کنید و یا اینکه خودتون اگه واردین، جداول ذکر شده زیر رو با phpmyadmin ایجاد کنید :
[left]
-- MySQL dump 10.10
--
-- Host: localhost Database: userauth
-- ------------------------------------------------------
-- Server version5.0.22
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Current Database: `userauth`
--
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `userauth` /*!40100 DEFAULT CHARACTER SET
latin1 */;
USE `userauth`;
--
-- Table structure for table `groups`
--
DROP TABLE IF EXISTS `groups`;
CREATE TABLE `groups` (
`user_name` char(30) NOT NULL,
`user_group` char(20) NOT NULL,
PRIMARY KEY (`user_name`,`user_group`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Table structure for table `users`
--
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
`user_name` char(30) NOT NULL,
`user_passwd` char(20) NOT NULL,
`extension` int(10) NOT NULL,
`email` char(50) NOT NULL,
PRIMARY KEY (`user_name`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
[/left]
حالا باید این فایل schema رو در پایگاهمون import کنیم :
[left]mysql -uroot -p userauth < userauth.schema.sql[/left]
الان دیگه همه چی آماده هست و فقط باید کاربران رو در جدول وارد کنیم، 1000 تا راه راحت واسه اینکار هست که توسط رابط هایی که به MySQL زده میشه یا phpmyadmin و ... میتونیم اطلاعاتمون رو وارد کنیم. ولی به فرض که شما هیچکدوم رو در اختیار نداشته باشید؛ در اینحالت مثلاً برای 2 تا کاربر با سطوح مختلف باید دستورات زیر رو وارد کنید:
[left]mysql -uroot -p
mysql> use userauth;
INSERT INTO `userauth`.`users` (`user_name` ,`user_passwd` ,`extension` ,`email`) VALUES ('admintest', ENCRYPT('letmein1';),'','' );
INSERT INTO `userauth`.`users` (`user_name` ,`user_passwd` ,`extension` ,`email`) VALUES ('user1', ENCRYPT('letmein2';),'','' );
INSERT INTO `groups` VALUES ('admintest','user';),('admintest','admin';),('user1','user';)
mysql> exit[/left]

با دستورات بالا ما دوتا کاربر admintest و user1 رو اضافه کردیم که اولی در هر دو گروه admin و user هست و دومی فقط user. البته حواستون باشه که اگه Copy/Paste میکنید، فقط بعد ; ها اینتر هست و اینجا جا نبوده که یه خط اومده پایین.
باید فایل /etc/httpd/conf/httpd.conf رو هم ویرایش کرده و خط زیر رو کامنت کنیم (یعنی یک # اولش بذاریم):
[left]# Include conf.d/*.conf[/left]

حالا وقتشه که امتحان کنیم ببینیم راه حل ما کار میکنه یا نه؟ ضمناً نگران هم نباشید؛ اگه مشکلی ایجاد شد، کافیه اون سطری که الان در فایل /etc/httpd/conf/httpd.conf کامنت کردیم # اش رو بردایم و /etc/httpd/conf.d/auth_mysql.conf رو ببریم یه جای دیگه بذاریم ...
خوب برای تست مراحل کافیه سرویس httpd رو ریستارت کنیم، یعنی service httpd restart ؛ در نهایت در صفحه وب باید با زدن IP خالی صفحه پیش فرض باز نشه و هر کاربری باید نام خودش رو در URL وارد کرده و صفحه موردنظر رو ببینه.

======================================
[color=blue][size=8pt]*1- [/size][/color] [color=navy][size=8pt]یک سرویس دهنده VoIP یا بقول خودشون PBX in Flash که برای اطلاعات بیشتر می تونید به [url]http://pbxinaflash.net[/url] مراجعه کنید. فکرکنم به یاد خواننده توانای فرانسوی Edit Piaf : [url]http://delzendeha.blogfa.com/post-69.aspx[/url] به این نام برازنده شده ...[/size][/color]

[color=blue][size=8pt]*2- [/size][/color] [color=navy][size=8pt]متناسب با نیازتون یعنی اینکه پسوردها رو همون هایی بذارید که تغییر دادید و نام جدول و فیلدهایی که تو MySQL برای این کار درست کردید و در ضمن من فقط برای صفحه اول خود الستیکس این کار رو کردم که شما اگر a2billing یا mail و ... دارید برای همونها هم عین همین قضیه صادق هست و می تونید (به نظر من باید) این روال رو دنبال کنید ...
[/size][/color]
نظر
هنوز هیچ نظری ارسال نشده است!
پاسخ پذیرفته شده Pending Moderation
0
رای
بازگشت
فايل Elastix_Security_Ver0_3.pdf را نميشه دانلود کرد!!!! ميشه يک لينک براش بذاريد!!!
نظر
هنوز هیچ نظری ارسال نشده است!
  • صفحه :
  • 1


هنوز به این موضوع پاسخی داده نشده است

دسته بندی ها

سیستم های تلفنی کدباز
  1. 107 پست
  2. 0 زیرمجموعه
سیسکو Cisco
  1. 61 پست
  2. 0 زیرمجموعه
سیستم تلفنی FreePBX
  1. 48 پست
  2. 0 زیرمجموعه
شبکه و زیرساخت
  1. 65 پست
  2. 0 زیرمجموعه
تازه واردین دنیای ویپ
  1. 927 پست
  2. 0 زیرمجموعه