
저는 Linux 시스템 관리자이므로 로컬 네트워크의 모든 시스템에 로그인합니다. who 명령을 통해 내 IP가 표시되는 것을 원하지 않습니다. 예를 들어 누군가가 다음과 같이 입력하는 경우:
$ who
내 IP가 공개됩니다. who Linux 명령에서 내 IP를 숨길 수 있는 방법이 있습니까?
[Chrips의 편집]
이는 개인 유틸리티 서버가 해킹당하는 것에 관심이 있는 사람들에게 중요합니다! 당연히 공격자가 벡터를 찾을 수 없도록 현재 홈 IP를 공격자로부터 숨기고 싶을 것입니다!
답변1
가장 간단하게는 utmp 로그 파일을 다른 사람이 읽을 수 없도록 만들 수 있습니다. 이는 심지어 서문에도 언급되어 있다.utmp 매뉴얼 페이지:
파일을 제거하여 utmp 로깅을 비활성화할 수 있는 다양한 다른 시스템과 달리,utmp는 항상 존재해야 합니다.리눅스에서. who(1)을 비활성화하려면 다음을 수행하십시오.~ 아니다utmp 세상을 만들어라읽을 수 있는.
이와 같이:
sudo chmod go-r /var/log/wtmp /var/run/utmp
who # shows nothing, not even an error!
sudo who # still works for root
rudi :0 2017-04-18 19:08 (console)
따라서 who
IP 주소를 건너뛸 뿐만 아니라 완전히 비활성화됩니다.
또 다른 아이디어(약간 어리석은 것일 수도 있습니다) IP만 숨기는 것은 SSH 서버가 다른 포트(1234)와 localhost에서만 수신하도록 허용하는 것입니다. 그런 다음 "프록시"(socat, netcat)를 실행하여 public_ip:22에서 localhost:1234로 전달합니다.
SSH 서버 구성 변경, /etc/ssh/sshd_config:
포트 1234
SSH 서버 시스템에서 프록시를 실행하십시오.
socat TCP-LISTEN:22,포크 TCP:localhost:1234
이제 모든 utmp 로그( who
, last
)에는 동일하고 쓸모 없는 로컬 호스트 IP가 표시됩니다.
메모아마도 사용자는 를 통해 실제 연결을 볼 수 있을 것입니다 netstat
. 사용자 공간 프록시( ) 대신 들어오는 SSH 트래픽에 대해 NAT 및 MASQUERADING 규칙을 socat
설정할 수도 있습니다 . iptables
또는 항상 추가 "ssh hop"을 사용하여 항상 동일한 IP에서 로그인할 수 있습니다. 이것은 독자들의 연습문제로 남겨둔다. ;)
답변2
유틸리티 는 데이터베이스 who
의 데이터를 구문 분석합니다 /var/run/utmp
. 이 데이터베이스는 login
시스템에 로그인할 때(및 기타 여러 유틸리티에 의해 업데이트됨 man utmp
) 업데이트되며, 해당 파일이 존재하는 경우 데이터는 에 지속적으로 기록됩니다 /var/log/wtmp
.
이러한 기록은 시스템이 충돌하거나 오작동하기 시작한 이유와 시기를 추적하는 데 유용하며 수정해서는 안 됩니다.
따라서 대답은 다음과 같습니다. 및 who
에 쓰는 프로그램의 동작을 수정 하거나 이러한 (바이너리) 파일을 직접 수정하지 않으면 불가능합니다 . 그리고 이렇게 하면 잠재적으로 시스템이 1) 불안정해지고 2) 오작동 시 진단이 어려워질 수 있으므로 그렇게 해서는 안 됩니다./var/run/utmp
/var/log/wtmp