اطلاعیه

بستن
هنوز اطلاعیه ای در دست نیست.

محدود کردن دسترسی SSH کاربران به دایرکتوری خاص با استفاده از Chroot Jail

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    محدود کردن دسترسی SSH کاربران به دایرکتوری خاص با استفاده از Chroot Jail

    دلیل های زیادی برای محدود کردن دسترسی ssh یک کاربر به دایرکتوری خاص وجود دارد، مخصوصا روی سرورهای وب اما بارزترین دلیل امنیت یک سیستم است. به منظور محدود کردن کاربران ssh به یک دایرکتوری خاص ما میتوانیم از مکانیزم chroot استفاده کنیم.

    تغییر root (یا chroot) در سیستم های شبیه UNIX مانند Linux به معنای جدا کردن عملیات کاربر خاص از بقیه سیستم لینوکسی، تغییر ظاهر دایرکتوری root برای پروسس در حال اجرای کاربر جاری و زیر پروسس آن (Child Process) به همراه دایرکتوری root جدید که chrooted jail نامیده میشود، میباشد.

    در این مطلب ما به شما نحوه محدود کردن دسترسی ssh یک کاربر را به یک دایرکتوری مورد نظر در لینوکس نشان خواهیم داد. دقت کنید که ما تمامی دستورات را با یوزر root اجرا میکنیم، و در صورتی که شما با کاربر معمولی در سیستم تان login هستید میتوانید دستورات را با sudo استفاده کنید.



    مرحله 1 : ایجاد SSH Chroot Jail

    1 - کار را با ایجاد chroot jail با استفاده از دستور mkdir همانند زیر شروع میکنیم.

    کد PHP:
    mkdir -/home/maryam 

    2 - سپس فایل های مورد نیاز را مشخص کرده، بر اساس صفحه man دستور sshd_config گزینه ChrootDirectory نام مسیر دایرکتوری chroot بعد از احراض هویت کاربر، را مشخص میکند. دایرکتوری باید شامل فایل ها و فولدر های مورد نیاز برای ساپورت یک session کاربر باشد.

    برای یک session تعاملی (interactive session) حداقل به یک shell، عموما sh و node های اصلی /dev همانند دیوایس های null, zero, stdin, stdout, stderr, و tty نیاز است،

    کد PHP:
    # ls -l /dev/{null,zero,stdin,stdout,stderr,random,tty} 
    دستور chroot jail در لینوکس




    3 - اکنون فایل های /dev را همانند زیر با استفاده از دستور mknod ایجاد میکنیم. در دستور زیر آپشن -m برای مشخص کردن بیت های پرمیژن فایل، c به معنای character file و دو عدد بعد اعداد minor و major هستند که فایل ها به آنها مربوط میشود.
    کد PHP:
    # mkdir -p /home/maryam/dev/
    # cd /home/maryam/dev/
    # mknod -m 666 null c 1 3
    # mknod -m 666 tty c 5 0
    # mknod -m 666 zero c 1 5
    # mknod -m 666 random c 1 8 

    4 - بعد از آن پرمیژن های مناسب را روی chroot jail تعریف میکنیم. دقت کنید که chroot jail و زیر دایرکتوری و فایل ها تحت آن باید متعلق به کاربر root باشد و توسط هیچ یوزر یا گروه معمولی دیگری قابل write نباشد.
    کد PHP:
    # chown root:root /home/maryam
    # chmod 0755 /home/maryam
    # ls -ld /home/maryam
    drwxr-xr-x 3 root root 4096 Jun 12 17:54 /home/maryam


    مرحله 2 : ایجاد Shell تعاملی برای SSH Chroot Jail

    5 - ابتدا دایرکتوری bin را ایجاد کنید و سپس فایل های /bin/bash را درون دایرکتوری bin همانند زیر copy کنید.
    کد PHP:
    # mkdir -p /home/maryam/bin
    # cp -v /bin/bash /home/maryam/bin/ 
    محدود کردن کاربران در لینوکس با chroot jail




    6 - اکنون library های (libs) مشترک مورد نیاز bash را تشخیص و همانند زیر آنها را به دایرکتوری lib کپی کنید.
    کد PHP:
    # ldd /bin/bash
    # mkdir -p /home/maryam/lib64
    # cp -v /lib64/{libtinfo.so.5,libdl.so.2,libc.so.6,ld-linux-x86-64.so.2} /home/maryam/lib64/ 
    محدود کردن یوزرها در لینوکس





    مرحله 3 : ایجاد و کانفیگ کاربر SSH

    7 - اکنون یوزر ssh را با دستور useradd ایجاد کنید و یک پسورد امن برای کاربر تعریف کنید.
    کد PHP:
    # useradd mina
    # passwd mina 
    8 - دایرکتوری تنظیمات کلی chroot jail را ایجاد کنید که مسیر آن /home/maryam/etc میباشد و فایل های آپدیت شده مربوط به اکانت (/etc/passwd و /etc/group) را در این دایرکتوری همانند زیر کپی کنید.
    کد PHP:
    # mkdir /home/maryam/etc
    # cp -vf /etc/{passwd,group} /home/maryam/etc/
    /etc/passwd’ -> /home/maryam/etc/passwd’
    /etc/group’ -> /home/maryam/etc/group’ 
    نکته : هر باری که شما کاربرهای بیشتری برای ssh به سیستم اضافه میکنید شما نیاز دارید که فایل های اکانت آپدیت شده را در دایرکتوری /home/maryam/etc کپی کنید.



    مرحله 4 : کانفیگ SSH برای استفاده از Chroot Jail

    9 - اکنون فایل sshd_config را باز کنید.
    کد PHP:
    # vi /etc/ssh/sshd_config 

    و خط های زیر را در فایل اضافه یا تغییر دهید.
    کد PHP:
    #define username to apply chroot jail to
    Match User mina
    #specify chroot jail
    ChrootDirectory /home/maryam 
    دستور chroot jail برای محدودیت کاربران




    فایل را ذخیره و از آن خارج شوید و سرویس sshd را restart کنید.
    کد PHP:
    # systemctl restart sshd
    OR
    # service sshd restart 


    مرحله 5 : تست کردن SSH با Chroot Jail

    10 - در اینجا تست میکنیم که آیا تنظیمات chroot jail همانند انتظار کار میکند یا خیر.
    کد PHP:
    # ssh mina@192.168.10.246
    -bash-4.1ls
    -bash-4.1date
    -bash-4.1uname 
    محدودیت کاربران در لینوکس




    از تصویر بالا ما میتوانیم که مشاهده کنیم که کاربر ssh در chroot jail حبص شده است و نمیتواند هر گونه دستور خارجی را همانند ls - date - uname و غیره را اجرا کند.

    یوزر تنها میتواند bash و دستورات درونی bash همانند pwd، history، echo و غیره را همانند تصویر زیر اجرا کند.
    کد PHP:
    # ssh tecmint@172.17.107.15
    -bash-4.1pwd
    -bash-4.1$ echo "Tecmint - Fastest Growing Linux Site"
    -bash-4.1history 
    محدود کردن یک یوزر در لینوکس





    مرحله 6 : ایجاد دایرکتوری Home کاربر SSH و اضافه کردن دستورات لینوکسی

    11 - از مرحله قبل میتوانید متوجه شوید که کاربر در دایرکتوری root حبس شده، ما میتوانیم یک دایرکتوری home برای کاربر ssh شبیه به زیر ایجاد کنیم. (این دایرکتوری ها برای تمام کاربران بعدی هم ایجاد کنید)
    کد PHP:
    # mkdir -p /home/maryam/home/mina
    # chown -R mina:mina /home/maryam/home/mina/
    # chmod -R 0700 /home/maryam/home/mina/ 

    12 - سپس دستوراتی همانند ls, date, mkdir در دایرکتوری bin نصب کنید.
    کد PHP:
    # cp -v /bin/ls /home/maryam/bin/
    # cp -v /bin/date /home/maryam/bin/
    # cp -v /bin/mkdir /home/maryam/bin/ 
    chroot jail on linux




    13 - سپس library های مشترک برای دستورات بالا را بررسی و به پوشه library های chroot jail انتقال دهید.
    کد PHP:
    # ldd /bin/ls
    # cp -v   /lib64/{libselinux.so.1,libcap.so.2,libacl.so.1,libc.so.6,libpcre.so.1,libdl.so.2,ld-linux-x86-64.so.2,libattr.so.1,libpthread.so.0}   /home/maryam/lib64/ 
    استفاده از chroot jail برای محدود کردن کاربران





    مرحله 7 : تست کردن SFTP با Chroot Jail

    14 - اکنون یک تست نهایی با استفاده از SFTP انجام میدهیم، بررسی میکنیم که آیا دستوراتی که اخیرا نصب کردیم به درستی کار میکند یا خیر.

    خطوط زیر را درون فایل /etc/ssh/sshd_config اضافه میکنیم :
    کد PHP:
    #Enable sftp to chrooted jail
    ForceCommand internal-sftp 
    فایل را ذخیره و از آن خارج شوید. سپس سرویس SSHD را restart کنید.
    کد PHP:
    # systemctl restart sshd
    OR
    # service sshd restart 

    15 - اکنون با استفاده از SSH تست کنید، شما error زیر را دریافت خواهید کرد.
    کد PHP:
    # ssh mina@172.17.107.15
    mina@172.17.107.15's password:
    This service allows sftp connections only.
    Connection to 172.17.107.15 closed. 
    این بار با استفاده از SFTP و همانند زیر امتحان کنید.
    کد PHP:
    # sftp mina@172.17.107.15 
    chroot jail برای محدودیت گذاشتن روی دایرکتوری یوزرها




    همچنین پیشنهاد میشود مطالعه کنید :

    محدود کردن کاربر SFTP به دایرکتوری Home توسط chroot jail (به زودی)


    در این پست ما به شما نحوه محدود کردن یک کاربر SSH به دایرکتوری مورد نظر (Chroot Jail) در لینوکس را نشان دادیم. اگر درباره موضوع بالا هر مشکلی برخوردید در همینجا مطرح کنید.
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 02-06-2021, 12:14 AM.
    Instagram : https://www.instagram.com/iranlinuxforum

    Voip Trainer - Asterisk - Elastix - Agi Programming- NewRock

    Voip Expert :ASTERISK-ELASTIX-NewRock Certified-With Experience of Working With
    Sangoma-Digium-Openvox-Synway-Atcom-Quintum Tenor-Polycom-Yealink-Rtx-Snom
    Cisco Collaboration - CME-CUCM-CUPs-CUC-WEBEX
    LPI ( Fundamental - LPI1 and LPI2 ) - Monitoring: ZABBIX-VOIPMONITOR-NAGIOS - CCNA

    Linkedin Profile : https://www.linkedin.com/in/masuma-vahid-26b17b66/

درباره انجمن منطقه لینوکسی ها

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

شبکه های اجتماعی
در حال انجام ...
X