Linux 호스팅에 관해 매우 기본적인 질문이 있습니다.
이 users
명령은 호스트의 모든 사용자에게 지시하도록 보장됩니까? 아니면 사용자가 당시 호스트에서 활성 상태라는 사실을 숨길 수 있는 방법이 있습니까?
후자의 경우, 사용자 명령의 출력에서 사용자를 숨기기 위해 사용자가 사용할 수 있는 기술이 무엇인지 아는 사람이 있습니까?
이 문제에 대해 다른 사람들이 제공할 수 있는 생각은 매우 도움이 될 것입니다.
답변1
읽고 있는 파일에 표시되지 않고 시스템에서 "시스템 명령을 실행하고 시스템 파일에 액세스할 수 있는" 것은 /var/run/utmp
사소한 일입니다 users(1)
.
$ ssh testhost sh
예를 들어 Centos 7에서는 누군가가 실행 중이라는 users
표시가 없지만 시스템 명령을 실행하고 시스템 파일에 액세스할 수 있습니다.testhost
sh
# users
root
# pstree | grep -3 'sh$'
|-sshd-+-sshd---sshd
| |-sshd---bash-+-grep
| | `-pstree
| `-sshd---sshd---sh
|-sssd-+-sssd_be
| `-sssd_nss
|-systemd-journal
socat
또 다른 방법은 높은 포트에서 쉘이나 다른 것을 실행하는 것 입니다. 또 다른 접근 방식: 명령을 받아들이고 실행하고 결과를 반환하는 웹 서버를 실행합니다. 또 다른 접근 방식은 미리 명령을 예약한 at(1)
다음 로그아웃하는 것입니다.
답변2
이 users
유틸리티는 C로 작성된 매우 작은 프로그램으로 코드가 약 150줄에 불과합니다. 부분이니까GNU 핵심 유틸리티, 너다운로드 가능users.c
유틸리티를 사용하고 파일에서 코드를 읽습니다.
실제로 기본적으로 이 유틸리티는 및 에 대한 래퍼 users
일 뿐입니다 . 사용자가 로그인했다는 사실을 숨기는 두 가지 확실한 기본 방법이 있습니다.utmp
wtmp
users
첫 번째 방법은 유틸리티의 코드를 변경 하고 바이너리를 바꾸는 것입니다 /usr/bin/users
.
두 번째 방법은 *nix 시스템에 존재할 수 있는 utmp
, wtmp
, lastlog
등 utmpx
의 로그 파일에서 흔적을 지우는 것입니다. wtmpx
이 방법에 사용할 수 있는 몇 가지 로그 삭제 도구가 있습니다 cloak
.zap
clear
섹션 3.4를 주의 깊게 읽으십시오.Hacking UNIX의 "침입 후"에서 발췌했습니다.
물론, 특정 애플리케이션과 사용자를 위한 파일 쓰기를 방지하는 다른 방법도 많이 있습니다 utmp
.wtmp
이 예를 읽어보세요을 위한 ssh
.
login
몇 가지 추가 기본 및 일반 로깅 옵션을 파일에서 구성할 수 있습니다.
/etc/login.defs
users
유틸리티가 관리자와 사용자 관점에서 정보를 구문 분석하는 위치를 더 깊이 이해하려면 다음 파일을 찾아보세요.
utmpdump /var/run/utmp
utmpdump /var/log/wtmp
sudo utmpdump /var/log/btmp
파일을 삭제하여 utmp 로깅을 비활성화할 수 있는 다른 다양한 시스템과 달리 Linux에서는 utmp가 항상 존재해야 합니다. who(1)을 비활성화하려면 utmp 세계를 읽을 수 있게 만들지 마십시오.
파일 형식은 시스템에 따라 다르므로 파일이 생성된 시스템의 아키텍처에서만 처리하는 것이 좋습니다.
users
따라서 질문에 대한 대답은 " 사용자가 유틸리티에서 로그인했다는 사실을 숨기는 것이 가능합니까 ?"입니다. 예, 가능합니다. 결정 방법은 결정 상황에 따라 다릅니다. *nix 시스템 등에 대한 액세스 수준에 따라 다릅니다.