OpenSSH mit chroot auf debian Art unter Lenny

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:

Werbung

Top