env - centos/rhel
두 개의 시스템이 있습니다. 요새와 개발.
요새 -
- Bastion에는 많은 개인 사용자가 있습니다. (
apple
,orange
...등) - 사용자는 Bastion에 직접 SSH를 통해 연결할 수 있습니다.
개발-
- DEV에는 사용자가 한 명뿐입니다. (
fruit
) - Bastion 사용자만 Bastion에서 DEV로 SSH를 통해 연결할 수 있습니다.
궁극적으로 '누가 언제 무엇을 했는지' 추적하고 싶다.
DEV 측에서는 /var/etc/secure 및 /var/etc/audit/audit.log 에 로그인한 사람들을 볼 수 있지만 fruit
"who"는 볼 수 없습니다.
apple
fruit
내 질문: DEV에 연결하는 데 걸린 시간 과 DEV가 수행한 작업을 어떻게 수집합니까 ?
답변1
매우 간단한 방법은 비밀번호 로그인을 비활성화하고 키 기반 로그인만 사용하는 것입니다.
이렇게 하면 명명된 키가 있고 auth.log
간단히 사용자와 일치시킬 수 있습니다(예: 파일의 "설명" 필드에 사용자 이름 추가 authorized_keys
). 로그인하면 프로세스 ID를 받게 되며 이는 로그아웃 이벤트에도 표시됩니다.
$cat /var/log/auth.log
Jun 21 14:42:11 DEV sshd[26510]: Accepted publickey for apple from 1234:5678:90ab:cdef:1234:5678:90ab:cdef port 58888 ssh2: RSA SHA256:abcdefghIJKLMNOPQ/1234567890
Jun 21 14:47:57 DEV sshd[26510]: pam_unix(sshd:session): session closed for user apple
$cat /home/fruit/.ssh/authorized_keys
ssh-rsa abcdefghIJKLMNOPQ/1234567890 apple@bastion
모니터링의 나머지 부분은 설정의 문제입니다 audit
.
답변2
이것은 나쁜 대답입니다( identd
신뢰할 수 없고 위조하기 쉽고, 다른 시스템에 연결할 때 사용자에 대한 정보가 노출될 수 있기 때문입니다). 그러나 과거에는 사람들이 identd
이런 것을 사용했습니다.
넌 달릴 수 있어identd
"요새"에서(구성 및 방화벽 규칙을 사용하여 "DEV" 또는 내부 네트워크 외부 어디에서나 포트 113에 대한 액세스를 방지합니다.)
sshd
일반적 libwrap
으로 다음과 같이 컴파일됩니다./etc/hosts.allow
개발 중다음 규칙을 사용하여 요새의 identd가 보고한 사용자 이름을 기록하도록 구성할 수 있습니다.
sshd : ALL : spawn = /usr/bin/logger -i --tag "sshd+identd" -p auth.notice "attempted login by %u@%h" &
그러면 다음과 같은 로깅 라인이 생성됩니다.
Jun 21 14:13:33 DEV sshd+identd[2128678]: attempted login by apple@bastion
그 다음에는 일반적인 sshd 로그가 나옵니다.
이로 인해 identd
사용자가 실행되지 않는 다른 호스트 identd
(예: LAN의 클라이언트 컴퓨터)에서 DEV에 직접 로그인할 때 지연(쿼리 및 시간 초과)이 발생할 수 있습니다.
또한 원격 사용자 이름을 기록할 때 이는 여전히 단지로그인을 시도하세요이는 연결이 설정된 후 sshd가 비밀번호나 공개 키를 사용하여 로그인을 인증하기 전에 발생하기 때문입니다.
Centos에서 어떤 버전이 아직 유지되는지 는 잘 모르겠지만 identd
데비안에서 여전히 사용할 수 있는 유일한 버전은 AFAIK입니다.오이덴데. 이것은 거의 잊혀진 구식 기술로 더 이상 아무도 사용하지 않습니다(일부 IRC 네트워크는 여전히 이 기술을 사용하고 일부 IRC 클라이언트는 포트 113에서 수신 대기하고 identd
요청에 응답할 수 있는 옵션이 있습니다).