Titel: Virenscanning Beitrag von: Stormbringer am 02. Januar 2005, 21:00:37 Hallo Leute,
ich habe vor einigen Monaten schon einmal danach gefragt, es aber nicht weiter verfolgt ... Heute nun habe ich mir erst einmal einen Satz RPMs für die hier laufende SuSE 9.2 gebaut, inkl. mod_exec. In die /etc/proftpd.conf habe ich dann folgende Einträge gemacht: Code: ExecEngine on ExecLog /var/log/proftpd/exec.log ExecTimeout 30 ExecOnCommand WRITE,STOR /usr/local/f-prot/f-prot.sh --user -%u --file %f Das funzt auch wunderbar, solange DefaultRoot deaktiviert bleibt. Nun denke ich über eine andere Lösung nach, um DefaultRoot nutzen zu können ... aber leider verlangt mod_exec die Pfadangabe des auszuführenden Programms als absolute Angabe - kann man das irgendwie umbiegen? Auf dem Server werden nur Systembenutzer Zugang zu Ihren ~/ haben. Somit wäre es möglich, bei einer relativen Angabe, durch linken einem jeden Benutzer die AV Engine nutzbar zu machen ... oder habe ich da einen elementaren Denkfehler? Gruß Titel: Re: Virenscanning Beitrag von: stonki am 02. Januar 2005, 23:58:15 um es mal deutlich zu sagen: mod_exec mit defaultroot ist ein riesen Scheiss. Ich wuerde Dir empfehlen auf defaultroot zu verzichten und mod_vroot zu verwenden, dann hast Du den ganzen scheiss mit dem chroot nicht. Jeder Programm, jede Lib, jedes wasweissich ausserhalb Deines defaultroot ist ja sonst nicht zu erreichen, du muesstest Dir fuer jeden User eine mini chroot umgebung bauen.
http://www.castaglia.org/proftpd/modules/mod_vroot.html cu stonki Titel: Virenscanning Beitrag von: Stormbringer am 03. Januar 2005, 14:03:35 Ok, Danke schon einmal!
... funzt aber leider nicht wirklich ... Habe nun einmal mod_vroot mit eingebaut, die Konfigurationsdatei angepaßt, und proftpd neu gestartet. Code: suse92test:/var/log/proftpd # ftp localhost Trying 127.0.0.1... Connected to localhost. 220 ProFTPD 1.2.10 Server (ProFTPD Server) [127.0.0.1] Name (localhost:root): stormbringer 331 Password required for stormbringer. Password: 230 User stormbringer logged in. Remote system type is UNIX. Using binary mode to transfer files. ftp> ls 229 Entering Extended Passive Mode (|||32803|) 150 Opening ASCII mode data connection for file list 421 Service not available, remote server has closed connection. ftp> bye suse92test:/var/log/proftpd # Und sies steht in /var/log/proftpd/proftpd.syslog Code: Jan 03 13:52:09 suse92test proftpd[24595] suse92test.skar.dt: ProFTPD 1.2.10 (stable) (built Mon Jan 3 13:04:40 CET 2005) standalone mode STARTUP Jan 03 13:52:15 suse92test proftpd[24597] suse92test.skar.dt (127.0.0.1[127.0.0.1]): FTP session opened. Jan 03 13:52:22 suse92test proftpd[24597] suse92test.skar.dt (127.0.0.1[127.0.0.1]): USER stormbringer: Login successful. Jan 03 13:52:24 suse92test proftpd[24597] suse92test.skar.dt (127.0.0.1[127.0.0.1]): ProFTPD terminating (signal 11) Jan 03 13:52:24 suse92test proftpd[24597] suse92test.skar.dt (127.0.0.1[127.0.0.1]): FTP session closed. Sobald ich 'VRootEngine' auf off setze, kann eine FTP Sitzung normal genutzt werden ... Hier meine /etc/proftpd.conf: Code: ServerName "ProFTPD Server" ServerType standalone DefaultServer on Port 21 Umask 022 MaxInstances 30 User nobody Group nogroup VRootEngine on VRootOptions allowSymlinks ExecEngine on ExecLog /var/log/proftpd/exec.log ExecTimeout 30 ExecOnCommand WRITE,STOR /usr/local/f-prot/f-prot.sh --user -%u --file %f PidFile /var/run/proftpd.pid ScoreboardFile /var/run/proftpd.score SystemLog /var/log/proftpd/proftpd.syslog TransferLog /var/log/xferlog IdentLookups off RequireValidShell off UseFtpUsers off UseReverseDNS off WtmpLog on #Umask 002 TimeoutLogin 120 TimeoutIdle 600 TimeoutNoTransfer 900 TimeoutStalled 3600 LogFormat default "%h %l %u %t \"%r\" %s %b" LogFormat auth "%v [%P] %h %t \"%r\" %s" LogFormat write "%h %l %u %t \"%r\" %s %b" ExtendedLog /var/log/proftpd/proftpd-access.log WRITE,READ write ExtendedLog /var/log/proftpd/proftpd-auth.log AUTH auth #ExtendedLog /var/log/proftpd/proftpd-paranoid.log ALL default #DefaultRoot ~ AllowOverwrite on <Limit SITE_CHMOD> DenyAll </Limit> <Anonymous ~ftp> User ftp Group ftp UserAlias anonymous ftp MaxClients 5 DisplayLogin welcome.msg DisplayFirstChdir .message <Limit WRITE> DenyAll </Limit> </Anonymous> Korrekt erstellt wurde proftpd wohl auch: Code: suse92test:/var/log/proftpd # /usr/sbin/proftpd -l Compiled-in modules: mod_core.c mod_xfer.c mod_auth_unix.c mod_auth_file.c mod_auth.c mod_ls.c mod_log.c mod_site.c mod_auth_pam.c mod_ratio.c mod_readme.c mod_exec.c mod_vroot.c mod_cap.c suse92test:/var/log/proftpd # Und die Syntax dürfte ebenfalls stimmen: Code: suse92test:/var/log/proftpd # /usr/sbin/proftpd -td5 Checking syntax of configuration file - parsing '/etc/proftpd.conf' configuration suse92test.skar.dt - suse92test.skar.dt - Config for ProFTPD Server: suse92test.skar.dt - ~ftp/ suse92test.skar.dt - Limit suse92test.skar.dt - DenyAll suse92test.skar.dt - UserName suse92test.skar.dt - GroupName suse92test.skar.dt - UserAlias suse92test.skar.dt - MaxClients suse92test.skar.dt - DisplayLogin suse92test.skar.dt - DisplayFirstChdir suse92test.skar.dt - Umask suse92test.skar.dt - ExecOnCommand suse92test.skar.dt - TransferLog suse92test.skar.dt - RequireValidShell suse92test.skar.dt - UseFtpUsers suse92test.skar.dt - WtmpLog suse92test.skar.dt - AllowOverwrite suse92test.skar.dt - Limit suse92test.skar.dt - DenyAll suse92test.skar.dt - DefaultServer suse92test.skar.dt - Umask suse92test.skar.dt - UserID suse92test.skar.dt - UserName suse92test.skar.dt - GroupID suse92test.skar.dt - GroupName suse92test.skar.dt - VRootEngine suse92test.skar.dt - VRootOptions suse92test.skar.dt - ExecEngine suse92test.skar.dt - ExecLog suse92test.skar.dt - ExecTimeout suse92test.skar.dt - ExecOnCommand suse92test.skar.dt - PidFile suse92test.skar.dt - TransferLog suse92test.skar.dt - IdentLookups suse92test.skar.dt - RequireValidShell suse92test.skar.dt - UseFtpUsers suse92test.skar.dt - WtmpLog suse92test.skar.dt - TimeoutLogin suse92test.skar.dt - TimeoutIdle suse92test.skar.dt - TimeoutNoTransfer suse92test.skar.dt - TimeoutStalled suse92test.skar.dt - ExtendedLog suse92test.skar.dt - ExtendedLog suse92test.skar.dt - AllowOverwrite Syntax check complete. suse92test:/var/log/proftpd # Ich habe dann noch zwei Debugfiles erstellt, einmal mit deaktivierter Option VRootEngine (proftpd.debug), und einmal mit aktivierter Option (proftpd.debug1). EDITIERT Hat jemand eine Idee? Danke & Gruß Titel: Virenscanning Beitrag von: Stormbringer am 03. Januar 2005, 14:52:13 Argh ..... nun läuft es! :D
/var/log/proftpd/exec.log sagt: Code: Jan 03 14:49:59 mod_exec/0.8.1[24992]: preparing to execute '/usr/local/f-prot/f-prot.sh' with uid 0, gid 100 Jan 03 14:50:01 mod_exec/0.8.1[24961]: STOR ExecOnCommand '/usr/local/f-prot/f-prot.sh' succeeded Der entsprechende Passus in der proftpd.conf: Code: ## Use of mod_vroot ## VRootEngine on VRootOptions allowSymlinks DefaultRoot ~ ## Use of mod_exec (eg. for virus-scanning) ## mod_exec ExecEngine on ExecLog /var/log/proftpd/exec.log ExecTimeout 30 ExecOnCommand WRITE,STOR /usr/local/f-prot/f-prot.sh --user -%u --file %f Gruß Titel: Virenscanning Beitrag von: Wörsty am 03. Januar 2005, 16:00:49 ...und was macht er, wenn er einen Virus findet?
Titel: Virenscanning Beitrag von: Stormbringer am 03. Januar 2005, 19:45:49 Das weiß ich noch nicht.
Nun muß ich erst einmal eine vernünftige Anbindung an die AV Software herstellen. Momentan tendiere ich zu uvscan (ist zwar nicht OS, wird aber vom AG bezahlt). uvscan prüft Dateien und deren Inhalt, bspw. Archive, und im Falle einer Infektion wird die Datei in ein anzugebendes Quarantäneverzeichnis überführt. Ob ggf. dem jeweiligen Benutzer noch eine Info zukommen kann (außer einer Logdatei) weiß ich (noch) nicht ... in Zweifelsfall sollte er es aber daran bemerken, daß eine übertragene Datei nicht ankommt/angezeigt wird. Gruß |