
이 셰프 쿡북은 다양한 보안 관련 구성을 제공하여 전방위적인 기본 보호를 지원합니다.
이 cookbook은 다양한 보안 관련 구성을 제공하여 전반적인 기본 보호를 제공합니다.
다음 항목을 구성합니다:
pam 및 pam_limits 모듈 구성다음 항목은 수행하지 않습니다:
['os-hardening']['components'][COMPONENT_NAME] - 기본 레시피를 통해 실행할 구성 요소를 세밀하게 제어할 수 있습니다. 자세한 내용은 아래를 참조하세요.['os-hardening']['desktop']['enable'] = false
Xorg, KDE/GNOME/Unity 등이 있는 데스크톱 시스템인 경우 true['os-hardening']['network']['forwarding'] = false
이 시스템이 패킷 포워딩(예: 라우터)을 요구하는 경우 true, 그렇지 않으면 false['os-hardening']['network']['ipv6']['enable'] = false['os-hardening']['network']['arp']['restricted'] = true
ARP 알림 및 응답 동작을 제한하려면 true, 그렇지 않으면 false['os-hardening']['env']['extra_user_paths'] = []
사용자의 PATH 변수에 추가 경로를 추가합니다 (기본값은 비어 있음).['os-hardening']['env']['umask'] = "027"['os-hardening']['env']['root_path'] = "/"
root가 마운트된 위치['os-hardening']['auth']['pw_max_age'] = 60
최대 비밀번호 사용 기간default.rb는 시스템의 ohai 자동 감지 속성을 기반으로 다른 구성 요소를 포함합니다. 예를 들어, 비-RHEL 시스템에서는 selinux를 실행하지 않습니다. override 레벨에서 node['os-hardening']['components'] 속성을 설정하여 이 동작을 재정의하고 구성 요소를 강제로 실행하거나 실행하지 않도록 할 수 있습니다. 예:
# 일부 속성 파일
# sysctl 및 auditd를 포함하지 않음
override['os-hardening']['components']['sysctl'] = false
override['os-hardening']['components']['auditd'] = false
# selinux를 강제로 포함
override['os-hardening']['components']['selinux'] = true
현재 구현에서 다양한 구성 요소는 서로 다른 레시피에 있습니다. 가능한 구성 요소 이름은 사용 가능한 레시피 또는 default.rb를 참조하세요.
레시피를 run_list에 추가하세요. 마지막에 있어야 합니다:
"recipe[os-hardening]"
속성 구성:
"security" : {
"kernel" : {
"enable_module_loading" : true
}
},
chef-dk, VirtualBox 또는 VMware Workstation 및 Vagrant를 설치하세요.
린팅은 rubocop 및 foodcritic로 확인합니다:
$ chef exec rake lint
.....
단위/spec 테스트는 chefspec로 수행합니다:
$ chef exec rake spec
.....
통합 테스트는 test-kitchen 및 inspec로 수행합니다:
$ chef exec rake kitchen
.....
# 또는 kitchen을 직접 사용할 수 있습니다
$ kitchen test
Travis CI에서 포크의 테스트를 활성화할 수 있습니다. 기본적으로 kitchen-dokken을 사용한 린팅, spec 테스트 및 통합 테스트가 제공됩니다.
kitchen-dokken을 사용한 통합 테스트는 컨테이너 환경에서 실행되므로 모든 것을 다루지는 않습니다. 전체 통합 테스트는 DigitalOcean을 사용하여 실행할 수 있습니다.
포크에 대한 전체 통합 테스트를 원한다면 포크 설정에 다음 환경 변수를 추가해야 합니다:
DIGITALOCEAN_ACCESS_TOKEN - DigitalOcean 액세스 토큰CI_SSH_KEY - DigitalOcean의 인스턴스에서 사용 가능한 일부 ssh 키의 개인 키 부분 (base64 인코딩 형식, 예: cat id_rsa | base64 -w0 ; echo)DIGITALOCEAN_SSH_KEY_IDS - CI_SSH_KEY의 DigitalOcean ID. 자세한 내용은 이 문서를 참조하세요.이 cookbook은 주로 다음 가이드를 기반으로 합니다:
모두에게 감사드립니다!!
기여자 가이드라인을 참조하세요.
Apache License, Version 2.0 (the "License")에 따라 라이선스가 부여됩니다. 이 파일은 라이선스를 준수하지 않는 한 사용할 수 없습니다. 라이선스 사본은 다음에서 얻을 수 있습니다.
http://www.apache.org/licenses/LICENSE-2.0
해당 법률에 의해 요구되거나 서면으로 동의하지 않는 한, 이 라이선스에 따라 배포되는 소프트웨어는 명시적이든 묵시적이든 어떠한 종류의 보증이나 조건 없이 "AS IS" 기준으로 배포됩니다. 라이선스에 따라 허용되는 특정 언어의 권한 및 제한 사항은 라이선스를 참조하세요.
['os-hardening']['auth']['pw_min_age'] = 7['os-hardening']['auth']['pw_warn_age'] = 7
최대 비밀번호 사용 기간이 도래하기 전에 변경을 경고하는 일수['os-hardening']['auth']['uid_min'] = 1000
useradd가 할당하는 UID의 하한['os-hardening']['auth']['uid_max'] = 60000
useradd가 할당하는 UID의 상한['os-hardening']['auth']['gid_min'] = 1000
groupadd가 할당하는 GID의 하한['os-hardening']['auth']['gid_max'] = 60000
groupadd가 할당하는 GID의 상한['os-hardening']['auth']['retries'] = 5
계정이 일정 시간 동안 잠기기 전까지 허용되는 최대 인증 시도 횟수['os-hardening']['auth']['lockout_time'] = 600
너무 많은 실패한 인증 시도로 계정이 잠긴 경우 경과해야 하는 시간(초)['os-hardening']['auth']['timeout'] = 60
인증 제한 시간(초). 이 시간이 지나면 로그인이 종료됩니다.['os-hardening']['auth']['allow_homeless'] = false
홈 디렉토리가 없는 사용자의 로그인을 허용하려면 true['os-hardening']['auth']['pam']['passwdqc']['enable'] = true
passwdqc를 사용하여 PAM에서 강력한 비밀번호 검사를 사용하려면 true['os-hardening']['auth']['pam']['passwdqc']['options'] = "min=disabled,disabled,16,12,8"
passwdqc에 전달하려는 옵션 라인(문자열)으로 설정['os-hardening']['auth']['pam']['passwdqc']['template_cookbook'] = 'os-hardening'
/usr/share/pam-configs/passwdqc 파일의 템플릿을 가져올 cookbook 이름으로 설정['os-hardening']['auth']['pam']['tally2']['template_cookbook'] = 'os-hardening'
/usr/share/pam-configs/tally2 파일의 템플릿을 가져올 cookbook 이름으로 설정['os-hardening']['auth']['pam']['system-auth']['template_cookbook'] = 'os-hardening'
/etc/pam.d/system-auth-ac 파일의 템플릿을 가져올 cookbook 이름으로 설정['os-hardening']['security']['users']['allow'] = []
사용자가 수행할 수 있는 작업 목록. change_user를 포함할 수 있습니다.['os-hardening']['security']['kernel']['enable_module_loading'] = true
시스템이 실행 중일 때 커널 모듈 변경(예: modprobe, rmmod)을 허용하려면 true['os-hardening']['security']['kernel']['disable_filesystems'] = ['cramfs', 'freevxfs', 'jffs2', 'hfs', 'hfsplus', 'squashfs', 'udf', 'vfat']
로딩이 블랙리스트에 등록된 커널 파일 시스템 모듈 목록 (예: 사용되지 않아 비활성화할 수 있는 모듈). 이 블랙리스트를 완전히 피하려면 []로 설정하세요.['os-hardening']['security']['kernel']['enable_sysrq'] = false['os-hardening']['security']['kernel']['enable_core_dump'] = false['os-hardening']['security']['suid_sgid']['enforce'] = true
SUID/SGID 비트를 줄이려면 true. 검색 대상으로 구성된 기본 항목 목록이 이미 있지만, 사용자 정의 항목을 추가할 수도 있습니다.['os-hardening']['security']['suid_sgid']['blacklist'] = []
SUID/SGID 비트를 제거해야 하는 경로 목록['os-hardening']['security']['suid_sgid']['whitelist'] = []
SUID/SGID 비트를 변경하지 않아야 하는 경로 목록['os-hardening']['security']['suid_sgid']['remove_from_unknown'] = false
blacklist에 명시적으로 구성되지 않은 파일에서 SUID/SGID 비트를 제거하려면 true. 이렇게 하면 모든 Chef 실행 시 마운트된 파일 시스템을 검색하여 기본 및 사용자 블랙리스트에 구성되지 않은 SUID/SGID 비트를 찾습니다. SUID/SGID 비트를 찾으면 해당 파일이 whitelist에 없는 한 제거됩니다.['os-hardening']['security']['suid_sgid']['dry_run_on_unknown'] = false
위의 remove_from_unknown과 유사하지만 SUID/SGID 비트를 제거하지 않습니다.
여전히 파일 시스템을 검색하여 SUID/SGID 비트를 찾지만 로그에만 출력합니다. 이 옵션은 SUID/SGID 비트에 대해 remove_from_unknown을 처음 구성할 때만 권장됩니다. 변경되는 파일을 확인하고 whitelist 및 blacklist를 조정할 수 있기 때문입니다.['os-hardening']['security']['packages']['clean'] = true
알려진 문제가 있는 패키지를 제거합니다.['os-hardening']['security']['packages']['list'] = ['xinetd','inetd','ypserv','telnet-server','rsh-server']
제거할 패키지 목록. 기본적으로 다음 패키지를 제거합니다:
['os-hardening']['security']['selinux_mode'] = 'unmanaged'
SELinux 구성을 그대로 두려면 unmanaged로 설정하세요. SELinux를 강제하려면 enforcing, 허용 모드로 설정하려면 permissive로 설정하세요.