گاه نوشته های مهدی بیاضی

tail -f /dev/mind > blog

گاه نوشته های مهدی بیاضی

tail -f /dev/mind > blog

طبقه بندی موضوعی

۳ مطلب در آبان ۱۳۹۲ ثبت شده است

تقریبا از یکی دو ماه پیش متاسفانه برای بستر امن گوگل در ایران مشکلی به وجود اومده. اگر سایت گوگل رو باز کنید و یا چیزی رو داخلش جستجو کنید متوجه می شه که گوگل حتی اگر با https اولش وارد بشه به حالت نا امن یا http می ره و عملا همه ارتباط و جستجو و نمایش اون به صورت متنی و کد نشده بین کاربر و گوگل ارسال و دریافت می شه.

برام این مورد جالب بود. بررسی مختصری که کردم متوجه شدم این ویژگی توسط گوگل و برای مدارس ارائه شده که این امکان رو به ادمین مدرسه می ده که ssl رو برای جستجو ها قطع کنه تا بتونه روی جستجو ها و نتایجش نظارت داشته باشه و در صورت لزوم تغییراتی اعمال کنه یا حتی نتایج رو مسدود کنه! حتی می شه ویژگی SafeSearch گوگل که نتایج رو بررسی و حذف می کنه، به طور غیرقایل تغییر برای کاربران فعال کرد !

اطلاعات بیشتر در مورد این ویژگی رو می تونید اینجا بخونید.

نکته دیگه اینکه برای هر درخواست dns بدون توجه به سرور درخواست شده سریعا آی پی 216.239.32.20 برگشت داده می شه که مربوط به دامنه nosslsearch.google.com هست!! یعنی عملا با عوض کردن dns نمی شه به گوگل امن دسترسی داشت. ۲ تا راه وجود داره. یکی استفاده از https://encrypted.google.com که همیشه از پروتکل امن استفاده می کنه و دیگری ست کردن دستی dns برای کامپیوتر یا شبکه داخلی خودتون.

راه سومی هم هست و اونم هم بی خیال شدن این حرف ها و ادامه استفاده هست! :دی

۶ موافقین ۳ مخالفین ۰ ۱۵ آبان ۹۲ ، ۱۱:۱۰
مهدی بیاضی

بحث بسته های باینری نصب نرم افزار در FreeBSD از سالیان دور محل بحث و مقایسه های بسیاری بوده. افراد مختلف با دلایل و اهداف متفاوت دو روش Port (نصب از روی سورس برنامه ها) و روش باینری (*_pkg) رو بررسی کرده اند. خیلی ها روش استفاده از سیستم port یا نصب نرم افزار با استفاده از سورس رو ترجیح می دهند. دلایل مختلفی هم وجود داره. اولا این بسته های سورس یا همون سیستم port فری بی اس دی معمولا به روز هست. یعنی آخرین تغییرات رو می شه داخلشون پیدا کرد در حالی که سیستم باینری و سرور های اون با یک تاخیر به روز می شوند و ممکنه آخرین نسخه هارو نداشته باشند. از طرفی با کامپایل یک برنامه می شه تغییراتی در روند کامپایل و حتی سورس برنامه ایجاد کرد. اینطوری دست کاربران حرفه ای بازتر هست تا برنامه هایی بهینه شده تر با نیاز های خودشون داشته باشند. اما برخی مواقع هدف و نیاز کاربر از سیستم نصب نرم افزار سادگی و سرعت هست ! اینجا هست که ابزار های مدیریت بسته وارد می شوند. از سال ها پیش اکثر توزیع های لینوکس ابزار های مختلف و قدرتمندی برای این منظور توسعه داده اند. برای مثال سیستم apt-get در ابونتو یا yum در فدورا و ...

از سالیان بسیار گذشته با استفاده از دستوراتی چون pkg_add امکان نصب بسته های باینری از پیش کامپایل شده در FreeBSD فراهم بوده اما این دستورات قدیمی هستند و کاستی های زیادی دارند و نیاز های فعلی یک کاربر رو برآورده نمی کنند. این شد که در اواخر سال ۲۰۱۲ تیم توسعه دهنده FreeBSD یک سیستم جدید برای مدیریت بسته های باینری با نام pkgng ارائه کرد. این سیستم شبیه به سیستم apt-get ابونتو بوده و کارکرد مشابهی دارد.

برای استفاده از این سیستم کافی هست دستورات زیر رو اجرا کنید:

# echo "WITH_PKGNG=yes" >> /etc/make.conf
# pkg2ng

دستور اول باعث می شه وقتی یک فایل رو با استفاده از سیستم port کامپایل می کنید اطلاعات اون در pkgng هم رجیستر بشه. این برای استفاده های آینده مهم هست. مثل وقتی دستور نصب بسته ای رو با pkgng می دید باید بدونه چه نرم افزار هایی قبلا نصب شده. چه به صورت کامپایلی از روش پورت ها و چه با خود ابزار pkgng.

خط دوم هم اطلاعات همه بسته های قبلی نصب شده رو به سیستم جدید منتقل می کنه.

اگر این دستور اجرا نشد مطمئن بشه نسخه جدید از FreeBSD دارید یا بسته مربوط به pkgng رو نصب کردید.

حالا با استفاده از دستور pkg در ترمینال می تونید از سیستم مدیریت بسته جدید FreeBSD لذت ببرید !

این سیستم ویژگی های جدید بسیاری داره و کار رو خیلی راحتتر می کنه. مخصوصا برای پورت های عادی مثل emacs یا ...

همینطور می شه به امکان نصب مستقیم یک بسته داخل یک Jail و جستجوی ساده و ... اشاره کرد.

۰ موافقین ۰ مخالفین ۰ ۱۴ آبان ۹۲ ، ۱۷:۲۱
مهدی بیاضی

در زمان های نه چندان دور تعداد سرور ها و کل زیر ساخت معمولا کوچک و کم بود. سازمان یا سرویس های بسیار اندکی تعداد سرور هایشان از چند ده تا بیشتر می شد اما با پیشرفت فوق العاده عجیب و سریع اینترنت و سرویس ها، نیاز به استفاده از سرور های بیشتر در بستر و زیر ساخت احساس شد. الان سرویس ها و نرم افزارهای تحت وب بسیاری دارای میلیون ها کاربر بوده و بعضی داده هایی با حجم های بسیار زیاد (چندین پتابایت) ذخیره و روزانه به هزاران و حتی میلیون ها کاربر سرویس دهی می کنند.

ادمین ها قبلا با روش های ساده ای مثل ssh به یک سرور متصل و دستوراتی رو اجرا می کردند اما مشخص هست که با اضافه شدن تعداد سرور، بحث مدیریت این سرور ها سخت و سخت تر می شه.

هر نرم افزار تحت وب برای راه اندازی و سرویس دهی نیاز به یک سری زیرساخت و بستر داره که اکثرا آشنایی دارید با این موارد. به طور کلی مدیریت زیرساخت در یک سرویس تحت وب موارد زیر می تونه باشه

  • سخت افزار و شبکه
  • تنظیم و نصب سیستم ابری (کلود یا Cloud) و سیستم های مجازی (vm)
  • سیستم عامل و نرم افزار (نصب، تنظیم و به روز رسانی)
  • وظایف و دستورات زمانبندی شده (پشیبان گیری، حذف لاگ، تنظیم ساعت و ...)
  • دستورات و وظایف دستی (نصب نرم افزار، ریست و ...)
  • مانیتورینگ
  • و ...

خوب همین دلایل و نیاز به روشی سریع و مطمئن برای مدیریت سرور ها باعث ایجاد نرم افزار هایی خاص برای این کار شد. نرم افزار هایی مثل puppet. ابزار puppet با استفاده از زبان روبی (Ruby) نوشته شده و یکی از نرم افزار های خوب برای مدیریت مرکزی نصب، تنظیمات و نگهداری سیستم عامل و نرم افزار های چندین سرور هست.

ابزار های پایتونی هم هستند که البته به نسبت پاپت محدود تر بودند و مثلا برای اجرای یک سری دستورات از طریق ssh کاربرد داشتند مثل Fabric.

سال ۲۰۱۱ ابزاری معرفی شد به اسم salt. این یک پروژه پایتونی بود که به منظور مدیریت متمرکز سرور ها ایجاد شد و به زودی طرفداران بسیاری پیدا کرد. مدت ها از پروژه های بسیار فعال github بود (رکورد بیشترین تعداد توسعه دهنده در سال ۲۰۱۲) و توسعه وحستناکی روش انجام شد ! تقریبا هر روز کلی بهبود و کد جدید بهش اضافه می شد تا اینکه تبدیل شد به یک ابزار بسیار قوی و مناسب.

از Salt یا همون SaltStack برای ۲ منظور مهم استفاده می شه.

  1. سیستم مرکزی برای مدیریت تنظیمات
  2. اجرای از راه دور دستورات

اما ویژگی های منحصر به فرد ابزار Salt:

Scale

  • توانایی مدیریت ده ها هزار سرور
  • سیستم Message بر اساس ZeroMQ
  • اتصالات همزمان و اجرای موازی دستورات
  • استفاده از MessagePack
  • عدم استفاده از ssh که بسیار کند تر هست

امنیت

  • سیستم اعتبار سنجی با استفاده از کلید عمومی
  • رمز نگاری پیغام ها و دستورات ارسالی با استفاده از AES

ویژگی های برجسته

  • معماری ساده
  • نصب آسان
  • تنظیمات آسان
  • امکان توسعه و ماژول نویسی
  • سرور داخلی قایل
  • عدم وابستگی به ابزار یا نرم افزار های دیگر

سایت رسمی

آدرس Github

مستندات پروژه

۰ موافقین ۲ مخالفین ۰ ۱۱ آبان ۹۲ ، ۱۸:۳۱
مهدی بیاضی