nugawiki # archive of experience and knowledge

nuga@nugawiki: $ cat ./docs/$1

서버 보안점검 증빙자료

업데이트 2026-07-22 조회수

1. 사용자 계정에 0-99사이의 UID나 GID 값이 할당된 계정 확인

  • 취약점 점검방법
    • cat /etc/passwd 세번째, 네 번째 필드의 값이 0-99사이의 값을 갖는 사용자(일반) 계정이 존재하는지 확인

cat /etc/passwd | grep -v nologin ```

  • 취약점 조치 방법(UID, GID 변경)
    • passwd 파일 구조 image
    • 사용자(일반) 계정이 0~99사이일 경우 적절한 UID부여

usermod –u 1001 test (test 계정을 UID 변경) ```

  • 사용자(일반) 계정이 0~99사이일 경우 적절한 GID부여

groupmod –g 1001 test (test 계정 GID 변경) ```

2. root 계정 외에 UID와 GID가 0인 계정이 없는지 점검

  • 취약점 점검방법
    • cat /etc/passwd 세 번째 필드의 값이 root와 동일한 값을 가진 계정이 존재하는지 확인

cat /etc/passwd | grep -v nologin ```

※ 각 OS별로 사용자 UID 체계가 달라 시스템 계정 및 일반 사용자 계정이 부여받는 값의 범위가 차이가 있습니다. 공통적으로 관리자는 “UID=0”을 부여받습니다.
  • 취약점 조치 방법(UID, GID 변경)
    • root 이외의 계정이 “UID=0”인 경우 0이 아닌 적절한 UID부여

usermod –u 1001 test (test 계정을 UID 변경) ```

3. 디폴트 시스템 계정 제거

  • 취약점 점검방법
    • 불필요한 계정이 점검하여 관리되지 않은 계정에 의한 침입 대비 (퇴직, 전직, 휴직, 유지보수 변경 등의 사유로 기존 계정 반드시 확인!)

    • Default 계정을 무조건 삭제 조치하라는 의미 아님!(주의!) ※ default 계정: OS나 Package 설치 시 기본적으로 생성되는 계정 (예시: lp, uucp, shutdown, news, opterator, games, gopher 등)

cat /etc/passwd ```

  • 취약점 조치 방법(UID, GID 변경)
    • 90일 동안 로그인 하지 않은 계정이 있는지 확인

lastlog –b 90 ```

  • userdel 명령으로 불필요한 사용자 계정 삭제

userdel test ```

4. 로그인 실패 횟수 제한

  • 취약점 점검방법
    • 계정 잠금 임계값 5이하로 설정 후 확인하여 스샷 제출

cat /etc/ssh/sshd_config | grep MaxAuthTries ```

  • 취약점 조치 방법

vi /etc/ssh/sshd_config 파일내 MaxAuthTries 값 변경


### 5. /etc/hosts 권한설정

- 취약점 점검방법
- ls –al /etc/hosts 명령어로 파일의 소유가 root이고 권한이 600이하 확인
  ```bash
ls –al /etc/hosts
  ```
- 취약점 조치 방법
- /etc/hosts의 소유자를 root로 변경
  ```bash
chown root /etc/hosts
  ```
- /etc/hosts의 권한을 600으로 변경
  ```bash
chmod 600 /etc/hosts
  ```

### 6. 관리자 계정에 대한 로그인 성공/실패 기록 설정

- 취약점 점검방법
- last 명령어 입력 후 로그인 기록 조회
(wtmp 파일 cat으로 읽을 수 없으므로 last 명령어로 조회)
  ```bash
last
  ```
- 취약점 조치 방법
- wtmp 파일 존재 유무 확인
  ```bash
ls –alL /var/log/wtmp
  ```
- loginlog 파일 생성 후, 관리자에게 읽기/쓰기 권한을 부여해줌
  ```bash
touch /var/log/wtmp
chown root /var/log/wtmp
chmod 600 /var/log/wtmp
  ```

### 7. 네트워크 서비스 데몬 권한 755 초과 여부 설정 확인

- 취약점 점검방법
- xinetd, inetd 조회하여 Group, Others의 쓰기 권한 확인
  ```bash
ls –alL /etc/xinetd.d/*
ls –alL /etc/inetd/*
  ```
- 취약점 조치 방법
- ls –alL /usr/sbin/xinetd 조회하여 Group, Others의 쓰기 권한 제거
  ```bash
usermod –u 1001 test (test 계정을 UID 변경)
  ```
- 사용자(일반) 계정이 0~99사이일 경우 적절한 GID부여
  ```bash
groupmod –g 1001 test (test 계정 GID 변경)
  ```

### 8. 안전한 비밀번호 설정(9자리 이상 숫자 영문자 특수문자 혼용 정기적 변경)

- 취약점 점검방법
- /etc/pam.d/system-auth 파일 확인
  ```bash
cat /etc/pam.d/system-auth
  ```
- OS별 점검 파일 내 영문, 숫자, 특수문자 9자리 이상 설정 확인
<table>
<thead>
<tr>
<th>OS 버전</th>
<th>점검 파일 위치 및 점검 방법</th>
</tr>
</thead>
<tbody>
<tr>
<td>SOLARIS</td>
<td>/etc/default/passwd</td>
</tr>
<tr>
<td>INUX-RHEL5</td>
<td>/etc/pam.d/system-auth</td>
</tr>
<tr>
<td>INUX-RHEL7</td>
<td>/etc/security/pwquality.conf</td>
</tr>
<tr>
<td>AIX</td>
<td>/etc/security/user</td>
</tr>
<tr>
<td>HP-UX</td>
<td>/etc/default/security</td>
</tr>
</tbody>
</table>
- 취약점 조치 방법
- OS별 점검 파일을 열어 영문, 숫자, 특수문자 혼용 9자리 이상 설정
  ```bash
vi /etc/pam.d/system-auth

# 예시
password requisite pam_cracklib.so try_first_pass retry=3          
minlen=9 dcredit=-1 ocredit=-1 udredit=-1 lcredit=-1
  ```

### 9. 패스워드 관리 시스템 파일은 슈퍼관리자만 수정 권한 소유 \[U-07\] \[U-08\]

- 취약점 점검방법
- /etc/passwd, /etc/shadow **소유자 root 확인(양호)**
  ```bash
ls –l /etc/passwd
ls –l /etc/shadow
  ```
- 취약점 조치 방법
- chown 명령어로 소유자를 root로 변경
  ```bash
chown root /etc/passwd
chown root /etc/shadow
  ```

### 10. 패스워드 관리를 위한 시스템 파일은 슈퍼관리자(root)만 수정 권한 소유 \[U-07,08\]

- 취약점 점검방법
- /etc/passwd(**644권한 양호**) /etc/shadow(**400권한 양호**)
  ```bash
ls –l /etc/passwd
ls –l /etc/shadow
  ```
- 취약점 조치 방법
- chmod 명령어로 권한 644 변경
  ```bash
chmod 644 /etc/passwd
  ```
- chmod 명령어로 권한 400 변경
  ```bash
chmod 400 /etc/shadow
  ```

### 11. 원격 로그인 또는 원격 쉘 등 사용 설정 유무 \[U-21\]

- 취약점 점검방법
- rsh, rlogin, rexec 원격서비스 disable 설정 필요
  ```bash
cat /etc/xinetd.d/rsync
ls –alL /etc/xinetd.d/* | egrep "rsh|rogin|rexec"
systemctl status rsh.socket/rlogin.socket/rexec.socket
  ```
- 취약점 조치 방법
- xinetd일 경우, vi 편집기 이용하여 rsh, rlogin, rexec 파일 연 후 disable=yes 설정
  ```bash
vi /etc/xinetd.d/rlogin
vi /etc/xinetd.d/rsh
vi /etc/xinetd.d/rexec
  ```

### 12. 불필요한 네트워크 서비스 제거

- 취약점 점검방법
- 불필요한 네트워크 서비스 비활성화 확인
  ```bash
ls -alL /etc/xinetd.d/*
ls –alL /etc/xinetd.d/* | egrep "rsh|rogin|rexec"
  ```

<table>
<thead>
<tr>
<th>OS 버전</th>
<th>점검 파일 위치 및 점검 방법</th>
</tr>
</thead>
<tbody>
<tr>
<td>LINUX, AIX</td>
<td></td>
</tr>
</tbody>
</table>
HP-UX,
SOLARIS 5.9
이하 버전 | 불필요한 RPC 서비스 비활성화 여부 확인
#cat /etc/inetd.conf |
  | LINUX(xinetd) | “/etc/xinetd.d” 디렉터리 내 서비스별 파일 비활성화 여부 확인
#vi /etc/xinetd.d/\[서비스별 파일명\] |
  | SOLARIS 5.10
이상 버전 | RPC 서비스 관련 데몬 확인
#inetadm | grep rpc | grep enabled | egrep “ttdbserver|rex|rstart|rusers| spray|wall|rquota” |
- 취약점 조치 방법
- LINUX, AIXHP-UX,SOLARIS 5.9이하 버전
  - “/etc/inetd.conf” 파일에서 해당 라인 #처리(주석처리)
  - 주석처리 후 inetd 서비스 재시작 필요!

  ```bash
#ps –ef | grep inetd (pid값 검색 후 아래 명령어 실행)
#kill –HUP pid
  ```
- LINUX(xinetd일 경우)
  - vi 편집기를 이용하여 “/etc/xinetd.d/” 디렉터리 내의 불필요한 RPC 서비스 파일 열기 (Disable = yes 설정)
  - 설정 후 xinetd 서비스 재시작

  ```bash
groupmod –g 1001 test (test 계정 GID 변경)
  ```

### 13. 암호화 기능이 없는 프로토콜(TELNET, FTP) 사용 여부

- 취약점 점검방법
- ftp, telnet 사용 여부 확인
  ```bash
netstat –an | grep "LISTEN" | grep "21"
netstat –an | grep "LISTEN" | grep "23"
systemctl status telenet.socket
systemctl status vsftpd
  ```
- 취약점 조치 방법

### 14. 익명 FTP 사용 여부

- 취약점 점검방법
- cat /etc/passwd (파일 안에 ftp 또는 익명계정 있는 경우 취약)
  ```bash
cat /etc/passwd | grep -v nologin
  ```
- 취약점 조치 방법
- /etc/passwd 파일에서 ftp 또는 익명 계정 삭제 (명령어: userdel ftp)
  ```bash
userdel ftp
  ```
- /etc/xinetd.d/ftpd|proftpd|vsftpd 설정 값 변경
disable =no 경우 취약, disable =yes 변경(양호)
- /etc/vsftpd/vsftpd.conf 파일 설정 값 변경
anonymous\_enable=yes 경우 취약, anonymous\_enable=no 변경(양호)

### 15. 자동으로 FTP에 로그인을 허용하는 .netrc 파일 제거

- 취약점 점검방법
- netrc 파일을 find 명령어로 찾습니다.(파일 없음 확인)
  ```bash
find / -name .netrc
  ```
- 취약점 조치 방법
- find로 찾은 .netrc 파일을 vi편집기로 불필요한 항목 수정
  ```bash
vi /경로/.netrc
  ```
- .netrc 파일이 필요 없는 경우는 삭제
  ```bash
rm /경로/.netrc
  ```
- .netrc 파일이 필요한 경우, 소유자 이외의 일반 사용자가 .netrc 파일에 접근하지 못하도록 접근 권한을 변경
  ```bash
chmod 600 /경로/.netrc
  ```

### 16. xnetd/xinetd가 불필요한 경우 비활성화

- 취약점 점검방법
- inetd 또는 xinetd 프로세스 비활성화 확인
  ```bash
ps –ef | grep inetd | grep -v grep
ps –ef | grep xinetd | grep -v grep
  ```
- 취약점 조치 방법
- inetd 또는 xinetd 프로세스 종료
  ```bash
/usr/sbin/xinetd stop
  ```
- /etc/xinetd.d/\[서비스명\] disable=yes로 수정
  ```bash
vi /etc/inetd.conf/[서비스명]
  ```
- /etc/inetd.conf 서비스 확인하여 해당 서비스 주석처리(#)
  ```bash
vi /etc/inetd.conf
  ```

### 17. 지정된 IP외의 주소에서 FTP나 TELENET으로 접속한 이력여부 점검

- 취약점 점검방법
- last 명령어 조회하여 허용되지 않은 IP 접근 내역 확인
  ```bash
last
  ```
- 허용 IP, 차단 IP 확인
  ```bash
# 허용 IP
cat /etc/hosts.allow

# 차단 IP
cat /etc/hosts.deny
  ```
- 취약점 조치 방법
- TCP Wrapper를 활용하여 접근허용 IP 등록
  - deny 정책: 모든 접근허용 IP 차단 (ALL : ALL)
  -  allow 정책: 제한적 허용(**접근제어 IP(필수)** 및 **담당공무원PC IP만 **허용)
1. DMZ 접근제어(예시)
   - sshd : 211.252.37.254
   - ftp : 211.252.37.254
   - sendmail : ALL
1. 서버팜 접근제어(예시)
   - sshd : 102.1.249.254
   - ftp :102.1.249.254
   - sendmail : ALL

### 18. Cron 파일 소유자 및 권한 설정 점검 \[U-22\]

- 취약점 점검방법
- /etc/cron.allow, /etc/cron.deny 파일 소유자 root이고, 권한 640이하 확인
  ```bash
ls -al /etc/cron.allow
ls -al /etc/cron.deny
  ```
- 취약점 조치 방법
- /etc/cron.allow, /etc/cron.deny 파일 소유자 root 변경, 권한 640이하 변경
  ```bash
chown root /etc/cron.allow
chmod 640 /etc/cron.allow
  ```

### 19. 디폴트 SNMP 커뮤니티 스트링(public) 값 변경

- 취약점 점검방법
- 커뮤니티 값이 public, private인 경우 변경
  ```bash
cat /etc/snmp/snmpd.conf
  ```
- 취약점 조치 방법
- vi 편집기를 이용하여 SNMP 설정파일 열기
  ```bash
vi /etc/snmp/snmpd.conf

# Community String 값 설정 변경
(수정전) com2sec nonConfigUser default public
(수정후) com2sec nonConfigUser default <변경값>
  ```
- 서비스 재구동
  ```bash
service snmpd rstart
  ```

### 20. 최신버전의 SSH 사용

- 취약점 점검방법
- 현재 버전의 ssh 확인 OpenSSH 버전 확인
  ```bash
ssh -V
  ```
- 취약점 조치 방법
- 패키지 매니저를 통한 최신 업데이트
  ```bash
# RHEL / CentOS
yum install openssh-server

# Ubuntu
apt-get update
apt-get install openssh-server
  ```
- 수동 업데이트 : [https://www.openssh.com](https://www.openssh.com/) 

### 21. IP 포워딩 비활성화

- 취약점 점검방법
- IP 포워딩 활성화 여부 확인(값이 0이면 양호)
  ```bash
cat /proc/sys/net/ipv4/ip_forward
  ```
- 취약점 조치 방법
- 값을 0 으로 변경
  ```bash
echo 0 > /proc/sys/net/ipv4/ip_forward
  ```

### 22. 패킷 재전송 설정 비활성화

- 취약점 점검방법
- 패킷 재전송 비활성화 설정 확인(값이 0이면 양호)
  ```bash
cat /etc/sysctl.conf
  ```
- 취약점 조치 방법
- 부팅 시 항상 적용될 수 있도록 설정 파일에 다음 행 추가
  ```bash
vi /etc/sysctl.conf
  net.ipv4.ip_forward=0
# 또는
net.ipv4.conf.default.accept_source_route=0
  ```

### 23. 시간동기화(NTP) 설정

- 취약점 점검방법
- 현재 시간과 일치 여부 확인, 폐쇄망일 경우 수동 설정 필요
  ```bash
ntpq -p
date
  ```
- 취약점 조치 방법
- 외부망 NTP: (ADD-PAK)211.252.37.243, (IBM)211.252.37.253 설정
(DMZ 대역 211.252.37.X 등)
- 업무망 NTP: (ADD-PAK)102.1.249.243, (IBM)102.1.246.253 설정
(서버팜 대역 102.1.X.X 등)

./comments