اطلاعیه

بستن
هنوز اعلام نشده است.

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

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

  • محدود کردن دسترسی 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} 
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Listing-Required-Files.PNG مشاهده: 1 حجم: 18.2 کیلو بایت










    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/ 
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Copy-Bin-Files.PNG مشاهده: 1 حجم: 4.8 کیلو بایت









    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/ 
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Copy-Shared-Library-Files.PNG مشاهده: 1 حجم: 23.0 کیلو بایت








    مرحله 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 
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Configure-SSH-Chroot.PNG مشاهده: 1 حجم: 24.7 کیلو بایت









    فایل را ذخیره و از آن خارج شوید و سرویس 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 
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Testing-SSH-User-Chroot-Jail.PNG مشاهده: 1 حجم: 10.3 کیلو بایت









    از تصویر بالا ما میتوانیم که مشاهده کنیم که کاربر 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 
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: SSH-Builtin-Commands.PNG مشاهده: 1 حجم: 15.9 کیلو بایت










    مرحله 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/ 
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Add-Commands-to-SSH-User.PNG مشاهده: 1 حجم: 7.7 کیلو بایت









    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/ 
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Copy-Shared-Libraries.PNG مشاهده: 1 حجم: 39.3 کیلو بایت










    مرحله 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 
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Testing-sFTP-SSH-User.PNG مشاهده: 1 حجم: 17.1 کیلو بایت








    همچنین پیشنهاد میشود مطالعه کنید :
    محدود کردن کاربر SFTP به دایرکتوری Home توسط chroot jail (به زودی)

    در این پست ما به شما نحوه محدود کردن یک کاربر SSH به دایرکتوری مورد نظر (Chroot Jail) در لینوکس را نشان دادیم. اگر درباره موضوع بالا هر مشکلی برخوردید در همینجا مطرح کنید.
    ویرایش توسط p30web : http://linux-zone.org/forums/member/9166-p30web در ساعت 06-20-2018, 02:45 AM
    Telegram : https://telegram.me/linuxzone

    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 : http://www.linkedin.com/profile/view...15&trk=spm_pic
پردازش ...
X
کانال تلگرام منطقه لینوکسی ها