Projet

Général

Profil

log.sh

/etc/profile.d/log.sh - Emmanuel GARETTE, 11/06/2019 15:02

Télécharger (1,72 ko)

 
1
if [ "$USER" = "root" ] && [ -z "$SSH_USER" ] && [ ! -z "$SSH_CLIENT" ] && [ -r /var/log/rsyslog/local/sshd/sshd.info.log ]; then
2
    # retrieve key name from current user (usefull with Zephir, everybody use root user)
3
    IP=$(echo $SSH_CLIENT| cut -d' ' -f 1)
4
    PORT=$(echo $SSH_CLIENT| cut -d' ' -f 2)
5
    CONN=$(grep "Accepted publickey for root from $IP port $PORT ssh2: " /var/log/rsyslog/local/sshd/sshd.info.log | tail -n 1)
6
    KEY=$(echo $CONN | awk -F': ' '{ print $3 }')
7
    KEY_TYPE=$(echo $KEY | cut -d' ' -f 1)
8
    KEY_VAL=$(echo $KEY | cut -d' ' -f 2)
9
    if [ ! -z "$KEY_VAL" ]; then
10
        SSH_USER_TMP=$(ssh-keygen -lf /root/.ssh/authorized_keys | grep "$KEY_VAL" | grep " ($KEY_TYPE)"$ | tail -n 1 | cut -d' ' -f 3)
11
        if [ ! -z "$SSH_USER_TMP" ]; then
12
            SSH_USER=$SSH_USER_TMP
13
            export SSH_USER
14
            readonly SSH_USER
15
        fi
16
    fi
17
fi
18

    
19
trap_cmd_var() {
20
    if [ ! "${BASH_EXECUTION_STRING}-" = "-" ] && [ "${BASH_ARGV[@]}-" = "-" ]; then
21
        CMD=${BASH_EXECUTION_STRING}
22
    fi
23
    logcommand "$CMD"
24
}
25

    
26
trap_cmd_history() {
27
    CMD=$(fc -ln -1|sed -e "s/^[ \t]*//g")
28
    logcommand "$CMD"
29
}
30

    
31
logcommand() {
32
    R_CMD=$1
33
    [ -z "$R_CMD" ] && return
34
    R_TTY=$(tty)
35
    R_USER=$USER
36
    if [ ! -z "$SUDO_USER" ]; then
37
        R_REMOTE_USER=$SUDO_USER
38
    elif [ ! -z "$SSH_USER" ]; then
39
        R_REMOTE_USER=$SSH_USER
40
    else
41
        R_REMOTE_USER=$USER
42
    fi
43
    R_SSH_CLIENT=$SSH_CLIENT
44
    R_HISTORY=$SCREEN_HISTORY
45
    R_PPID="$$"
46
    R_PWD=$PWD
47
    /usr/bin/logger -t history "\"$R_USER\" \"$R_REMOTE_USER\" \"$R_SSH_CLIENT\" \"$R_HISTORY\" \"$R_TTY\" \"$R_PPID\" \"$R_PWD\" \"$R_CMD\""
48
}
49
if [ -z "$PS1" ]; then
50
    trap 'trap_cmd_var' DEBUG
51
else
52
    trap 'trap_cmd_history' DEBUG
53
fi