차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
보안취약점_점검 [2018/12/04 06:51] – [참조링크] koov | 보안취약점_점검 [2024/10/22 07:15] (현재) – koov | ||
---|---|---|---|
줄 1: | 줄 1: | ||
====== 보안취약점 점검 ====== | ====== 보안취약점 점검 ====== | ||
- | --- // | ||
- | RHEL 사용시 일반적인 | + | * [[RHEL 보안 취약점 점검 |
+ | * [[보안 취약점 점검 가이드 (KISA기준)]] | ||
- | 아래 사항은 각 RHEL 버전에서 테스트 된 것이며 참조링크를 확인하시면 더욱 정확하게 사용하실 수 있습니다. | ||
- | 모든 내용에 대한 문의는 | ||
- | |||
- | |||
- | ===== root계정 원격 접속 제한 ===== | ||
- | * 위험도 : 상 | ||
- | ==== 조치방안 ==== | ||
- | === 모든 콘솔 root 로그인 차단 === | ||
- | |||
- | 콘솔 root 로그인 차단을 하게되면 물리 장비의 console에서도 root로그인이 불가능해진다. | ||
- | 방법은 / | ||
- | |||
- | <WRAP prewrap> | ||
- | < | ||
- | echo > / | ||
- | </ | ||
- | </ | ||
- | |||
- | 이 기능을 적용하려면 아래의 내용을 관련 설정에 적용하여야 한다. | ||
- | <WRAP prewrap> | ||
- | <code gettext> | ||
- | auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so | ||
- | </ | ||
- | </ | ||
- | |||
- | 위 설정을 적용하기 위한 파일들은 아래와 같다. | ||
- | <WRAP prewrap> | ||
- | <code bash> | ||
- | / | ||
- | / | ||
- | / | ||
- | / | ||
- | / | ||
- | / | ||
- | / | ||
- | / | ||
- | </ | ||
- | </ | ||
- | |||
- | <WRAP center round important> | ||
- | 위 사항을 적용한다고 하여도 원격에서 root권한 접속(SSH)을 막을수는 없다. 원격 root 접속을 차단하기 위해서는 아래의 SSH root login 차단방법을 참조한다. | ||
- | </ | ||
- | |||
- | === root SSH login 비활성화 === | ||
- | |||
- | / | ||
- | |||
- | |||
- | <WRAP prewrap> | ||
- | <code gettext / | ||
- | PermitRootLogin no | ||
- | </ | ||
- | </ | ||
- | |||
- | |||
- | ==== 참조링크 ==== | ||
- | * https:// | ||
- | * https:// | ||
- | |||
- | |||
- | ===== Password complexity 암호 복잡성 설정 ===== | ||
- | |||
- | <WRAP round info 80%> | ||
- | 인터넷에 여러가지 방법에 대해 안내된 문서가 많지만 대부분이 맞지 않으며 제대로 된 설정이 아니다. 잘못설정하는경우 정책이 적용되지 않거나 문제가 발생하므로 아래 내용을 보고 정확하게 따라서 적용하기 바란다. | ||
- | </ | ||
- | |||
- | |||
- | * 위험도 : 상 | ||
- | ==== 조치방안 ==== | ||
- | === RHEL6 === | ||
- | |||
- | <WRAP prewrap> | ||
- | <code gettext / | ||
- | #%PAM-1.0 | ||
- | # This file is auto-generated. | ||
- | # User changes will be destroyed the next time authconfig is run. | ||
- | auth required | ||
- | auth sufficient | ||
- | auth required | ||
- | |||
- | account | ||
- | |||
- | password | ||
- | password | ||
- | password | ||
- | |||
- | session | ||
- | session | ||
- | session | ||
- | session | ||
- | </ | ||
- | </ | ||
- | |||
- | <WRAP prewrap> | ||
- | <code gettext / | ||
- | #%PAM-1.0 | ||
- | # This file is auto-generated. | ||
- | # User changes will be destroyed the next time authconfig is run. | ||
- | auth required | ||
- | auth sufficient | ||
- | auth required | ||
- | |||
- | account | ||
- | |||
- | password | ||
- | password | ||
- | password | ||
- | |||
- | session | ||
- | session | ||
- | session | ||
- | session | ||
- | </ | ||
- | </ | ||
- | |||
- | 위 두부분에만 적용하고 ''/ | ||
- | '' | ||
- | * https:// | ||
- | |||
- | |||
- | === RHEL7 === | ||
- | |||
- | RHEL7에서는 pam_cracklib 대신에 '' | ||
- | 복잡성 옵션에 대한 설정은 ''/ | ||
- | |||
- | <WRAP prewrap> | ||
- | <code gettext / | ||
- | minlen = 8 | ||
- | minclass = 4 | ||
- | </ | ||
- | </ | ||
- | |||
- | 또는 아래와 같이 '' | ||
- | <WRAP prewrap> | ||
- | <code bash> | ||
- | # authconfig --passminlen=< | ||
- | </ | ||
- | </ | ||
- | |||
- | * passminlen=< | ||
- | * passminclass=< | ||
- | * passmaxrepeat=< | ||
- | * passmaxclassrepeat=< | ||
- | |||
- | 옵션에 대한 설정은 [[pwquality.conf]]를 참조. 또는 '' | ||
- | |||
- | <WRAP center round tip 60%> | ||
- | 위 설정은 '' | ||
- | </ | ||
- | |||
- | === root 사용자 pwquality 적용방법 === | ||
- | |||
- | '' | ||
- | 해당 파일내에 '' | ||
- | <WRAP prewrap> | ||
- | <code vim / | ||
- | #%PAM-1.0 | ||
- | # This file is auto-generated. | ||
- | # User changes will be destroyed the next time authconfig is run. | ||
- | auth required | ||
- | auth required | ||
- | auth sufficient | ||
- | auth requisite | ||
- | auth required | ||
- | |||
- | account | ||
- | account | ||
- | account | ||
- | account | ||
- | |||
- | # | ||
- | password | ||
- | password | ||
- | password | ||
- | |||
- | session | ||
- | session | ||
- | -session | ||
- | session | ||
- | session | ||
- | </ | ||
- | </ | ||
- | ==== 참조링크 ==== | ||
- | * https:// | ||
- | * https:// | ||
- | |||
- | ===== 계정 잠금 임계값 설정 ===== | ||
- | * 위험도 : 상 | ||
- | ==== 조치방안 ==== | ||
- | 무작위 대입 시도시 일정 횟수 이상 실패하면 차단하는 설정 | ||
- | |||
- | === RHEL 5.3 이전버전 === | ||
- | pam.tally 모듈을 사용하여 적용한다. | ||
- | ''/ | ||
- | |||
- | <WRAP prewrap> | ||
- | <code gettext / | ||
- | auth required | ||
- | account | ||
- | </ | ||
- | </ | ||
- | |||
- | === RHEL 5.4 이후버전 === | ||
- | pam.tally2 모듈을 사용하여 적용한다. | ||
- | ''/ | ||
- | |||
- | <WRAP prewrap> | ||
- | <code gettext / | ||
- | auth required | ||
- | </ | ||
- | </ | ||
- | |||
- | === RHEL 6 === | ||
- | RHEL 6 부터는 '' | ||
- | |||
- | 1. root 사용자를 제외한 모든 사용자에 대해서 3회 이상 실패시 600초(10분) 동안 차단하는 설정이다. | ||
- | ''/ | ||
- | |||
- | <WRAP prewrap> | ||
- | <code gettext> | ||
- | auth required | ||
- | auth sufficient | ||
- | auth [default=die] | ||
- | </ | ||
- | </ | ||
- | |||
- | 2. '' | ||
- | <WRAP prewrap> | ||
- | <code gettext> | ||
- | account | ||
- | </ | ||
- | </ | ||
- | |||
- | 3. '' | ||
- | <WRAP prewrap> | ||
- | <code gettext> | ||
- | auth required | ||
- | auth sufficient | ||
- | auth [default=die] pam_faillock.so authfail audit deny=3 even_deny_root unlock_time=600 | ||
- | |||
- | account | ||
- | </ | ||
- | </ | ||
- | |||
- | 4. 로그조회는 '' | ||
- | <WRAP prewrap> | ||
- | <code bash> | ||
- | [root@localhost ~]# faillock | ||
- | john: | ||
- | When Type Source | ||
- | 2013-03-05 11:44:14 TTY | ||
- | </ | ||
- | </ | ||
- | |||
- | 5. 차단된 사용자를 즉시 해제하려면 아래의 명령어를 사용하도록 한다. | ||
- | <WRAP prewrap> | ||
- | <code bash> | ||
- | faillock --user < | ||
- | </ | ||
- | </ | ||
- | |||
- | === RHEL 7 === | ||
- | ''/ | ||
- | |||
- | <WRAP prewrap> | ||
- | <code gettext / | ||
- | #%PAM-1.0 | ||
- | # This file is auto-generated. | ||
- | # User changes will be destroyed the next time authconfig is run. | ||
- | auth required | ||
- | auth required | ||
- | auth sufficient | ||
- | auth [default=die] pam_faillock.so authfail audit deny=3 unlock_time=600 # | ||
- | auth requisite | ||
- | auth required | ||
- | |||
- | account | ||
- | account | ||
- | account | ||
- | account | ||
- | account | ||
- | |||
- | password | ||
- | password | ||
- | password | ||
- | |||
- | session | ||
- | session | ||
- | -session | ||
- | session | ||
- | session | ||
- | </ | ||
- | </ | ||
- | |||
- | ==== 참조링크 ==== | ||
- | * https:// | ||
- | * https:// | ||
- | |||
- | |||
- | ===== su 사용 제한 ===== | ||
- | * 위험도 : 하 | ||
- | ==== 조치방안 ==== | ||
- | '' | ||
- | |||
- | <WRAP prewrap> | ||
- | <code gettext / | ||
- | #%PAM-1.0 | ||
- | auth sufficient | ||
- | # Uncomment the following line to implicitly trust users in the " | ||
- | #auth | ||
- | # Uncomment the following line to require a user to be in the " | ||
- | #auth | ||
- | auth include | ||
- | account | ||
- | account | ||
- | password | ||
- | session | ||
- | session | ||
- | </ | ||
- | </ | ||
- | |||
- | <WRAP center round important 60%> | ||
- | 상황에 따라 trust 옵션을 사용할 지 결정하도록 한다. | ||
- | </ | ||
- | |||
- | |||
- | ===== / | ||
- | |||
- | '' | ||
- | 해당 패키지에 포함된 명령어는 아래와 같다. | ||
- | |||
- | * / | ||
- | * / | ||
- | * / | ||
- | * / | ||
- | * / | ||
- | * / | ||
- | * /usr/bin/sg | ||
- | * / | ||
- | * / | ||
- | * / | ||
- | * / | ||
- | * / | ||
- | * / | ||
- | * / | ||
- | * / | ||
- | * / | ||
- | * / | ||
- | * / | ||
- | * / | ||
- | * / | ||
- | * / | ||
- | * / | ||
- | * / | ||
- | * / | ||
- | * / | ||
- | |||
- | 따라서 ''/ | ||
- | |||
- | * https:// | ||
- | ===== 패스워드 최소 길이 설정 ===== | ||
- | * 위험도 : 중 | ||
- | |||
- | <WRAP round tip 60%> | ||
- | ''/ | ||
- | pam.d 설정 없이 login.defs 내용만 변경한다고 해서 적용되지 않는다. 본 문서 위쪽의 '' | ||
- | |||
- | * https:// | ||
- | </ | ||
- | |||
- | ==== 조치방안 ==== | ||
- | / | ||
- | |||
- | <WRAP prewrap> | ||
- | <code gettext / | ||
- | # Password aging controls: | ||
- | # | ||
- | # | ||
- | # | ||
- | # | ||
- | # | ||
- | # | ||
- | PASS_MAX_DAYS | ||
- | PASS_MIN_DAYS | ||
- | PASS_MIN_LEN | ||
- | PASS_WARN_AGE | ||
- | </ | ||
- | </ | ||
- | |||
- | ===== Session Timout 시간 설정 ===== | ||
- | * 위험도 : 하 | ||
- | |||
- | ==== 조치방안 ==== | ||
- | |||
- | ''/ | ||
- | 아울러 히스토리 | ||
- | |||
- | <WRAP prewrap> | ||
- | <code gettext / | ||
- | HOSTNAME=`/ | ||
- | HISTSIZE=5000 | ||
- | HISTTIMEFORMAT=" | ||
- | TMOUT=300 | ||
- | if [ " | ||
- | export HISTCONTROL=ignoreboth | ||
- | else | ||
- | export HISTCONTROL=ignoredups | ||
- | fi | ||
- | |||
- | export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL HISTTIMEFORMAT TMOUT # 환경변수 적용 | ||
- | </ | ||
- | </ | ||
- | |||
- | |||
- | ===== 참조링크 ===== | ||
- | * https:// | ||