차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
| kickstart_자동_설치_구성 [2025/06/10 02:18] – koov | kickstart_자동_설치_구성 [2025/07/17 06:36] (현재) – [보안취약점 적용된 kickstart 파일] koov | ||
|---|---|---|---|
| 줄 39: | 줄 39: | ||
| <WRAP prewrap> | <WRAP prewrap> | ||
| <code kickstart> | <code kickstart> | ||
| - | |||
| ######################################################### | ######################################################### | ||
| # LinuxDataSystem Secured kickstart file # | # LinuxDataSystem Secured kickstart file # | ||
| - | # Version | + | # Version |
| - | # Date : 2025-06-10 # | + | # Target |
| + | # Date : 2025-07-17 # | ||
| # Author | # Author | ||
| ######################################################### | ######################################################### | ||
| 줄 77: | 줄 77: | ||
| # System timezone | # System timezone | ||
| timezone Asia/Seoul --utc | timezone Asia/Seoul --utc | ||
| - | #timesource --ntp-disable | + | timesource --ntp-server 0.asia.pool.ntp.org |
| + | timesource --ntp-server 1.asia.pool.ntp.org | ||
| + | timesource --ntp-server 2.asia.pool.ntp.org | ||
| - | # Root password | + | ######################################### |
| + | # 계정 설정 방법 | ||
| + | # root 암호(komipo) 해시 생성 | ||
| + | # > openssl passwd -6 ' | ||
| + | # 사용자 암호 해시 생성 | ||
| + | # 특수문자(# | ||
| + | # > openssl passwd -6 ' | ||
| + | ######################################### | ||
| + | # 계정 설정 | ||
| #rootpw --iscrypted $6$BtR.Du9aLQ4TTwQw$.lyVLOQolJrZGa4I4nlk6NqZHFUTzPWc9wrn4r4JFGEUkGWj5cYsaJcIQgfuaG5H8M2VFbeC/ | #rootpw --iscrypted $6$BtR.Du9aLQ4TTwQw$.lyVLOQolJrZGa4I4nlk6NqZHFUTzPWc9wrn4r4JFGEUkGWj5cYsaJcIQgfuaG5H8M2VFbeC/ | ||
| - | #user --groups=wheel --name=lds --password=$6$Jaa4gvCGp1yD9Zcy$oKUWX/ | + | #user --groups=wheel --name=userid |
| - | %post --log=/ | + | ######################################## |
| + | # 방화벽 정책 적용 | ||
| + | # 비활성화 하는 경우 | ||
| + | firewall | ||
| + | |||
| + | # 활성화 하는 경우 | ||
| + | #firewall --enabled --service=ntp, | ||
| ######################################## | ######################################## | ||
| - | # Disable and stop firewalld | + | # 보안 취약점 적용 내역 |
| - | systemctl stop firewalld | + | ######################################## |
| - | systemctl disable firewalld | + | # 01. Disable and stop firewalld |
| - | systemctl mask firewalld | + | # 02. 패스워드 복잡성 설정 U-2 |
| - | echo " | + | # 03. 계정 잠금 임계값 설정 U-3 |
| + | # 04. root 계정 su 제한 U-45 | ||
| + | # 05. 패스워드 최소 길이 설정 (login.defs) U-46 | ||
| + | # 06. 패스워드 최대 사용기간 설정 (login.defs) U-47 | ||
| + | # 07. 패스워드 최소 사용기간 설정 (login.defs) U-48 | ||
| + | # 08. Session Timeout 설정 U-54 | ||
| + | # 09. /etc/hosts 파일 소유자 및 권한 설정 U-9 | ||
| + | # 10. / | ||
| + | # 11. SUID, SGID 파일 점검 (at 명령어 SUID 제거는 선택적) U-13 | ||
| + | # 12. UMASK 설정 관리 (RHEL 9 기본 0022, 변경 시 주석 해제) U-56 | ||
| + | # 13. cron 파일 소유자 및 권한 설정 U-22 | ||
| + | # 14. $HOME/ | ||
| + | # 15. 접속 IP 및 포트 제한 (firewalld) U-18 | ||
| + | # 16. Postfix 보안 설정 (Postfix 설치 시) U-31 | ||
| + | # 17. ssh 원격접속 보안 강화 | ||
| + | # - [SSH 포트 번호 변경] | ||
| + | # - [Root 계정 원격 접속 제한] U-1 | ||
| + | # - [.rhosts 및 hosts.equiv 사용 금지] U-17 | ||
| + | # - [SSH 원격접속 보안 강화 (CIS Benchmark 권장 사항 등)] U-60 | ||
| + | # - [로그온 시 경고 메시지 제공] U-68 | ||
| + | # 18. at 파일 소유자 및 권한 설정 U-65 | ||
| + | # 19. 로그온 시 경고 메시지 제공 U-68 | ||
| + | # 20. 최신 보안패치 적용 U-42 | ||
| + | # 21. 시스템 로깅 설정 (rsyslog, auditd) | ||
| + | # 22. 터미널 명령어 로깅 | ||
| + | # 23. ulimit 설정 | ||
| + | ######################################## | ||
| + | %post --log=/ | ||
| echo " | echo " | ||
| - | + | ######################################## | |
| - | # --- 2.1. 계정 및 접근 통제 --- | + | # 02. 패스워드 복잡성 설정 |
| echo " | echo " | ||
| - | # 2.1.2. 패스워드 복잡성 설정 | ||
| # 기본 주석 처리된 값을 변경하거나, | # 기본 주석 처리된 값을 변경하거나, | ||
| # 예시 값이며, 실제 보안 정책에 맞게 조정하십시오. | # 예시 값이며, 실제 보안 정책에 맞게 조정하십시오. | ||
| 줄 130: | 줄 172: | ||
| fi | fi | ||
| - | # 2.1.3. 계정 잠금 임계값 설정 | + | ######################################## |
| + | # 03. 계정 잠금 임계값 설정 | ||
| # 시스템 환경에 맞는 프로파일 선택 (예: sssd) | # 시스템 환경에 맞는 프로파일 선택 (예: sssd) | ||
| authselect select sssd --force | authselect select sssd --force | ||
| 줄 170: | 줄 213: | ||
| fi | fi | ||
| - | + | ######################################## | |
| - | # 2.1.6. root 계정 su 제한 | + | # 04. root 계정 su 제한 |
| # / | # / | ||
| # 해당 라인이 이미 존재하고 주석 처리되어 있다면 주석 해제 | # 해당 라인이 이미 존재하고 주석 처리되어 있다면 주석 해제 | ||
| 줄 185: | 줄 228: | ||
| chmod 4750 /usr/bin/su | chmod 4750 /usr/bin/su | ||
| - | + | ######################################## | |
| - | # 2.1.7. 패스워드 최소 길이 설정 (login.defs) | + | # 05. 패스워드 최소 길이 설정 (login.defs) |
| # / | # / | ||
| if grep -q " | if grep -q " | ||
| 줄 194: | 줄 237: | ||
| fi | fi | ||
| - | # 2.1.8. 패스워드 최대 사용기간 설정 (login.defs) | + | ######################################## |
| + | # 06. 패스워드 최대 사용기간 설정 (login.defs) | ||
| # / | # / | ||
| if grep -q " | if grep -q " | ||
| 줄 207: | 줄 251: | ||
| # done | # done | ||
| - | # 2.1.9. 패스워드 최소 사용기간 설정 (login.defs) | + | ######################################## |
| + | # 07. 패스워드 최소 사용기간 설정 (login.defs) | ||
| # / | # / | ||
| if grep -q " | if grep -q " | ||
| 줄 220: | 줄 265: | ||
| # done | # done | ||
| - | # 2.1.15. Session Timeout 설정 | + | ######################################## |
| + | # 08. Session Timeout 설정 | ||
| # / | # / | ||
| cat <<' | cat <<' | ||
| 줄 246: | 줄 292: | ||
| chmod 644 / | chmod 644 / | ||
| - | # --- 2.2. 파일시스템, 디렉토리 | + | ######################################## |
| + | # 09. / | ||
| echo " | echo " | ||
| - | # 2.2.5. /etc/hosts 파일 소유자 및 권한 설정 | ||
| #chown root:root /etc/hosts | #chown root:root /etc/hosts | ||
| #chmod 644 /etc/hosts | #chmod 644 /etc/hosts | ||
| - | # 2.2.6. / | + | ######################################## |
| + | # 10. / | ||
| chown root:root / | chown root:root / | ||
| chmod 640 / | chmod 640 / | ||
| 줄 259: | 줄 306: | ||
| # find / | # find / | ||
| - | # 2.2.8. SUID, SGID 파일 점검 (at 명령어 SUID 제거는 선택적) | + | ######################################## |
| + | # 11. SUID, SGID 파일 점검 (at 명령어 SUID 제거는 선택적) | ||
| # /usr/bin/at 의 SUID 제거 (atd 서비스를 사용하지 않거나, 사용을 엄격히 제한할 경우에만 고려) | # /usr/bin/at 의 SUID 제거 (atd 서비스를 사용하지 않거나, 사용을 엄격히 제한할 경우에만 고려) | ||
| # if [ -f /usr/bin/at ]; then | # if [ -f /usr/bin/at ]; then | ||
| 줄 273: | 줄 321: | ||
| # find / -xdev \( -perm -4000 -o -perm -2000 \) -type f -ls >> / | # find / -xdev \( -perm -4000 -o -perm -2000 \) -type f -ls >> / | ||
| - | # 2.2.12. UMASK 설정 관리 (RHEL 9 기본 0022, 변경 시 주석 해제) | + | ######################################## |
| + | # 12. UMASK 설정 관리 (RHEL 9 기본 0022, 변경 시 주석 해제) | ||
| # RHEL 9 기본 umask는 0022이므로, | # RHEL 9 기본 umask는 0022이므로, | ||
| # 만약 더 엄격한 umask 027 로 변경하고자 할 경우: | # 만약 더 엄격한 umask 027 로 변경하고자 할 경우: | ||
| 줄 286: | 줄 335: | ||
| # fi | # fi | ||
| - | # 2.2.16. cron 파일 소유자 및 권한 설정 | + | ######################################## |
| + | # 13. cron 파일 소유자 및 권한 설정 | ||
| # 주요 cron 파일 및 디렉토리 권한 설정 | # 주요 cron 파일 및 디렉토리 권한 설정 | ||
| chown root:root / | chown root:root / | ||
| 줄 323: | 줄 373: | ||
| chmod 4750 / | chmod 4750 / | ||
| - | # --- 2.3. 서비스 및 네트워크 --- | + | ######################################## |
| + | # 14. $HOME/.rhosts, hosts.equiv 사용 금지 | ||
| echo " | echo " | ||
| - | # 2.3.2. $HOME/ | ||
| # 시스템 전체에서.rhosts 파일 검색 및 삭제 | # 시스템 전체에서.rhosts 파일 검색 및 삭제 | ||
| find /home -name .rhosts -type f -delete | find /home -name .rhosts -type f -delete | ||
| 줄 334: | 줄 385: | ||
| rm -f / | rm -f / | ||
| - | # 2.3.3. 접속 IP 및 포트 제한 (firewalld) - Kickstart 명령어 섹션에서 기본 설정 권장 | + | ######################################## |
| + | # 15. 접속 IP 및 포트 제한 (firewalld) - Kickstart 명령어 섹션에서 기본 설정 권장 | ||
| # Kickstart 명령어 섹션 (예시) | # Kickstart 명령어 섹션 (예시) | ||
| # firewall --enabled --service=ssh | # firewall --enabled --service=ssh | ||
| 줄 352: | 줄 404: | ||
| # firewall-cmd --reload # 설치 마지막에 한 번만 실행하는 것이 좋음 | # firewall-cmd --reload # 설치 마지막에 한 번만 실행하는 것이 좋음 | ||
| - | # 2.3.15. Postfix 보안 설정 (Postfix 설치 시) | + | ######################################## |
| + | # 16. Postfix 보안 설정 (Postfix 설치 시) | ||
| # Sendmail 패키지는 설치하지 않음 (-sendmail) | # Sendmail 패키지는 설치하지 않음 (-sendmail) | ||
| # Postfix 설치 시 (예: dnf install postfix) 보안 설정 적용 | # Postfix 설치 시 (예: dnf install postfix) 보안 설정 적용 | ||
| 줄 362: | 줄 415: | ||
| fi | fi | ||
| - | # 2.3.18. ssh 원격접속 보안 강화 | + | ######################################## |
| + | # 17. ssh 원격접속 보안 강화 | ||
| # ############################################################################## | # ############################################################################## | ||
| # SSH 보안 설정 통합 (수정된 부분) | # SSH 보안 설정 통합 (수정된 부분) | ||
| # ############################################################################## | # ############################################################################## | ||
| echo " | echo " | ||
| + | |||
| + | ######################################## | ||
| + | # [SSH 포트 번호 변경] | ||
| + | #echo " | ||
| + | #sed -i ' | ||
| # / | # / | ||
| 줄 378: | 줄 437: | ||
| cat <<EOF > " | cat <<EOF > " | ||
| # This file was generated by Kickstart and contains consolidated security settings. | # This file was generated by Kickstart and contains consolidated security settings. | ||
| - | |||
| # [Root 계정 원격 접속 제한] | # [Root 계정 원격 접속 제한] | ||
| PermitRootLogin no | PermitRootLogin no | ||
| 줄 405: | 줄 463: | ||
| EOF | EOF | ||
| + | ######################################## | ||
| # 파일 권한 설정 | # 파일 권한 설정 | ||
| 줄 414: | 줄 473: | ||
| # ############################################################################## | # ############################################################################## | ||
| - | + | ######################################## | |
| - | # 2.3.20. at 파일 소유자 및 권한 설정 | + | # 18. at 파일 소유자 및 권한 설정 |
| echo " | echo " | ||
| # systemctl을 사용하여 atd 서비스를 비활성화 및 중지합니다. | # systemctl을 사용하여 atd 서비스를 비활성화 및 중지합니다. | ||
| 줄 442: | 줄 501: | ||
| fi | fi | ||
| - | # 2.3.22. 로그온 시 경고 메시지 제공 | + | ######################################## |
| + | # 19. 로그온 시 경고 메시지 제공 | ||
| BANNER_TEXT=" | BANNER_TEXT=" | ||
| ########################################################################## | ########################################################################## | ||
| 줄 465: | 줄 525: | ||
| echo " | echo " | ||
| - | # --- 2.4. 로그 및 감사, | + | ######################################## |
| + | # 20. 최신 보안패치 | ||
| echo " | echo " | ||
| - | # 2.4.1. 최신 보안패치 적용 | ||
| #echo " | #echo " | ||
| #dnf update -y | #dnf update -y | ||
| 줄 476: | 줄 536: | ||
| # systemctl enable --now dnf-automatic.timer | # systemctl enable --now dnf-automatic.timer | ||
| - | # 2.4.3. 시스템 로깅 설정 (rsyslog, auditd) | + | ######################################## |
| + | # 21. 시스템 로깅 설정 (rsyslog, auditd) | ||
| + | # echo " | ||
| + | echo " | ||
| + | |||
| + | # audit 로그 설정 (필요시 주석 해제) | ||
| # echo " | # echo " | ||
| # dnf install -y audit; systemctl enable --now auditd | # dnf install -y audit; systemctl enable --now auditd | ||
| 줄 482: | 줄 547: | ||
| # augenrules --load | # augenrules --load | ||
| - | + | ######################################## | |
| - | ### 터미널 명령어 로깅 | + | # 22. 터미널 명령어 로깅 |
| - | echo ">>> | + | echo " |
| # 1. / | # 1. / | ||
| 줄 528: | 줄 593: | ||
| echo ">>> | echo ">>> | ||
| + | ######################################## | ||
| + | # 23. ulimit 설정 | ||
| + | echo " | ||
| + | # / | ||
| + | # 파일 이름은 .conf로 끝나야 하며, 일반적으로 우선순위를 위해 숫자로 시작합니다 (예: 99-). | ||
| + | |||
| + | cat <<EOF > / | ||
| + | # Set custom nofile limits for all users | ||
| + | * soft | ||
| + | * hard | ||
| + | EOF | ||
| + | |||
| + | # systemd의 기본 LimitNOFILE 값을 설정합니다. | ||
| + | # / | ||
| + | # / | ||
| + | # -i 옵션은 파일을 직접 수정합니다. | ||
| + | sed -i ' | ||
| + | sed -i ' | ||
| + | # DefaultLimitNPROC 값도 동일하게 변경할 수 있습니다. | ||
| + | # sed -i ' | ||
| + | # sed -i ' | ||
| + | echo ">>> | ||
| 줄 542: | 줄 629: | ||
| %end | %end | ||
| - | |||
| </ | </ | ||