Newsgroup: it.comp.os.linux.sys
Titolo: Usare cron e cambiare alcune impostazioni

Ciao a tutti,
ho notato che cron di Mandrake 9.0 settato con livello di sicurezza "Piu'
Alto"  va a settare in automatico i permessi a 700 tutte le home di tutto
gli utenti.  Vorrei fargli smettere di fare cio' ma non so come.
Ho provato a vedere tra i 1469 file riguardanti cron e ho trovato forse un
file interessante che parla al riguardo:  /usr/share/msec/security_check.sh.
All'interno di questo file viene verificato come sono settate le home, ma
sinceramente non ci capisco molto.   :-)
### Check home directories.  Directories should not be owned by someone else
or writable.
awk -F: '/^[^+-]/ { print $1 " " $3 " " $6 }' /etc/passwd | \
while read username uid homedir; do
        if [[ -d ${homedir} ]] ; then
                realuid=`ls -LldGn ${homedir}| awk '{ print $3 }'`
                realuser=`ls -LldG ${homedir}| awk '{ print $3 }'`
                permissions=`ls -LldG ${homedir}| awk '{ print $1 }'`
                printf "${permissions} ${username} (${uid}) ${realuser}
(${realuid})\n"
        fi
done | awk '$3 != $5 && $5 != "(0)" \
        { print "user=" $2 $3 " : home directory is owned by " $4 $5 "." }
     $1 ~ /^d....w/ && $2 != "lp" && $2 != "mail" \
        { print "user=" $2 $3" : home directory is group writable." }
     $1 ~ /^d.......w/ \
        { print "user=" $2 $3" : home directory is other writable." }' >
${TMP}
if [[ -s $TMP ]] ; then
        printf "\nSecurity Warning: these home directory should not be owned
by someone else or writable :\n" >>
 ${SECURITY}
        cat ${TMP} >> ${SECURITY}
fi
fi # End of check perms
Qualunque aiuto e' piu' che ben accetto.
Grazie.
KASH

                 printf "${permissions} ${username} (${uid}) ${realuser}
e verifica le permissions, dopo di che stampa un rapportino.
In questo script i permessi non vengono cambiati.
Davide

 In questo script i permessi non vengono cambiati.
Allora ho persino sbagliato script, mi era sembrato quello giusto.   :-(
Grazie e CIAO
KASH

> Come faccio a vedere cosa fanno i cron e come cambiare tali istruzioni?
crontab -l per vedere e crontab -e per editare
poi ti edit/aggiungi/cancelli tutti i file in /etc/cron.hourly 
/etc/cron.daily ...
Stefano Sancese
-- 
Pgp Fingerprint: FF8D 7255 E8DE 882C  7991 B3E7 C703 C7EA
In God we trust, all others we monitor (National Security Agency)

 home degli utenti rimanga sempre 755, ma non so come fare.  :-(
se e' un processo che funziona ogni tanto minuti prova a vedere nella
crontab "master" o nella cron.hourly
Davide

 crontab "master" o nella cron.hourly
Scusa ma cosa e' il crontab "master" ?
Ho provato a guardare nella cron.hourly ma non c'e' nulla che mi serva,
almeno credo.
L'unico file in questa directory e':    msec -> /usr/sbin/msec*
e questo e' quanto mi dice quando lancio less msec:
==> This is a directory, showing the output of ls -lAL
totale 4
#!/bin/sh
#---------------------------------------------------------------
# Project         : Mandrake Linux
# Module          : share
# File            : msec
# Version         : $Id: msec,v 1.8 2002/08/19 21:07:17 flepied Exp $
# Author          : Frederic Lepied
# Created On      : Thu Dec 13 11:36:50 2001
# Purpose         : entry script to run hardness script or change
#                  the security level.
#---------------------------------------------------------------
if [ "`whoami`" != "root" ]; then
    echo 'msec: sorry, you must be root !'
    exit 1
fi
LCK=/var/run/msec.pid
function cleanup() {
    rm -f $LCK
}
if [ -f $LCK ]; then
    if [ -d /proc/`cat $LCK` ]; then
        exit 0
    else
        rm -f $LCK
    fi
fi
echo -n $$ > $LCK
trap cleanup 0
MSEC=/usr/share/msec/msec.py
OPT=""
for a in "$@"; do
    if [ "$a" = '-o' ]; then
        OPT="$OPT -o"
        NEXT=1
    else
        if [ "$NEXT" = 1 ]; then
            OPT="$OPT $a"
        else
            last="$a"
        fi
        NEXT=0
    fi
done
if [ -n "$last" ]; then
    CHANGE=-c
    case "$last" in
        [0-5]) ;;
        *) [ -x /usr/share/msec/$last.py ] &&
MSEC=/usr/share/msec/$last.py;;
    esac
else
    # no args so try to guess if a custom msec is needed
    . /etc/sysconfig/msec
    case "$SECURE_LEVEL" in
        [0-5]) ;;
        *) MSEC=/usr/share/msec/$SECURE_LEVEL.py;;
    esac
fi
if [ ! -x "$MSEC" ]; then
    echo "$MSEC not found or not executable. Aborting" 1>&2
    exit 1
fi
if $MSEC "$@"; then
    . /etc/sysconfig/msec
    [ -z "$PERM_LEVEL" ] && PERM_LEVEL=$SECURE_LEVEL
    LOCAL=
    [ -f /etc/security/msec/perm.local ] &&
LOCAL=/etc/security/msec/perm.local
    /usr/share/msec/Perms.py $CHANGE $OPT /usr/share/msec/perm.$PERM_LEVEL
$LOCAL
fi
# msec ends here
Ci hai capito qualcosa?  Io ho capito che qui no c'e' nulla di interessante
per risolvere il mio problema.
Grazie e ciao!
KASH

 /etc/cron.daily ...
Nella cartella /etc/cron.hourly  c'e' solo un file di nome msec  che e' un
collegamento e che punta a /usr/sbin/msec.
Dentro questo file non ho trovato nulla di interessante e che riguardasse
l'argomento.
Per tutte le altre cartelle (es. /etc/cron.daily) e i file dentro stessa
cosa, non ho trovato nulla che mi sembrasse utile e che dicesse di dover
cambiare i permessi nelle home.
Aiuto, che fare?
Grazie e ciao!
KASH

 Scusa ma cosa e' il crontab "master" ?
Quello generico che dovrebbe essere in /etc.
Davide

 e questo e' quanto mi dice quando lancio less msec:
Guarda il man di msec e anche qua /usr/share/doc/msec-*/security.txt

 Guarda il man di msec e anche qua /usr/share/doc/msec-*/security.txt
Nel man di msec mi dice di controllare  /var/lib/msec/security.conf
CHECK_SHADOW=yes
CHECK_SUID_MD5=yes
CHECK_UNOWNED=yes
CHECK_SECURITY=yes
CHECK_PASSWD=yes
SYSLOG_WARN=yes
CHECK_SUID_ROOT=yes
CHECK_PERMS=yes
MAIL_EMPTY_CONTENT=yes
CHECK_WRITABLE=yes
CHKROOTKIT_CHECK=yes
CHECK_PROMISC=yes
CHECK_SGID=yes
RPM_CHECK=yes
TTY_WARN=yes
MAIL_WARN=yes
CHECK_OPEN_PORT=yes
Non ci vedo nulla di male, o nulla che centri con il problema del cambio
permessi per le home.
Invece in /usr/share/doc/msec-0.36/security.txt   ho trovato qualcosa di
interessante.
Penso di aver impostato il livello di sicurezza su "Piu Alto" che credo
corrisponda ad un livello 4 (tra 0 e 5)
Riporto la parte secondo me interessante:
- umask 077 ( user = read,write | group =  | other =  ) for normal users
Ma non credo che questo sia la parte che va a modificare i permessi delle
home.    :-(
Per completezza riporto tutta la parte del Security Level 4.  Magari
qualcuno ci vede qualcosa che io non vedo.
****************************
Security level 4 ( Aka Secured system ) :
- Global security check
- Permissions check
- Suid root file check
- Suid root file md5sum check
- Suid group file check
- Writable file check
- Unowned file check
- Promiscuous check
- Listening port check
- Passwd file integrity check
- Shadow file integrity check
- Warning in syslog
- Warning in /var/log/security.log
- Warning directly on tty
- rpm database checks
- Send the results of checks by mail even if they are empty
 to show that the checks were run.
- umask 022 ( user = read,write | group = read | other = read ) for root
- umask 077 ( user = read,write | group =  | other =  ) for normal users
- restricted file permissions.
- All system events additionally logged to /dev/tty12
- System security check every midnight ( crontab ).
- localhost authorized to connect to X display.
- X server doesn't listen for tcp connections
- no autologin
- sulogin in single user
- no direct root login
- remote root login only with a pass phrase
- no list of users in kdm and gdm
- password aging at 60 days
- shell history limited to 10
- shell timeout 3600 seconds
- at and crontab not allowed to users not listd in /etc/at.allow and
/etc/cron.allow
* - Services not contained in /etc/security/msec/server.4 are disabled
during
package installation (  considered as not really secure ) ( but the user can
reenable it with
chkconfig -add ).
- Connection to the system denyied for all except localhost (authorized
services must be
in /etc/hosts.allow).
- ctrl-alt-del only allowed for root ( or user in /etc/shutdown.allow ).
- most sensible files and directories are restricted to the members of the
adm group.
- home directories are not accesible by others and group members.
- X commands from /usr/X11R6/bin restricted to the members of the xgrp
group.
- network commands (ssh, scp, rsh, ...) restricted to the members of the
ntools group.
- compilation commands (gcc, g++, ...) restricted to the members of the
ctools group.
- rpm command restricted to the members of the rpm group.
Il problema persiste, anche se nel fratempo ho imparato tanto.
Grazie dell'aiuto.
KASH

 Quello generico che dovrebbe essere in /etc.
Quello generico?
Io ho trovato le seguenti directory:  cron.d   cron.daily    cron.monthly
cron.weekly   cron.hourly   e i file  crontab  cron.allow  in /etc/.
Nella cartella cron.d  c'e' un file msec dentro il quale si fa riferimento
solo a  /usr/share/msec/promisc_check.sh   dove non ho trovato nulla al
riguardo dei permessi e delle home.
Nel file cron.allow c'e' la scritta:  root.
Nel file crontab c'e' solo qusto:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root nice -n 19 run-parts /etc/cron.hourly
02 4 * * * root nice -n 19 run-parts /etc/cron.daily
22 4 * * 0 root nice -n 19 run-parts /etc/cron.weekly
42 4 1 * * root nice -n 19 run-parts /etc/cron.monthly
Nella cartella cron.hourly ce' solo il file  msec -> /usr/sbin/msec dove non
ho trovato nulla che facesse a mio caso, ma magari non so leggere, quindi la
riporto qui sotto:


Nella cartella cron.daily si sono i seguenti file:
logrotate*   (direi che non centra),
makewhatis.cron*  (direi che non centra),
msec -> /usr/share/msec/security.sh*    qui dentro ho trovato molti
riferimenti ad altri file, tra cui uno forse interessante a
/var/lib/msec/security.conf  di cui contenuto riporto qui sotto:
CHECK_SHADOW=yes
CHECK_SUID_MD5=yes
CHECK_UNOWNED=yes
CHECK_SECURITY=yes
CHECK_PASSWD=yes
SYSLOG_WARN=yes
CHECK_SUID_ROOT=yes
CHECK_PERMS=yes
MAIL_EMPTY_CONTENT=yes
CHECK_WRITABLE=yes
CHKROOTKIT_CHECK=yes
CHECK_PROMISC=yes
CHECK_SGID=yes
RPM_CHECK=yes
TTY_WARN=yes
MAIL_WARN=yes
CHECK_OPEN_PORT=yes
oltre a questo ho trovato anche  /usr/share/msec/security_check.sh   dove
forse c'e' qualcosa di interessante, riporto le parti interessanti secondo
me:
# Files that should not be owned by someone else or readable.
list=".netrc .rhosts .shosts .Xauthority .gnupg/secring.gpg \
.pgp/secring.pgp .ssh/identity .ssh/id_dsa .ssh/id_rsa .ssh/random_seed"
awk -F: '/^[^+-]/ { print $1 " " $3 " " $6 }' /etc/passwd |
while read username uid homedir; do
    for f in ${list} ; do
        file="${homedir}/${f}"
        if [[ -f ${file} ]] ; then
            printf "${uid} ${username} ${file} `ls -LldcGn ${file}`\n"
        fi
    done
done | awk '$1 != $6 && $6 != "0" \
        { print "\t\t- " $3 " : file is owned by uid " $6 "." }
        $4 ~ /^-...r/ \
        { print "\t\t- " $3 " : file is group readable." }
        $4 ~ /^-......r/ \
        { print "\t\t- " $3 " : file is other readable." }
        $4 ~ /^-....w/ \
        { print "\t\t- " $3 " : file is group writable." }
        $4 ~ /^-.......w/ \
        { print "\t\t- " $3 " : file is other writable." }' > ${TMP}
if [[ -s ${TMP} ]]; then
    printf "\nSecurity Warning: these files shouldn't be owned by someone
else or readable :\n" >> ${SECURITY}
    cat ${TMP} >> ${SECURITY}
fi
### Files that should not be owned by someone else or writable.
list=".bashrc .bash_profile .bash_login .bash_logout .cshrc .emacs .exrc \
.forward .klogin .login .logout .profile .tcshrc .fvwmrc .inputrc .kshrc \
.nexrc .screenrc .ssh .ssh/config .ssh/authorized_keys .ssh/environment \
.ssh/known_hosts .ssh/rc .twmrc .xsession .xinitrc .Xdefaults"
awk -F: '/^[^+-]/ { print $1 " " $3 " " $6 }' /etc/passwd | \
while read username uid homedir; do
        for f in ${list} ; do
                file=${homedir}/${f}
                if [[ -f ${file} ]] ; then
                        printf "${uid} ${username} ${file} `ls -LldcGn
${file}`\n"
                fi
        done
done | awk '$1 != $6 && $6 != "0" \
        { print "\t\t- " $3 " : file is owned by uid " $6 "." }
     $4 ~ /^.....w/ \
        { print "\t\t- " $3 " : file is group writable." }
     $4 ~ /^........w/ \
        { print "\t\t- " $3 " : file is other writable." }' > ${TMP}
if [[ -s ${TMP} ]]; then
    printf "\nSecurity Warning: theses files should not be owned by someone
else or writable :\n" >> ${SECURITY}
    cat ${TMP} >> ${SECURITY}
fi
### Check home directories.  Directories should not be owned by someone else
or writable.
awk -F: '/^[^+-]/ { print $1 " " $3 " " $6 }' /etc/passwd | \
while read username uid homedir; do
        if [[ -d ${homedir} ]] ; then
                realuid=`ls -LldGn ${homedir}| awk '{ print $3 }'`
                realuser=`ls -LldG ${homedir}| awk '{ print $3 }'`
                permissions=`ls -LldG ${homedir}| awk '{ print $1 }'`
                printf "${permissions} ${username} (${uid}) ${realuser}
(${realuid})\n"
        fi
done | awk '$3 != $5 && $5 != "(0)" \
        { print "user=" $2 $3 " : home directory is owned by " $4 $5 "." }
     $1 ~ /^d....w/ && $2 != "lp" && $2 != "mail" \
        { print "user=" $2 $3" : home directory is group writable." }
     $1 ~ /^d.......w/ \
        { print "user=" $2 $3" : home directory is other writable." }' >
${TMP}
if [[ -s $TMP ]] ; then
        printf "\nSecurity Warning: these home directory should not be owned
by someone else or writable :\n" >> ${SECURITY}
        cat ${TMP} >> ${SECURITY}
fi
fi # End of check perms
### Report
if [[ -s ${SECURITY} ]]; then
    Syslog ${SECURITY}
    Ttylog ${SECURITY}
    date=`date`
    hostname=`hostname`
    echo -e "\n\n*** Security Check, ${date} ***\n" >> ${SECURITY_LOG}
    cat ${SECURITY} >> ${SECURITY_LOG}
    cat ${INFOS} >> ${SECURITY_LOG}
    Maillog "[msec] *** Security Check on ${hostname}, ${date} ***"
"${SECURITY} ${INFOS}"
fi
if [[ -f ${SECURITY} ]]; then
    rm -f ${SECURITY}
fi
if [[ -f ${TMP} ]]; then
    rm -f ${TMP}
fi
if [[ -f ${INFOS} ]]; then
    rm -f ${INFOS};
fi
Dove lo fa il REPORT???  Non l'ho mica capito, magari leggendolo capirei
cosa fa e quale funzione.
rpm*   (non centra molto secondo me)
tmpwatch*    (non centra molto nemmeno questo)
Nella directory cron.weekly  ci sono i file  makewhatis.cron*
makewhatis-it.cron*  slocate.cron*   che a guardargli non sembrano
riguardare il mio problema.
Nella directory cron.monthly   non ce' niente!
Insomma alla fine non sono riuscito a trovare nulla che mi potesse aiutare
con quale comando le i permessi delle varie home vengono trasformati
automaticamente in 700.   Eppure ho spulciato tutto quello che potevo
spulciare.
 :-(
Scusate se questa mail e' diventata piu' lunga del dovuto, spero che serva a
qualcosa almeno.  (ci ho messo due ore  a scriverla).
Grazie e ciao!
KASH

chiedo scusa a tutti se la post e' diventata un po' troppo pesante (in kb).
non ho ancora risolto il problema, qualcuno mi da una mano o un'indizio per
favore?
Grazie e ciao!
KASH

 KASH
	tANGA che... vieni a Padova questo week end?
-- 
GHERdO, happy GNU/linux user.
 
http://www.cyberspace.org/~gherdo/

 Scusa ma cosa e' il crontab "master" ?
esiste /etc/crontab? quella.
ah, prova 
# find /etc/* -exec grep chmod {} /dev/null \;
dovrebbe, credo :), beccarti quali file in /etc/*
(ricorsivamente) nominano chmod 
-- 
nebbia

Grazie mille, di cuore, veramente grazie, mi hai tirato fuori da un
malditesta che nemmeno ti immagini.
Il tuo aiuto, per la precisione la tua dritta e' stata fondamentale !!!
Ho letto tutto e ho rimediato al problema.
Ora vado ad esporre come ho fatto per tutti gli altri utenti che usano
Mandrake (non credo che msec sia usato da altre distro).
msec  e' un programma di Mandrake Linux e' una  python-based system (nella
9.0, mentre nella 8.1 era una serie di shell scripts) che si occupa di
settare il livello di sicurezza che si e' scelto per la propria macchiana a
seconda dell'uso che si fa della stessa (server, postazione di lavoro,
desktop ecc.).   A seconda del livello di sicurezza scelto va fare dei
settaggi particolari, tra cui cito per esempio varizione di root umask,
Shell History Size, Allow Reboot by User ecc. ecc.   Naturalmente piu' e'
alto il livello di sicurezza e piu' la macchina e' sicura (e aaggiungo io:
piu' difficile da usare).
Lanciando il comando:
grep " msec" messages
si va a vedere cosa ha fatto msec.  Nel mio caso ho trovato:
Nov  5 21:01:04 nome_mia_macchina  msec: changed mode of /home/utente1 from
755 to 700
Ho finalmente trovato chi andava a cambiare i settaggi delle mie home !!!
Felicita'.    :-)
Sono andato a vedere cosa fa msec quando e' settato il livello di sicurezza
4 in   /usr/share/msec/perm.4    (ce ne uno per ogni livello di sicurezza)
ed ho trovato una riga che diceva:
/home/*                                         current                 700
Allora, da root, sono andato a creare il file di personalizzazione settaggi
(che sovrasta quelli generali) di msec:   /etc/security/msec/perm.local
dentro il quale non ho fatto altro che mettere:
/home/*                                         current                 701
(messo 701 perche' penso che sia il minimo indispensabile perche' le pagine
html nella home di un'utente vengano visti da tutti, correggetemi se
sbaglio!).
Ora va tutto bene direi, sono riuscito nel mio intento. Speriamo solo che i
miei utenti pubblichino nelle loro pagine html qualcosa di interessante,
visto lo sforzo che ho fatto per dargli tale possibilita'.   ;-)
Spero che questa mia post sia utile ad altre persone.
Ringrazio di nuovo tutti e alla prox.
CIAO
KASH
P.S.   per   tANGA:   non ho ancora deciso per Padova, mi sa che mi
decidero' solo all'ultimo su da farsi.   Se vengo ti faccio sapere.  Grazie
di nuovo.


 visto lo sforzo che ho fatto per dargli tale possibilita'.   ;-)
uh... vuoi un utente in piu`? Mi offro!
PS KASH... *quota* a modo, su! ;)
