برچسب: لینوکس

  • swaks، چاقوی ارتش سوئیس برای تست smtp سرور

    برای ارسال ایمیل به افراد دیگر، بایستی یک SMTP سرور راه‌اندازی کرد. بعد باید مطمئن شد امکان ارسال ایمیل از طریق سرور، جز با یوزر و پسورد تعریف شده وجود ندارد و بعد از احراز هویت نیز فقط با نام کاربری خود، قادر به ارسال ایمیل است و نباید با ایمیل دیگر افراد عضو در سیستم بتواند اقدام به ارسال ایمیل کند.
    همینطور باید مطمئن بود که ایمیل‌های ارسالی از سروری غیر از آنها که در لیست سفید مشخص شده‌اند به دست کاربر نهایی نرسد.

    در حالت عادی می‌توان هر ایمیلی را با هر فرستنده‌ای که دوست داشته باشید
    به هر فردی ارسال کنید. اما mail server که درست تنظیم شده باشد همچون gmail و یاهو ip ایمیل دریافتی را با رکورد spf که صاحب دامین آن را تعریف کرده، تطبیق می‌دهند و در صورت ناهمخوانی ایمیل مستقیم به بخش اسپم می‌رود و غیر از آن یک نوشته را به کاربر نمایش می‌دهند که احتمال فیشینگ ایمیل وجود دارد.

     

    برای تست همه این موارد نیاز به یک SMTP سرور (برای مثال smtp.novid.ir:587) و تعریف چند کاربر ([email protected] و [email protected]) و همینطور ایجاد پسورد برای آنها داریم. ایمیل‌های تست به آدرس [email protected]  ارسال می‌شود. برای تست حالت‌های مختلف از ابزار قدرتمند SWAKS استفاده خواهیم کرد.

     

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

    اگر SMTP سرور به درستی کانفیگ نشود، هر فردی بدون احراز هویت قادر به ارسال ایمیل از طریق آن خواهد بود. به اینگونه سرورها در اصطلاح open mail relay گفته می‌شود.

    با استفاده از ابزار SWAKS و بدون وارد کردن یوزر و پسورد سعی در اسال ایمیل می‌کنیم.
    در صورت موفقیت در ارسال ایمیل، انتظار این رو داشته باشید که سرور به زودی در لیست سیاه قرار خواهد گرفت و تا مدت‌ها دیگر نخواهید توانست میل بفرستید.

     

    • آپشن t یا همان to ایمیل فرد دریافت کننده است.
    • s یا همان server، آی‌پی یا آدرس smtp سرور مد نظر است که در اینجا از طریق پورت 587 قصد وصل شدن به آن را داریم.
      پورت ۲۵ رو بسیاری از دیتاسنترها بسته‌اند و به دلیل امن نبودن، استفاده از آن توصیه نمی‌شود.
    • با استفاده از آپشن tls، کانکشن به smtp سرور به شکل STARTTLS برقرار می‌شود.
    • با آپشن from ایمیل فرستنده را مشخص می‌کنیم.

    معمولا خط بالای QUIT مشکل اصلی در عدم ارسال ایمیل را می‌گوید.

    <~* 530 5.7.1 Authentication required

    تست باز یا بسته بودن پورت ۲۵ SMTP سرور

    برای تست پورت ۲۵، کامند زیر را اجرا می‌کنیم.
    به شکل پیشفرض swaks از پروتکل امن esmtp جهت اتصال به سرور استفاده می‌کند.

    که نشان می‌دهد دسترسی به پورت ۲۵ عملا امکانپذیر نیست.

    ارسال ایمیل با احراز هویت

    برای ارسال ایمیل با یوزر و پسورد کافیست که آپشن a یا همون auth رو به کامند اضافه کنیم.
    بعد از زدن اینتر،  یوزر و پسورد به شکل جداگانه پرسیده می‌شود.

     

    ارسال ایمیل بدون فعال‌سازی tls

    تست رو مجدد بدون tls انجام می‌دیم تا مطمئن شویم تنها راه اتصال به سرور از طریق امن امکان پذیر است.

     

    ارسال ایمیل با پسورد اشتباه

    کامند را با پسورد اشتباه اجرا و انتظار داریم که ایمیل ارسال نشود.

    ارسال ایمیل با هویت یک فرد دیگر عضو سیستم

    تست رو تغییر داده با یوزر و پسورد صحیح کاربر admin ایمیلی از طرف  info بفرستیم.
    کافیست که from رو به info تغییر داده و یوزر و پسورد admin رو وارد به ترتیب صحبح وارد نماییم.

     

    ارسال ایمیل با هویت فردی که عضو سیستم نیست

    در آخر از طرف فردی که در سیستم وجود ندارد سعی در ارسال ایمیل می‌نماییم.

     

    پی‌نوشت: خروجی swaks در این مثال‌ها بخاطر حفظ IP اصلی سرور دستکاری شده است.

  • استفاده از DNS بر بستر TLS با pfSense

    دی‌ان‌اس‌های جدید کلودفلیر به مشخصات 1.1.1.1 و 1.0.0.1 به تازگی معرفی شدند. ویژگی خوب کلودفلیر غیر از سرعت بالای اون قابلیت پشتیبانی از TLS هست و به همین دلیل درخواست کلاینت به سرور رمزنگاری شده و دیگر امکان تغییر پاسخ در بین راه وجود نخواهد داشت.

    از اونطرف در صورت استفاده از روتر pfSense این قابلیت خوب رو خواهید داشت که بدون نصب هیچ کلاینت و برنامه‌ی جانبی از این موهبت برخوردار شوید. برای اینکار باید مراحل زیر را در pfSense دنبال نمایید.

    ابتدا مطمئن شوید که به شکل عادی pfSense از دی‌ان‌اس‌های کلودفلیر استفاده می‌کند.

    برای اینکار در بخش System > General Settings و در بخش DNS Servers آدرس‌های کلودفلیر را وارد می‌کنیم.

     

    برای اینکه به pfSense بگیم که از قابلیت TLS استفاده کند به بخش  Services > DNS Resolver رفته در بخش Display Custom Options متن زیر رو بگذارید.

     

    در صورتیکه بخواهید از Quad9 DNS servers که متعلق به IBM استفاده نمایید یا اونها رو در کنار کلودفلیر داشته باشید کافیه این دو خط رو جایگزین خطوط بالا کنید یا زیر اون اضافه نمایید.

    منبع

  • تغییر محتوای یک سایت از طریق nginx

    تصور کنید یک وب‌سایت دارید که با php کار می‌کند و با استفاده از nginx سرو می‌شود. برای وب‌سایت سرتیفیکیت تهیه کردید اما لینک تصاویر و فایل‌های داخل سایت با پروتکل http جای https شروع میشود و در نتیجه هنگام لود سایت، مرورگرهای جدید محتوایی که با http شروع شوند را بلاک می‌کنند.

    راه اول تغییر برنامه‌ست و اینکه کاری کنیم که همه‌ی لینک‌ها با https شروع بشود. اما این روش همیشه مقدور نیست و خیلی وقت‌ها تغییر کد مقدور نیست. اینجاست که nginx و ماژول زیبای nginx_substitutions_filter به کار آدم میاد. با استفاده از این ماجول می‌توانیم هر نوشته‌ای رو قبل از نمایش برای کلاینت تغییر بدهیم.

    برای اینکار کافیست در بخش server دو خط زیر رو وارد کنیم. در صورت حذف خط دوم،‌ فقط اولین http  به https تبدیل می‌شود.

     

    اما همین دو خط زمانیکه nginx پشت یک لودبالانس مانند haproxy باشد کار نخواهد کرد. برای حل این مشکل کافیست خط زیر رو به کانفیگ nginx در بخش location اضافه نمایید.

     

     

  • اضافه کردن یک نود جدید به glusterfs

    وقتی سه سرور داشته باشید که هر کدام از آنها برای مثال سه ترابایت فضای ذخیره داشته باشند و بخواید همه این فضاها رو یکی کنید و به یک استوریج نه ترابایتی برسید یکی از گزینه‌های خوب  گلاستراف‌اس است. در سنت‌اواس به راحتی میشه ورژن‌های مختلف این برنامه رو نصب کرد. حالا فرض رو بگذارید که زمان گذشته و قصد کردیم سرور چهارم (s4) رو به کلاستر (s1,s2,s3) اضافه کنیم. برای اینکار باید در یکی از سرورهایی که از قبل عضو کلاستر بودند، کامند زیر رو اجرا کنید.

    اما اگر مثل من بدشانس باشید همین دستور خیلی ساده مشکل ساز میشه و عضو جدید به درستی کار نخواهد کرد.

    وقتی لاگ مربوط به گلاستر در سرور s4 رو ببینید همچین پیغامی خواهید دید.

    که با زبون سربسته داره میگه نود جدید که قصد اضافه کردن اون رو به کلاستر داشتیم نتونسته اطلاعات لازم رو از نود s2 بگیرد! نود s2 همون نودی بوده که از قبل عضو کلاستر بوده و از داخل اون قصد داشتیم نود جدید رو عضو کلاستر کنیم.

    دلیل این اتفاق این بود  که همه نودهای کلاستر ورژن 3.12.5 بودند اما در زمانیکه قصد اضافه کردن عضو جدید به کلاستر رو داشتم، گلاستر centos به نسخه 3.12.6 آپگرید شده و دقیقا همین موضوع باعث مشکل میشه. برای اضافه کردن نود جدید به کلاستر باید دقت کنید که ورژن گلاستر سرور جدید و قدیم دقیقا یکی باشد.

    پروسه‌ی دانگرید در centos برخلاف اوبونتو می‌تونه آدمیزاد رو زخم کنه و اساسا بخاطر همین موضوع شروع به نوشتن این راهنما کردم.

    کاری که  برای حل این مشکل انجام دادم این بود که پکیج‌های rpm  گلاستر رو از مسیر یکی از نودهایی که عضو کلاستر بود (s2) رو به سرور جدید انتقال دادم.

    بعد در سرور جدید (s4) به شکل زیر یک مخزن لوکال ساختم.

    و بعد مخزن رو باید به سنت‌او‌اس به شکل زیر معرفی کنیم.

    قبل از نصب گلاستر ورژن قدیمی، بایستی اول اون رو از کلاستر حذف کنیم
    برای اینکار کافیه از یکی از سرورها که عضو کلاستر هستند (s2) کامند زیر رو بزنید.

    بعد در سرور s4 که قراره ورژن اون رو دانگرید کنیم بعد از استاپ سرویس گلاستر در مسیر زیر هر چی فایل هست رو پاک کنیم.

     

    گلاستر برای نصب نیاز به یک پکیج به اسم userspace-rcu داره که ورژن اون  باید 0.10 به بالا باشد. برای نصب این پکیج بهتره از همونی که داخل مخزن گلاستر 3.12.6 موجوده بهره ببریم.

    وقتی که میخوایم پکیج های گلاستر 3.12.6 رو پاک کنیم یادمون نمیره که userspace-rcu رو نگه داریم وگرنه به مشکل خواهیم خورد.

    حالا نوبت به نصب دوباره گلاستر می‌رسد. چون یک مخزن اضافه کردیم که  پکیج‌های گلاستر 3.12.5 داخلش موجوده اینبار ورژن قدیمی نصب خواهد شد.

    و دوباره نود رو به کلاستر جوین میکنیم.

    و در آخر مطمئن میشیم که همه چیز خوب پیش رفته باشد.

     

     

     

  • مقایسه‌ی سه هارد ssd

    در این مطلب سه هارد ssd مدل اینتل VK0480GEYJR (تحت برند HPE)  و سامسونگ مدل MZ7KM480 و   SSD 960 PRO 512GB رو مقایسه می‌کنیم.

    MZ7KM480

    دو مدل اول به ریدکنترلر متصل هستند و برای دیدن نتایج واقعی  cahce ریدکنترلر خاموش است. مدل سوم روی pci express سرور سوار  است و فقط os اون رو می‌بینه.

    دو  تست روی هاردهای ssd انجام می‌دیم.در تست اول برای کاری که تخصص دارند و اون نوشتن و خواندن Random هست و دیگری حالت Sequential که برای دیسک‌های معمولی هم کار راحتی و معمولا حیف برای اینجور کارها بخوایم از ssd استفاده کنیم.

    هارد ssd اینتل

    نکته اول اینکه با fio سعی کردیم حالت واقعی سرور رو شبیه‌سازی کنیم 75 درصد read و 25 درصد write. مهمترین بخش هم iops هست.

    iops=48009 برای read و iops=16010 برای رایت.

    برای تست دوم از dd استفاده میکنیم. نکته مهم اینه که oflag=dsync   به ازای هر تیکه‌ای که میخواد روی هارد بنویسه (۵۱۲ بار می‌پرسه) تاییدیه از os میگره. اما conv=fdatasync تنها یکبار در انتهای نوشتن و هنگام خروج از dd تاییدیه از os گرفته میشه.

     

    هارد ssd سامسونگ مدل MZ7KM480

    iops=67811 برای read و iops=22613 برای رایت. که نشون میده در میون هاردهای ssd سرور  سامسونگ از مدل اینتل پیشی گرفته.

    در این تست هم سامسونگ برنده شده.

     

    و اما مدل دیگه سامسونگ pro 960 که از پیش حدس می‌زنیم سرعت خیلی بالاتری داشته باشه.

    سامسونگ pro 960

    این هارد خوب iops=176350 برای read و iops=58808 رو برای نوشتن به ما میده که البته فاصله خیلی زیادی با اعدادی داره که سامسونگ ادعا میکنه :)‌

    و در کمال تعجب میشه دید که این ssd  در حالت sequential خیلی هم خوب کار نمیکنه :)

     

  • چقدر از کاربرای خونگی در خطر از دست دادن اطلاعات شخصی‌شون هستن؟

    توی پست قبلی مطلبی در مورد امنیت ضعیف مودم‌های تی‌پی‌لینک نوشته بودم که به نظر اونطور که باید و شاید توجه رو به سمت خودش جلب نکرد.

    برای همین در ادامه‌ی اون پست، این مطلب رو اینجا میذارم تا یک مقدار بیشتر با خطراتی که کاربران خونگی رو تهدید میکنه آشنا کنم.

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

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

    Selection_026

    با رفتن به آدرس http://ping.eu/ns-whois و دادن آی‌پی ولید خودتون، می‌تونید یک رنج از آی‌پی‌های ولید isp  رو بدست بیارید.

    Selection_024

    با کمی جستجو در اینترنت به اسکریپت زیر می‌رسیم که رنج ابتدایی و انتهایی ip رو میگیره و در انتها تمام ipهای بینش رو برامون تولید میکنه (خروجی برنامه‌ی زیر سی و پنج هزار آی‌پی هست). 
    Selection_025

    حالا کافیه به طریقی این آی‌پی‌ها رو به خورد اسکریپت اصلی بدیم که پسوردها رو قراره در بیاره برامون.

    برای اینکار از برنامه‌ی xargs استفاده می‌کنیم. xargs خروجی یک برنامه رو میگیره و به صورت آرگومان به برنامه‌ای که مدنظرمونه میده. حالت پیشفرض xargs،‌ خروجی  به آخر برنامه اضافه میکنه. اگه بخوایم خروجی رو به وسط  کامندی که اجرا میکنیم، اضافه کنه از خروجی -I به همراه یک نام (place holder) استفاده مینیم.

     

    کامند بالا علارغم ظاهر خیلی پیچیده‌ای که داره خیلی ساده عمل میکنه.

    قلب اصلی  همون novid.py که فقط یک ip میگیره و قراره پسورد رو بهمون برگردونه. با اسکریپت Ip.sh و کمک برنامه xargs تعداد زیادی ip رو داریم به خوردش می‌دیم.

    اما به دلایل مختلف ممکنه برنامه پیغام‌های خطایی رو برگردونه که اونها رو داریم به dev/null میریزیم (به جای نمایش اونها در صفحه نمایش). سر بعضی از آی‌پی‌ها برنامه کلا متوقف میشه و دیگه جلو نمیره. برای جلوگیری از این اتفاق از timeout استفاده میکنیم و  میگیم حالت نرمال برای پیدا کردن پسورد یک روتر زیر ۲۰ ثانیه‌ست. اگه بیشتر از این زمان برد، بیخیال اون آی‌پی بشو و برو سراغ بعدی.

    xargs با استفاده از خروجی -I  به جای اینکه هر آی‌پی رو  انتهای کامند یعنی grep Router بیاره، اونها رو وسط کامند دونه دونه به برنامه میده! {}صرفا یک نام هست که می‌دونیم در کامندی که قراره بارها اجرا بشه هیچ استفاده‌ای نمیشه، میشه به جای اون هر چیز دیگه‌ای هم استفاده کرد.

    اون بخش grep رو برای این گذاشتم که برنامه بعد از پیدا کردن پسورد روتر چند خط رو به عنوان خروجی بر میگردونه. پسورد نیز در خطی قرار داره که کلمه‌ی Router وجود داره.

    بعد چند ساعت صبر و بسته به سرعت اینترنت، به کلی پسورد روتر خواهید رسید!

    Selection_028جالبه در خیلی پسوردها، نام isp داتک رو میتونستم ببینم که مشخص بود تنظیمات رو خود داتک بر روی روتر طرف انجام داده. بسیاری هم شماره تلفن خونه‌شون رو به عنوان پسورد انتخاب کرده بودن که خیلی راحت میشه به اطلاعات بیشتری از فرد دست پیدا کرد.

    کار قشگ دیگه ای که میشه انجام داد اینه که ببینیم بیشترین پسوردی رو که ملت استفاده میکنن چیه؟

    برای اینکار با کمی جستجو به اسکریپت count_all_words.py میرسیم.

    کافیه همه پسوردها رو در یک فایل به نام PASSWDUSERS.txt ذخیره کنیم و بعد اسکریپت رو اجرا کنیم. برای استخراج پسورد از لیستی که در اختیار داریم، کامند زیر رو اجرا میکنیم.

    و برای شمارش تعداد پسوردها نیز اسکریپت count_all_words.py رو اجرا کنیم.

     

    جامعه‌ی کاربری بالا ۶۵۵ مورد و همگی از isp داتک بوده. جستجو هم روی ۸۲۰۰ آی‌پی صورت گرفته. نکته اما اینه که همه‌ی این ۸۲۰۰  ip بالا نبودن و اگه آی‌پی‌هایی که در زمان جستجو داون بودن رو حذف کنیم به درصد خیلی خیلی بالایی میرسیم که آسیب‌پذیر هستن. در یک رنج آی‌پی ۲۵۶ تایی تقریبا صد تا از کاربران آنلاین هستن و از این تعداد پسورد ۴۰ تا کاربر رو میشه در اورد. با تقریب خوبی میشه گفت ۴۰ درصد کاربرای داتک این مشکل رو دارن و احتمالا خودشون هم اطلاعی از این وضعیت ندارند!‌

    خب حالا اینکه مشخص شد که تعداد خیلی زیادی از روترها مشکل دارن که چی؟ اول اینکه تا جای ممکن سعی کنید دسترسی به روتر از دنیای اینترنت رو غیر ممکن کنید.  هیچ دلیلی نداره که یک کاربر خونگی روترش از بیرون قابل دیدن باشه. برای اینکار روترها گزینه‌های متنوعی دارن. تعدادی مشخصا گزینه‌ای دارن که دسترسی به روتر رو خیلی ساده غیرممکن میکنه از دنیای اینترنت. بعضی نیز بخشی به نام ACL دارن و بخشی نیز از طریق فایروال و بستن ترافیک ورودی این امکان رو برای شما فراهم میکنن. یک راه نیز اینه که تمام ترافیک ورودی به روتر رو به سمت یک آی‌پی داخل شبکه‌تون که وجود خارجی نداره هدایت کنید! برای اینکار در بخش dmz روتر باید یک آی‌پی در رنج شبکه داخلی بدید که البته وجود خارجی نداشته باشه.

    و اینکه شاید این نفوذپیذیری رو روتر شما نداشته باشه،‌ اما با گذاشتن پسوردهای خیلی ساده مثل ده مورد بالا این اجازه رو به مهاجم میدید که از طریق یک دیکشنری خیلی ساده بتونه وارد روتر بشه. و اینکه شاید خیلی از نفوذپذیری‌های دیگه باشه که تا سالها مخفی باشه و صداش در نیاد بنابراین همیشه دسترسی به روتر از بیرون رو محدود به یک یا چند آی‌پی شناخته شده کنید.

    سوال دیگه‌ای که پیش میاد اینه که با وارد شدن به روتر،‌فرد مهاجم میتونه چیکار کنه؟ جواب اینه که میتونه برنامه‌ای رو بنویسه که به صورت خودکار علاوه بر در اوردن پسورد روتر، به صورت گروهی بره و dns روتر رو هم تغییر بده. با تغییر dns عملا شما متوجه هیچ مورد مشکوکی نخواهید شد. کافیه فرد مهاجم dns چند ده هزار روتر رو تغییر بده. در زمان حمله نهایی، فرد مهاجم صفحه اول تمام بانکهای معروف رو میسازه و در یک زمان، میاد و ترافیک مثلا بانک‌ سامان و پارسیان و دیگر بانکها رو به سمت سرور خودش تغییر میده! و اینطوری میشه که بجای اینکه وارد سایت اصلی بانک سامان بشید، وارد نسخه‌ای میشید که هکر اون رو طراحی کرده. طبیعتا کسی وارد سایت دستکاری میشه که از dns سرور فرد مهاجم استفاده کنه. پس توصیه مهم دیگه اینه که همیشه برید dns های داخل روتر رو خودتون به شکلی دستی تنظیم کنید. اگه dns رو به صورت دستی تنظیم نکنید،‌ به صورت خودکار روتر اونها رو از سمت isp دریافت میکنه که به نظرم این گزینه هم عاقلانه نیست. اینجور حملات در گذشته در بسیاری از کشورهای دنیا هم اتفاق افتاده.

    2014-02-mitr-en

    یادتون نره حتی در صورت بستن راه ورود به روتر از طریق اینترنت، مهاجم میتونه حمله رو از طریق خودتون انجام بده. بدین صورت که با وارد شدن به یک سایت آلوده، خودتون تبدیل به یک مهاجم میشید و پسورد مودم خودتون رو ریست میدید! بعد برنامه‌ دیگه‌ای میتونه وارد روتر بشه و از طریق پسوردی که معلوم و مشخصه، dns رو تغییر بده! :)‌

    csrf-router-attack-640x410راهکار چیه؟ جواب اینه که فرم‌ویر روتر خودتون رو به dd-wrt تغییر بدید. dd-wrt یک فرم‌ویر اپن سورس مبتنی بر کرنل لینوکس که با دنگ و فنگ و کمی خوش شانسی باید بتونید روی روتر خودتون نصب کنید. ریسک اینکار رو هم قبلش باید بپذیرید که دیگه روتر قابل استفاده نباشه. برای اینکه بفهمید dd-wrt روی روتر شما کار میکنه یا خیر کافیه به این آدرس برید و نام روتر خودتون رو وارد کنید.

    راهکار دیگه استفاده از روتر در حالت بریج هست. و اینکه از روتر خوتون در حالت bridge استفاده کنید. در این صورت تنظیمات pppoe که بر روی روترهای ADSL وجود داره به روی سیستم متصل به روتر منتقل میشه و مودم تنها نقش یک پل رو خواهد داشت!‌ افراد داخل شبکه در اینحالت باید از طریق سرور متقل به روتر، ip بگیرن. دیوایسی که برای اینکار در نظر میگیرید باید دو تا پورت لن یا یک پورت لن و یک وایرلس داشته باشه. حالت قشنگش اینه که از رزبری پای استفاده کنید. رزبری پای کلا یک پورت Lan بیشتر نداره. بنابراین باید یک مبدل usp به lan یا wireless نیز داشته باشید. برای os هم می‌تونید از ipfire یا OpenWRT استفاده کنید که هر دوی اونها نسخه مخصوص ARM رو دارن.

    openwrt-raspi-network

  • امنیت پایین روترهای تی‌پی‌لینک

    بعد مدت‌ها عید فرصت خوبی ایجاد کرد که بالاخره دستی به وبلاگ بزنم و چه موضوعی بهتر از موضوع اسفناک مشتری ispهای ایران…

    سالهاست که خودم کاربر داتک هستم و روز به روز شاهد افت کیفیت این شرکت ارائه دهنده‌ی اینترنت بودم که حالا مشکلات امنیتی هم به اون اضافه شد.

    هر کاربر متصل به اینترنت یک ip ولید توی اینترنت داره که برای بدست اوردنش کافیه توی گوگل سرچ بزنید what is my ip.

    اگه فرض  کنیم ای‌پی من در اینترنت 176.46.136.128 باشه ، با تقریب خوبی میشه گفت که آی‌پی‌های در رنج 176.46.136.1/24  همه‌گی مشتری‌های داتک هستن. حالا کافیه بیاییم چک کنیم چه مقدار از این آی‌پی‌ها پورت ۸۰ شون بازه. برای اینکار از برنامه nmap استفاده میکنیم.

    این لیست، کاربرایی رو شامل میشه که صفحه‌ی اصلی روترشون توسط مرورگر قابل مشاهده است. مگه اینکه پورت ۸۰ شون رو از طریق nat انتقال داده باشن به وب‌سرور داخلی. وقتی این آی‌پی‌ها رو توی مرورگر وارد کنید  فرم یوزر و پسورد براتون ظاهر میشه. مهاجم  در ساده‌ترین حالت با یوزر و پسورد پیش‌فرض admin میتونه وارد تنظیمات روتر بشه.

    اما در مورد روترهایی که پسورد پیش‌فرض اونها admin نیست، یک روش استفاده از  brute force با استفاده از برنامه‌ی Hydra است. این برنامه می‌تونه با استفاده از یک دیکشنری،‌ دونه، دونه پسوردها رو با سرعت خیلی زیادی تست کنه.

     

    با کامند بالا، برنامه‌ هیدرا به سرعت ۵۰۰ تا از بدترین پسوردهایی که کاربرا خیلی علاقه به انتخابشون رو دارن با یوزر admin به روش سعی و خطا تست میکنه و نتیجه کار رو بهتون میگه. طبیعیه که اگه لیست پسوردا خیلی طولانی باشه زمان اینکار هم بیشتر میشه (احتمالا).

    در صورتیکه لیستی از یوزر رو میخواید به برنامه‌ی هیدرا بدید، هم کافیه با آپشن L اینکار رو انجام بدید.

    برای پیدا کردن یوزر و پسورد در حالت ssh هم به شکل زیر از برنامه استفاده کنید.

     

    لیستی از دیکشنری‌های معروف رو هم میتونید از اینجاها بگیرید.

    http://trac.kismac-ng.org/wiki/wordlists
    http://www.room362.com/projects/hugelist.txt
    https://wiki.skullsecurity.org/Passwords

    اما موضوعی که هست وجود یک exploit یا به عبارتی حفره در مودم‌های TP-Link که باعث میشه فرد مهاجم به راحتی بتونه هر پسوردی رو که ست کرده باشید در بیاره.

     


    اسکریپت کارش اینه که بعد از بدست آوردن پسورد، روتر رو از کار میندازه و در اصل اون رو ریست میده! ولی خب بعد از روئیت پسورد خیلی راحت میشه از برنامه خارج شد تا روتر ریست نشه.

    با اجرا کامند بالا همچین خروجی رو خواهیم داشت. Selection_002 دقت کنید در هنگامی که اسکریپت به سوال Decrypt the rom-0 file locally میرسه، y رو تایپ کنید تا پسورد رو در بیاره براتون. و بعد هم کافیه Ctrl + c رو بزنید تا از برنامه خارج شید.

    و خب همه‌ی اینا رو گفتم که بدونید وضعیت چقدر داغونه. داتک فخیمه میتونه با یک فایروال خیلی ساده، پورت ۸۰ رو ببنده، همونطور که پورت ۸۰۸۰ رو الان بسته (احتمالا بخاطر وجود backdoor که روی این مودم‌ها و روی این پورت وجود داره) ! و البته خود کاربرا هم میتونن کلا دسترسی به روتر از طریق وب رو کاملا مسدود کنن که این امر نیاز به آگاه‌رسانی اونها داره.

  • نصب دیسترو جدید از راه دور

    موقعیتی رو تصور کنید که روی سروری که در اختیار دارید می‌خواید یک سیستم عامل از اول نصب کنید. اما دسترسی به kvm ندارید.

    اگه روی سرور دسترسی به گراب داشته باشید به راحتی می‌شه بدون داشتن kvm یک سیستم عامل جدید رو نصب کرد.

    حتی موقع خرید سرور جدید بجای اینکه پول بدید بابت فعال کردن kvm خیلی راحت با سنت‌اواس ۵.۹ میشه سرور ددیکیتد رو تهیه کرد و بعد با روشی که گفته میشه اکثر سیستم عامل‌های جدید رو از اول خودتون نصب کنید :)

    برای کسایی هم که نمی‌دونن kvm چیه بگم یه چی تو همون مایه‌های مانیتور کنار کیس و به صورت ریموت تصویر نصب دیسترو جدید رو خواهید داشت و بنابراین می‌شه سیستم رو به نحو مطلوب پارتیشن بندی و به دیسترو مطلوب آپگرید کرد.

    برای شروع کافیه برید پوشه boot و یه فولدر بسازید به اسم دیسترویی که قراره نصب کنید . حالا باید کرنل و initrd دیسترو مد نظر رو دانلود کنید. و بعد توی کرنل سه خط اضافه میکنید تا موقع بالا اومدن سیستم از فایل‌هایی که دانلود کردید استفاده شه. توی همین گراب هم آی‌پی و مشخصات شبکه سرور رو می‌دید تا از طریق ریموت بتونید پروسه نصب اواس جدید رو نگاه کنید! :)

    مثلا برای نصب سنت‌اواس ۶.۴ کافیه این مراحل رو انجام بدید.

    cd /boot

    mkdir centos6

    cd centos6

    wget http://mirror.centos.org/centos/6.4/os/x86_64/isolinux/vmlinuz

    wget http://mirror.centos.org/centos/6.4/os/x86_64/isolinux/initrd.img

    و حالا ویرایش گراب ( با فرض اینکه سنت‌اواس ۵.۹ و گراب یک دارید)‌

    vi /boot/grub/menu.lst

    این سه خط رو اضافه میکنید

    title CentOS 6.4 VNC Installation
    root (hd0,0)
    kernel /centos6/vmlinuz vnc vncpassword=yourPassword headless ip=10.0.0.10 netmask=255.255.255.0 gateway=10.0.0.1 dns=8.8.8.8 ksdevice=eth0 method=http://mirror.centos.org/centos/6.4/os/x86_64/ lang=en_US keymap=us
    initrd /centos6/initrd.img

    رنگای آبی تعداد خطا رو نشون می ده که کلا ۴ خط خواهید داشت. همه‌شون رو هم با توجه به تنظیماتی که توی گراب وجود داره کپی‌ پیست می‌کنید. فقط خطی رو که مربوط به kernel و initrd هست رو به شکل بالا دستکاری میکنید. آی‌پی و نت مسک و گیت‌وی هم که با توجه به هر سروری فرق میکنه و خیلی مهمه! با این ای‌پی می تونید ریموت از طریق vnc وارد پروسه نصب بشید :)

    پارامتر default=0 رو هم می‌تونید تغییر بدید تا به صورت خودکار بعد از ریست، سیستم با کرنل دیسترو جدید بوت بشه. اگرم چیزی ترکید و سیستم بالا نیومد می‌تونید زنگ بزنید به دیتاسنتر و بگید که سیستم رو ریست بدن و اینبار برن توی کرنل دیسترو قدیمی! :)‌ اما راه بهتری هم هست که کاری کنیم بدون ریست و تغییر گراب، کرنل و initrd بوت بشه! برای اینکار باید برنامه kexec-tools رو نصب داشته باشید.

    kexec -l /boot/centos6/vmlinuz –initrd=/boot/centos6/initrd.img

    kexec -e

    دستور اول کرنل و initrd رو در مموری بارگذاری میکنه و دستور دوم باعث بالا اومدن کرنل جدید میشه.

    برای اوبونتو و دبیان و اپن‌سوزه هم می‌تونید از ادرس‌های زیر برای نصب ریموت استفاده کنید.

    http://cdimage.ubuntu.com/netboot/

    http://www.debian.org/distrib/netinst

    و اپن‌سوزه

     mkdir /boot/install

     cd /boot/install

     wget –output-document=oS-12.3.vmlinuz.install http://download.opensuse.org/distribution/12.3/repo/oss/boot/$(uname -i)/loader/linux

     wget –output-document=oS-12.3.initrd.install http://download.opensuse.org/distribution/12.3/repo/oss/boot/$(uname -i)/loader/initrd

    و در گراب هم تنظیمات به این شکل میشه

      title install
    root   (sdX,Y) # change this (sdX,Y)
    kernel /boot/install/oS-12.3.vmlinuz.install install=http://download.opensuse.org/distribution/openSUSE-stable/repo/oss/
    initrd /boot/install/oS-12.3.initrd.install