특정 Linux 사용자에 대해 활성 SSH 연결에 시간 제한을 설정할 수 있습니까?

특정 Linux 사용자에 대해 활성 SSH 연결에 시간 제한을 설정할 수 있습니까?

저는 현재 재미있는 CTF 챌린지에 대한 아이디어를 구상 중입니다. 그러나 이 문제의 주요 장애물 중 하나는 사용자에게 SSH 연결에서 특정 시간을 허용하는 것입니다.

기본적으로 사용자는 챌린지 사용자를 사용하여 Linux VM에 SSH로 연결해야 합니다. SSH 세션이 종료되어 깃발 조각의 위치를 ​​바꾸는 이벤트가 트리거되기 전에 특정 순서로 배열되어야 하는 깃발 조각 10개를 찾는 데 10분이 주어집니다. 이 시점에서 사용자는 새로운 SSH 연결을 열고 검색을 계속해야 합니다.

여기서 가장 큰 문제는 사용자의 시간을 제한하는 것입니다. SSH로도 가능합니까? 그렇다면 어떻게 해야 할까요?

도움을 주셔서 미리 감사드립니다.

답변1

흠, SSH를 통해 수행하는 것은 엄청나게 어려울 것입니다. 가장 쉬운 방법은 특정 계정에 SSH로 로그인할 때마다 백그라운드 프로그램이 실행되도록 하는 것입니다. 이 프로그램은 10분 후에 모든 SSH 연결을 종료합니다. 솔직히 매우 쉬울 것입니다.

~/.profile 또는 ~/.bashrc에 다음과 같은 내용을 추가합니다.

sleep 600
killall --user {whateverhis/herusernameis}
end

아니면 당신은 아이디어를 얻습니다.

답변2

ForceCommand에서 사용하세요 sshd_config. 로그인 후 실행되도록 보장됩니다.

Match User ctfuser
  ForceCommand "(sleep 600; killall -u ctfuser)& bash"

쉘 액세스만 필요한 경우 이것으로 충분합니다. SFTP 또는 SCP도 필요한 경우 약간 조정해야 합니다.

관련 정보