OpenSSH mit chroot auf debian Art unter Lenny

Dieses Thema im Forum "Tipps - Tricks - Mods" wurde erstellt von sirrus, 20. Mai 2009.

  1. sirrus

    sirrus New Member

    [FONT=&quot]Bisher habe ich hier keine Debian korrekte Anleitung gefunden. Deswegen hier mal eine Anleitung, wie man das richtig mit debian macht:

    Installation der Debian Helper[/FONT]
    [FONT=&quot]apt-get install debian-builder[/FONT]

    [FONT=&quot]Source und Abhängigkeiten holen[/FONT]
    [FONT=&quot]apt-get build-dep openssh-server[/FONT]
    [FONT=&quot]apt-get source openssh-server[/FONT]


    [FONT=&quot]Erst einmal in das Verzeichnis wechseln und bauen[/FONT]
    [FONT=&quot]dpkg-buildpackage[/FONT]

    [FONT=&quot]Dann Patchen - Datei chroot-51.patch[/FONT]
    Code:
    --- orig/session.c   2009-05-19 16:46:39.000000000 +0200
    +++ session.c       2009-05-19 16:38:07.000000000 +0200
    @@ -91,6 +91,8 @@
    #include "monitor_wrap.h"
    #include "sftp.h"
    
    +#define CHROOT
    +
    #if defined(KRB5) && defined(USE_AFS)
    #include <kafs.h>
    #endif
    @@ -1451,6 +1453,11 @@
    void
    do_setusercontext(struct passwd *pw)
    {
    +#ifdef CHROOT
    +       char *user_dir;
    +       char *new_root;
    +#endif /* CHROOT */
    +
          char *chroot_path, *tmp;
    
    #ifdef WITH_SELINUX
    @@ -1500,6 +1507,25 @@
                          exit(1);
                  }
                  endgrent();
    +#ifdef CHROOT
    +        user_dir = xstrdup(pw->pw_dir);
    +        new_root = user_dir + 1;
    +
    +        while((new_root = strchr(new_root, '.')) != NULL) {
    +                new_root--;
    +                if(strncmp(new_root, "/./", 3) == 0) {
    +                        *new_root = '\0';
    +                        new_root += 2;
    +
    +                        if(chroot(user_dir) != 0)
    +                                fatal("Couldn't chroot to user's directory %s",user_dir);
    +                        pw->pw_dir = new_root;
    +                        break;
    +                }
    +
    +                new_root += 2;
    +        }
    +#endif /* CHROOT */
    # ifdef USE_PAM
                  /*
                   * PAM credentials may take the form of supplementary groups.
    @@ -1691,7 +1717,6 @@
                          display_loginmsg();
    #endif /* HAVE_OSF_SIA */
          }
    -
    #ifdef USE_PAM
          if (options.use_pam && !options.use_login && !is_pam_session_open()) {
                    debug3("PAM session not opened, exiting");
    Patchen
    [FONT=&quot]patch –I chroot-51.patch session.c[/FONT]

    [FONT=&quot]Erneut Bauen[/FONT]
    [FONT=&quot]./debian/rules clean[/FONT]
    [FONT=&quot]./debian/rules build[/FONT]
    [FONT=&quot]./debian/rules binary[/FONT]


    [FONT=&quot]Das dann im übergeordneten Ordner entstandene openssh-server*.deb installieren.[/FONT]

    dpkg -i ../openssh-server*.deb

    Für ISPConfig ist weiter nichts zu tun - in /etc/passwd sollten Benutzer mit Shell Zugriff am Ende mit /./ versehen sein, was den chroot Patch veranlasst in das "Gefängnis" zu wechseln.

    [FONT=&quot]Grüße,
    Andreas
    [/FONT]
     
    Zuletzt bearbeitet: 25. Mai 2009

Diese Seite empfehlen