14.6. سایر ملاحظات مرتبط با امنیت
امنیت تنها یک مشکل فنی نیست؛ بیش از هر چیر، درباره رویکردهای خوب و درک از خطر است. این قسمت به بررسی برخی از خطرات متداول، همراه با برخی رویکردهای خوب، که بر اساس موضوع مورد مطالعه، امنیت را افزایش داده یا احتمال بروز حمله احتمالی را کاهش میدهند.
14.6.1. خطرات ذاتی در برنامههای تحت وب
ویژگی اصلی برنامههای تحت وب منجر به تکثیر آنها میشود. برخی از آنها اغلب به صورت موازی اجرا میشوند: ایمیل تحت وب، ویکی، برخی نرمافزارهای گروهی، انجمنها، نگارخانهای از تصاویر، وبلاگ و از این قبیل. بسیاری از این برنامهها مبتنی بر پشته “LAMP” یا Linux, Apache, MySQL, PHP هستند. متاسفانه، بسیاری از این برنامهها بدون در نظر گرفتن اصول امنیتی نوشته شدهاند. دادهای که از خارج برنامه وارد میشود، اغلب بدون کوچکترین بررسی ذخیرهسازی میگردد. فراهم کردن مقادیر ویژه میتواند به منظور خراب کردن برخی دستورات قابل اجرا بکار رود. بسیاری از مشکلات مشخص در گذر زمان برطرف شدهاند، اما مشکلات جدید امنیتی به صورت روزانه بوجود میآیند.
Updating web applications regularly is therefore a must, lest any cracker (whether a professional attacker or a “script kiddy“) can exploit a known vulnerability. The actual risk depends on the case, and ranges from data destruction to arbitrary code execution, including web site defacement.
14.6.2. انتظار چه چیزی را داشته باشیم
یک آسیبپذیری در برنامه تحت وب اغلب به عنوان نقطه آغازی برای تلاشهای خرابکارانه استفاده میشود. آنچه در ادامه میآید خلاصهای از عواقب احتمالی آن است.
The consequences of an intrusion will have various levels of obviousness depending on the motivations of the attacker. “Script-kiddies“ only apply recipes they find on web sites; most often, they deface a web page or delete data. In more subtle cases, they add invisible contents to web pages so as to improve referrals to their own sites in search engines. In others, they simply install crypto-miners and use the compromised system to fill their crypto wallets.
Another very common scenario nowadays is a ransomware attack. The attackers will encrypt the data on the machine and leave a note with instructions how to pay ransom to get the key to decrypt the data. Of course, it is not for certain that even after paying, the data can be recovered or be sure it hasn't been stolen (and sold) as well.
یک مهاجم حرفهای تر فراتر از این میرود. یک سناریو بحران میتواند در چنین موردی بکار رود: مهاجم توانایی اجرای دستورات به عنوان کاربر www-data
را بدست میآورد، اما اجرای یک دستور نیازمند بسیاری تغییرات دیگر است. برای اینکه کار خود را راحت کنند، اقدام به نصب برنامههای تحت وب دیگری مینمایند تا چنین دستوراتی را از راهدور اجرا کنند، از جمله مرور فایل سیستم، بررسی مجوزها، آپلود یا دانلود فایلها، اجرای دستورات و حتی فراهم آوردن یک پوسته در شبکه. اغلب، آسیبپذیری امکان اجرای دستور wget
را برای دانلود برخی بدافزارها درون مسیر /tmp/
فراهم میکند که پس از آن اجرا میشوند. بدافزار اغلب از یک وبسایت خارجی دانلود شده که قبل از این مورد نفوذ قرار گرفته است، به این منظور که رد پای مهاجم را پوشانده و یافتن نقطه شروع حمله را دشوار سازد.
در این نقطه، مهاجم به اندازهای آزادی دارد که میتواند یک bot از نوع IRC را نصب کند (یک ربات که به یک سرور IRC متصل شده و از طریق آن کنترل میشود). از این ربات اغلب برای اشتراکگذاری فایلهای غیرقانونی استفاده میشد (نسخههای غیرمجاز از فیلم، نرمافزار و از این قبیل). یک مهاجم قاطع شاید بخواهد بیشتر از این پیشروی کند. حساب کاربری www-data
امکان دسترسی کامل را به کل ماشین فراهم نمیکند، از این رو مهاجم تلاش میکند دسترسی سطح بالاتری را در اختیار بگیرد. اکنون، اینکار نباید ممکن باشد، اما اگر برنامه تحت وب بروز نباشد، احتمال اینکه کرنل و سایر برنامهها نیز قدیمی باشند وجود دارد؛ اینکار اغلب از تصمیم مدیر سیستم میآید، که با وجود آگاهی از آسیبپذیری، از بروزرسانی سیستم خودداری میکنند با این بهانه که هیچ کاربر محلی برای آن وجود ندارد. از این رو مهاجم با توجه به این آسیبپذیری دوم میتواند دسترسی کامل به سیستم را اخذ نماید.
Now the attacker owns the machine; they will usually try to keep this privileged access for as long as possible. This involves installing a
rootkit, a program that will replace some components of the system so that the attacker will be able to obtain the administrator privileges again at a later time (see also
نگاه سریع بستههای checksecurity و chkrootkit/rkhunter); the rootkit also tries hiding its own existence as well as any traces of the intrusion. A subverted
ps
program will omit to list some processes,
netstat
will not list some of the active connections, and so on. Using the root permissions, the attacker was able to observe the whole system, but didn't find important data; so they will try accessing other machines in the corporate network. Analyzing the administrator's account and the history files, the attacker finds what machines are routinely accessed. By replacing
sudo
or
ssh
with a subverted program, the attacker can intercept some of the administrator's passwords, which they will use on the detected servers… and the intrusion can propagate from then on.
این یک سناریوی کابوسبار است که میتواند با برخی اقدامات پیشگیری شود. قسمتهای بعدی برخی از این اقدامات را توضیح میدهند.
14.6.3. انتخاب آگاهانه نرمافزار
Once the potential security problems are known, they must be taken into account at each step of the process of deploying a service, especially when choosing the software to install. Many web sites keep a list of recently-discovered vulnerabilities, which can give an idea of a security track record before some particular software is deployed. Of course, this information must be balanced against the popularity of said software: a more widely-used program is a more tempting target, and it will be more closely scrutinized as a consequence. On the other hand, a niche program may be full of security holes that never get publicized due to a lack of interest in a security audit.
In the free software world, there is generally ample room for choice, and choosing one piece of software over another should be a decision based on the criteria that apply locally. More features imply an increased risk of a vulnerability hiding in the code; picking the most advanced program for a task may actually be counter-productive, and a better approach is usually to pick the simplest program that meets the requirements.
14.6.4. مدیریت یک ماشین به صورت کلی
اکثر توزیعهای لینوکس به صورت پیشفرض چندین سرویس یونیکس و ابزارهای مرتبط با آن را نصب میکنند. در بسیاری از موارد، این سرویسها و ابزارها با هدف اولیه مدیر سیستم از برپایی ماشین همخوانی ندارند. به عنوان یک توصیه عمومی در بحث امنیت، بهتر است که نرمافزارهای اضافی را حذف کرد. در حقیقت، در صورت وجود آسیبپذیری در یک سرویس غیرکاربری دیگر که میتواند به منظور دسترسی به کل سیستم استفاده شود، دلیلی برای ایمنسازی سرور FTP وجود ندارد.
به همین دلیل، فایروال اغب طوری پیکربندی میشود که تنها به سرویسهای عمومی اجازه ارسال ترافیک داده شود.
رایانههای امروزی به اندازهای قدرتمند هستند که اجازه میزبانی از چندین سرویس روی یک ماشین فیزیکی را فراهم میکنند. از نقطه نظر اقتصادی نیز چنین امکانی جالب است: تنها یک رایانه برای مدیریت، مصرف پایین انرژی و از این قبیل. از نقطه نظر امنیتی، اگرچه چنین انتخابی میتواند مشکل آفرین باشد. یک سرویس نفوذپذیر میتواند امنیت کل ماشین را به خطر اندازد، که منجر به نفوذپذیری سایر سرویسهای میزبانی شده روی ماشین میگردد. این خطر میتواند با ایزولهکردن سرویسها کاهش یابد. اینکار میتواند با استفاده از مجازیسازی (میزبانی از هر سرویس درون یک ماشین مجازی یا نگهدارنده) یا ترکیب AppArmor/SELinux (هر فرآیند پسزمینه از سرویس به صورت مجموعهای جداگانه از مجوزها) انجام شود.
14.6.5. کاربران به عنوان بازیکنان اصلی
بحث و گفتگو درباره امنیت این ایده را متصور میشود که باید در مقابل خرابکاران ناشناس که در اینترنت پراکنده شدهاند، محافظت بعمل آورد؛ اما حقیقتی که کمتر به آن توجه میشود خطراتی است که از داخل مجموعه نشات میگیرند: یک کارمند که در آستانه خروج از شرکت قرار دارد میتواند با دانلود پروژههای حساس آنها را به رقیبان شرکت بفروشد، یک مدیر فروش بیتوجه میتواند میزکار خود را در یک جلسه با افراد خارج از شرکت باز نگه دارد، یک کاربر دست و پا چلفتی میتواند به اشتباه یک دایرکتوری از فایلها را پاک کند و مواردی از این قبیل.
پاسخ به این خطرات میتواند شامل راهکارهای فنی باشد: به هیچ کاربری نباید بیش از اندازه نیازش مجوز دسترسی داد و نگهداری از فایلهای پشتیبان یک ضرورت به حساب میآیند. اما در بسیاری موارد، محافظت در برار این خطرات با آموزش کاربران صورت میگیرد.
اگر از خود رایانهها به صورت فیزیکی محافظت نگردد، دلیلی برای ایمنسازی سرویسها و شبکهها وجود ندارد. دادههای مهم سزاوار این هستند که در هارد دیسکهای how-swappable و به صورت آرایههای RAID ذخیرهسازی شوند، چرا که هارد دیسکهای معمولی در گذر زمان معبوب شده و موجودیت داده امری بسیار حیاتی است. اما اگر قرار باشد هر فردی بتواند وارد ساختمان شده، به اتاق سرور برود و با چندین هارد دیسک خارج گردد، قسمت مهمی از امنیت برقرار نشده است. چه کسی میتواند وارد اتاق سرور شود؟ آیا این دسترسی مانیتور میشود؟ زمانی که امنیت فیزیکی مورد بررسی و تحلیل قرار میگیرد، این پرسشها باید مطرح شده و پاسخ داده شوند.
امنیت فیزیکی همچنین شامل در نظر گرفتن خطراتی از قبیل آتشسوزی نیز میباشد. این خطر مشخص لزوم نگهداری رسانه پشتیبان در یک ساختمان دیگر را نشان میدهد، یا حداقل در یک صندوقچه ضد-آتش.
یک مدیر سیستم، کم و بیش، مورد اعتماد کاربران سیستم و کاربران شبکه به صورت عمومیتر قرار میگیرد. آنها باید از هرگونه غفلت که ممکن است افراد بدخواه مورد استفاده قرار دهند، پیشگیری کنند.
An attacker taking control of your machine then using it as a forward base (known as a “relay system”) from which to perform other nefarious activities could cause legal trouble for you, since the attacked party would initially see the attack coming from your system, and therefore consider you as the attacker (or as an accomplice). In many cases, the attacker will use your server as a relay to send spam, which shouldn't have much impact (except potentially registration on black lists that could restrict your ability to send legitimate emails), but won't be pleasant, nevertheless. In other cases, more important trouble can be caused from your machine, for instance, denial of service attacks. This will sometimes induce loss of revenue, since the legitimate services will be unavailable and data can be destroyed; sometimes this will also imply a real cost, because the attacked party can start legal proceedings against you. Rights-holders can sue you if an unauthorized copy of a work protected by copyright law is shared from your server, as well as other companies compelled by service level agreements if they are bound to pay penalties following the attack from your machine.
زمانی که این اتفاقات میافتد، بیگناه جلوه دادن خود کافی نیست؛ حداقل باید ثابت کنید که مجموعه فعالیتهای مشکوکی از یک نشانی IP دیگر در سیستم شما انجام میشده است. اگر از توصیههای مطرح شده در این فصل چشمپوشی کرده باشید و به مهاجم اجازه ورود به سیستم و دسترسی به حساب کاربری مدیر (root در این مورد) را بدهید تا بتواند ردپای خود را بپوشاند، اینکار دیگر لزومی ندارد.