
이 puppet 모듈은 보안 ssh-client 및 ssh-server 구성을 제공합니다.
이 Puppet 모듈은 안전한 ssh-client 및 ssh-server 구성을 제공합니다.
saz/ssh (>= 2.3.6), puppetlabs/stdlib (>= 4.2.0)ipv6_enabled = false - IPv6가 필요한 경우 truecbc_required = false - 암호화에 CBC가 필요한 경우 true. 이는 일반적으로 구성된 보안 암호화가 활성화되지 않은 구형 M2M 메커니즘이 SSH와 통신해야 하는 경우에만 필요합니다. CBC는 취약한 대안입니다. 이보다 더 취약한 것은 피해야 하므로 사용할 수 없습니다.weak_hmac = false - 더 약한 HMAC 메커니즘이 필요한 경우 true. 이는 일반적으로 구성된 보안 HMAC이 활성화되지 않은 구형 M2M 메커니즘이 SSH와 통신해야 하는 경우에만 필요합니다.weak_kex = false - 더 약한 키 교환(KEX) 메커니즘이 필요한 경우 true. 이는 일반적으로 구성된 보안 KEX가 활성화되지 않은 구형 M2M 메커니즘이 SSH와 통신해야 하는 경우에만 필요합니다.allow_root_with_key = false - false는 root 로그인을 완전히 비활성화합니다. 키 기반 메커니즘을 통한 root 로그인을 허용하려면 true로 설정합니다.ports = [ 22 ] - ssh-server가 수신하고 ssh-client가 연결해야 하는 포트listen_to = [ "0.0.0.0" ] - ssh-server가 수신해야 하는 하나 이상의 IP 주소. 기본값은 비어 있지만 보안상의 이유로 구성해야 합니다!remote_hosts - ssh-client가 연결할 수 있는 하나 이상의 호스트. 기본값은 비어 있지만 보안상의 이유로 구성해야 합니다!allow_tcp_forwarding = false - TCP 포워딩을 허용하려면 true로 설정allow_agent_forwarding = false - 에이전트 포워딩을 허용하려면 true로 설정use_pam = false - pam 인증을 비활성화하려면 falseclient_options = {} - 해시에 값을 설정하여 모듈 설정을 재정의server_options = {} - 해시에 값을 설정하여 모듈 설정을 재정의이 모듈을 추가한 후 클래스를 사용할 수 있습니다:
class { 'ssh_hardening': }
이렇게 하면 ssh-server와 ssh-client가 설치됩니다. 다음 중 하나만 선택할 수도 있습니다:
class { 'ssh_hardening::server': }
class { 'ssh_hardening::client': }
핵심 속성을 구성해야 합니다:
class { 'ssh_hardening::server':
"listen_to" : ["10.2.3.4"]
}
listen_to의 기본값은 0.0.0.0입니다. 이 값을 변경하는 것이 좋습니다.
기본 옵션은 client_options 및 server_options 매개변수로 전달된 옵션과 병합됩니다.
옵션이 기본값과 옵션 매개변수 모두에 설정된 경우 후자가 우선합니다.
다음 예제는 기본적으로 비활성화된 X11Forwarding을 활성화합니다:
class { 'ssh_hardening':
server_options => {
'X11Forwarding' => 'yes',
},
}
로컬 테스트를 위해 vagrant와 Virtualbox 또는 VMWare를 사용하여 로컬에서 테스트를 실행할 수 있습니다. 시스템에 Virtualbox와 Vagrant를 설치해야 합니다. 시스템에 적합한 vagrant 패키지는 Vagrant Downloads를 참조하세요. 모든 테스트에는 test-kitchen을 사용합니다. test-kitchen에 익숙하지 않다면 해당 가이드를 참조하세요.
다음으로 test-kitchen을 설치합니다:
# 의존성 설치
gem install bundler
bundle install
# 테스트 가져오기
bundle exec thor kitchen:fetch-remote-tests
# 린트 검사 수행
bundle exec rake lint
# 스펙 검사 수행
bundle exec rake spec
# 한 머신에서 빠른 테스트
bundle exec kitchen test default-ubuntu-1204
# Debian 기반 머신에서 테스트
bundle exec kitchen test
# 개발용
bundle exec kitchen create default-ubuntu-1204
bundle exec kitchen converge default-ubuntu-1204
자세한 내용은 test-kitchen을 참조하세요.
내 계정으로 로그인할 수 없습니다. 클라이언트 키를 등록했지만 여전히 접근을 허용하지 않습니다.
일반적인 문제(방화벽, 네트워크, 키 누락, 잘못된 키, 계정 비활성화 등)를 모두 확인했다면 계정이 잠겨 있을 수 있습니다. 가장 빠른 확인 방법은 사용자의 비밀번호 해시를 확인하는 것입니다:
sudo grep myuser /etc/shadow
해시에 !가 포함되어 있으면 계정이 잠긴 것입니다:
myuser:!:16280:7:60:7:::
이 문제를 해결하는 올바른 방법은 계정을 잠금 해제하는 것입니다 (passwd -u myuser). 사용자에게 비밀번호가 없는 경우 다음을 통해 잠금을 해제할 수 있습니다:
usermod -p "*" myuser
또는 PAM을 사용하려는 경우 use_pam = true로 활성화했습니다. PAM은 잠긴 사용자가 키로 접근하는 것을 허용합니다.
내 애플리케이션이 더 이상 SSH로 연결되지 않는 이유는 무엇인가요?
항상 먼저 로그 파일을 확인하고 가능하면 연결 시 완료되는 클라이언트와 서버 간의 협상을 확인하세요.
python 및 ruby 기반 애플리케이션에서 구식 암호화 세트를 사용하여 발생하는 일부 문제를 확인했습니다. 이는 이 강화 모듈이 암호화, 메시지 인증 코드(MAC) 및 키 교환(KEX) 알고리즘 목록을 더 안전한 선택으로 축소했기 때문에 충돌이 발생합니다.
이것으로 충분하지 않다면 암호화에 cbc_required, MAC에 weak_hmac, KEX에 weak_kex를 자유롭게 활성화하세요.
Apache License, Version 2.0 (이하 "라이선스")에 따라 라이선스가 부여됩니다. 이 파일은 라이선스를 준수하는 경우에만 사용할 수 있습니다. 라이선스 사본은 다음에서 얻을 수 있습니다:
http://www.apache.org/licenses/LICENSE-2.0
해당 법률에 의해 요구되거나 서면으로 동의하지 않는 한, 라이선스에 따라 배포되는 소프트웨어는 보증이나 조건 없이 "있는 그대로" 배포됩니다. 라이선스에 따른 특정 언어의 권리 및 제한 사항은 라이선스를 참조하세요.