구축

취약점점검

Last edited 199 days ago by System Writer
Screenshot 2023-10-24 at 16.52.08.png
2.png

1. 계정관리

[U-01(상)] 1.1 root 계정 원격접속 제안

3.png
[ SSH ]
STEP 1) 편집기를 이용하여 “/etc/ssh/sshd_config”파일 열기
4.png

STEP 2) 아래와 같이 주석 제거 또는, 신규 삽입
5.png

[U-02(상)] 1.2 패스워드 복잡성 설정

image.png
image.png
image.png
image.png

CentOS
image.png
image.png
Rocky
8.png
retry = 3
9.png
minlen = 3
최소 패드워드 길이 설정
최소 8자리 이상 설정
10.png
lcredit = 1
최소 소문자 연구
소문자 최소 1자 이상
11.png
ucredit = -1
최소 대문자 요구
최소 대문자 1자 이상 요구
12.png
dcredit
최소 숫자 요구
최소 대문자 1자 이상 요구
13.png
ocredit
최소 특수문자 요구
ocredit = -1 ⇒ 최소 특수문자 1자 이상 요구
14.png
difok
기존 패스워드와 비교
difok=10(50%)
15.png

[U-03(상)] 1.3 계정 잠금 임계값 설정

16.png
17.png
18.png

19.png
20.png

21.png
22.png

체크 명령문
image.png

[U-04(상)] 1.4 패스워드 파일 보호

image.png
image.png

2. 파일 및 디렉토리 관리

[U-05(상)] 2.1 root홈, 패스 디렉터리 권한 및 패스 설정

image.png
image.png
image.png

[U-06(상)} 2.2 파일 및 디렉터리 소유자 설정

image.png
image.png

[U-07(상)] 2.3 /etc/passwd 파일 소유자 및 권한 설정

image.png
image.png

[U-08(상)] 2.4 /etc/shadow 파일 소유자 및 권한 설정

image.png
image.png
image.png

[U-09(상)] 2.5 /etc/hosts 파일 소유자 및 권한 설정

image.png
구문해설
ls -l /etc/hosts: /etc/hosts 파일의 상세 정보를 출력합니다.
permission=$(stat -c "%a" /etc/hosts): stat -c "%a" 명령어를 사용하여 /etc/hosts 파일의 권한을 숫자로 저장합니다. 이 값은 permission이라는 변수에 저장됩니다.
owner=$(stat -c "%U" /etc/hosts): stat -c "%U" 명령어를 사용하여 /etc/hosts 파일의 소유자를 확인하고, 이를 owner 변수에 저장합니다.
if [ "$permission" -le 600 ] && [ "$owner" = "root" ]; then: 파일의 권한($permission)이 600 이하이고(-le는 작거나 같음을 의미), 소유자가 "root"일 때 조건을 확인합니다.
echo "파일 권한 설정이 양호합니다": 만약 위 조건이 충족되면 "파일 권한 설정이 양호합니다"를 출력합니다.
else: 앞선 조건이 거짓인 경우에 실행되는 부분입니다.
echo "파일 권한 설정이 취약합니다": 파일 권한이 취약할 때 "파일 권한 설정이 취약합니다"를 출력하고, 다음 명령어로 넘어갑니다.
chmod 600 /etc/hosts: /etc/hosts 파일의 권한을 chmod 600 명령어를 통해 600 이하로 변경합니다.
echo "파일의 권한을 600 이하로 변경하였습니다": 변경 완료 메시지를 출력합니다.
image.png

[U-10(상)] 2.6 /etc/(x)inetd.conf 파일 소유자 및 권한 설정

image.png
image.png
image.png

[U-11(상)] 2.7 /etc/syslog.conf 파일 소유자 및 권한 설정

image.png
구문 설명
-l /etc/rsyslog.conf: rsyslog.conf 파일의 세부적인 권한과 소유자 정보를 보여줍니다.
permission=$(stat -c "%a" /etc/rsyslog.conf): stat 명령어를 사용하여 rsyslog.conf 파일의 권한 정보를 변수 permission에 저장합니다.
owner=$(stat -c "%U" /etc/rsyslog.conf): 마찬가지로 stat 명령어를 사용하여 rsyslog.conf 파일의 소유자 정보를 변수 owner에 저장합니다.
조건문: if 문을 통해 권한과 소유자를 검사합니다.
([ "$permission" -le 640 ] && ([ "$owner" = "root" ] || [ "$owner" = "bin" ] || [ "$owner" = "sys" ])): 파일의 권한이 640 이하이고, 소유자가 "root", "bin", "sys" 중 하나인 경우를 검사합니다.
조건에 따른 작업:
조건을 만족하지 않을 경우(else), "파일 권한 설정이 취약합니다"를 출력하고, sudo chmod 640 /etc/rsyslog.conf 명령어를 사용하여 파일의 권한을 640으로 변경합니다. 그리고 변경된 권한을 출력하며 보여줍니다(ls -l /etc/rsyslog.conf).

[U-12(상)] 2.8 /etc/services 파일 소유자 및 권한 설정

image.png
구문 설명
ls -l /etc/services: services 파일의 세부적인 권한과 소유자 정보를 출력합니다.
file_permission=$(stat -c "%a" /etc/services): stat 명령어를 사용하여 services 파일의 권한 정보를 변수 file_permission에 저장합니다.
file_owner=$(stat -c "%U" /etc/services): 마찬가지로 stat 명령어를 사용하여 services 파일의 소유자 정보를 변수 file_owner에 저장합니다.
조건문: 파일의 권한과 소유자를 검사합니다.
(( $file_permission <= 644 )) && [[ $file_owner == "root" || $file_owner == "bin" || $file_owner == "sys" ]]: 파일의 권한이 644 이하이고, 소유자가 "root", "bin", "sys" 중 하나인 경우를 검사합니다.
조건에 따른 작업:
조건을 만족하지 않을 경우(else), "보안 설정이 취약합니다"를 출력하고, sudo chown root:root /etc/services 명령어를 사용하여 파일의 소유자를 root로 변경하고, sudo chmod 644 /etc/services 명령어를 사용하여 파일의 권한을 644로 변경합니다. 그리고 변경된 권한과 소유자를 설명하는 문구를 출력합니다.
image.png

[U-13(상)] 2.9 SUID, SGID, 설정 파일점검

image.png
image.png
구문설명
files_to_check: SUID와 SGID 설정을 확인할 파일들의 리스트가 이곳에 포함됩니다.
for file in "${files_to_check[@]}"; do: 파일 리스트를 반복하며 각 파일에 대한 검사를 진행합니다.
permissions=$(ls -alL "$file" | awk '{print $1}' | grep -i 's'): 파일의 권한을 확인하여 SUID나 SGID 설정 여부를 확인합니다.
if [[ -z $permissions ]]; then: SUID나 SGID 설정이 없는 경우 양호한 설정으로 간주하고 해당 파일의 이름을 출력합니다.
else: SUID나 SGID 설정이 있는 경우 취약한 설정으로 판단하고 해당 파일의 이름을 출력합니다.
all_secure=true: 모든 파일이 양호한 설정인지 여부를 나타내는 변수를 초기화합니다.
if [ "$all_secure" = false ]; then: 모든 파일을 확인한 후, 취약한 파일이 있을 경우에만 다음 작업을 수행합니다.
사용자에게 취약한 파일들을 제거할 것인지 물어봅니다. 사용자의 입력에 따라 제거를 진행하거나 취소합니다.
for file in "${files_to_check[@]}"; do: 취약한 파일들을 순회하며 각 파일의 SUID와 SGID 설정을 제거합니다.
image.png

[U-14(상)] 2.10 사용자 , 시스템 시작파일 및 환경파일 소유자 및 권한 설정.

image.png
image.png

[U-15(상)] 2.11 world writable 파일 점

image.png
참고링크:
원래 점검 명령어보다 길어지는건 검사 제외 설정을 했기 때문이다.
구문설명
find: 파일 및 디렉토리 검색을 위한 명령어입니다.
/: 루트 디렉토리부터 검색을 시작합니다.
! \( -path '/proc*' -o -path '/sys/fs*' -o -path '/usr/local*' -prune \): -path 플래그를 사용하여 특정 경로를 제외하고 검색합니다. /proc, /sys/fs, /usr/local 경로를 제외하고 -prune를 사용하여 하위 디렉토리를 검색하지 않도록 설정합니다.
세부 설명
-path '/proc*': /proc 디렉토리와 해당 패턴으로 시작하는 모든 하위 디렉토리를 나타냅니다.
-o: OR 연산자를 의미하며, 다음 조건을 추가합니다.
-path '/sys/fs*': /sys/fs 디렉토리와 해당 패턴으로 시작하는 모든 하위 디렉토리를 나타냅니다.
-o: 또 다른 OR 연산자로, 다음 조건을 추가합니다.
-path '/usr/local*': /usr/local 디렉토리와 해당 패턴으로 시작하는 모든 하위 디렉토리를 나타냅니다.
-prune: 이전의 모든 경로 조건에 해당하는 디렉토리들의 하위 항목 검색을 중단하고, 해당 디렉토리들을 검색 대상에서 제외합니다.
-perm -2: 파일에 대해 권한이 '쓰기' 권한이 있는지 확인합니다.
-type f: 검색 결과로 반환되는 항목의 종류가 파일인지 확인합니다.
-exec ls -al {} \;: 찾은 각 파일에 대해 ls -al 명령어를 실행하여 상세 정보를 출력합니다.

[U-16(상)] 2.12 /dev에 존재하지 않는 device 파일 점검

image.png
image.png

[U-17(상)] 2.13 $HOME/.rhosts, hosts.equiv 사용 금지

image.png
image.png
image.png

[U-18(상)] 2.14 접속 IP및 포트 제한

image.png
image.png
image.png
image.png
방화벽에서 불필요한 포트를 삭제(닫기)하기

3. 서비스 관리

[U-19(상)] 3.1 Finger 서비스 활성화

image.png
image.png
구문해석
ls: 파일과 디렉터리의 목록을 출력하는 명령어입니다.
-alL: ls 명령어의 옵션으로, 여러 가지 정보를 함께 출력하도록 지시합니다.
-a: 숨겨진 파일들을 포함하여 모든 파일을 나열합니다.
-l: 상세한 리스트 형식으로 파일들을 나열합니다. 이는 파일의 권한, 소유자, 그룹, 파일 크기, 수정 날짜 등을 표시합니다.
-L: 심볼릭 링크가 가리키는 대상의 정보를 보여줍니다. 즉, 심볼릭 링크 파일이면 실제로 가리키는 파일의 정보를 출력합니다.
image.png

[U-20(상)] 3.2. Anonymous FTP 비활성화

image.png
image.png
image.png

[U-21(상)] 3.3 r 계열 서비스 비활성화

image.png
image.png
image.png
image.png

[U-22(상)] 3.4 cron 파일 소유자 및 권한 설정

image.png
image.png
image.png

[U-23(상)] 3.5 DoS 공격에 취약한 서비스 비활성

image.png
image.png
image.png
image.png
image.png

[U-24(상)] 3.6 NFS 서비스 비활성

image.png
image.png
image.png

[U-25(상)] 3.7 NFS 접근통제

image.png
image.png
3.6과 동일

[U-26(상)] 3.8 automountd 제거

image.png
image.png
image.png

[U-27(상)] 3.9 RPC 서비스 확인

image.png
image.png
image.png

[U-28(상)] 3.10 NIS, NIS+ 점검

image.png
image.png
image.png
image.png

[U-29(상)] 3.11 tftp, talk 서비스 비활성화

image.png
image.png
image.png
image.png

[U-30(상)] 3.12 Sendmail 버전 점

image.png
image.png
image.png
image.png

[U-31(상)] 3.13 스팸 메일 릴레이 제한

image.png
image.png
3.12와 동일

[U-32(상)] 3.14 일반사용자의 Sendmail 실행 방지

image.png
3.12와 동일

[U-33(상)] 3.15 DNS 보안 버전 패치

image.png
image.png
image.png

[U-34(상)] 3.16 DNZ Zone Transfer 설정

image.png
image.png
3.15와 동일

[U-35(상)] 3.17 웹서비스 디렉토리 리스팅 제거

image.png
image.png
image.png

[U-36(상)] 3.18 웹서비스 웹 프로세스 권한 제한

image.png

[U-37(상)] 3.19 웹서비스 웹 프로세스 권한 제한

image.png
image.png

[U-38(상)] 3.20 웹서비스 불필요한 파일 제

image.png

[U-39(상)] 3.21 웹서비스 링크 사용금지

image.png
image.png

[U-40(상)] 3.22 웹서비스 파일 업로드 및 다운로드 제한

image.png
image.png

[U-41(상)] 3.23 웹서비스 영역의 분리

image.png

4. 패치관리

[U-42(상)] 4.2 최신 보안패치 및 벤더 권고사항 적용

image.png
image.png
image.png
image.png

5. 로그관리

[U-43(상)] 5.1 로그의 정기적 검토 및 보고

image.png
Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.