پروتکل SSH ، برنامه اصلی و تفاوت با Telnet. پروتکل شبکه SSH امن ، اساسی

SSH (پوسته امن- پوسته محافظت شده) یک پروتکل شبکه است که با رمزگذاری ترافیک عبوری از آن و فشرده سازی احتمالی اطلاعات ، احراز هویت ، اتصال و انتقال امن داده بین میزبان شبکه را فراهم می کند. یکی دیگر از ویژگیهای مهم عملکرد ، ایجاد تونلهای رمزنگاری شده و ایمن برای انتقال امن در محیط ناامن (به عنوان مثال اینترنت) ، سایر پروتکلهای شبکه و همچنین قابلیت فشرده سازی ترافیک است. علاوه بر این ، پروتکل SSHبا حمل و نقل (حمل و نقل ، حمل و نقل) پورت های یک دستگاه به پورت های دیگر ، از جمله حمل و نقل مشتریان از راه دور ، عالی عمل می کند XWindow... حالا پروتکل SSH، یک استاندارد است و به طور گسترده ای مورد استفاده قرار می گیرد ، به عنوان مثال ، برای سیستم های سرور ، یعنی اجرای دستورات و دستکاری های مختلف در پوسته سرور از طریق اتصال امن ، کپی فایل ها در شبکه ، مانند پشتیبان گیری از داده ها.

پروتکل SSH، در دو نسخه وجود دارد ، نسخه تجاری توسعه یافته توسط SSH inc و رایگان ، منبع باز ، OpenSSHکه عمدتا در اکثر سیستم عامل های سرور استفاده می شود. پیاده سازی OpenSSH، در هر سیستم عامل خانواده یونیکس موجود است و در اکثر آنها ، SSHسرور و SSHمشتری نرم افزارهای استاندارد هستند. هر چیزی که در زیر نوشته شده است مربوط خواهد شد OpenSSHو سیستم عامل FreeBSD. دو نسخه از پروتکل وجود دارد SSHبا یکدیگر سازگار نیست اولین اجرای پروتکل SSH, SSH - 1، در سال 1995 توسعه یافت. نسخه دوم ، SSH - 2، در سال 1996 منتشر شد. در سال 2006 ، پروتکل SSHتوسط IETF به عنوان استاندارد اینترنت پذیرفته شد. اکنون این نسخه دوم پروتکل است که بسیار مورد استفاده قرار می گیرد. SSHزیرا اولا پروتکل SSHنسخه 1 ، از آسیب پذیری های جدی رنج می برد ، ثانیاً ، نسخه 2 از الگوریتم های رمزگذاری قوی تری استفاده می کند ، علاوه بر این ، از توانایی تشخیص خرابی عمدی داده ها پشتیبانی می کند. الگوریتم های رمزگذاری:

  • پروتکل SSH نسخه 1 DES، 3DES، blowfish
  • پروتکل SSH نسخه 2 AES-128 ، AES-192 ، AES-256 ، blowfish ، CAST-128 ، ArcFour
عملکرد هضم:
  • پروتکل SSH نسخه 1 شماره
  • پروتکل SSH نسخه 2 HMAC-MD5 ، HMAC-SHA-1 ، HMAC-RIPEMD
همانطور که می بینید ، تفاوت بسیار زیاد است ، بنابراین پروتکل SSHنسخه ها 1 ، در حال حاضر به طور کلی ، اکیداً برای استفاده در هر کجا توصیه نمی شود.

روشهای احراز هویت SSH ، بسته نرم افزاری OpenSSH

امنیت پروتکل SSHارائه شده توسط راه حل های نرم افزاری زیر:
  • رمزگذاری تمام ترافیک عبوری SSHارتباطی که مطابق یکی از الگوریتم های احتمالی انجام شده در حین مذاکره طرفین جلسه ارتباط انجام می شود. رمزگذاری ترافیک اتصال از رهگیری و استفاده از آن برای اهداف مخرب جلوگیری می کند. با انتخاب الگوریتم های رمزنگاری مختلف ، سیستم بسیار انعطاف پذیر می شود ، به عنوان مثال ، از الگوریتم هایی که آسیب پذیری یا تهدیدات احتمالی امنیتی در آنها وجود دارد استفاده نکند ، یا فقط از الگوریتم هایی استفاده کند که توسط هر یک از طرفین پشتیبانی می شود.
  • احراز هویت SSHسرور همیشه با هر گونه اتصال انجام می شود ، که اجازه نمی دهد ترافیک یا خود سرور جایگزین شود.
  • احراز هویت SSHمشتری ممکن است رخ دهد روش های مختلف، که از یک سو ، فرآیند احراز هویت را ایمن تر می کند ، از سوی دیگر ، سیستم را حتی بیشتر انعطاف پذیر می کند و کار با آن را آسان تر می کند.
  • کنترل یکپارچگی بسته های شبکه ، امکان ردیابی تغییرات غیرقانونی در ترافیک اتصال را ممکن می سازد ، در صورت تشخیص این واقعیت ، اتصال بلافاصله قطع می شود.
  • پارامترهای احراز هویت موقت از استفاده از داده های ارتباطی رهگیری شده و پس از مدتی رمزگشایی شده جلوگیری می کند.
پروتکل SSHاز انواع روشهای احراز هویت و مجوز برای مشتریان از راه دور پشتیبانی می کند SSHسرور ، در اینجا برخی از آنها وجود دارد:
  • مبتنی بر GSSAPIاحراز هویت
  • مبتنی بر میزباناحراز هویت؛
  • احراز هویت کاربر با استفاده از کلید عمومی ؛
  • احراز هویت چالش-پاسخ ( چالش-پاسخ);
  • و در نهایت ، احراز هویت معمول کاربر ، با استفاده از رمز عبور ؛
روشهای احراز هویت به این ترتیب استفاده می شود ، اما نسخه پروتکل 2 گزینه ای دارد ، احراز هویت های ترجیحی، به شما امکان می دهد ترتیب پیش فرض را تغییر دهید. علاوه بر این ، SSH بسته به سیستم عامل خاص (به عنوان مثال bsd_auth یا PAM) از روشهای اضافی احراز هویت کاربر پشتیبانی می کند. به طور کلی ، احراز هویت کاربر بر اساس کلیدهای عمومی است. مشتری در تلاش برای نصب ریموت SSHاتصال ، داده ها را با کلید سرور عمومی شناخته شده برای او رمزگذاری می کند ، که اولین بار هنگام اتصال به سرور دریافت می کند ، و آن را به SSHسرور سرور نیز به نوبه خود داده هایی را که فقط برایش شناخته شده است با یک کلید مخفی رمزگشایی کرده و برای کلاینت ارسال می کند. در چنین طرحی ، مشتری می تواند مطمئن باشد که سرور همان کسی است که ادعا می کند. بنابراین لازم نیست به آن تکیه کنید DNSو مسیریابی حتی اگر مهاجم موفق به جعل ورودی شود DNSیا بسته ها را به میزبان خود هدایت کنید ، احراز هویت با شکست مواجه می شود ، زیرا میزبان خارجی کلیدهای لازم برای این کار را ندارد. زیرا SSHاین یک پروتکل شبکه کامل است ، البته ، این مجموعه خاصی از برنامه ها است که برای عملکرد آن ضروری است ، هم عملکرد اصلی و هم انواع مختلف فرصت های اضافی... از آنجا که ما در مورد سیستم عامل FreeBSD صحبت می کنیم (در نسخه های دیگر یونیکس ، مجموعه ممکن است کمی متفاوت باشد) ، اجزای اصلی SSHهستند:
  • sshdدر واقع است SSHسرور ، برنامه daemon ؛
  • ssh- یک برنامه مشتری که جایگزین آن شده است rloginو تلنت;
  • scp- برنامه ای برای کپی از راه دور از طریق پروتکل SSH، جایگزین برای rcp;
  • sftp- مشتری ftp امن ؛
  • sftp-server- یک سیستم فرعی که انتقال فایل را از طریق پروتکل ارائه می دهد SSH;
  • ssh-keygen- مولد کلید
  • ssh-keyscan- "جمع کننده" کلیدهای میزبان عمومی ؛
  • ssh-agent- نماینده احراز هویت برای نگهداری کلیدهای خصوصی ؛
  • ssh-add- یک برنامه کوچک برای افزودن کلیدها به ssh-agent;
همانطور که اشاره شد، sshd، این برنامه مسئول عملکرد سرور است SSH، با بوت شدن سیستم عامل شروع می شود. برای استفاده از پروتکل SSHبلافاصله پس از نصب FreeBSD ، باید دیمون را برای شروع فعال کنید sshdدر برنامه نصب Sysinstall... اگرچه این کار بعداً امکان پذیر است ، به شرطی که به ترمینال سرور دسترسی داشته باشید. اجازه دهید دیمون شروع به کار کند sshd، می توانید از طریق اسکریپت شروع /etc/rc.conf ،با نوشتن خط زیر: به طور طبیعی ، شما نمی توانید این کار را انجام دهید ، بلکه فقط دایمون را از کنسول شروع کنید / usr / sbin / sshd، اما در راه اندازی مجدد بعدی ، دسترسی به سرور با استفاده از پروتکل به ترتیب شروع نمی شود SSHشما آن را ندارید ، اما اگر سرور در مرکز داده ارائه دهنده میزبانی قرار دارد ، نمی توانید آن را از راه دور مدیریت کنید. به همین دلیل ، اگر قصد مدیریت سرور از راه دور را دارید ، sshdدر مرحله نصب شامل می شود.

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

SSH
نام پوسته امن
سطح (مدل OSI) کاربردی
خانواده TCP / IP
بندر / شناسه 22 / TCP
هدف پروتکل دسترسی از راه دور
مشخصات RFC 4251
پیاده سازی های اصلی (مشتریان)
  1. احراز هویت رمز عبور رایج ترین است. با هر اتصال ، مانند https ، یک کلید مخفی مشترک برای رمزگذاری ترافیک ایجاد می شود.
  2. برای احراز هویت جفت کلید ، یک جفت کلید عمومی و خصوصی برای کاربر خاصی از قبل ایجاد می شود. دستگاهی که می خواهید با آن متصل شوید ذخیره می شود کلید خصوصیو روی دستگاه از راه دور باز کنید. این پرونده ها در هنگام احراز هویت منتقل نمی شوند ، سیستم فقط تأیید می کند که صاحب کلید عمومی نیز مالک کلید خصوصی است. با این رویکرد ، به عنوان یک قاعده ، ورود خودکار به نمایندگی از یک کاربر خاص در سیستم عامل پیکربندی می شود.
  3. احراز هویت توسط آدرس IP ناامن است ؛ این ویژگی اغلب غیرفعال است.

الگوریتم Diffie-Hellman (DH) برای ایجاد یک راز مشترک (کلید جلسه) استفاده می شود. برای رمزگذاری داده های منتقل شده ، از رمزگذاری متقارن ، الگوریتم های AES ، Blowfish یا 3DES استفاده می شود. یکپارچگی انتقال داده ها با استفاده از CRC32 در SSH1 یا HMAC -SHA1 / HMAC -MD5 در SSH2 بررسی می شود.

داده های رمزگذاری شده را می توان با استفاده از الگوریتم LempelZiv (LZ77) فشرده کرد که همان سطح فشرده سازی را با آرشیو ZIP ارائه می دهد. فشرده سازی SSH فقط به درخواست مشتری فعال می شود و به ندرت در عمل استفاده می شود.

استانداردها و پیاده سازی نرم افزار

اولین نسخه پروتکل ، SSH-1 ، در سال 1995 توسط محقق Tatu Ulönen از دانشگاه فناوری هلسینکی (فنلاند) توسعه یافت. SSH-1 برای ارائه حریم خصوصی بیشتر از پروتکل های rlogin ، telnet و rsh نوشته شده است. در سال 1996 ، نسخه امن تری از پروتکل ، SSH-2 ، توسعه یافت که با SSH-1 ناسازگار بود. این پروتکل از محبوبیت بیشتری برخوردار شد و تا سال 2000 حدود دو میلیون کاربر داشت. در حال حاضر ، اصطلاح "SSH" معمولاً دقیقاً به معنی SSH-2 است ، زیرا اولین نسخه پروتکل ، به دلیل کمبودهای قابل توجه ، عملاً استفاده نمی شود.

ماژول هایی برای استفاده از SSH در پایتون وجود دارد مانند python-paramiko و python-twisted-conch.

تونل زنی SSH

تونل SSH تونلی است که از طریق اتصال SSH ایجاد شده و برای رمزگذاری داده های تونل شده استفاده می شود. از آن برای ایمن سازی انتقال داده در اینترنت استفاده می شود (IPsec نیز هدف مشابهی دارد). هنگامی که از طریق یک تونل SSH ارسال می شود ، ترافیک رمزگذاری نشده هر پروتکل در یک سر اتصال SSH رمزگذاری شده و در سر دیگر رمزگشایی می شود.

پیاده سازی عملی را می توان به چند روش انجام داد:

  • ایجاد پروکسی Socks برای برنامه هایی که نمی توانند از طریق تونل SSH کار کنند ، اما می توانند از طریق پروکسی Socks کار کنند
  • استفاده از برنامه هایی که می توانند از طریق یک تونل SSH کار کنند.
  • ایجاد تونل VPN ، تقریباً برای هر برنامه ای مناسب است.
  • اگر برنامه با یک سرور خاص کار می کند ، می توانید سرویس گیرنده SSH را طوری پیکربندی کنید که به اتصالات TCP از طریق تونل SSH اجازه دهد به یک درگاه TCP خاص از دستگاه برسند که سرویس گیرنده SSH روی آن کار می کند. به عنوان مثال ، کلاینت های Jabber به طور پیش فرض در درگاه 443 متصل می شوند. سپس ، برای ایجاد اتصال به سرور Jabber از طریق یک تونل SSH ، سرویس گیرنده SSH پیکربندی شده است تا اتصالات را از هر پورت ماشین محلی تغییر مسیر دهد (به عنوان مثال ، از پورت 4430 ) به یک سرور از راه دور (به عنوان مثال ، jabber .example.com و پورت 443):

$ ssh -L 4430: jabber.example.com: 443 somehost

V این موردکلاینت Jabber طوری پیکربندی شده است که به پورت 4430 سرور localhost متصل شود (در صورتی که سرویس گیرنده ssh بر روی دستگاه مشابه سرویس گیرنده Jabber اجرا می شود).

برای ایجاد یک تونل ssh ، به یک ماشین با سرور ssh در حال اجرا و دسترسی به jabber.example.com نیاز دارید. اگر دسترسی به jabber.example.com از دستگاه محلی توسط یک فایروال بسته شود ، اما دسترسی به برخی از سرور ssh که هیچ محدودیتی برای دسترسی به اینترنت ندارند ، می تواند مورد استفاده قرار گیرد.

SSH (Secure Shell) یک پروتکل شبکه است دسترسی از راه دورکه از رمزگذاری و فشرده سازی برای داده های منتقل شده استفاده می کند. به زبان ساده ، این یک ابزار بسیار مفید و قدرتمند است که به شما امکان می دهد در سیستم احراز هویت کنید و به طور کامل از طرف کاربر محلیفاصله زیاد با دستگاه در حال اجرا همچنین ، برخلاف telnet و rsh - SSH تمام ترافیک را رمزگذاری می کند تا تمام اطلاعات منتقل شده محرمانه بماند.

بنابراین ، ما در حال حاضر ssh را نصب کرده ایم و ssh-daemon هنگام راه اندازی سیستم به راه اندازی اضافه می شود. می توانید آن را با فرمان کنترل کنید:

سرویس ssh stop | شروع | راه اندازی مجدد

در اوبونتو ، یا:

/etc/init.d/ssh (شروع | توقف | بارگذاری مجدد | نیروی مجدد | راه اندازی مجدد | وضعیت)

در دبیان ، یا:

systemctl start | stop | راه اندازی مجدد sshd.service

در ArchLinux (پس از هر ویرایش پیکربندی ، باید راه اندازی مجدد کنید). این کیت شامل یک سرویس گیرنده و یک سرور است.

بیایید آن را در عمل امتحان کنیم! ابتدا یک پوشه ایجاد کنید ~ / .ssh

mkdir ~ / .ssh

ایجاد کلید برای کاربر داده شدهسرور با دستور:

ssh-keygen (به عنوان یک کاربر معمولی).

هنگام ایجاد ، می توانید یک رمز عبور برای کلید تنظیم کنید (توصیه می شود که یک کلمه طولانی تنظیم کنید - حتی اگر کلید را بدست آورید اما رمز عبور را از کلید ندانید ، مهاجم نمی تواند وارد سیستم شود) ، یا می توانید به سادگی با فشار دادن "Enter" آن را رد کنید - در این مورد ، رمز عبور هرگز پرسیده نمی شود. همان کلیدهای عمومی و خصوصی در پوشه ~ / .ssh ظاهر شد.

یک دستگاه دیگر پیدا کنید (حتی یک تلفن هوشمند نیز انجام می دهد - برخی از کلاینت های SSH عالی در Android وجود دارد ، مانند ConnectBot یا JuiceSSH) ، ssh را روی آن نصب کنید و با فرمان به سرور متصل شوید:

ssh [ایمیل محافظت شده]

اگر همه چیز به درستی انجام شود ، از شما رمز عبور کاربر خواسته می شود ، و پس از ورود به سیستم خود را با نمای از خط فرمان مشاهده خواهید کرد.

برای ویندوز ، به هر حال ، سرورها و سرویس گیرندگان ssh نیز وجود دارد.

پس از لذت بردن از نتیجه تلاش های خود ، بیایید به قسمت خسته کننده تر - راه اندازی سرویس گیرنده / سرور ادامه دهیم.

پیکربندی سمت سرویس گیرنده وارد است / etc / ssh / ssh_config، و سرور یکی - / etc / ssh / sshd_config... اکثر راهنمایی کاملبرای پیکربندی ، احتمالاً صفحه ای در man - man ssh و man sshd_config وجود دارد ، بنابراین توصیه می کنیم آن را بخوانید. و در این مقاله ضروری ترین موارد را در نظر خواهیم گرفت.

سفارشی سازی

پورت ssh استاندارد 22 است. می توان آن را به هر نوع غیر استاندارد تغییر داد (هک را به دلیل امنیت در ابهام سخت تر می کند یا توجه مهاجمان احتمالی را به خود جلب می کند) - برای انجام این کار ، خط زیر را کامنت نکنید:

#بندر 22

و هر چیزی را که می خواهید تا 65535 اضافه کنید (مطمئن شوید که پورت با دستور دیگر با سرویس های دیگر در تضاد نیست #netstat -tupln | grep LISTEN).

اکنون ، هنگام اتصال به سرور ، مشتری باید با کلید بنویسد:

ssh -p [port]:

به طور پیش فرض ، دسترسی ریشه مجاز است. بسیار توصیه می شود که آن را محدود کنید (و در عوض به درستی حقوق کاربر محلی را با استفاده از sudo محدود کنید). برای انجام این کار ، خط "PermitRootLogin" را پیدا کرده و مقدار را به "نه" تغییر دهید. همچنین می توانید آن را به "بدون گذرواژه" تغییر دهید - در این حالت ، ورود به سیستم root فقط از زیر ماشین هایی با کلید قابل اعتماد مجاز خواهد بود.

می توانید احراز هویت گذرواژه را غیرفعال کنید و فقط با کلیدها کار کنید - خط را پیدا کنید: "PasswordAuthentication" و مقدار را به "no" تغییر دهید. برای چی؟ اگر کسی واقعاً می خواهد به سیستم شما دسترسی پیدا کند ، می تواند هنگام تلاش برای تأیید مجوز گذرواژه را به زور اعمال کند ، یا ارتباط شما را بشنود و رمزگشایی کند. اگر احراز هویت گذرواژه را غیرفعال کنید و کلید عمومی لپ تاپ محل کار خود را ، به عنوان مثال ، لپ تاپ محل کار خود ، به ~ / .ssh / author_keys اضافه کنید ، همانطور که به خاطر داریم ، بلافاصله به سرور مجاز می شویم. اما اگر در حال کار بر روی دستگاه شخص دیگری هستید و نیاز فوری به دسترسی به سرور ssh دارید ، اما همانطور که انتظار می رفت ، ما را وارد نخواهد کرد؟ سپس نمی توانید احراز هویت رمز عبور را غیرفعال کنید ، اما از ابزار fail2ban استفاده کنید. کافی است آن را از مخزن خود نصب کنید ، پس از آن تنظیمات پیش فرض را اعمال می کند و حداقل از کانال ssh خود در برابر حملات brute force محافظت می کند. اطلاعات بیشتر در مورد fail2ban - http://putty.org.ru/articles/fail2ban-ssh.html.

در صورت ذخیره کلیدهای پرتاب موشک های هسته ای در سرور شما ، می توانید کاری شبیه به این انجام دهید:

PermitRootLogin no - ورود به سیستم زیر ریشه ممنوع است.

PasswordAuthentication no - بدون گذرواژه وارد شوید

بیایید یک کلید طولانی در دستگاه راه دور ایجاد کنیم (-t encryption_type، -b bit length):

ssh -keygen -t rsa -b 4096

با یک عبارت عبور یکسان پیچیده (بازیابی رمز عبور را فراموش کرده اید، به هر حال ، شما نمی توانید. شما می توانید آن را با دستور "ssh -keygen -p" تغییر دهید ، اما به هر حال دستور قبلی از شما خواسته می شود). اجازه دهید کلید عمومی دستگاه محلی از راه دور را به ~ / .ssh / author_keys در سرور و voila منتقل کنیم - در حال حاضر دسترسی از طریق یک دستگاه واحد با استفاده از عبارت عبور کلید خصوصی امکان پذیر است. SSH به شما امکان می دهد تنظیمات امنیتی زیادی را تنظیم کنید و تنظیمات خاصی برای این کار دارد - در مورد آنها در انسان بخوانید.

دو گزینه sshd_config یک هدف را دنبال می کنند:

LoginGraceTime- زمانی را تنظیم می کند که در صورت عدم احراز هویت ، اتصال قطع می شود.

MaxAuthTries- تعداد تلاشهای نادرست برای ورود به سیستم را تعیین می کند ، پس از رسیدن به آن اتصال قطع می شود.

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

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

AllowUsers user1- فقط به user1 اجازه ورود دهید.

DenyUsers user1- اجازه همه به جز user1.

و پارامترهای مشابه برای دسترسی گروه های خاص- AllowGroups و DenyGroups.

همچنین می توانید یک جلسه X11 را از طریق SSH ارسال کنید. برای انجام این کار ، خط "ForwardX11" را پیدا کرده و مقدار را به "بله" تغییر دهید.

یک خط مشابه در پیکربندی مشتری پیدا کنید - / etc / ssh / ssh_config ، و همچنین به "بله" تغییر دهید.

اکنون باید از طریق ssh با آرگومان -X به سرور متصل شوید:

ssh -X [ایمیل محافظت شده]>

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

ssh -X [ایمیل محافظت شده]"کاربرد"

ظاهر GIMP در جلسه ssh به این شکل است:

یا می توانید خروجی را از وب کم لپ تاپ یک کاربر مشکوک دریافت کنید :)

محاسبات مستقیماً بر روی سرور انجام می شود و خروجی به ماشین سرویس گیرنده ارسال می شود (یعنی حتی اگر سرور خود X11 نداشته باشد ، برنامه های گرافیکی را می توان روی دستگاه راه دور شما ارائه داد). این طرح نسبتاً کند عمل می کند (فراموش نکنید که تمام ترافیک به صورت پویا رمزگذاری شده است) - اما این عملکرد بسیار مفید است.

همچنین می توانید فایل ها را در یک جلسه SSH کپی کنید - یک ابزار ساده "scp" برای این کار وجود دارد. می توانید فایل ها را مستقیماً در جلسه از سرور به سرویس گیرنده منتقل کنید:

scp [ایمیل محافظت شده]: / path / to / file / on / server / where / save / on / local / machine

بنابراین از مشتری به سرور:

مسیر scp / به / file / client [ایمیل محافظت شده]: / path / on / server

اگر شما نیاز به کپی کردن کتاب درسی یا عکس دارید ، این بسیار راحت است ، اما وقتی مجبور به کار با فایل های زیادی هستید چطور؟ یک چیز بسیار مناسب برای این وجود دارد - sshfs (برای نصب در مخازن اکثر سیستم های * nix موجود است).

فقط مسیر را مانند scp تنظیم کنید:

sshfs [ایمیل محافظت شده]: / خانه / کاربر / mnt /

و پوشه سرور / خانه / کاربر در نقطه نصب / mnt دستگاه محلی ظاهر می شود!

پیاده سازی از طریق umount انجام می شود.

و در نهایت ، اجازه دهید در مورد یک ویژگی کمی شناخته شده صحبت کنیم. در صورت ایجاد فایل /.ssh/configو آن را به این صورت پر کنید:

میزبان [نام]

نام میزبان

کاربر [نام کاربری سرور]

گزینه های دلخواه

پسندیدن

ForwardX11 بله

پورت 30000

سپس می توانیم وارد سیستم شویم:

ssh [نام]

ssh -X -p 30000 [ایمیل محافظت شده]

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

خوب ، ما همه چیز (و حتی بیشتر) را که باید در مورد SSH برای استفاده روزمره بدانید پوشش دادیم - ما نحوه استفاده از احراز هویت کلیدی را یاد گرفتیم ، سرور را از حملات بی رحمانه محافظت کردیم و به طور کلی اکثر حفره های احتمالی را وصله کردیم. در حقیقت ، SSH می تواند کارهای دیگر زیادی انجام دهد - به عنوان مثال ، تونل زنی و ارسال پورت از طریق یک جلسه ssh ، اما بعید است که شما به عنوان یک کاربر معمولی هرگز از این استفاده کنید. منابع اضافی

معرفی

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

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

محافظت از برنامه سرور

هرکسی که با یونیکس آشنا باشد متوجه می شود که تقریباً هر کسی برنامه شبکهمی تواند هم به عنوان مشتری و هم به عنوان سرور استفاده شود. در حالت اول ، شما از خدمات استفاده می کنید ، در حالت دوم ، آنها را ارائه می دهید. واضح است که هر دو بخش در یک سرویس شبکه مورد نیاز است. س isال این است که چه نوع برنامه های سروری در سرور شبکه شما مورد نیاز است. هنگام نصب لینوکس ، البته می توانید حداقل همه چیز را انتخاب کنید ، زیرا نصب بر روی دیسک به این معنی نیست که هنوز شروع به کار کنید. اما کدام را بعداً فعال کنید؟ یک دستور ساده وجود دارد که من خودم همیشه هنگام کار با سرورها به آن پایبندم - هرچه سرورهای فعال شده کمتر باشد ، بهتر است (به طور کلی: هرچه چیزی پیچیده تر باشد ، شکستن آن آسان تر است). مهم نیست که چقدر در مورد قابلیت اطمینان UNIX صحبت می کنید ، سوراخ ها به طور مرتب در اینجا کشف و تعمیر می شوند. بنابراین ، هرچه برنامه های کمتری اجرا کنید ، کمتر به نظارت بر آنها نیاز خواهید داشت. البته در زندگی واقعی ، این امر نباید به این واقعیت خلاصه شود که کاربران را از همه چیز به معنای واقعی کلمه منع می کنید. البته ایمن است ، اما چرا باید با یک مدیر زحمت بکشید؟ با این حال ، موارد غیر ضروری ، مانند کمر ، مطمئناً نباید قرار داده شود.

Telnet و ssh

اکنون اجازه دهید نگاهی دقیق تر به آنچه کاربران داخلی و خارجی واقعاً به آن نیاز دارند ، بیندازیم. ما به Telnet و ssh (پوسته امن) نیاز داریم. شاید این دسترسی چندان مناسب نباشد ، اما حداقل برای مدیران ضروری است. این یک برنامه است که دسترسی را در حالت ترمینال ، هنگامی که یک پنجره 80x25 کاراکتری در رایانه شما ظاهر می شود ، فراهم می کند و سرور فراخوانده شده را کاملاً منعکس می کند. می توانید هر فرمانی را اجرا کرده و برنامه هایی را اجرا کنید که از گرافیک استفاده نمی کنند - به طور کلی ، این ترمینال از راه دور معمولی است. تفاوت بین telnet و ssh از نام ها ناشی می شود ، اما باز هم اجازه دهید توضیح دهیم: Telnet اطلاعات را بدون محافظت منتقل می کند ، حتی رمز عبور بر روی شبکه به صورت واضح منتقل می شود و ssh تمام اطلاعات ارسال شده را رمزگذاری می کند. اگر می خواهید کم و بیش در حفاظت اطمینان داشته باشید ، استفاده از telnet را غیرفعال کنید یا آن را به هیچ عنوان راه اندازی نکنید. خوب ، اگر هنوز می خواهید از آن استفاده کنید ، مطمئناً باید از فایروال استفاده کنید. دستورات استاندارد می تواند به شرح زیر باشد:

برای ipfwadm -

Ipfwadm -I -a قبول -P tcp -S 10.0.0.0/8 -D 0.0.0.0/0 23 ipfwadm -I -a قبول -P tcp -S some.trusted.host -D 0.0.0.0/0 23 ipfwadm - من -a انکار -P tcp -S 0.0.0.0/0 -D 0.0.0.0/0 23

برای ipchains -

ipchains -A ورودی -p all -j ACCEPT -s 10.0.0.0/8 -d 0.0.0.0/0 23

Ipchains -A ورودی -p all -j ACCEPT -s some.trusted.host -d 0.0.0.0/0 23 ipchains -A ورودی -p all -j DENY -s 0.0.0.0/0 -d 0.0.0.0/0 23

همچنین می توانید از فایلهای /etc/hosts.allow و /etc/hosts.deny استفاده کنید ، که به ترتیب باید برای آنها بنویسید:

در اولین فایل -

In.telnetd: 10.0.0.0/255.0.0.0 ، some.trusted.host

در فایل دوم -

In.telnetd: ALL

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

دو فایل مهم دیگر با اطلاعات مربوط به امنیت سیستم عبارتند از / etc / securetty و / etc / shells. اول ترمینال هایی را مشخص می کند که کاربر اصلی می تواند از آنها وارد سیستم شود. در اکثر سیستم ها ، به طور پیش فرض ، کاربر ریشه فقط می تواند از طریق کنسول وارد سیستم شود. فایل دوم لیستی از بسته بندی های معتبر را مشخص می کند که می توانند هنگام ورود کاربر به سیستم اجرا شوند. یک مثال خوب که من از دفترچه راهنمای لینوکس گرفتم ، استفاده از passwd به عنوان یک پوسته است. با این کار می توانید گذرواژه را به آسانی تغییر دهید و همچنین اطمینان حاصل کنید که آنها هیچ کار دیگری در حالت ترمینال انجام نمی دهند. برای انجام این کار ، خود برنامه passwd را در فایل / etc / shells وارد کنید ، یعنی خط را وارد کنید:

/ usr / bin / passwd

و در فایل / etc / passwd درباره کاربر بنویسید:

نام کاربری: x: 1000: 1000 :: / home / username: / usr / bin / passwd

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

تلاش 1.2.3.4 ... متصل به localhost. شخصیت فرار "^]" است. Red Hat Linux نسخه 5.2 (Apollo) Kernel 2.2.5 در ورود به سیستم i586: تستر رمز عبور: تغییر رمز عبور برای تستر (فعلی) رمز UNIX: رمز جدید UNIX: بازنویسی رمز عبور جدید UNIX: passwd: همه نشانه های احراز هویت با موفقیت به روز شد اتصال بسته شده توسط خارجی میزبان

حتی اگر تلاش برای تغییر رمز عبور ناموفق بود ، آن را از سیستم قطع می کند. هنگام اتصال باید به خروجی راه اندازی نیز توجه کنید: telnet صادقانه نام و نسخه سیستم را می نویسد. به طور کلی ، این راحت است ، اما در این مورد ، شما به یک هکر بالقوه اطلاعاتی می دهید که می تواند برای اهداف خود استفاده کند. چگونه می توانید از این امر جلوگیری کنید؟ وقتی کاربر وارد سیستم می شود ، Telnet فایل /etc/issue.net را که هنگام راه اندازی سیستم ایجاد شده است ، نمایش می دهد. توسط دستورات موجود در فایل rc.local ایجاد می شود:

# این مورد / etc / issue را در هر بوت بازنویسی می کند. بنابراین ، هر تغییری را که می خواهید در / etc / issue ایجاد کنید در اینجا اعمال کنید ، در غیر اینصورت هنگام راه اندازی مجدد آنها را از دست خواهید داد. echo ""> / etc / issue echo "$ R" >> / etc / issue echo "هسته $ (uname -r) در $ a $ (uname -m)" >> / etc / issue cp -f / etc / issue /etc/issue.net echo >> / etc / issue

بنابراین ، اگر بیش از حد در حال بارگذاری سیستم نیستید ، می توانید به سادگی فایل /etc/issue.net را ویرایش کنید ، در غیر این صورت ، rc.local را خود ویرایش کنید. در هر صورت ، Telnet فقط در مواقع ضروری توصیه می شود و نمی تواند با ssh جایگزین شود.

Ssh از نظر کاربر شبیه telnet است. برخلاف telnet که از پورت 23 استفاده می کند ، از 22 استفاده می کند ، اما تفاوت اصلی داخلی این است که تمام ترافیک رمزگذاری شده است. در همه جنبه های دیگر ، آنها شبیه هم هستند. برای ssh ، می توانید از همان قوانین دیوار آتش (با تغییر شماره پورت) و تنظیمات در فایل های /etc/hosts.allow ، /etc/hosts.deny استفاده کنید. یک ویژگی خوب وجود فایل پیکربندی خود است / etc / sshd / sshd_config حاوی خطوط پیکربندی زیر:

پورت 22 # شماره پورت ، که می تواند بیش از 22 باشد ListenAddress 0.0.0.0 # چه نشانی HostKey daemon ارائه می دهد / etc / ssh / ssh_host_key # پرونده کد مشتری RandomSeed / etc / ssh / ssh_random_seed # فایل اعداد تصادفی مورد استفاده برای تولید کد ServerKeyBits 768 # طول کد در بیتها LoginGraceTime 300 # زمان وارد کردن نام و رمز عبور KeyRegenerationInterval 3600 # فراوانی بازسازی کدها PermitRoot ورود به سیستم # بدون اینکه کاربر اصلی بتواند از طریق ssh وارد سیستم شود IgnoreRhosts بله # اطلاعات اطلاعات فایل کاربر را نادیده بگیرید یا ندهید StrictModes بله # حالت سخت ، مسدود کردن اشکالات کاربر ، به عنوان مثال ، وارد کردن رمز عبور 5 بار # یا پرس تصادفی QuietMode را وارد کنید نه # بله - به هیچ وجه فایل لاگ را ننویسید و خیر - در غیر این صورت X11 ارسال نه # انتقال اطلاعات از سرور X از طریق ssh channel Fascist ثبت نام شماره # میزان کامل بودن پرونده های ورود به سیستم PrintMotd بله # برخی از عبارت های روز را نمایش دهید KeepAlive بله # برقراری ارتباط با ارائه قطع اتصال استاندارد SyslogFacility DAEMON # که مسئول ایجاد سیاهههای مربوط RhostsAuthentication no # است ، اجازه احراز هویت کاربر از طریق روستها RhostsRSAAuthentication no # آیا تأیید از طریق روست ها یا /etc/hosts.equiv # به طور پیش فرض روی بله تنظیم شده است بله # فقط از احراز هویت RSA استفاده کنید رمز عبور احراز هویت بله # از کاربران از گذرواژه های معمولی خود استفاده کنید یا نه PermitEmpty گذرواژه های شماره # به کاربران بدون رمز عبور اجازه می دهد یا خیر

برخی تنظیمات مفید نیز وجود دارد ، به ویژه:

AllowGroups ، DenyGroups ، AllowUsers ، DenyUsers ، AllowHosts ، DenyHosts ، IdleTimeout زمان (زمانی که پس از آن اتصال در صورت عدم فعالیت قطع می شود).

همانطور که در موارد بالا مشاهده می کنید ، به طور کلی ssh گزینه های زیادی دارد که می توانید دقیقاً کنترل کنید چه کسانی و چگونه می توانند وارد سیستم شوند. اما این در مورد سرور است و کاربران شبکه باید کلاینت های ssh را اجرا کنند. برخلاف telnet که در ویندوز موجود است ، ssh در توزیع استاندارد موجود نیست. لینوکس این مشکل را ندارد - سرویس گیرنده نیز آنجاست. توجه به این نکته ضروری است که ssh daemon در دو نسخه اول و دوم موجود است. البته ناخوشایند است که هیچ سازگاری با گذشته وجود ندارد ، اما من مطمئن هستم که شما به عنوان یک مدیر ، آن دسته از مشتریانی را که می توانند با سرور ارتباط برقرار کنند به کاربران ارائه می دهید. در اینجا چند سرویس گیرنده ssh برای ویندوز آورده شده است:

  • تازه FiSSH رایگان. http://www.massconfusion.com/ssh/
  • تره ترم. http://hp.vector.co.jp/authors/VA002416/teraterm.html کلاینت telnet. http://www.zip.com.au/~roca/ttssh.html - dll اضافی برای پشتیبانی ssh
  • بتونه http://www.chiark.greenend.org.uk/~sgtatham/putty.html - فقط حدود 200 هزار
  • Mindterm http://www.mindbright.se/mindterm/ - سرویس گیرنده جاوا ssh
  • برنامه جاوا Telnet http://www.mud.de/se/jta/ - پشتیبانی از ssh وجود دارد
  • CRT امن http://www.vandyke.com/ - مشتری تجاری

ذکر دسترسی به ترمینال در ارتباط با برنامه هایی مانند rlogin ، rexec ، rsh ضروری است. استفاده از آنها فاقد هرگونه حفاظت است و حتی گاهی به کاربران اجازه می دهد بدون وارد کردن رمز عبور از دستگاهی به دستگاه دیگر برسند. اگرچه این راحت است ، اما از نظر امنیت ، برای هیچ چیز خوب نیست. این خدمات معمولاً به طور پیش فرض راه اندازی می شوند. برای واگرد آنها ، باید فایل /etc/inetd.conf را ویرایش کرده و شیطان inetd را مجدداً راه اندازی کنید. به طور کلی ، telnet و ssh امکانات دسترسی ترمینال به سیستم را خالی می کنند. بنابراین ، بیایید به سراغ سایر برنامه های سرور برویم که برای کاربران مفید هستند.

نامه ، یا ایمیل

چه چیزی برای افراد ضروری است که بدون آن ارتباط بین مردم اغلب قابل تصور نباشد؟ یک روش نسبتاً رایج نصب سرور ایمیل ، ایجاد صندوق پستی برای هر کاربر در آنجا و پیکربندی یک pop-daemon است تا افراد بتوانند این نامه را دریافت کنند. اما برای اینکه سرور نامه ها را دریافت و ارسال کند ، لازم است یک برنامه ایمیل مانند sendmail ، postfix یا qmail روی آن نصب کنید که نامه ها را در دستگاه UNIX پردازش می کند. به طور سنتی از sendmail برای این منظور استفاده می شود. در حال حاضر از آن در اکثر ماشین ها استفاده می شود ، اما دو برنامه دیگر ذکر شده جایگزین های خوب و حتی بهبود یافته ای هستند. طبق معمول ، نگرانی های اصلی مربوط به حفاظت است آخرین نسخه ها sendmail (8.9.x) بسیار قوی هستند.

Sendmail در تمام سیستم های لینوکس در دسترس است ، با آخرین توزیع ها احتمالاً شامل نسخه 8.9.x. این برنامه از چندین فایل پیکربندی استفاده می کند که در مراحل مختلف آنها را تجزیه و تحلیل می کند. اما قبل از صحبت در مورد پیکربندی ، توجه داشته باشیم که برنامه را می توان هم به صورت دیمون و هم در حالت آماده به کار راه اندازی کرد. در حالت اول ، دائماً به پورت گوش می دهد ، و در حالت دوم ، یک بار فعال می شود و به سادگی تمام اطلاعات دریافتی را پردازش می کند. روش دوم از نظر امنیتی ترجیح داده می شود. برای انجام این کار ، فقط باید پارامتر -bd را در خط راه اندازی حذف کنید.

حالا در مورد پیکربندی. فایل اصلی sendmail.cf است که ممکن است پیوندهایی با سایر فایلها داشته باشد یا نداشته باشد. فایل دسترسی نیز مورد تجزیه و تحلیل قرار می گیرد ، جایی که می توانید آدرسهایی از این قبیل (که به آنها نامه ارسال نمی شود) قرار دهید. به عنوان مثال ، نوشته ها:

10.0.0 RELAY spam.com رد شود

به این معنی که ایمیل های آدرس .spam.com پذیرفته نمی شود و ایمیل های شبکه داخلی قابل پذیرش و ارسال است.

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

پتروف: ستاره

نامه هایی به پتروف در می آید [ایمیل محافظت شده]به صندوق ارسال می شود [ایمیل محافظت شده]حتی اگر کسی آدرس واقعی را نمی داند این امر به ویژه مفید است ، اگر می خواهید ایمیل هایی به مدیری برسد که می خواهد صندوق پستی را نه با مدیر نام ، بلکه با مدیر خود داشته باشد. این بدان معناست که مدیر فقط آدرس خود را به کسانی که مناسب می داند می دهد و مدیر روی صفحه وب آویزان می شود. بدیهی است که این امر در صورت تغییر مدیر حداکثر راحتی را به همراه خواهد داشت. هر تعداد نام را می توان به همان صندوق پستی هدایت کرد.

فایل virtusertable نقشه یک آدرس به آدرس دیگر را مشخص می کند ، به عنوان مثال:

[ایمیل محافظت شده]مدیر

با استفاده از این دو فایل (نام مستعار و مجازی) ، می توان تکرار نامه را پیاده سازی کرد که تمام نامه های دریافتی را ذخیره می کند. ترفند این است که ابتدا فایل مجازی قابل مشاهده است ، و سپس نام مستعار. اگر ، با آخرین ورودی در virtusertable ، در نام مستعار بنویسید:

مدیر: star، " / var / spool / mail2 / star"

سپس نامه ای که به مدیر و آدرس ستاره می رسد در فهرست معمولی / var / spool / mail و / var / spool / mail2 نوشته می شود.

یکی از تفاوت های اصلی postfix و sendmail ، modularity (که qmail نیز دارد) است. بر خلاف sendmail ، فقط بخش کوچکی از کد ، فقط یک ماژول ، به عنوان root اجرا می شود و همه قسمت های دیگر در صورت نیاز اجرا می شوند و تنظیمات خاص خود را دارند. به طور کلی ، فایلهای پیکربندی postfix معمولاً در / etc / postfix یافت می شوند. فایل manager.cf عملکرد ماژول های مختلف را مدیریت می کند و کاربرانی را که تحت آنها اجرا می شوند و تعداد فرایندها را مشخص می کند. فایل main.cf فایل پیکربندی اصلی است و پارامترهای اساسی خود نامه را تنظیم می کند. در اینجا شکل تقریبی آن با توضیحات (دقیقتر ، آن اجزایی که به احتمال زیاد باید ویرایش شوند) آمده است:

# ماشین نام postfix / virtual # فایل جایگزینی نام alias_maps = hash: / etc / postfix / aliases # دایرکتوری که وقتی کاربر آن را دریافت کرد باید نامه را در آن قرار داد پست الکترونیکی را دریافت کنید mailbox_command = / usr / sbin / scanmails # فایلی که نشان دهنده آدرسهایی است که از آنها باید به کدام آدرس منتقل شود # اگر کاربران به پورت 25 متصل شوند چه چیزی خروجی می دهد smtpd_banner = $ myhostname ESMTP $ mail_name

برنامه postfix را می توانید از http://www.postfix.org دریافت کنید.

اکنون اجازه دهید در مورد پروتکل های POP و IMAP صحبت کنیم. اولین مورد در بندر 110 عمل می کند ، دومی - در 143. در اصل ، هر دو یک هدف را دنبال می کنند ، اما به روش های مختلف اجرا می شوند. POP (پروتکل اداره پست) یک پروتکل نسبتاً قدیمی و ضعیف است. تنها چیزی که به شما اجازه می دهد اتصال به سرور ، دریافت نامه و حذف آن از صندوق پستی روی سرور است. پروتکل IMAPپیشرفته تر. این به شما امکان می دهد نامه خود را مستقیماً روی سرور مدیریت کنید. لازم نیست همه نامه ها را بارگیری کنید ، بلکه فقط سرصفحه نامه ها را بگیرید ، فهرست ها را روی سرور ایجاد کنید و نامه را بین آنها توزیع کنید. از نظر امنیتی ، این پروتکل ها یکسان هستند ، بنابراین توصیه می شود از دیوار آتش برای جلوگیری از مشکل استفاده کنید. همچنین می توانید ترافیک این پروتکل ها را داخل ssh قرار دهید. بسیار مهم است که نامه خود را از نظر ویروس بررسی کنید. اگرچه ویروس ها در UNIX ترسناک نیستند ، اما از آنجا که بسیاری از کاربران از ویندوز استفاده می کنند ، عاقلانه است که ایمیل ها را از طریق یک برنامه اسکنر مانند AMAVIS اجرا کنید. ساده ترین راه برای انجام این کار (البته ، فرض بر این است که برنامه AMAVIS قبلاً نصب شده است) ، اگر در خط پیکربندی postfix باشد

Mailbox_command = / usr / bin / procmail

Mailbox_command = / usr / sbin / نامه های اسکن

به طور مختصر در مورد نحوه دریافت و ارسال نامه توسط کاربر در محل کار. خوشبختانه ، همه برنامه های محبوب مشتری POP یا IMAP هستند (منظور من ، حداقل Netscape و Outlook). به علاوه ، اگر سرپرست امکان دسترسی به سرور را از طریق telnet یا ssh فراهم کرده باشد ، می توانید نامه را مشاهده کرده و در حالت ترمینال با آن کار کنید (در این مورد انتخاب آن دشوارتر است). برای انجام این کار ، باید به سرور متصل شوید و برخی برنامه های ایمیل را در ترمینال مانند نامه یا کاج اجرا کنید. مورد دوم بسیار راحت تر است و یک برنامه تمام صفحه با منو است ، فقط در حالت متن.

دسترسی به فایل و چاپ شبکه

در سیستم UNIX ، دو مورد وجود دارد ابزارهای استاندارد- NFS و LPD. اولی به شما امکان می دهد سیستم های فایل شبکه ایجاد کنید ، دوم - برای چاپ روی چاپگر. در مورد استفاده از منابع دستگاه UNIX از ویندوز ، Samba (SMB) مناسب ترین گزینه برای این کار است ، به نظر من. این برنامه به شما امکان دسترسی به فایل ها را می دهد و همچنین امکان شبکه بندی چاپ از دستگاه ویندوز از طریق سرور UNIX را فراهم می کند. از آنجا که این مقاله عمدتا در مورد امنیت سرور است ، باید توجه داشت که به اشتراک گذاری منابع در شبکه ، البته با پیکربندی معمولی قوانین فایروال خارجی خطرناک نیست. در اینجا ، ممکن است مشکلات یک برنامه متفاوت ایجاد شود ، به این دلیل که همه نباید به این یا آن اطلاعات دسترسی داشته باشند ، اما این به طور کامل توسط تنظیمات ویژگی های پرونده ها و دایرکتوری ها تنظیم می شود. صرف نظر از اینکه چقدر مدیر زیرکی هستید ، نمی توانید از موقعیتی جلوگیری کنید که برای مثال ، شخصی فراموش کند جلسه ssh را ببندد و کامپیوتر را ترک کند. اگر به برخی از فایلها اجازه خواندن بدهید ، موضوع دیگری است ، اما اینها چیزهای بسیار بدیهی هستند که نمی توانید روی آنها صحبت کنید. بنابراین ، ما اکنون به بررسی برنامه های سرور می پردازیم که نه تنها برای کاربران داخلی ، بلکه برای برنامه های خارجی نیز مفید هستند. منظور من در درجه اول یک وب سرور و شاید ftp است. در حال حاضر تصور کوچکترین شرکت یا حتی یک شبکه بدون اولین شرکت دشوار است و حضور دومی بستگی به این دارد که آیا واقعاً نیاز به بارگذاری جداگانه برخی داده ها در سرور ftp دارید یا خیر.

سرورهای وب و ftp

آپاچی از نظر محبوبیت و عملکرد در بین چندین سرور وب که در حال حاضر وجود دارد ، رهبر بلامنازع است. این سرور ترکیبی از سرعت ، ثبات ، امنیت بالا و در عین حال رایگان است. همیشه نمی توان چنین برنامه ای را برای اهداف خود پیدا کرد ، اما اینجا این است. و باید اعتراف کنیم که نویسندگان برنامه تلاش های زیادی را برای دستیابی به حداکثر کارایی و قابلیت اطمینان انجام می دهند. اول از همه ، توجه داشته باشید که اگر از سرور وب خود فقط برای اهداف داخلی ، مانند مدیریت سیستم یا اشتراک فایل استفاده می کنید ، قطعاً باید آن را از دنیای خارج فایروال کنید. اگر این سرور برای همه است ، باید بدانید که برای همه باز است. به همین دلیل است که باید به طور صحیح آن را زیر نظر گرفت: از نظر امنیت ، سرور خود دسترسی بسیار کمی به سیستم دارد ، زیرا فقط اولین نسخه از آن به عنوان root اجرا می شود و بقیه معمولاً به عنوان هیچکس اجرا نمی شوند. علاوه بر این ، در تنظیمات سرور ، یعنی در پرونده های httpd.conf ، smr.conf ، access.conf ، به وضوح مشخص شده است که سرور به کدام دایرکتوری ها دسترسی دارد و کدام دسترسی ندارد. اگر در فایل httpd.conf می نویسید ، به عنوان مثال:

گزینه های هیچکدام AllowOverride هیچکدام گزینه های فهرست بندی FollowSymLinks شامل AllowOverride هیچکدام

سپس به صراحت نشان می دهید که سرور فقط به دایرکتوری / WWW دسترسی دارد ، جایی که باید همه مطالب سایت (یا سایت هایی) که کار آنها توسط سرور ارائه شده است را در آن قرار دهید. اگر می خواهید مطمئن باشید که هیچ کس با دسترسی به عنوان مثال ، فایل .htaccess در برخی از فهرستها ، حقوق دسترسی را تغییر نمی دهد ، در srm.conf باید موارد زیر را وارد کنید:

سفارش اجازه می دهد ، انکار انکار از همه

از نظر امنیتی ، صحبت کردن با جزئیات بیشتر در مورد سایر تنظیمات منطقی نیست ، به ویژه اینکه نصب و حداقل پیکربندی سرور Apache در شماره قبلی در مقاله ای به این موضوع اختصاص داده شده است.

لازم است به طور جداگانه در مورد استفاده از پروتکل https (امن http) صحبت کنیم. این پروتکل معمولاً روی پورت 443 اجرا می شود (برخلاف استاندارد http که روی پورت 80 اجرا می شود). حداقل دو روش برای غنی سازی Apache با http امن وجود دارد. اول استفاده از افزونه open-ssl ، دوم استفاده از ماژول mod_ssl. هر دو گزینه به نتایج تقریباً یکسانی منجر می شود. به طور کلی ، ایجاد ارتباطات با استفاده از https در درگاه 443 امکان پذیر می شود. این یک گواهی برای سرور ایجاد می کند ، که هنگام اتصال توسط مشتریان تأیید می شود. این امر (البته نه با ضمانت مطلق) استراق سمع ترافیک را حذف می کند. برای ایجاد گواهی هنگام استفاده از openssl ، باید دستورات زیر را بدهید:

Openssl genrsa -des3> httpsd.key openssl req -new -key httpsd.key> httpsd.csr

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

# گوش دادن روی پورت 443 (به طور پیش فرض ، سرور فقط در پورت 80 گوش می دهد) 443 # را غیرفعال کنید استفاده جهانی ssl SSLD غیرفعال کردن # مکانی که سرور اطلاعات موقت را در هنگام اتصال ssl ذخیره می کند. بدون # این تنظیمات ، سرور SSLCacheServerPath / usr / bin / gcache # پورت که از طریق آن سرور با CashServer با SSLCacheServerPort 12345 ارتباط برقرار می کند کار نمی کند # SSLSessionCacheTimeout 300

پس از این تنظیمات ، سرور شما اساساً آماده کار با https است ، اما در حال حاضر این پروتکل ممنوع است. توصیه می شود یک میزبان مجازی ایجاد کنید که همان نام استاندارد شما را داشته باشد ، اما با ذکر صریح پورت 443 ، به عبارت دیگر ، اکنون یک سرور وب در حال اجرا دارید. روی پورت 80 اجرا می شود و از پروتکل http استفاده می کند. با افزودن apache-ssl و تنظیمات توضیح داده شده در بالا ، به کاربران این امکان را داده اید که از طریق پروتکل https با سرور شما ارتباط برقرار کنند. بعید است همه اطلاعات روی سرور شما آنقدر طبقه بندی شده باشند که بخواهید همه آنها را فقط در حالت اتصال امن ارائه دهید. سرور آپاچی به شما امکان می دهد ماشین های مجازی ایجاد کنید ، یعنی می توانید یک دایرکتوری فرعی ریشه برای میزبان اعلام کنید ، نامی را برای آن بنویسید ، مجموعه ای از فایل های پیکربندی و سایر موارد لازم را بنویسید ، اما از نظر فیزیکی روی رایانه شما قرار می گیرد. و توسط سرور خود شما کنترل می شود ... در مورد ما ، حتی لازم نیست نام متفاوتی بگذارید ، زیرا همان است ، فقط یک پورت متفاوت است. چنین راه اندازی ممکن است به این شکل باشد:

DocumentRoot / www / secure / ServerName www.example.com ServerAdmin [ایمیل محافظت شده] ErrorLog logs /https_error.log TransferLog logs /https_access.log # اجازه ssl برای این میزبان مجازی SSLEnable # فقط نیاز به ssl استفاده از SSLRequireSSL SSLCertificateFile /usr/conf/httpsd.crt SSLCertificateKeyFile /usr /conf /httpsl

علاوه بر http ، ftp نیز وجود دارد - یک سرویس مفید و مناسب ، به ویژه اگر تعداد زیادی فایل دارید که کاربران باید بارگیری کنند (برای مثال ، برخی از داده های تحقیق را ارائه می دهید). مزیت ftp نسبت به http سرعت است. پروتکل ftp حداقل سربار دارد. با این حال ، مشکلات زیادی با او وجود دارد. اصلی ترین آن "سن" آن است: ftp به اندازه Telnet قدمت دارد. از اینجا ، بلافاصله عوارض مربوط به امنیت بوجود می آید: نام کاربری و رمز عبور به وضوح منتقل می شود و تردد اطلاعات منتقل شده توسط هیچ چیزی محافظت نمی شود. علاوه بر این ftp فقط می تواند فایل ها را منتقل کند. بنابراین ، اگر اطلاعاتی دارید که برای همه در دسترس است ، منطقی است که یک کاربر ایجاد کنید ، که همه تحت نام او وارد خواهند شد. اغلب در چنین بایگانی های ftp این کاربر ناشناس نامیده می شود و آدرس ایمیل خود را به عنوان رمز عبور ارسال می کند. در این مورد ، مشکلات امنیتی بسیار کمتری وجود دارد. علاوه بر این ، در صورت نیاز به دسترسی ftp به چندین کاربر ، یک chroot ایجاد کنید تا بتوانند فایلها را فقط در فهرست راهنمای خود قرار دهند. در مورد سرورها ، البته ، آنها در بسته های استاندارد موجود هستند ، اما شاید شما بخواهید نه یک ftpd استاندارد ، بلکه یکی دیگر را نصب کنید.

یکی از سرورهای محبوب ftp ، proftpd است. فایلهای پیکربندی آن مشابه فایلهای Apache است ، که سازگاری با آنها را آسان می کند ، زیرا به احتمال زیاد سرور وب شما Apache است. فایل پیکربندی اصلی /etc/proftpd.conf است. شکل تقریبی آن می تواند به این صورت باشد:

نام سرور "ProFTPD Default Installation" ServerType inetd DefaultServer در پورت 21 Umask 022 MaxInasts 30 کاربر هیچ کس گروه هیچ کس AllowOverwrite در

لیست بالا نشان می دهد که سرور از طریق inetd راه اندازی شده است ، در پورت استاندارد 21 ، حداکثر تعداد کپی 30 است ، و به عنوان گروه و کاربر شروع نمی شود. 022 - ماسک ویژگی های فایل در هنگام ایجاد ، که در ابتدا به صورت استاندارد اعمال می شود. این پیکربندی دسترسی به کاربر ناشناس را نمی دهد. برای انجام این کار ، باید تقریباً تنظیمات پیکربندی زیر را بنویسید:

User ftp Group ftp RequireValidShell UserAlias ​​ناشناس ftp MaxClients 10 DisplayLogin welcome.msg DisplayFirstChdir .message همه را انکار کنید

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

AllowAll همه را انکار کنید

چنین مدخلی در فایل پیکربندی امکان نوشتن را می دهد ، اما حق بارگیری فایل ها را نمی دهد. این می تواند مفید باشد اگر می خواهید کاربران بتوانند فایل ها را بارگذاری کنند ، اما نتوانند آنچه را دیگران قرار داده اند ببینند.

این موضوع برنامه های سرور را به پایان می رساند. البته ، باید توجه داشت که برنامه های سرور بسیار بیشتری وجود دارد: DNS ، سرورهای خبری ، سرورهای NIS ، سرور X و بسیاری از برنامه های جالب و مفید دیگر نیز وجود دارد. با این حال ، من سعی کردم روی آنچه در واقع ممکن است هنگام کار با شبکه ای که ادعا نمی شود یک سایبرپلیس یا ارائه دهنده جهانی است ، نیاز داشته باشم ، تمرکز کنم. اکنون بیایید به بررسی سوال دوم که در ابتدای مقاله نشان داده شده است بپردازیم - حملات و هک های شبکه.

حملات و هک های شبکه

اول از همه چند کلمه کلی. در یونیکس برخلاف ویندوز هیچ مشکلی در مورد ویروس ها وجود ندارد. ساختار داخلی تخصیص حافظه و مجوزهای فایل می تواند به تنهایی با آنچه معمولاً ویروس ها در DOS یا Windows قدیمی انجام می دهند مقابله کند. مانع اصلی برای ویروس ها (به معنای استاندارد آنها) عدم دسترسی به دستگاه های فیزیکی برای برنامه هایی است که به نمایندگی از یک کاربر معمولی اجرا می شود ، و همچنین این واقعیت است که ویژگی های فایل به هیچ وجه تنظیم نشده است ، بلکه برای کاربر ، گروه و تمام کاربران. چنین چیزی در ویندوز وجود ندارد (این تا حدی در ویندوز 2000 اجرا شده است). اگرچه مزاحمت ناشی از ویروس های سنتی تقریباً غیرممکن است ، سیستم های یونیکس هنوز هک شده و از بین می روند. این به دلیل وجود فناوری های کاملاً متفاوت است که می توان آنها را تقریباً به دو دسته تقسیم کرد. اولین مورد به اصطلاح اسب های تروا است که برنامه هایی هستند که به ظاهر و شاید در واقع اقدامات کاملاً منطقی و قانونی را انجام می دهند. با این حال ، آنها به طور موازی "کار" دیگری را انجام می دهند: گوش دادن به شبکه یا جمع آوری اطلاعات مربوط به گذرواژه ها و ارسال آن به شبکه و غیره. بعید است که این برنامه ها خود آسیب مستقیم وارد کنند - بلکه آنها واسطه ای بین سیستم شما و یک مهاجم خارجی خواهند بود. دسته دوم هک های شبکه است. این اقدامات در ابتدا برای محتوای داخلی دستگاه جذابیتی ندارد ، بلکه سعی می کند سیستم را از بین ببرد یا با ارسال برخی اطلاعات به آن ، مانند بسته های شبکه ای عمداً نادرست ، یا تلاش برای "فریب" برخی از داده های پنهان از طریق درخواست های خاص به اصلا چرا سیستم ها را هک می کنیم؟ این یک س psychologicalال روانشناختی است تا عملی. واقعیت این است که ، در حقیقت ، بخش نسبتاً زیادی از هک های ماشینی از اهداف خودخواهانه ناشی نمی شود ، بلکه صرفاً از علاقه به خود فرآیند ناشی می شود. در میان افرادی که معمولاً هکر نامیده می شوند ، نه تنها کسانی که برای منفعت واقعی هک می کنند ، بلکه "علاقه مندان" نیز به خاطر شکستن شبکه را خراب می کنند. این غیر منتظره به نظر می رسد ، اما اینطور است و آمار این را نشان می دهد. علاوه بر این ، اغلب سرزنش شخص برای کارهایی که انجام داده اند بسیار دشوار است ، زیرا گاهی اوقات نمی توان ثابت کرد که او و از طریق این رایانه اقدامات غیرقانونی خاصی را انجام داده اند. با این حال ، در این مقاله ما در مورد خود هک ها بحث می کنیم ، نه جنبه های روانی و قانونی آنها ، و بنابراین ما به موارد خاصی می پردازیم.

هک کردن شبکه ، مهم نیست که چقدر با دقت انجام می شود و از هر روشی که استفاده شود ، ناگزیر منجر به تغییراتی در سیستم می شود. این می تواند لیست جدیدی از پورت های گوش دادن ، برنامه های ناآشنا ، تغییر اندازه برنامه های موجود ، به ویژه ps یا netstat یا حتی کاربران جدید باشد. به هر حال ، نکته این است که چیزی باید تغییر کند ، و این اجتناب ناپذیر است. بنابراین ، اولین اقدام منطقی که توصیه می کنم بلافاصله پس از نصب و پیکربندی سیستم انجام دهید ، ایجاد یک فایل با اطلاعات مربوط به سیستم است. چیزی شبیه به عکس در لحظه ای که همه چیزهایی را که اتفاق می افتد درست می دانید. به طور خاص ، منظور من اطلاعات ارائه شده توسط برنامه های netstat ، vmstat ، رایگان ، du ، df است. نکته دوم تهیه نسخه پشتیبان از پرونده های پیکربندی سیستم و تنظیمات اولیه است. همچنین مقایسه آنها با یکدیگر می تواند اطلاعاتی در مورد آنچه اخیراً در سیستم رخ داده است ارائه دهد.

بیایید با نظارت بر سیستم فایل شروع کنیم ، که نه تنها شامل نظارت بر استفاده از سیستم فایل (که می تواند با دستور du و df انجام شود) ، بلکه بررسی عدم تغییرپذیری برخی از فایلها (به عنوان مثال ، فایلهای سیستم) است. تعدادی برنامه وجود دارد که این عملکردها را انجام می دهند:

  • AIDE - برنامه ای که به شما امکان می دهد برای فایل ها چک چک ایجاد کنید ، بنابراین یکپارچگی آنها را بررسی کنید. اجازه می دهد تا از الگوریتم های متعددی استفاده شود. http://www.cs.tut.fi/~rammer/aide.html. (بقیه برنامه ها عملکردهای مشابهی را انجام می دهند ، همه آنها رایگان هستند.)
  • Gog & Magog - لیستی از ویژگی ها و صاحبان فایل ایجاد می کند ، امکان مقایسه خودکار را می دهد. http://www.multimania.com/cparisel/gog/
  • نگهبان - ایجاد می کند چک چک هابا استفاده از الگوریتم MAC RIPEMD-160bit دارد رابط گرافیکی... http://zurk.netpedia.net/zfile.html
  • SuSEauditdisk برنامه ای است که روی یک فلاپی دیسک قرار می گیرد و امکان بررسی کامل سیستم را به طور خودکار و بوت مستقیم از فلاپی دیسک فراهم می کند. به صورت استاندارد با SuSELinux عرضه می شود. http://www.suse.de/~marc
  • ViperDB - با ایجاد پرونده های ثبت که تغییرات رخ داده را ثبت می کند ، صاحبان و ویژگی های فایل را بررسی می کند. این برنامه دارای سه پارامتر است: -init - ایجاد پایگاه های داده توسط فایل ها ، - بررسی - بررسی فایل ها در برابر پایگاه داده و ایجاد تغییرات در پایگاه داده در صورت وجود بر روی دیسک ، به http://www.resentment.org/projects/viperdb
  • Sxid - جمع چک های پرونده ها را ایجاد می کند و ویژگی ها و مالکان را تأیید می کند. ftp://marcus.seva.net/pub/sxid/
  • نانی - زمان ایجاد فایل را به خاطر می آورد. ftp://tools.tradeservices.com/pub/nannie/
  • confcollect - اطلاعات سیستم ، مانند نصب شده را به خاطر می آورد نرم افزار، جداول روتر و غیره http://www.skagelund.com/confcollect/
  • Pikt ابزاری است که دارای یک زبان برنامه نویسی داخلی برای ایجاد برنامه هایی است که استاندارد انجام می دهند ، اما در قالب دستورات و عملکردهای خاص اجرا نمی شوند (نظارت بر ساعت استفاده از سیستم ، حذف فرآیندهای طولانی مدت ، تنظیم اندازه صندوق پستیو غیره.). در دسترس برای سیستم عامل های مختلف: Solaris ، Linux و FreeBSD. http://pikt.uchicago.edu/pikt/

همچنین می توانید در مورد برنامه هایی که عملکردهای پشتیبان را انجام می دهند صحبت کنید ، اما به نظر من این هیچ ارتباطی با امنیت سیستم ندارد و ابزارهای استاندارد مختلفی در توزیع UNIX گنجانده شده است. امنیت فقط مربوط به این واقعیت است که پشتیبان گیری ضروری است ، اما این قبلاً در بالا ذکر شد.

حالا بیایید دریابیم که برای جلوگیری از حملات شبکه باید چه کار کنیم. البته ، شما باید یک فایروال روی دروازه نصب کنید. به هر طریقی ، حفاظت از سطح بسته ضروری است. اگر فایروال به هر طریقی دور زده شود ، برنامه های زیر مورد نیاز است:

  • DTK - از خدمات و برنامه های استاندارد تقلید می کند و در مورد درخواست های غیر استاندارد ارسال شده به این برنامه ها ، عمداً اطلاعات غلط به منظور سردرگم کردن مهاجم صادر می شود. http://all.net/dtk/
  • Psionic PortSentry - اسکن پورت را کنترل می کند. وظیفه اصلی بررسی پورت ها برای اسکن و نمایش همه چیز در یک فایل log است. http://www.psionic.com/abacus/portsentry/
  • Psionic HostSentry - یک پایگاه داده از اطلاعات مربوط به استفاده از دستگاه توسط کاربران ایجاد می کند و هنگام استفاده از منابع غیر استاندارد ، پیامی را نمایش می دهد. http://www.psionic.com/abacus/hostsentry/
  • Scanlogd - بسته های شبکه را اسکن می کند و بر اساس تنظیمات فایل های گزارش را ایجاد می کند. http://www.openwall.com/scanlogd/
  • Firewalls نام جمعی برنامه های فایروال است.
  • TCP -WRAPPERS - برنامه هایی که دسترسی به منابع خاص را با نام یا شماره کامپیوتر محدود می کنند. برخی از این برنامه ها در آدرس موجود است. ftp://ftp.porcupine.org/pub/security/
  • NFR برنامه ای است که در ساخت شبیه به یک sniffer است (sniffer برنامه ای برای گوش دادن به ترافیک شبکه است). پرونده های گزارش را ضبط می کند و حملات و اسکن پورت را در زمان واقعی تشخیص می دهد. http://www.nfr.com/
  • در مورد http://www.robertgraham.com/pubs/network-intrusion-detection.html می توانید سوالات متداول و متداول درباره حملات شبکه و تشخیص آنها را پیدا کنید.

به سختی می توان به این س answerال پاسخ داد که در هنگام حملات شبکه چه و چگونه باید انجام داد. در اینجا بسیار بستگی به ویژگی های شبکه خاص و سازمانی دارد که در آن قرار دارد. حتی با حمله ای از همان نوع ، در یک مورد ، شما می خواهید ابتدا داده ها را ذخیره کنید ، و در مورد دوم ، می خواهید منبع حمله را مسدود کنید ، یعنی همه چیز به اولویت ها بستگی دارد. حملات یک مشکل بسیار دشوار در سازمان هایی است که خرابی شبکه غیرقابل قبول است. در آنجا شما باید تمام عملیات را به صورت آنلاین انجام دهید ، تا آنجا که ممکن است با دنیای خارج در تماس باشید. بستگی زیادی به ماهیت حمله دارد. هک به خاطر هک یک چیز است و سرقت هدفمند داده های طبقه بندی شده یک چیز دیگر. شاید این درست باشد ، و یک نسخه پیچیده تر ، هنگامی که حمله با هدف منحرف کردن مدیر از هک پیچیده و متفکرانه انجام شده به طور موازی انجام می شود. اما فکر نکنید که حمله فقط از بیرون می تواند انجام شود. ممکن است از داخل شروع شود. سناریوی احتمالی راه اندازی اسب تروا بر روی رایانه Windows در شبکه داخلی است. بدیهی است که این کار را می توان به سادگی با ارسال نامه از طریق نامه انجام داد. اکنون اجازه دهید نگاهی دقیق تر به برنامه های sniffer بیندازیم.

به طور کلی بوییدن به معنی بوییدن است. بنابراین ، sniffers برنامه هایی هستند که به نحوی به شبکه و تمام اطلاعاتی که از آن عبور می کنند گوش می دهند. یک مثال گویا ، گذرواژه ای است که به صورت واضح از رایانه داخلی به سرور منتقل می شود. از آنجا که بسته ها در سراسر شبکه حرکت می کنند تا گیرنده ای پیدا کنند ، نصب یک sniffer بر روی حداقل یک کامپیوتر در شبکه داخلی (به عنوان مثال ، با استفاده از نامه ، همانطور که در بالا ذکر شد) ابزار مفیدبرای ترقه خارجی در بیشتر موارد ، بوگیرها کاملاً منفعل هستند ، که تشخیص آنها را دشوار می کند. در زیر لیستی از چندین برنامه sniffer وجود دارد که می توانند برای نظارت بر آنچه در شبکه اتفاق می افتد استفاده شوند:

  • Tcpdump قدیمی ترین برنامه ای است که با تمام یونیکس ارسال می شود.
  • Sniffit - دارای قابلیت فیلتر بسته ها و ترجمه اطلاعات به قالب متن است. مجهز به رابط گرافیکی http://sniffit.rug.ac.be/~coder/sniffit/sniffit.html
  • Ethereal یک تجزیه و تحلیل پروتکل شبکه است.
  • Snort - برای نظارت بر شبکه طراحی شده است ، می تواند اسکن های پورت را تشخیص دهد. http://www.clark.net/~roesch/security.html
  • جاسوسی یک اسنایف است ، اما رایگان نیست. مجوز شبکه رایگان تک کاربره حداکثر تا پنج دستگاه وجود دارد. http://pweb.uunet.de/trillian.of/Spy/

با این حال ، نباید فراموش کرد که علاوه بر نرم افزار ، گوش دادن سخت افزاری نیز وجود دارد ، به عنوان مثال ، به سادگی اتصال یک کامپیوتر دیگر یا اتصال به کابل. جالب است که اگر از یک اترنت نازک (کابل کواکسیال) استفاده می کنید ، می توانید بدون باز کردن آن به آن گوش دهید.

  • AntiSniff برنامه ای است که شبکه را برای یافتن بوها اسکن می کند. اصل عملکرد آن بسیار ساده است: یک درخواست ارسال می کند ، و با پاسخ و زمان پاسخ ، تعیین می کند که آیا توسط برنامه دیگری در حال پردازش است یا خیر. http://www.l0pht.com/antisniff/

س FAالات متداول و مفید راهنمای سوء تفاهم را می توانید در پیدا کنید. http://www.robertgraham.com/pubs/sniffing-faq.html.

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

برنامه هایی که سیستم را به تنهایی از داخل اسکن می کند:

  • ببر برنامه ای است که هنوز در حال توسعه است. ftp://net.tamu.edu/pub/security/TAMU/
  • check.pl یک اسکریپت Perl است که درخت فهرست و پرونده های موجود در آن را بررسی می کند و ویژگی های مشکوک مختلف و نام مالک را نشان می دهد. http://opop.nols.com/proggie.html

اسکنرهای شبکه که به سرویس های موجود در سیستم دیگر اشاره می کنند (مثلاً ایده خوبی است که تنظیمات فایروال را بررسی کنید):

  • استروب یک اسکنر قدیمی اما سریع و م effectiveثر برای شبکه است. گاهی اوقات با UNIX همراه است. ftp://suburbia.net/pub/
  • Nmap برنامه ای است که از روش های جدید اسکن پورت استفاده می کند و بسیار قابل تنظیم است. اجازه می دهد تا پارامترهای سیستم عامل (نام ، نسخه) را دریافت کنید. http://www.insecure.org/nmap/index.html
  • Portscanner یک اسکنر پورت کوچک است که دارای فرمت های زیادی برای خروج اطلاعات پردازش شده است. http://www.ameth.org/~veilleux/portscan.html
  • Queso در واقع یک اسکنر نیست. این برنامه ای است که برای تعیین نوع سیستم عامل در رایانه از راه دور طراحی شده است. http://www.apostols.org/projectz/queso/

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

  • Nessus یک نرم افزار ردیابی حمله مشتری-سرور است. سرورهایی برای لینوکس ، FreeBSD ، NetBSD و Solaris و کلاینت هایی برای لینوکس و ویندوز وجود دارد. علاوه بر اسکن پورت ها و ردیابی حملات ، برنامه می تواند جستجوهای DNS را برای یافتن رایانه های مرتبط با دستگاه آسیب دیده انجام دهد. http://www.nessus.org/
  • سنت از فرزندان برنامه شیطان است ، که قبلاً یکی از محبوب ترین برنامه ها برای جمع آوری اطلاعات در مورد اتومبیل بود. سنت از معماری سرویس گیرنده-سرویس گیرنده استفاده می کند ، اما برنامه وب را جایگزین سرویس گیرنده می کند. هدف اصلی جمع آوری اطلاعات در مورد آسیب پذیری های حفاظت از سیستم است. http://www.wwdsi.com/saint/
  • Cheops برنامه ای است که نقشه ای از محیط شبکه IP با نشانگر سیستم عامل در حال اجرا بر روی رایانه ها تهیه می کند. http://www.marko.net/cheops/
  • SARA (دستیار تحقیق حسابرس امنیتی) برنامه ای شبیه به سنت است. می تواند چندین دستگاه را همزمان اسکن کند ، علاوه بر این ، نتیجه کار را با فرمت HTML تولید می کند. http://home.arc.com/sara/
  • BASS (Bulk Auditing Security Scanner) برنامه ای است که ایدئولوژی آن بر این واقعیت استوار است که از اینترنت محافظت نمی شود. وظیفه اصلی اسکن سیستم ها برای وجود "حفره های امنیتی" در آنها است. http://www.securityfocus.com/data/tools/network/bass-1.0.7.tar.gz

برنامه اسکن فایروال و بررسی درست پیکربندی آن Firewalk است. با ارسال بسته های مختلف ، برنامه به دنبال محاسبه قوانینی است که بر اساس آن فایروال کار می کند. http://www.packetfactory.net/firewalk/

آرشیو در http://www.rootshell.com/ حاوی اطلاعات شناخته شده در مورد خطاهای محافظت از سیستم و پیوندهایی به افزونه های سازندگان سیستم عامل است که این خطاها را برطرف می کند. درست است ، گاهی اوقات به جای چنین پیوندی ، می توانید پیام "ارتقا به نسخه بعدی" را مشاهده کنید ، که به خصوص اگر سیستم تجاری باشد ، توهین آمیز است. به عنوان مثال ، اغلب در مورد IBM AIX صادق است.

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

ComputerPress 3 "2001

  • اجبار اداری و تفاوت آن با سایر انواع اجبار دولتی ، سیستم اندازه گیری اجبار اداری است.
  • آدرس موسسه ای که پروتکل را تکمیل کرده است ___________________________________________________
  • اعمال ، پروتکل ها. ترکیب جزئیات قانون و پروتکل. محل احتیاجات در فرم A4. الزامات ثبت قانون و پروتکل. دادن سند به سند قانونی.
  • عفو: مفهوم و نشانه ها. عفو: مفهوم ، پیامدهای حقوقی ، تفاوت با عفو.
  • سیستم دادگاه داوری فدراسیون روسیه. نقش سیستم قضایی در حل اختلافات اقتصادی ، از جمله اختلافات مربوط به اعمال قوانین مالیاتی.
  • SSH - (Shell Secure) - یک پروتکل شبکه است که به شما امکان می دهد کنترل از راه دورانتقال کامپیوتر و فایل از نظر عملکرد شبیه پروتکل های Telnet و rlogin است ، اما از الگوریتم های رمزگذاری برای اطلاعات منتقل شده استفاده می کند.
    کاستی های Telnet منجر به حذف سریع پروتکل به نفع پروتکل SSH امن تر و کاربردی تر شد. SSH همه این موارد را ارائه می دهد عملکردکه در telnet ارائه شد ، با افزودن کدگذاری م toثر برای جلوگیری از رهگیری داده ها مانند نام کاربری و رمزهای عبور. سیستم احراز هویت کلید عمومی SSH این را تضمین می کند کامپیوتر از راه دورواقعا کسی است که ادعا می کند

    امنیت رمزنگاری پروتکل SSH ثابت نیست ؛ انتخاب الگوریتم های مختلف رمزگذاری ممکن است. مشتریان و سرورهای پشتیبانی کننده از این پروتکل برای سیستم عامل های مختلف در دسترس هستند. علاوه بر این ، این پروتکل نه تنها امکان استفاده از یک پوسته راه دور ایمن بر روی دستگاه را فراهم می کند ، بلکه امکان رابط گرافیکی - Tunneling X (فقط برای سیستم عامل های Unix مانند یا برنامه های کاربردی با استفاده از رابط گرافیکی X Window System) را فراهم می کند. SSH همچنین می تواند هرگونه پروتکل شبکه دیگر را از طریق یک کانال امن (Port Forwarding) منتقل کند و با (با پیکربندی مناسب) قابلیت ارسال ایمن نه تنها رابط X ، بلکه برای مثال صدا را نیز فراهم کند.
    با این حال ، SSH تمام مشکلات امنیتی شبکه را حل نمی کند. او فقط توجه خود را به تأمین معطوف می کند کار ایمنبرنامه های کاربردی مانند شبیه سازهای ترمینال. استفاده از پیاده سازی پروتکل SSH در سرورها و برنامه های سرویس گیرنده به حفاظت از داده ها فقط در هنگام انتقال کمک می کند. SSH به هیچ وجه جایگزین فایروال ها ، سیستم های تشخیص نفوذ ، اسکنرهای شبکه ، سیستم های احراز هویت و سایر ابزارهایی نیست که به محافظت از سیستم ها و شبکه های اطلاعاتی در برابر حملات کمک می کند.
    39. نقش و وظایف سرور در شبکه محلی.

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

    وظایف سرور:

    1. ارائه دسترسی به داده های ذخیره شده در دیسک های سرور سازمان ؛

    2. ذخیره ، پردازش و دسترسی به پایگاه های داده شرکت.

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

    4. تحویل یک صفحه وب به کاربر درخواست کننده آن.

    5. ارسال ، دریافت ، ذخیره و توزیع ایمیل هاکه توسط همه کاربران شبکه محلی ارسال می شود.


    خدمات شبکه.

    برای کاربر نهایی ، شبکه رایانه ، کابل و هاب یا حتی جریان اطلاعات نیست ، برای او شبکه قبل از هر چیز مجموعه ای از خدمات شبکه است که با آن می تواند لیست رایانه های موجود در شبکه را مشاهده کند ، از راه دور بخواند فایل را چاپ کنید ، سند را روی چاپگر "خارجی" چاپ کنید یا یک پیام ایمیل ارسال کنید. این ترکیبی از قابلیت های ارائه شده است - انتخاب آنها چقدر گسترده است ، چقدر راحت ، قابل اعتماد و ایمن هستند - که ظاهر یک شبکه خاص را برای کاربر تعیین می کند.
    علاوه بر تبادل واقعی داده ها ، خدمات شبکه باید سایر وظایف خاص تر را نیز حل کند ، به عنوان مثال ، وظایفی که توسط پردازش داده های توزیع شده ایجاد می شوند. چنین وظایفی شامل اطمینان از یکنواختی کپی های متعدد داده های موجود در ماشین های مختلف (سرویس تکرار) ، یا سازماندهی اجرای یک کار به صورت موازی در چندین ماشین در شبکه (سرویس تماس از راه دور) است. در میان خدمات شبکه ، می توان سرویس های اداری را تشخیص داد ، یعنی آنهایی که عمدتا نه بر روی یک کاربر ساده ، بلکه بر یک مدیر متمرکز هستند و برای سازماندهی عملکرد صحیح شبکه به طور کلی خدمت می کنند.
    خدمات شبکه در نرم افزار اجرا می شوند. خدمات اولیه - سرویس فایل و خدمات چاپ - معمولاً توسط سیستم عامل شبکه ارائه می شود ، در حالی که خدمات پشتیبانی مانند پایگاه داده ، فکس یا خدمات صوتی توسط برنامه های شبکه سیستم یا ابزارهای کمکی که با آنها ارتباط نزدیکی دارند ارائه می شود. سیستم عامل شبکه به طور کلی ، توزیع خدمات بین سیستم عامل و برنامه های کاربردی کاملاً دلخواه است و در پیاده سازی های خاص سیستم عامل متفاوت است.
    اصطلاح "شفافیت" اغلب برای تعریف راحتی منابع مشترک استفاده می شود. دسترسی شفاف چنین دسترسی است که در آن کاربر متوجه نمی شود که منبع مورد نیازش در کجا قرار دارد - در رایانه خود یا در یکی از راه دور. پس از نصب سیستم فایل از راه دور در درخت فهرست خود ، دسترسی به فایل های حذف شدهبرای او کاملاً شفاف می شود عملیات سوار شدن نیز می تواند درجه شفافیت متفاوتی داشته باشد - در شبکه های با شفافیت کمتر ، کاربر باید نام رایانه ای را که سیستم فایل از راه دور بر روی آن ذخیره شده است ، در فرمان مشخص کند ؛ در شبکه هایی با درجه شفافیت بیشتر ، جزء نرم افزاری مربوطه در شبکه ، حجم های مشترک فایلها را صرف نظر از موقعیت مکانی آنها ذخیره می کند و سپس آنها را در فرم مناسب برای کاربر ، به عنوان مثال ، در قالب یک لیست یا مجموعه ای از نمادها ، در اختیار کاربر قرار می دهد.
    نحوه آدرس دهی (نامگذاری) منابع مشترک شبکه برای شفافیت مهم است. نام منابع مشترک شبکه نباید به موقعیت فیزیکی آنها در رایانه خاصی بستگی داشته باشد. در حالت ایده آل ، اگر مدیر شبکه یک حجم یا فهرست را از یک کامپیوتر به رایانه دیگر منتقل کرده باشد ، نباید چیزی را در کار خود تغییر دهد. خود مدیر و شبکه سیستم عاملداشتن اطلاعات مکان سیستم های فایل، اما از دید کاربر مخفی است. این میزان شفافیت هنوز به ندرت در شبکه ها مشاهده می شود - معمولاً برای دسترسی به منابع یک رایانه خاص ، ابتدا باید یک ارتباط منطقی با آن برقرار کنید. این رویکرد ، برای مثال ، در شبکه های ویندوز NT