728x90
반응형
취약점
점검내용 : /etc/services 파일 권한 적절성 점검
점검목적 : /etc/services 파일을 관리자만 제어할 수 있게 하여 비인가자들의 임의적인 파일 변조를 방지하기 위함
보안위협 : services 파일의 접근권한이 적절하지 않을 경우 비인가 사용자가 운영 포트번호를 변경하여 정상적인 서비스를 제한하거나, 허용되지 않은 포트를 오픈하여 악성 서비스를 의도적으로 실행할 수 있음
참고
※ /etc/services : 서비스 관리를 위해 사용되는 파일. 해당 파일에 서버에서 사용하는 모
든 포트(port)들에 대해 정의되어 있으며, 필요시 서비스 기본사용 포트를 변경하여 네
트워크 서비스를 운용할 수 있음
코드
#!/usr/bin/python3
# 파일명: U-12.py
import os
import re
# 색깔변수
red = '\033[91m'
blue = '\033[94m'
reset = '\033[0m'
# /etc/services 파일 소유자 및 권한 설정
services_file = '/etc/services'
stat_info = os.stat(services_file)
owner = stat_info.st_uid
mode = stat_info.st_mode
# 권한과 소유자가 취약하지 않은 경우
if owner == 0 and 0o100644 <= mode <= 0o100664:
print(f'{blue}양호{reset} : /etc/services 파일의 권한과 소유자가 올바릅니다.')
# 권한 또는 소유자가 취약한 경우
else:
if owner != 0:
print(f'{red}취약{reset} : /etc/services 파일의 소유자가 root가 아닙니다. (현재 소유자: {owner})')
if not (0o100644 <= mode <= 0o100664):
print(f'{red}취약{reset} : /etc/services 파일의 권한이 rw-r--r-- 또는 rw-rw-r--이 아닙니다. (현재 권한: {oct(mode)})')
# 사용자로부터 y/n 입력을 받음
answer = input(f'파일의 소유자와 권한을 변경하시겠습니까? {red}(y/n){reset} ')
if answer.lower() == 'y':
# 파일 소유자와 권한 변경
os.system('chown root /etc/services')
os.system('chmod 644 /etc/services')
print('/etc/services 파일의 소유자와 권한을 변경했습니다.')
else:
print('파일의 소유자와 권한을 변경하지 않았습니다.')
- /etc/services 파일의 권한과 소유자를 검사하고, 이들이 취약하다면 사용자에게 권한과 소유자를 변경할 것인지 묻는다.
- 파일의 소유자가 root이고, 권한이 rw-r--r-- 또는 rw-rw-r--이면 "양호"로, 그렇지 않으면 "취약"으로 판단하고, 변경 여부를 물어본다.
- 사용자가 변경을 원한다면, os 모듈을 사용하여 파일의 소유자와 권한을 변경한다.
- 색깔 변수를 넣어서 예쁘게 출력한다.
실제 테스트
728x90
반응형
'개발' 카테고리의 다른 글
U-28 NIS서버 취약점 점검 자동화 파이썬 코드 (2) | 2023.03.16 |
---|---|
U-13 파일 및 디렉토리 관리 > SUID, SGID, 설정 파일점검 (0) | 2023.03.16 |
U-10 파일 및 디렉토리 관리 > /etc/(x)inetd.conf 파일 소유자 및 권한 설정 자동화 파이썬코드 (0) | 2023.03.16 |
U-03 계정관리 > 계정 잠금 임계값 설정 자동화 파이썬 코드 (0) | 2023.03.16 |