| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 로드밸런서 컨트롤러
- helm
- kubernetes 동작 원리
- 메탈LB
- headless service
- blue-green
- terraform
- jenkins
- EKS 클러스터
- 딥레이서 보상함수
- SAA 합격 후기
- AWS 딥레이서
- 그라파나 시각화
- github action 사용법
- EFS CSI Driver
- 딥레이서
- Firelens
- 쿠버네티스
- 쿠버네티스 컴포넌트
- Kubernetes
- 솔데스크
- livenessPorbe
- 깃허브 액션
- grafana on kubernetes
- LoadBalancer Controller
- Prometheus install
- 그라파나 대시보드
- Aurora cluster
- Solution Architecture
- Kubernets on Jenkins
mingming
NCP - OS Security Checker 본문
OS Security Checker
Naver Cloud Platform에서 제공하는 System Security Checker 에 대해 알아보겠습니다.
System Security Checker는 서버 운영체제(OS)와 Web Application Server(WAS)의 보안 설정을 점검할 수 있는 서비스로, 점검 결과를 진단 리포트를 통해 확인 가능하며 PDF 혹은 엑셀 파일로 다운받을 수 있습니다. 이번 포스팅에선 OS Security Checker의 부분을 다뤄 보려 합니다.
사전 준비사항
1. 상품 이용 신청
NCP 콘솔 로그인 → Services → System Security Checker → OS Security Checker
먼저 OS Security Checker를 이용하기 위해서 상품 이용 신청을 진행해야 합니다.

2. 에이전트 다운로드
다음 명령을 실행하여 에이전트 파일을 다운로드 할 수 있습니다.
wget http://ossc.ncloud.com/download/sscAgent

다운로드 한 에이전트 파일에 실행권한을 부여합니다.
chmod 755 sscAgent

OS 취약점 점검
에이전트를 실행하여 서버의 보안 점검을 수행할 수 있습니다.
서버를 점검하려면 root(관리자) 권한이 필요하여 반드시 관리자 권한으로 에이전트를 실행해야 합니다.
에이전트를 수행하면 다음과 같이 점검 기준과 점검 대상을 선택할 수 있습니다. 저는 OS -Linux (CSAP)를 선택하였습니다.
./sscAgent

점검 대상 선택 후 점검 예외 파일을 지정할 수 있습니다.
예외 파일은 json format으로 작성하며 해당 파일은 점검대상에서 예외처리하게 됩니다. 저는 예외 처리할 파일이 없기에 그냥 엔터 입력 후 넘어갔습니다.


점검 결과를 콘솔에서 확인할 수 있고, 리포트에서 더 자세한 내용을 확인할 수 있습니다.


OS 취약점 보완 조치
36개의 항목중 U-02, U-03, U-04, U-19 네개의 항목에 대하여 취약점이 발견되었습니다.
U-02 패스워드 복잡성 설정
- AS-IS : 최소 8자리 이상의 패스워드
- TO-BE : 영문 / 숫자 / 특수문자를 조합하여 8자리 이상의 패스워드를 사용하도록 설정
RHEL 기준 /etc/security/pwquality.conf 파일을 수정하여 패스워드 복잡성을 설정할 수 있습니다.
- lcredit : 영어 소문자
- ucredit : 영어 대문자
- dcredit : 숫자
- ocredit : 특수문자
- minlen : 최소 패스워드 길이
default 값으로 각 항목이 0으로 세팅되어 있습니다. 각 항목의 값을 -1로 수정합니다.
-1 로 설정하게되면 패스워드에 각 항목을 반드시 포함시키도록 합니다.

U-03 계정 잠금 임계값 설정
시스템 정책에사용자 로그인 실패 임계값이 설정되어 있는지 점검하는 사항입니다.
- AS-IS : 설정되어 있지 않음
- TO-BE
- auth required /lib/security/pam_tally.so deny=10 unlock_time=120 no_magic_root
- account required /lib/security/pam_tally.so no_magic_root reset
- 10회 임력 실패 시 패스워드 잠금, 계정 잠김 후 설정된 시간 지나면 계정 잠김 해제, 로그인 성공 시 실패 횟수 초기화
계정 잠금 임계값 설정을 위해 pam_tally.so 모듈을 사용하게 되는데 해당 모듈이 OS에 존재하는지 반드시 선확인이 필요합니다. 확인하지 않고 수행하실 경우 모든 계정에서 root 권한을 획득하지 못하는 에러를 경험하실 수 있습니다.
[mkan@mkan ~]$ sudo su -
sudo: PAM 계정 관리 오류: 모듈을 알 수 없음
sudo 권한을 획득할 수 없기에 해당 파일 수정 또한 불가능 하며 재부팅하여 싱글모드로 부팅해 수정 해야합니다. 따라서 운영중인 서버에서는 반드시 신중하게 작업하셔야합니다.
pam_tally.so 모듈 확인
pam 모듈은 /lib64/security 디렉터리에서 확인할 수 있습니다.

pam_tally.so 모듈이 없다면 pam_faillock.so 모듈을 대신 사용할 수 있습니다.
/etc/pam.d/system-auth 파일에 아래의 내용을 추가합니다.
auth required pam_faillock.so preauth silent audit deny=10 unlock_time=120
auth [default=die] pam_faillock.so authfail audit deny=10 unlock_time=120
account required pam_faillock.so
두 개의 인증 단계를 간단히 요약하자면
첫 번째 줄은 사전 인증 단계에서 기존 실패 이력을 확인하여 이미 잠겨 있는 사용자를 사전에 차단합니다.
두 번째 줄은 인증실패 단계에서 실패한 로그인 시도를 기록하고 필요시 계정을 잠급니다.
- auth : 이 모듈이 인증 과정에서 사용됨을 의미합니다.
- required : 이모듈이 성공해야전체 인증과정이 성공됩니다.
- preauth : 사전 인증단계에서 실행되어 인증 전에 기존 실패기록을 확인합니다.
- audit : 성공 및 실패한 모든 시도를 감사 목적으로 기록합니다.
- account : 이 모듈이 계정관리 단계에 사용됨을 의미합니다.
U-04 패스워드 최대 사용 기간 설정
네이버 클라우드의 경우 root 혹은 ncloud 계정의 패스워드를 만료되지 않게 운영하는 것이 효율적이라 생각하기에 관리자 계정은 패스워드 만료가 되지 않도록 하여 예외처리 하겠습니다.
패스워드 최대 사용 기간 설정
/etc/login.def

U-19 finger 서비스 비활성화
finger 서비스는 운영체제에서 사용자 계정 정보를 조히하기 위한 네트워크 유틸리티 입니다. finger 명령을 사용하여 시스템에 로그인한 사용자 또는 사용자의 상세정보를 볼 수 있습니다.
하지만 네이버클라우드에서 기본적으로 xinetd와 inetd 같은 네트워크 데몬 서비스를 이용하지 않기에 점검 대상에 해당되지 않습니다.
이상으로 OS Securty Checker를 통한 보안 점검에 대해 살펴보았습니다. 위의 글에서도 적었지만 계정 잠금임계값 설정 시 Security Checker 레포트만 보고 무작정 따라하다 고객사의 운영서버를 재부팅해야 하는 상황이 발생했었습니다. 이 글을 보시고 저와 같은 실수를 하는 분이 없길 바랍니다.
'NCP' 카테고리의 다른 글
| NCP - Windows Backup Agent (1) | 2025.07.19 |
|---|---|
| NCP - Certificate Manager SSL 인증서 등록 (0) | 2024.06.30 |
| NCP - Backup (2) | 2024.06.08 |