سادگی زیباست...

بررسی انواع معماری های سیستم عامل و برنامه های سیستمی و روشهای توسعه آنها

سادگی زیباست...

بررسی انواع معماری های سیستم عامل و برنامه های سیستمی و روشهای توسعه آنها

سادگی زیباست...

۲۶ مطلب با موضوع «آموزشهای عمومی» ثبت شده است

در شبکه های کامپیوتری، port knocking یک روش برای باز کردن پورت مشخص در دیواره آتش، با دریافت درخواست از شبکه خارجی است. این پورت مشخص از خارج شبکه و با انجام عمل پویش مانند پورت اسکن کاملا بسته به نظر میرسد، اما برای درخواست مشخص شده، باز می‌شود. این عمل باز کردن پورت کاملا به صورت اتوماتیک انجام می‌شود. یکی از انواع روشهای knocking با عنوان single packet authentication شناخته می‌شود که در آن، یک بسته اطلاعاتی کد شده، فرستاده می‌شود تا پورت ارتباطی برای ادامه باز شود.
حفاظ‌ها (firewall) در معماری امنیت شبکه، برای فیلتر کردن بسته‌ها یا اعتبارسنجی یک پروتکل استفاده می‌شوند و در این دو کار، به خوبی عمل می‌کنند. اما حفاظ‌ها اطلاعات کمی درباره برنامه‌ها و روند استفاده شبکه برای هر کدام از آن‌ها و همچنین کاربران شبکه دارد، این مساله باعث بروز دو مشکل می‌شود:
1 محدود کردن دسترسی به شبکه داخلی از طریق بیرون.
2 محدود کردن دسترسی کاربران داخلی به تعداد محدود پورت‌های مشخص.
توجه شود که خود محدودیت‌های اعمال شده برای کاربران، به دلیل محدود کردن روشهای سو استفاده و حمله به شبکه است و اگر روشی باشد که بدون محدود کردن کاربران مجاز، بتواند در برابر کاربردهای غیر مجاز به خوبی عمل کند، روش مناسب‌تری خواهد بود.
معماری نرمافزارهای شبکه بر اساس معماری clinet-server می‌باشد. قسمت clinet که معمولا یک رابط کاربری است برای ارتباط با کاربر، اتصال به server و درخواست یک سرویس خاص از آن. برای مثال یک مرورگر اینترنت به server متصل می‌شود و درخواست خود را برای یک صفحه یا سند خاص به آن می‌دهد. کاربردهای Peer-to-Peer هم نقش server را دارد و هم نقش clinet را. برنامه ای مثل پراکسی، برای مرورگر یک برنامه سرور ایت و برای وب سرور یک کلاینت حساب می‌شود.
پروتکل اینترنت IP چه مشکلات امنیتی اساسی دارد؟

  • هر کاربر میتواند با روند ip spoofing خود را جای هر ip دیگر نشان دهد.
  • در پروتکل tcp عدد ابتدایی قابلیت حدس زدن را دارد، بنابراین امکان سرقت نشست session hijack بسیار افزایش میابد.
  • بسیاری از پروتکل های مسیریابی موجود در اینترنت ناامن طراحی شده اند.
  • بسته ip قابلیت تکه تکه frangmentation را دارند، که به یک attacker اجازه میدهد بسته اطالعاتی را به چند قسمت تقسیم کند و در چند بخش بفرستد تا نتوان جامعیت آن را کشف کرد.

بعد از این مقدمه نسبتا طولانی به مبحث port knocking ادامه می‌دهیم.
اگر بخواهیم مقایسه ای انجام دهیم بین روند قدیمی پروتکل اینترنت با روند port knocking، می‌توان به یک در تشبیه کرد. در پروتکل اینترنت، مانند این است که در باز است اما کنار در یک نفر نگهبان وجود دارد. با روند ناکینگ اگر مقایسه کنیم، مانند این است که در بسته است، و بعد از در زدن و احراز هویت در باز می‌شود. همان نگهبان‌ها هم وجود دارند.
یک توضیح اضافی در اینجا لازم است، اینکه در روند پروتکل اینترنت در باز است، همان به معنی باز بودن پورت است.

سرویس port knocking در مقابل یک بسته حاوی درخواست که کدگذاری نیز شده است، آن را به سرویس‌های دیگر که خود را ثبت کرده‌اند تحویل می‌دهد، و اگر سرویسی توانست پیام دریافتی را کدگشایی کند، پورت مورد نظر باز خواهد شد.

یک تز فوق لیسانس با موضوع برسی کارایی و افزایش کارایی حفاظ ها با این روش با عنوان زیر در لینک http://www.ciphertext.info/papers/thesis-degraaf.pdf برای مطالعه کاملتر وجود دارد.

۰ موافقین ۰ مخالفین ۱ ۰۸ مهر ۹۲ ، ۱۶:۱۷
حامد شیخلو

روند فعالیت Stuxnet:

روند کامل فعالیت stuxnet به صورت کامل شناخته شده نیست، اما با اطلاعات موجود می‌توان روند زیر را برای آن ذکر کرد:

  •     آلوده کردن سیستم‌های ویندوزی با استفاده از چندین zero-day exploit، اعتبارات جعل شده یا دزدیده شده از نرم افزار های دیگر سیستم در نهایت نصب روتکیت بر روی سیستم‌های مشابه ویندوزی.
  •     تلاش برای دور زدن سیستم تشخیص نفوذ مبتنی بر HIDS بوسیله یک روش خاص در بارگذاری کتابخانه های مورد نیاز. در این روش بارگذاری کتابخانه‌ها (DLL) توسط خود بد افزار انجام نمی‌شود و یک تکه کد بر روی نرمافزارهای موجود در سیستم تزریق می‌شود و بارگذاری توسط این نرمافزارها انجام می‌شود.
  •     برای توسعه به سیستم‌های متصل به سیستم آلوده، ابتدا مطمعن می‌شود که 1 سیستم مقصد ویندوز باشد، 2 سیستم قبلا آلوده شده است یا خیر 3 روی سیستم آنتی ویروس نصب شده است یا خیر.
  •     گسترش از طریق آلوده کردن شبکه یا دستگاه های ذخیره سازی انجام می‌شود.
  •     جستجوی سیستم‌های صنعتی (Simens Wincc).
  •     اگر سیستم صنعتی مورد نظر یافت شد، از اکانت اعتبارسنجی SQL توکار این سیستم‌ها برای قرار دادن کد درون پایگاه داده آن و آلوده کردن آن برای دسترسی به PLC مقصد استفاده می‌کند.
  •     تزریق کد درون PLC. این کار از طریق پروتکل profibus انجام می‌شود. این تزریق کد خروجی PLC را تغییر می‌دهد.
  •     از طریق برسی (monitor) کردن ترافیک PLC، فعالیت سیستم کلی را برسی می‌کند.
  •     اگر یک فرکانس خاص در ترافیک یافت شد، تنظیمات فرکانس را از 1410 به 2hz کاهش می‌دهد.
  •     وجود مکانیزم حذف کردن خود از سیستم‌هایی که هماهنگی سازم را ندارند، خوابیدن (غیر فعال شدن موقت)، پاک کردن سیستم آلوده به صورت خودکار.

با توجه به اینکه این بد افزار بسیار پیچیده است، اینکه چگونه یافت شد، تنها یک جواب دارد: به دلیل گسترده شدن زیاد این بد افزار. اگر این سیستم با تکنیک خاص‌تری پخش می‌شد، شاید تا مدت‌ها بدون کشف باقی می‌ماند.
۰ موافقین ۰ مخالفین ۱ ۱۱ مرداد ۹۲ ، ۱۲:۱۰
حامد شیخلو

Stuxnet چیست؟

بد افزار Stuxnet یک روتکیت مخصوص سیستم‌های صنعتی است. مجموعه‌ای از نرم‌افزارهاست که کنترل یک سیستم رایانه‌ای را به دست می‌گیرد. در این نوع حمله، کاربر سیستم متوجه حضور روت‌کیت نخواهد شد و هکر رایانه توانایی تغییر تمامی تنظیمات رایانه را دارد. رایانه‌ای که تحت سلطه روت‌کیت و نهایتاً هکر قرار می‌گیرد را زامبی (Zombie) می‌نامند. اگر ضایعه‌ای در شبکه رایانه‌ها پیدا شود، با پیگیری آن به زامبی می‌رسیم و هکر نمی‌تواند ردیابی شود.

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

هرچند stuxnet برای اولین بار در ژوئن 2009 مشاهده شد، تا تابستان 2010 که سازمان ICS-CERT درباره آن هشدار دهد، در مقابل آن مقابله جدید انجام نشده بود. این ویروس از چهار نوع حمله zero-day برای آلوده کردن و پخش شدن استفاده می‌کند. این ویروس ابتدا به دنبال برنامه های simatic WINCC و PCS7 که توسط شرکت simens توسعه پیدا کرده‌اند می‌گردد، سپس از مجوز اکانت پیش فرض sql برای سرایت کردن به plc های مرتبط با آن، به روش تزریق کد استفاده می‌کند. این تزریق کد از طریق پروتکل fieldbus شرکت simens انجام می‌گیرد. در مرحله بعد، stuxnet به دنبال ابزارهای اتوماسیون که وظیفه کنترل سرعت موتورها را دارند می‌گردد. اگر کنترلی پیدا شد که در محدوده 800-1200hz باشد، تلاش می‌کند تا خرابکاری انجام دهد.

هرچند در ابتدا، اطلاعاتی که از این بد افزار بسیار کم بود، اما شرکت simens سریعاً عمل کرد و یک برنامه برای یافتن و پاک کردن این بد افزار عرضه کرد.

stuxnet در اواخر سال 2010 توجه رسانه‌ها را به خود جلب کرد. در رسانه‌ها این بد افزار به عنوان یک عامل با گسترش سریع و بسیار پیچیده مطرح شد. این مسئله توجه بسیاری به یک مسئله خاص معطوف کرد: «صنایع باید با سرعت زیاد نسبت به افزایش سطح امنیت خود عمل کنند».

کالبد شکافی stuxnet

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

Stuxnet

این بد افزار اولین روتکیت شناخته شده برای دستگاه‌های کنترل صنعتی می‌باشد. این روتکیت می‌توانست خود را به صورت خودکار بروز رسانی کند. توانایی تزریق کد در منطق بار کننده یک plc را دارا بود و بعد از این مرحله فعالیت یک plc به خوبی ادامه پیدا می‌کرد، و این بد افزار خود را کاملاً مخفی میکند، فقط در مواقع خاصی داده های اشتباه به HMI ارسال می‌شد.

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

در مطلب بعدی به روند کارهایی که این بد افزار انجام می‌داد، پرداخته خواهد شد.
۰ موافقین ۱ مخالفین ۱ ۱۱ مرداد ۹۲ ، ۱۰:۴۱
حامد شیخلو

این برنامه(ntop) یکی از بهترین نرم افزار های مونیتورینگ شبکه است که توسط دکتر لوکا دری(luca deri) توسعه پیدا کرده است. این برنامه نه تنها بین برنامه های متن باز، بلکه در بین برنامه های تجاری نیز یکی از قدرتمند ترین برنامه های مونیتورینگ است. در نصب این برنامه خطاهایی که گزارش میشود زیاد کمکی به روند نصب نمیکند، به همین دلیل با مشکلاتی همراه است. در مقاله زیر میتوان با روند نصب این برنامه آشنا شد.

لینک دریافت مقاله


۰ موافقین ۰ مخالفین ۱ ۰۹ مرداد ۹۲ ، ۲۳:۳۴
حامد شیخلو

مساله:

زمانی که میخواهید یک کاربر راه دور، مثلا یک کاربر برای همتاسازی(replication) تعریف کنید، امکان دارد خطای زیر را مشاهده کنید:

ERROR 1146 (42S02): Table ‘mysql.procs_priv’ doesn’t exist

دلیل بروز خطا:

در هنگام بروزرسانی یک mysql، باید جداول سیستمی مورد نیاز آن نیز بروزرسانی شود و اطمینان از بروز بودن آنها باشد. در غیر این صورت، خطای بالا در بعضی فرایند ها رخ خواهد داد.

راه حل:

برای حل این مشکل، کد زیر را در لینوکس وارد کنید (قابلیت root مورد نیاز است):

mysql_fix_privilege_tables –password=root_password

root_password کلمه عبور اصلی پایگاه داده است.

توجه

حتما از پایگاه داده خود پشتیبان تهیه کنید.

۰ موافقین ۰ مخالفین ۰ ۰۴ مرداد ۹۲ ، ۱۶:۴۶
حامد شیخلو

در این آموزش قصد راه اندازی همتاسازی (replication) را بین دو سیستم mysql را داریم.

به بیان ساده، همتاسازی عبارت است از تکرار محتوا و فعالیت های یک پایگاه داده در سیستم های دیگر. این قابلیت در سیستم های grid و همچنین سیستم های با قابلیت HA کاربرد دارد.

ابتدا معماری شبکه که قصد راه اندازی این سرویس را داریم را باید مشخص کنیم. ما در اینجا دو سیستم که سیستم عامل centos نسخه 6 بر روی آنها نصب شده است استفاده میکنیم. این سیستم ها میتواند به صورت مجازی نیز نصب شده باشد. تنظیمات سیستم ها به صورتزیر میباشد

سیستم اصلی(master):

ip: 192.168.100.1

سیستم جایگزین(Slave):

ip: 192.168.100.2


  • مرحله اول: تنظیم سیستم اصلی

در این مرحله سرویس mysql را نصب کرده و قابلیت همتاسازی را در آن فعال میکنیم.

نصب سرویس mysql بر روی سیستم اصلی

نصب سرویس mysql به سادگی میتواند توسط دستور YUM انجام شود.

# yum install mysql-server mysql

تنظیمات MySQL در سیستم اصلی

فایل my.cfg را با یک ویرایشگر باز کنید:

# nano /etc/my.cnf

خطوط زیر را در زیر قسمت [mysqld] اضافه کنید (نام پایگاه داده مورد نظر خود را به جای database قرار دهید):

server-id = 1
binlog-do-db=database
log-bin = mysql-bin

سرویس mysql را ریستارت کنید

# /etc/init.d/mysqld restart

برای اینکه دو پایگاه در شروع یکی باشند، از پایگاه داده اصای خود یک دامپ تهیه کنید:

ابتدا به پایگاه داده خود وارد شوید:

# mysql -u root -p
mysqldump -u root -p --all-databases --master-data > /root/dbdump.db

این فایل را با حافظه فلش یا با دستور زیر به سیستم مقصد منتقل کنید:

scp /root/dbdump.db sanay_specu@192.168.100.2:/root/

به سرویس mysql خود وارد شده و تنظیمات زیر را انجام دهید:

فعال سازی قابلیت همتاسازی برای کاربر سیستم ثانیه(این کاربر، یک کاربر تنها مختص mysql بوده و نمیتواند با آن بر روی سیستم کار کرد)

مقدار slavepass را با نام کاربری مورد نظر جایگزین کنید.

مقدار slave_user را با نام کاربری مورد نظر جایگزین کنید.
مقدار 192.168.100.2 را با IP سیستم ثانویه جایگزین کنید.
GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'192.168.100.2' IDENTIFIED BY 'slavepass';
FLUSH PRIVILEGES;
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;

خروجی این مرحله به صورت زیر خواهد بود:

SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 |      320 |              |                  | 
+------------------+----------+--------------+------------------+

در این قسمت باید مقدار مشخصه File و Position را یادداشت کنیم(این مقادیر در سیستم ثانویه استفاده خواهد شد).

دستور زیر را در انتها وارد کنید و از سرویس mysql خارج شوید:

UNLOCK TABLES;
  • تنظیمات MySQL در سیستم ثانویه


فایل my.cfg را باز کنید:

# nano /etc/my.cnf

پایگاه داده ای را که در سیستم اصلی دامپ گرفته بودید را در سیستم ثانیه وارد کنید:

# mysql -u root -p < /root/dbdump.db

خط زیر را در زیر قسمت [mysqld] اضافه کنید

server-id=2

سرویس mysql را ریستارت کنید:

# /etc/init.d/mysqld restart

در نسخه های بعد از 5 سرویس mysql، تنظیمات فایل my.cfg برای تنظیمات همتاسازی در نظر گرفته نمیشود و باید با دستور GHANGE MASTER TO این عمل انجام شود.

در سرویس mysql وارد شوید و دستورات زیر را وارد کنید:

مقادیر مشخص شده را با مقادیری که در سیستم اصلی یادداشت کرده بودید جایگزین کنید:

STOP SLAVE;
CHANGE MASTER TO MASTER_HOST='192.168.100.1',
MASTER_USER='slave_user',
MASTER_PASSWORD='slavepass',
MASTER_LOG_FILE='mysql-bin.000004',
MASTER_LOG_POS=320;

همتاسازی را فعال کنید:

START SLAVE;
  • تست کارکرد

دستور زیر را در mysql وارد کنید:

SHOW SLAVE STATUS\G;

خروجی باید مشابه زیر باشد:

*************************** 1. row ***************************
             Slave_IO_State: Waiting for master to send event
                Master_Host: 192.168.100.1
                Master_User: slave_user
                Master_Port: 3306
              Connect_Retry: 60
            Master_Log_File: mysql-bin.000003
        Read_Master_Log_Pos: 320
             Relay_Log_File: mysqld-relay-bin.000003
              Relay_Log_Pos: 235
      Relay_Master_Log_File: mysql-bin.000003
           Slave_IO_Running: Yes
          Slave_SQL_Running: Yes
            Replicate_Do_DB: 
        Replicate_Ignore_DB: 
         Replicate_Do_Table: 
     Replicate_Ignore_Table: 
    Replicate_Wild_Do_Table: 
Replicate_Wild_Ignore_Table: 
                 Last_Errno: 0
                 Last_Error: 
               Skip_Counter: 0
        Exec_Master_Log_Pos: 314
            Relay_Log_Space: 235
            Until_Condition: None
             Until_Log_File: 
              Until_Log_Pos: 0
         Master_SSL_Allowed: No
         Master_SSL_CA_File: 
         Master_SSL_CA_Path: 
            Master_SSL_Cert: 
          Master_SSL_Cipher: 
             Master_SSL_Key: 
      Seconds_Behind_Master: 0

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


  • توجه

پورت 3306 را در هر دو سیستم باید باز کنید(دستورات زیر را وارد کنید):

iptables -I INPUT -p udp -m state --state NEW --dport 3306 -j ACCEPT 
iptables -I INPUT -p tcp -m state --state NEW --dport 3306 -j ACCEPT 

در هنگام تغییر فایل کانفیگ my.cfg به محل قرار دادن کدهای جدید دقت کنید. معمولا قسمت اول شامل تگ [mysqld] است. اگر در محل نامناسب قرار گیرد، سرویس mysql خطایی نخواهد داد، اما همتاسازی کار نخواهد کرد.

۰ موافقین ۱ مخالفین ۰ ۰۴ مرداد ۹۲ ، ۱۶:۳۴
حامد شیخلو