주요 콘텐츠로 건너뛰기

텔넷 대신 SSH를 사용하기 시작하는 사람들이 점점 더 많아짐에 따라 SSH 데몬이 암호 경고, 만료 및 유예 시간을 처리하는 방식에 대해 점점 더 많은 혼란을 보고 있습니다. 혼란의 일부는 SSH가 Telnet 및 로그인 명령의 동작을 복제할 것이라는 잘못된 기대로 인해 발생합니다. 이 블로그는 작동 방식을 설명하려는 시도입니다.

첫째, SSH는 유닉스 /리눅스의 세계에서 온 그 세계는 VOS 로그인 명령이 제공하는 암호를 변경하는 옵션으로 7 일 사전 만료 경고가 없습니다 기억하십시오. SSH 데몬의 원래 릴리스는 이 경고/옵션을 제공하지 않았습니다.

릴리스 2.0.0e(버그 수정 ssl-205 및 ssl-268)에서 시작하여 이 동작이 변경되어 SSH 데몬이 로그인 명령과 마찬가지로 암호가 만료되도록 설정되기 7일 전에 새 암호를 요청했습니다. 그러나 요청이 사용자에게 표시되지 않았기 때문에 터널을 설정하는 연결은 변경 암호 요청에 중단됩니다. 문제는 터널 설정이 일반적으로 의사 터미널을 할당하지 않으므로 프롬프트를 표시 할 곳이 없다는 것입니다.

그래서 출시 2.0.0k (ssl-295)에서 시작하여 SSH 데몬은 원래의 행동으로 다시 변경되었습니다. 외부 변수가 코드에 추가되어 사이트가 원하는 경우 만료 전 변경 암호 프롬프트를 사용하도록 허용했습니다. 이 작업은 sshd$pw_change_method 변수를 1로 설정하여 수행됩니다.

7일 경고 기간 동안 새 암호를 묻는 메시지가 표시될 때 SSH 데몬의 동작은 Telnet과 연결할 때 로그인의 동작과 다릅니다. Telnet/login을 사용하면 반환 키를 눌러 변경 암호 단계를 건너뛸 수 있습니다. SSH 데몬은 암호를 변경해야 합니다. SSH 데몬이 암호를 변경하는 방식 때문에 동작이 다릅니다. 로그인 명령에 change_password 인수를 추가하면 변경 암호 단계를 건너뛸 수도 없습니다. 이것은 기본적으로 SSH 데몬이 하고 있는 일입니다. 버그 ssl-279는 동작의 차이를 설명하지만 엔지니어링에 의해 버그가 아닌 것으로 간주되었습니다. Telent/login과 SSH로 로그인하면 알 수 있는 또 다른 한 가지는 Telnet/login이 N일 이내에 비밀번호가 만료될 것이라고 보고하고 SSH 데몬은 비밀번호가 N+1 일 후에 만료될 것이라고 보고할 수 있다는 것입니다. 동작은 마지막 암호 변경 의 시간에 따라 달라집니다. 이것은 버그 ssl-368로 보고되었습니다.

위의 토론은 7일 경고 기간 동안의 시간을 다룹니다. 유예 기간(login_admin 명령의 password_grace_time 값으로 정의)은 어떻습니까? 유예 기간 동안 SSH 데몬은 이전 암호를 사용하여 로그인할 수 있으며 Telnet/로그인과 마찬가지로 새 암호를 입력해야 합니다. 그러나 SSH 데몬이 표시하는 메시지는 약간 오해의 소지가 있습니다. 암호가 곧 만료되고 있음을 명시합니다. 제안 ssl-366은 암호가 만료되었음을 나타내기 위해 메시지를 변경하도록 요청하기 위해 입력되었습니다. 그러나 메시지에 관계없이 최종 결과는 동일합니다 - 새 암호를 입력해야 합니다.

마지막으로 고려해야 할 기간은 유예 기간 이후에 있습니다. 이 시간 동안 SSH 데몬은 이전 암호를 사용하여 로그인할 수 있게 해 주며 새 암호를 입력한 후 연결을 종료합니다. 이전 암호를 입력하면 Telnet/login 명령이 연결을 종료합니다. 이것은 제안 ssl-367로 문서화되어 있으며, SSH 데몬은 새 암호를 묻는 메시지가 표시되지 않아야합니다.

비밀번호를 변경할 때 텔넷/로그인 동작과 SSH 데몬 동작 사이에는 또 다른 차이점이 있습니다. 암호를 변경한 후 SSH 데몬은 세션을 분리하여 새 암호로 다시 연결하고 로그인해야 합니다.

마지막으로, 한 번 더 논의해야 할 버그가 하나 더 있습니다. set_login_security 명령에 표시된 req_change_first_login 매개 변수가 "예"로 설정된 경우 SSH 데몬은 실제 상태에 관계없이 모든 암호를 만료되지 않은 상태로 처리합니다. 이 버그, ssl-361, 릴리스 2.0.0u에 고정 하 고 그것은 req_change_first_login 매개 변수와 모든 모듈 예 업그레이드 적어도이 릴리스 즉시 업그레이드 하는 것이 좋습니다.

sshd 프로세스는 모든 연결에 대한 새로운 프로세스를 포크하기 때문에 모든 SSH 연결된 사용자를 시스템에서 강제로 제거하지 않고 sshd.pm 파일의 새 버전을 설치할 수 있습니다. 이렇게 하려면

  1. 디렉터리 를 >system>로 변경하면
  2. 실행 중인 sshd.pm 파일의 이름을 original_sshd.pm으로 변경합니다.
  3. 새 sshd.pm 복사본을 현재 디렉터리로 이동
  4. Execute the command “kill (contents <etc>sshd.pid)” to stop the parent sshd process
  5. switch_to_root 명령을 사용하여 루트 사용자로 전환합니다. 루트 암호를 알아야 합니다.
  6. 새 sshd 프로세스를 시작합니다. sshd를 시작하는 방법을 잘 모르는 경우 module_start_up.cm을 확인하십시오.

sshd$pw_change_method 변수의 값을 변경하는 절차는 거의 동일합니다. 1, 2, 4, 5 및 6단계는 동일하지만 3단계는

3. original_sshd.pm을 복사하여 sshd.pm

변수를 실제로 설정하기 위해 새 단계 3a가 추가됩니다.

3a.  명령 실행

"set_external_variable sshd$pw_change_method -sshd.pm -유형 정수 -~1"

© 2024 스트라투스 테크놀로지스.