
이 puppet 모듈은 다양한 보안 관련 구성을 제공하여 전방위적인 기본 보호를 제공합니다.
[][1]
[
][1]
[
][1]
[
][2]
이 Puppet 모듈은 하드닝을 통해 기본 OS의 보안 구성을 제공하며 DevSec 하드닝 프레임워크의 일부입니다.
이 모듈을 추가한 후 다음 클래스를 사용할 수 있습니다:
class { 'os_hardening': }
모든 매개변수는 기본 os_hardening 클래스에 포함되어 있으므로 다음과 같이 전달하기만 하면 됩니다:
class { 'os_hardening':
enable_ipv4_forwarding => true,
}
PE 환경에서 이 모듈을 사용하는 경우 pe_environment = true로 설정해야 합니다.
그렇지 않으면 Puppet이 오류(중복 리소스)를 발생시킵니다!
system_environment = 'default'
시스템이 실행되는 컨텍스트를 정의합니다. 일부 옵션은 docker/lxc에서 작동하지 않습니다.pe_environment = false
Puppet Enterprise를 사용하는 경우 true로 설정하세요. 중요 - 위 참조extra_user_paths = []
사용자의 PATH 변수에 추가 경로를 추가합니다 (기본값은 비어 있음).umask = undef
useradd / newusers가 새 홈 디렉토리를 생성할 때 사용하는 umask (예: '027')maildir = undef
maildir 경로 (예: '/var/mail')usergroups = true
각 사용자에 대해 별도의 그룹을 원하면 true, 그렇지 않으면 falsesys_uid_min = undef 및 sys_gid_min = undef
login.defs의 기본 설정을 재정의합니다.password_max_age = 60
최대 비밀번호 사용 기간password_min_age = 7
최소 비밀번호 사용 기간 (다른 비밀번호 변경을 허용하기 전)password_warn_age = 7
비밀번호 변경 예정일 전 경고 일수login_retries = 5
비밀번호가 잘못된 경우 최대 로그인 재시도 횟수 (일반적으로 PAM / auth_retries로 재정의됨)login_timeout = 60
인증 제한 시간(초). 이 시간이 지나면 로그인이 종료됩니다.chfn_restrict = ''
일반 사용자가 chfn을 사용하여 변경할 수 있는 필드allow_login_without_home = false
홈 디렉토리가 없는 사용자의 로그인을 허용하려면 trueallow_change_user = false
사용자가 su를 사용하여 로그인을 변경할 수 있는지 여부ignore_users = []
하드닝되지 않아야 하는 시스템 사용자 계정 배열 (비밀번호 비활성화 및 셸을 /usr/sbin/nologin으로 설정)folders_to_restrict = ['/usr/local/games','/usr/local/sbin','/usr/local/bin','/usr/bin','/usr/sbin','/sbin','/bin']
그룹 및 기타 사용자가 해당 폴더 또는 내용에 쓰기 권한이 없도록 해야 하는 폴더ignore_max_files_warnings = false
/bin, /usr/bin 등 1000개 이상의 파일이 있는 폴더를 재귀적으로 검사할 때 puppet이 max_files 및 성능 경고를 기록하지 않도록 하려면 truerecurselimit = 5
재귀적 권한 검사를 위한 디렉토리 깊이passwdqc_enabled = true
PAM에서 passwdqc를 사용하여 강력한 비밀번호 검사를 사용하려면 trueauth_retries = 5
계정이 일정 시간 동안 잠기기 전 최대 인증 시도 횟수auth_lockout_time = 600
너무 많은 실패한 인증 시도로 계정이 잠긴 경우 경과해야 하는 시간(초)passwdqc_options = 'min=disabled,disabled,16,12,8'
passwdqc에 전달하려는 옵션 라인(문자열)으로 설정manage_pam_unix = false
이 모듈이 pam_unix를 관리하도록 하려면 trueenable_pw_history = true
pam_unix가 비밀번호 재사용을 방지하기 위해 비밀번호 기록을 기억하도록 하려면 true (manage_pam_unix = true 필요)pw_remember_last = 5
기억할 최근 비밀번호 수 (예: 5는 사용자가 최근 5개의 비밀번호를 재사용하지 못하게 함)only_root_may_su = false
root와 wheel 그룹의 구성원만 su를 사용할 수 있도록 하려면 true, CIS 벤치마크 준수를 위해 true가 필요합니다.root_ttys = ['console','tty1','tty2','tty3','tty4','tty5','tty6']
root에 등록된 TTYwhitelist = []
설정된 경우 SUID/SGID 비트를 유지해야 하는 모든 파일 (사전 정의된 파일 화이트리스트와 결합됨)blacklist = []
설정된 경우 SUID/SGID 비트를 제거해야 하는 모든 파일 (사전 정의된 파일 블랙리스트와 결합됨)remove_from_unknown = false
blacklist에 명시적으로 구성되지 않은 파일에서 SUID/SGID 비트를 제거하려면 true. 이렇게 하면 모든 Puppet 실행이 마운트된 파일시스템을 검색하여 기본 및 사용자 블랙리스트에 구성되지 않은 SUID/SGID 비트를 찾습니다. SUID/SGID 비트를 찾으면 whitelist에 없는 한 제거됩니다.dry_run_on_unknown = false
위의 remove_from_unknown과 유사하지만 SUID/SGID 비트가 제거되지 않습니다. 여전히 파일시스템을 검색하여 SUID/SGID 비트를 찾지만 로그에만 출력합니다. 이 옵션은 SUID/SGID 비트에 대해 remove_from_unknown을 처음 구성할 때만 권장됩니다. 변경되는 파일을 확인하고 whitelist 및 blacklist를 조정할 수 있기 때문입니다.enable_module_loading = true
시스템이 실행 중일 때 커널 모듈 변경(예: modprobe, rmmod)을 허용하려면 trueload_modules = []
enable_module_loading이 false인 경우 initramfs를 통해 이 모듈을 로드합니다.disable_filesystems = ['cramfs','freevxfs','jffs2','hfs','hfsplus','squashfs','udf']
비활성화해야 하는 파일시스템(커널 모듈) 배열cpu_vendor = 'intel'
enable_module_loading = false인 경우에만 필요: 로드할 모듈의 CPU 공급업체 설정icmp_ratelimit = '100'
기본값 '100', 재정의 허용, String 필요desktop_enabled = false
Xorg, KDE/GNOME/Unity 등 데스크톱 시스템인 경우 trueenable_ipv4_forwarding = false
이 시스템이 IPv4에서 패킷 전달을 요구하는 경우 true (예: 라우터), 그렇지 않으면 falsemanage_ipv6 = true
ipv6 설정을 하드닝하려면 true, ipv6를 완전히 무시하려면 falseenable_ipv6 = false
이 시스템에서 ipv6를 비활성화하려면 false, 활성화하려면 trueenable_ipv6_forwarding = false
이 시스템이 IPv6에서 패킷 전달을 요구하는 경우 true (예: 라우터), 그렇지 않으면 falsearp_restricted = true
ARP 알림 및 응답 동작을 제한하려면 true, 그렇지 않으면 falsearp_ignore_samenet = false
true는 동일한 서브넷에서 오지 않은 패킷을 버립니다 (arp_ignore = 2), false는 대상 IP만 확인합니다 (arp_ignore = 1)enable_sysrq = false
매직 sysrq 키를 활성화하려면 true, 그렇지 않으면 falseenable_core_dump = false
코어 덤프 생성을 방지하려면 false, 그렇지 않으면 trueenable_stack_protection = true
주소 공간 레이아웃 무작위화(ASLR)용. ASLR은 특정 유형의 버퍼 오버플로 공격을 방어하는 데 도움이 될 수 있습니다. ASLR은 프로세스의 주소 공간에서 베이스, 라이브러리, 힙 및 스택을 무작위 위치에 배치하여 공격 프로그램이 다음 명령의 메모리 주소를 예측하기 어렵게 만듭니다.enable_rpfilter = true
역방향 경로 필터링을 활성화하려면 true (가짜 패킷 폐기), 그렇지 않으면 falserpfilter_loose = false
(enable_rpfilter가 true인 경우에만) true이면 느슨한 모드 (rp_filter = 2), 그렇지 않으면 엄격한 모드enable_log_martians = true
의심스러운 / 라우팅 불가능한 네트워크 패킷에 대한 로깅을 활성화하려면 true, 그렇지 않으면 false 경고 - 이로 인해 대용량 로그 파일이 생성될 수 있습니다!unwanted_packages = []
시스템에서 제거해야 하는 패키지wanted_packages = []
시스템에 추가해야 하는 패키지disabled_services = []
활성화되지 않아야 하는 서비스enable_grub_hardening = false
일부 grub 하드닝 규칙을 활성화하려면 true로 설정grub_user = 'root'
grub 프롬프트에서 구성을 변경할 때 제공해야 하는 grub 사용자 이름grub_password_hash = ''
grub-mkpasswd-pbkdf2로 생성된 grub_user와 연결된 비밀번호 해시boot_without_password = true
기존 항목을 부팅할 때가 아닌 항목을 변경할 때만 비밀번호를 요구하도록 Grub 설정system_umask = undef
이 변수가 설정된 경우 시스템의 모든 사용자에 대한 umask를 설정합니다 (예: '027')manage_home_permissions = false
로컬 사용자 파일 및 디렉토리 권한을 관리하려면 true로 설정 (g-w,o-rwx)ignore_home_users = []
manage_home_permissions에 의해 제한되지 않아야 하는 사용자 배열manage_log_permissions = false
로그 파일 권한을 관리하려면 true로 설정 (g-wx,o-rwx)restrict_log_dir = ['/var/log/']
기본 로그 디렉토리 설정ignore_restrict_log_dir = []
기본 로그 디렉토리 아래에서 제외할 로그 디렉토리 배열ignore_files_in_folder_to_restrict = []
folder_to_restrict 배열 아래의 디렉토리에서 하드닝할 파일을 무시하는 배열manage_cron_permissions = false
cron 파일 권한을 관리하려면 true로 설정 (og-rwx)enable_sysctl_config = true
sysctl 구성을 비활성화하려면 false로 설정manage_system_users = true
시스템 사용자 관리(빈 비밀번호 및 nologin 셸 설정)를 비활성화하려면 false로 설정shadow_group = undef
/etc/shadow의 그룹 소유권 재정의shadow_mode = undef
/etc/shadow의 파일 권한 재정의Hiera에서 매개변수를 설정하는 것도 가능합니다: