Nun wollen wir aber beginnen und entpacken COPS in unserem Home-Verzeichnis als ganz normaler Nutzer. Anschließend wechseln wir in das neue Verzeichnis und sehen einige Dateien und ein paar Unterverzeichnisse, zu welchen ich später noch komme, und lesen die README-Dateien in der vorgegebenen Reihenfolge. Diese Reihenfolge ist davon abhängig, ob wir die klassische Variante oder die Perl-Variante installieren wollen. Als nächstes ändern wir im Makefile die allererste Makrodefinition (INSTALL_DIR) entsprechend unseres gewünschten Zielverzeichnises. Außerdem müssen wir noch die Konstante ARB_CONST in pass.c im Verzeichnis src (dort stehen die C-Quellen) etwas erhöhen. Nun führen wir (unabhängig von unserer gewälten Variante)
make man gzip docs/*.1 mv docs/*.1.gz /usr/man/man1/ su chown root /usr/man/man1/* chgrp root /usr/man/man1/* chmod a+r /usr/man/man1/* logoutJe nach Variante führen wir nun aus: Bei der Perl-Variante
cd perl reconfigUnd nun muß das COPS-Perl-Script angepasst werden. (README.pl) Da COPS noch kein Shadow-Password-System kennt muß pass.pl umgeschrieben werden! (Option P funktioniert noch nicht für pass.pl) Eventuell lässt sich aber die pass.c Variante hier einschleusen. (Vorher bitte übersetzen.)
Bei der klassischen Variante führen wir
reconfig makeaus und ändern im Script cops die Variablen
MMAIL=(NO/YES) # Wollen wir die Berichte per Mail erhalten? LANGUAGE=german # Funktioniert wohl noch nicht so ganz. ONLY_DIFF=YES # Nur die Änderungen zum letzten Bericht per Mail versenden? RUN_SUID=YES # Programme die unter SUID laufen finden? BIT_BUCKET=/dev/null # Wohin mit Fehlern während des COPS-Laufes? VERBUCKET=/dev/null # Wohin mit dem blah blah? SECURE=/usr/foo/bar # Das COPS-Verzeichnis SECURE_USERS="foo@bar.edu" # Unsere MailadresseEs ist nicht zu empfehlen die Mails über den als sicher bekannten Bereich hinauszuschicken. (Also das eigene System, die eigene Abteilung oder die eigene Organisation, denn wer hat gesagt, das nicht irgendjemand unsere Mail liest oder auf COPS Berichte hin untersucht.)
Da unsere /etc/passwd auf Grund des Password-Shadow-System keine Passwörter mehr enthält, fügen wir dem Aufruf von pass die Optionen
-w /pfad/zum/woerter/buch/woerter.buch -P /etc/shadow zu.Da /etc/shadow natürlich kein GECOS-Feld enthält kann hier kein Abgleich erfolgen, ob Wörter aus diesem Feld als Passwort verwendet wurden. Hier müsste mit Hilfe eines Scriptes die /etc/passwd vor dem COPS-Lauf kopiert und die Passwörter aus der /etc/shadow in das kopierte File übertragen werden. (umask 077 setzen!) COPS kann beim Passwort cracken zwar nicht mit CRACK mithalten, ist aber nicht schlecht. Von hinten geschriebene Wörter, Passwörter mit Sonderzeichen oder eine Wortkombination aus Wörtern in .plan kann COPS aber nicht finden. Außerdem scheint der bei COPS dem Programm pass.chk zu Grunde liegende Algorithmus nicht so effektiv zu sein, wie bei CRACK.
Beim kuang Aufruf entscheiden wir uns für die klassische oder die kuang.pl Variante, welche mehr Features bieten soll. (Achtung dann muß
cd perl reconfignachgeholt werden und später muß kuang.pl per Hand in das Zielverzeichnis übertragen werden.)
crc.chk lassen wir besser auskommentiert. Wenn wir suid.chk von den "#" befreihen sollten wir es auch einschalten! (siehe weiter oben)
Nun installieren wir COPS:
su make installUnd wir testen:
/pfad/zum/cops/verzeichnis/cops &COPS legt seine Berichte unter /pfad/zum/cops/verzeichnis/hostname ab, was in den Filesystemstandart nicht so ganz hineinpasst. Deshalb verschieben wir diese Verzeichnisse an einen geeigneten Ort unter /var und setzten einen Link dorthin. Der Inhalt eines solchen Verzeichnises sieht dann in etwa wie folgt aus:
total 6 -rw------- 1 root root 617 Oct 1 17:24 1997_Oct_1 -rw------- 1 root root 691 Oct 5 18:40 1997_Oct_5 -rw------- 1 root root 744 Oct 6 03:58 1997_Oct_6 -rw------- 1 root root 1155 Oct 7 01:30 1997_Oct_7 -rw------- 1 root root 618 Sep 30 01:32 1997_Sep_30
Unter docs liegen die Manual-Pages, welche wir ja schon übersetzt und in das Verzeichnis /usr/man/man1 geschoben haben. Das unter src die C-Quellen liegen dürfte auch keine Überraschung sein, genausowenig wie die Perl-Version, welche natürlich unter Perl liegt. Warum jedoch unter extensions diverse Texte zu finden sind bleibt unverständlich. Unter dem Verzeichnis carp finden wir das gleichnamige Programm (COPS Analysis and Report Programm) welches uns sehr schöne Übersichten über unsere Systeme zeigt.
COPS warning summary hostname rep date crn dev ftp grp hme is pass msc pwd rc root usr kng =============================================================================== walhall 1997_Oct_7 | | 2 | 2 | | 1 | | 2 | | 2 | | | | |Besonders geeignet ist das Tool also, wenn wir mehrere Systeme mit COPS überwachen. (Hier ist eventuell auch ein Grund zu sehen, warum die Berichte unter dem COPS-Verzeichnis abgelegt werden und nicht unter einem Verzeichnis unter /var.) Sehr schön ist auch die Möglichkeit der Umwandlung unserer ASCII-Berichte in Postscript-Files mit
carp2ps carpberichtBevor wir jedoch diese schönen Berichte erhalten müssen wir die richtigen Pfade in carp und carp2ps eintragen. Carp muß immer aus seinem Heimatverzeichnis heraus gestartet werden. Zu beachten ist jedoch, daß carp diese Berichte nur erzeugen kann, wenn cops mit der Option -v gestartet wurde.
Im Verzeichnis checkacct befindet sich ein Tool, welches allen Usern zugänglich gemacht werden sollte. Eventuell kann dieses Tool auch für alle User in /etc/profile eingebunden werden. Checkacct findet GROBE Fehler in der persönlichen Konfiguration. Hier sind besonders die Files $HOME/.[a-z]* zu nennen. Das Tool arbeitet interaktiv und ist auch recht geschwätzig, WENN es einen Fehler findet. Die Behebung des Fehlers erfolgt allerdings ohne Rückfrage an den Nutzer. Um das Tool zu installieren editieren wir das File sysV.m4 (es sind wieder die richtigen Pfade auf unserem System gesucht) und setzen einen Link default.m4 auf dieses File. Außerdem muß noch DESTDIR im Makefile mit dem Namen unseres gewünschten Zielverzeichnises versehen werden.
Unter extra_src finden sich noch einige Tools, die nicht auf jedem System notwendig sind. Ihnen allen gemeinsam ist, daß es Shell-Scripten sind und daher in jedem vor der Anwendung die Pfade korrekt zu setzen sind.
Am Beispiel des dort vorhandenen Tools mail.chk möchte ich nun zeigen, wie einfach es ist cops zu erweitern. Zunächst schieben wir das Tool (nachdem wir die Pfade korrekt gesetzt haben) in das COPS-Verzeichnis (ich erinnere wieder einmal an die umask 077). Nun müssen wir im COPS-Script die Variable SECURE_PROGRAMMS um mail.chk erweitern:
SECURE_PROGRAMS="root.chk dev.chk is_able.chk group.chk \ home.chk rc.chk passwd.chk pass.chk misc.chk ftp.chk \ cron.chk user.chk init_kuang kuang addto \ clearfiles filewriters members is_able bug.chk"Nachdem wir die folgenden Zeilen in das COPS-Script nach bug.chk eintragen haben sind wir schon fertig.
# # Bug.chk? New stuff... if $TEST -n "$verbose" ; then $ECHO "**** bug.chk ****" >> $VERBUCKET ; fi $SECURE/bug.chk >> $RESULT 2>> $BIT_BUCKET if $TEST -n "$verbose" ; then $ECHO "**** mail.chk ****" >> $VERBUCKET ; fi $SECURE/mail.chk >> $RESULT 2>> $BIT_BUCKETWie man sieht ist es eigentlich nur eine Abschreibeübung welche zum größten Teil auch noch der Editor für uns erledigt. Zum Schluss möchte ich noch einen Beispielreport von COPS zeigen, bei welchem auch die Ausgaben durch die Erweiterung um das mail.chk Tool schon enthalten sind:
ATTENTION: Security Report for Tue Oct 7 07:16:24 CEST 1997 from host walhall **** root.chk **** **** dev.chk **** Warning! NFS file system exported with no restrictions! Warning! NFS file system exported with no restrictions! Warning! NFS file system exported with no restrictions! Warning! NFS file system exported with no restrictions! **** is_able.chk **** **** rc.chk **** **** cron.chk **** **** group.chk **** **** home.chk **** Warning! User nobody's home directory /tmp is mode 01777! Warning! User wwwrun's home directory /tmp is mode 01777! **** passwd.chk **** Warning! Password file, line 13, negative user id: nobody:x:-2:-2:nobody:/tmp:/bin/false **** user.chk **** **** misc.chk **** **** ftp.chk **** Warning! Home directory for ftp doesn't exist! **** pass.chk **** Warning! Password Problem: null passwd: test1 shell: Warning! Password Problem: Guessed: coadmin shell: passwd: Wirtschaft **** kuang **** **** bug.chk **** **** mail.chk **** Warning: problem files in /var/spool/mail: -rw------- 1 503 mail 0 Mar 12 1997 hacker -rw-r--r-- 1 jan mail 0 Aug 23 1996 jan -rw------- 1 test1 mail 0 Mar 17 1997 player -rw------- 1 test1 mail 0 Dec 31 1996 test -rw------- 1 503 users 0 Oct 5 18:23 test5 -rw------- 1 test4 mail 0 Mar 17 1997 user_abcDie Fehlermeldungen über NFS kommen dadurch zustande, daß COPS sich für die Konfigurationsfiles interessiert und nicht dafür, ob der Dienst wirklich läuft. Bei den übrigen Fehlermeldungen habe ich natürlich etwas nachgeholfen.
Was nun noch bleibt ist der Eintrag von COPS in die crontab. Achtung! Wenn COPS mehr als einmal pro Tag aufgerufen wird wird der jeweils letzte Bericht des Tages überschrieben.
Nicht kommerzielle Nutzung frei.