اکثر برنامه ها باید با وارد کردن داده های خاص با کاربر تعامل داشته باشند، خواه نام کامل، قد، وزن برای وارد شدن به پایگاه داده، یا ابعاد هندسی شیئی که برای آن چیزی باید محاسبه شود. همه این داده ها توسط کاربر وارد می شود - یک شخص، به این معنی که هر چیزی می تواند در پاسخ باشد. اگر کاربر به جای سنی که نیاز دارد، برنامه را با کلمات بنویسد، خروجی آن چیست؟ به احتمال زیاد، برنامه از کار می افتد یا مسدود می شود، اما نه اگر "حفاظت احمقانه" داشته باشد.
چرا ممکن است یک برنامه از کار بیفتد یا مسدود شود؟ برنامه سعی می کند مجموعه کاراکترها را به یک عدد تبدیل کند، که امکان پذیر نخواهد بود، به این معنی کار بیشتربرنامه تعریف نشده است بنابراین سازماندهی ساختار برنامه به گونه ای که هنگام ورود بسیار مهم است غیر منتظرهبرای برنامه داده (از نظر فرمت مورد نیاز نادرست است: یک عدد مورد نیاز است، اما یک کلمه وارد شده است)، برنامه خراب نشد، اما به کاربر اطلاع داد که خطایی رخ داده است و درخواست کرد که ورودی را تکرار کند. این "اثبات احمقانه" است.
اجرای احکام خطا در C
برای پیادهسازی غلطگیری خوب برای وارد کردن دادههای عددی مختلف (int، double...)، لازم است نه خود اعداد، بلکه کل رشته ورودی را بخوانید و تنها پس از آن ورودی را تجزیه و تحلیل کنید. زبان C بسیار عملکرد خوب sscanf(const char *، const char *، args)، که مشابه تابع scanf(const char *، args) کار می کند، تعداد آرگومان هایی که با موفقیت خوانده شده را برمی گرداند، فقط داده ها از آن خوانده نمی شوند. جریان استانداردورودی، اما از رشته به عنوان اولین آرگومان به آن ارسال می شود.
بیایید به چند نمونه از توابعی نگاه کنیم که بررسی احمقانه را با استفاده از تابع sscanf اجرا می کنند.
وارد کردن یک عدد صحیح با بررسی ورودی نادرست
int get_integer(const char *msg) ( char پاسخ؛ // خط برای خواندن int n؛ // عدد صحیح نهایی printf("%s"، msg)؛ // نمایش اعلان fgets(answer, sizeof(answer), stdin); // خط // را بخوانید تا زمانی که یک عدد صحیح خوانده شود while (sscanf(پاسخ، "%d"، &n) != 1) ( printf("ورودی اشتباه است. دوباره امتحان کنید:")؛ // یک پیام در مورد خطای fgets چاپ کنید (جواب، sizeof(پاسخ)، // و دوباره خط را بخوانید ) اعداد صحیح را برگردانید.برای خواندن یک عدد صحیح، الگوریتم کل رشته را می خواند و سپس سعی می کند یک عدد صحیح از آن بدست آورد. اگر این کار انجام نشد، تابع یک پیغام خطا نشان می دهد که از شما می خواهد ورودی را تکرار کنید تا مقدار صحیح صحیح وارد شود.
وارد کردن یک عدد واقعی با بررسی ورودی نادرست
double get_double(const char *msg) ( char پاسخ؛ // خط برای خواندن دو برابر x؛ // عدد واقعی نهایی printf("%s"، msg)؛ // نمایش اعلان fgets(answer, sizeof(answer), stdin) . خطای fgets(answer, sizeof(پاسخ)، // و دوباره خط را بخوانید ) عدد واقعی را برگردانید.وارد کردن یک نقطه در صفحه مختصات (ساختار با دو میدان واقعی)
// شرح ساختار داده typedef struct point_t ( double x; // x مختصات double y; // y مختصات ) point_t; point_t get_point(const char *msg) ( char پاسخ؛ // خط برای خواندن point_t point; // نقطه نهایی printf("%s"، msg)؛ // نمایش یک اعلان ورودی fgets(answer, sizeof(answer), stdin ); دوباره امتحان کنید: ")؛ // نمایش یک پیام خطا fgets(answer, sizeof(answer)، stdin); // و دوباره خط را بخوانید ) نقطه بازگشت؛ // نقطه صحیح را برگردانید)همانطور که از مثال ها مشخص است، ویژگی تابع sscanf که تعداد آرگومان های خوانده شده را برمی گرداند به شما امکان می دهد صحت داده های وارد شده را در قالب مشخص شده کنترل کنید و خواندن کل خط از این واقعیت محافظت می کند که کاراکترهای فاصله یا خط شکسته شوند. «\n» در جریان ورودی باقی میماند، که اغلب شما را مجبور به هدر دادن میکند. یافتن خطا یک ساعت یا حتی یک روز طول نمیکشد.
محافظت از سرور در برابر دسترسی خارجی یک بار برای همیشه غیرممکن است، زیرا هر روز آسیب پذیری های جدیدی کشف می شود و راه های جدیدی برای هک سرور ظاهر می شود. در این مقاله در مورد محافظت از سرورها در برابر دسترسی غیرمجاز صحبت خواهیم کرد.
سرورهای هر شرکتی دیر یا زود می توانند به هدفی برای هک یا حمله ویروس تبدیل شوند. به طور معمول، نتیجه چنین حمله ای از دست دادن داده، آسیب اعتبار یا مالی است، بنابراین مسائل امنیتی سرور باید در اولویت قرار گیرند.
باید درک کرد که محافظت در برابر هک سرور مجموعه ای از اقدامات است، از جمله نظارت مداوم بر عملکرد سرور و کار برای بهبود حفاظت. محافظت از سرور در برابر دسترسی خارجی یک بار برای همیشه غیرممکن است، زیرا هر روز آسیب پذیری های جدیدی کشف می شود و راه های جدیدی برای هک سرور ظاهر می شود.
در این مقاله در مورد محافظت از سرورها در برابر دسترسی غیرمجاز صحبت خواهیم کرد.
راه ها و روش های محافظت از سرورها در برابر دسترسی غیرمجاز
حفاظت فیزیکی سرور
حفاظت فیزیکی توصیه می شود که سرور در یک مرکز داده ایمن قرار گیرد، یک اتاق بسته و محافظت شده نباید به سرور دسترسی داشته باشد.
احراز هویت SSH را تنظیم کنید
هنگام تنظیم دسترسی به سرور، از احراز هویت کلید SSH به جای رمز عبور استفاده کنید، زیرا شکستن چنین کلیدهایی با استفاده از نیروی بی رحم بسیار دشوارتر است و گاهی اوقات به سادگی غیرممکن است.
اگر فکر می کنید که هنوز به رمز عبور نیاز دارید، حتماً تعداد تلاش برای وارد کردن آن را محدود کنید.
لطفا توجه داشته باشید که در صورت مشاهده چنین پیامی هنگام ورود به سیستم:
آخرین ورود ناموفق: سه شنبه 28 سپتامبر 12:42:35 MSK 2017 از 52.15.194.10 در ssh:notty
از آخرین ورود موفق، 8243 تلاش برای ورود ناموفق وجود داشته است.
ممکن است نشان دهنده این باشد که شخصی سعی کرده است سرور شما را هک کند. در این حالت، برای پیکربندی امنیت سرور، پورت SSH را تغییر دهید، لیست IP هایی را که دسترسی به سرور از طریق آنها امکان پذیر است را محدود کنید، یا نرم افزاری را نصب کنید که به طور خودکار فعالیت های بیش از حد مکرر و مشکوک را مسدود می کند.
به طور مرتب آخرین به روز رسانی ها را نصب کنید
برای اطمینان از محافظت از سرور، بهسرعت آخرین وصلهها و بهروزرسانیها را برای نرمافزار سروری که استفاده میکنید نصب کنید - سیستم عامل، هایپروایزر، سرور پایگاه داده.
برای جلوگیری از حملاتی که از آسیبپذیریهای روز صفر سوء استفاده میکنند، توصیه میشود که هر روز بهروزرسانیها، بهروزرسانیها و گزارشهای باگ/آسیبپذیری جدید را بررسی کنید. برای انجام این کار، مشترک اخبار شرکت توسعه نرم افزار شوید، صفحات آن را در شبکه های اجتماعی دنبال کنید.
از رمزهای عبور خود محافظت کنید
تا به حال یکی از رایج ترین راه های دسترسی به سرور، هک رمز عبور سرور است. بنابراین، توصیه های شناخته شده، اما با این وجود مرتبط را رعایت کنید تا سرور را بدون محافظت رها نکنید:
- از رمزهای عبوری که به راحتی قابل حدس زدن هستند، مانند نام شرکت خود استفاده نکنید.
- اگر همچنان از رمز عبور پیش فرض کنسول مدیر استفاده می کنید، فوراً آن را تغییر دهید.
- رمز عبور برای سرویس های مختلف باید متفاوت باشد.
- اگر نیاز به دادن رمز عبور به شخصی دارید، هرگز آدرس IP، ورود به سیستم و رمز عبور را در همان ایمیل یا پیام مسنجر ارسال نکنید.
- برای ورود به حساب سرپرست خود می توانید احراز هویت دو مرحله ای را تنظیم کنید.
دیواره آتش
- اطمینان حاصل کنید که سرور، پیکربندی شده است و همیشه در حال اجرا است.
- ترافیک ورودی و خروجی را ایمن کنید.
- پیگیری کنید که کدام پورت ها و برای چه اهدافی باز هستند، هیچ چیز غیر ضروری را باز نکنید تا از تعداد آسیب پذیری های احتمالی برای هک سرور بکاهید.
به طور خاص، فایروال برای محافظت از سرور بسیار مفید است حملات ddos، زیرا شما می توانید به سرعت قوانین فایروال منع کننده را ایجاد کنید و آدرس های IP را که از آن حمله می شود اضافه کنید، یا دسترسی به برنامه های خاص را با استفاده از پروتکل های خاص مسدود کنید.
مانیتورینگ و تشخیص نفوذ
- نرم افزار و سرویس های در حال اجرا بر روی سرور خود را محدود کنید. هر چند وقت یکبار همه چیزهایی را که در حال اجرا هستید بررسی کنید، و اگر فرآیندهایی برای شما ناآشنا بود، فوراً آنها را حذف کنید و شروع به اسکن برای ویروس کنید.
- به طور دوره ای علائم دستکاری را بررسی کنید. اطلاعات جدید ممکن است نشان دهنده هک باشد حساب هاکاربرانی که فایلی را ایجاد، انتقال یا حذف نکردهاید /etc/syslog.conf, فایل های حذف شده/etc/shadowو /etc/passwrd.
- عملکرد سرور خود را نظارت کنید، سرعت عادی آن را ببینید و توان عملیاتی، بنابراین می توانید متوجه انحرافات شوید، به عنوان مثال، زمانی که بار روی سرور به طور قابل توجهی بیشتر از حد معمول شده است.
با استفاده از رمزگذاری VPN و SSL/TLS
در صورت لزوم دسترسی از راه دوربه سرور، فقط باید از آدرس های IP خاصی مجاز باشد و از طریق VPN رخ دهد.
گام بعدی در تضمین امنیت میتواند راهاندازی SSL باشد، که به شما امکان میدهد نه تنها دادهها را رمزگذاری کنید، بلکه هویت سایر شرکتکنندگان در زیرساخت شبکه را تأیید کنید و گواهیهای مناسب را برای آنها صادر کنید.
بررسی امنیت سرور
این ایده خوبی خواهد بود که به طور مستقل امنیت سرور را با استفاده از روش پنتست بررسی کنید. مدلسازی حمله برای یافتن آسیبپذیریهای احتمالی و از بین بردن آنها به موقع. توصیه می شود متخصصان را در این امر مشارکت دهید امنیت اطلاعاتبا این حال، برخی از تست ها را می توان به طور مستقل و با استفاده از برنامه هایی برای هک سرورها انجام داد.
به جز هک چه چیز دیگری سرورها را تهدید می کند؟
یک سرور ممکن است به دلایلی غیر از هک کردن، از کار بیفتد. به عنوان مثال، این می تواند یک عفونت بدافزار یا صرفاً یک خرابی فیزیکی یکی از مؤلفه ها باشد.
بنابراین، اقدامات برای محافظت از سرور باید شامل موارد زیر باشد:
- نصب و به روز رسانی برنامه های محافظت از سرور - آنتی ویروس ها.
- حداقل یک بار در هفته کپی های رمزگذاری شده منظم داده ها را انجام دهید، زیرا طبق آمار، هارد دیسک هاسرورها در تعداد دفعات خرابی در رتبه اول قرار دارند. مطمئن شوید که نسخه پشتیباندر یک محیط امن فیزیکی ذخیره می شود.
- اطمینان از برق رسانی بدون وقفه به اتاق سرور.
- پیشگیری فیزیکی به موقع سرورها از جمله پاکسازی آنها از گرد و غبار و تعویض خمیر حرارتی.
تجربه متخصصان Integrus این را به ما می گوید بهترین محافظتدر مقابل این نوع تهدید، استفاده از بهترین شیوه ها در زمینه سیستم های حفاظت از سرور است.
برای اطمینان از امنیت سرورهای مشتریان خود، از ترکیبی از ابزارها استفاده می کنیم: فایروال ها، آنتی ویروس ها، فناوری های امنیت / مدیریت رویداد (SIM / SEM)، فناوری های تشخیص نفوذ / حفاظت (IDS / IPS)، فناوری های تجزیه و تحلیل رفتار شبکه (NBA) ، و البته سرورهای نگهداری پیشگیرانه منظم و ترتیب اتاق های سرور ایمن کلید در دست. این به شما امکان می دهد خطرات هک یا خرابی سرور به دلایل دیگر را به حداقل برسانید.
ما آماده انجام ممیزی امنیتی سرورهای شرکت شما، مشاوره با متخصصان و انجام انواع کارها برای راه اندازی حفاظت از تجهیزات سرور هستیم.