Obsidian/Recognition/Work Related/프로젝트/D-MHFH/유지보수/중단파서버 보안취약점.md

6.8 KiB

중단파 서버 보안 취약점 종합

!Pasted image 20220615144242.png

  • 불필요한 SMTP 서비스 실행 여부
  • root 계정 원격 접속 제한
  • 비밀번호 관리정책 점검
  • 관리자 그룹에 최소한의 사용자 포함
  • C 컴파일러 존재 및 권한 설정 오류
  • /etc/(x)inetd.conf 파일 소유자 및 권한 설정
  • SUID, SGID, Sticky bit 설정 파일 점검
  • 사용자, 시스템 시작파일 및 환경파일 소유자 및 권한 설정
  • at 접근제한 파일 소유자 및 권한 설정
  • 과도한 시스템 로그파일 권한 설정
  • 계정 잠금 임계값 설정
  • SU 명령 사용가능 그룹 제한 미비
  • 원격 접속 세션 타임아웃 미설정
  • 이벤트 로그에 대한 접근 권한 설정 미비
  • 시스템 사용 주의사항 미출력
  • 사용자 shell 점검(관리자 그룹에 최소한의 사용자 포함에서 삭제)
  • 유추가능한 비밀번호 사용 여부

불필요한 SMTP 서비스 실행 여부

  • sendmail이 없는경우 postfix 프로세스 검색
  1. 특정 포트 사용하는 프로세스 찾기 # netstat -ntlp | grep :[포트번호]
  2. 프로세스번호 (Pid)로 프로그램명 검색 # ps -ef|grep [PID]
  3. 해당 프로그램(서비스) 사용중지 및 재실행 방지 프로세스 상태& 프로세서 그룹 최상위 프로세스 확인 # systemctl status postfix # systemctl stop postfix.service 프로세스 재시작 방지 # systemctl disable postfix.service 해당 포트 주석처리 vi /etc/services

root 계정 원격 접속 제한

  1. Not Setting: auth required pam_securetty.so cat /etc/pam.d/login | grep 'pam_secure' 주석처리되어 있다면 주석 해제

  2. PermitRootLogin not exist # cat /etc/ssh/sshd_config | grep -in 'PermitRootLogin' vi /etc/ssh/sshd_config PermitRootLogin yes -> no로 변경

비밀번호 관리정책 점검

# vi /etc/login.defs 맨 하단에 추가 PASS_MAX_DAYS 90 # 비밀번호 최대 사용 가능 기간 PASS_MIN_DAYS 1 # 비밀번호 최소 사용 가능 기간 PASS_MIN_LEN 8 # 최소 비밀번호 길이 PASS_WARN_AGE 15 # 비밀번호 사용불가 경고일

관리자 그룹에 최소한의 사용자 포함

# userdel 로 제거

  • 불필요한 계정 삭제

vi /etc/group root0:root,test -> root0:root

C 컴파일러 존재 및 권한 설정 오류

  1. cc, gcc 권한&Symbolic여부 확인 ls -l | grep cc
  1. 권한제거 chmod 700 /usr/bin/cc chmod 700 /usr/bin/gcc

/etc/(x)inetd.conf 파일 소유자 및 권한 설정

  1. 소유자 및 권한 확인 ls -l /etc/xinetd.d/*

  2. 소유자 및 권한 변경 (소유자 root, 권한 600) chown root /etc/xinetd.d/* chmod 600 /etc/xinetd.d/*

SUID, SGID, Sticky bit 설정 파일 점검

chmod -s /sbin/unix_chkpwd chmod -s /usr/bin/at chmod -s /usr/bin/newgrp

사용자, 시스템 시작파일 및 환경파일 소유자 및 권한 설정

  • 111, 113 chmod 640 /home/dell/.bash_profile chmod 640 /home/dell/.bashrc chmod 640 /root/.bash_profile chmod 640 /root/.bashrc chmod 640 /root/.cshrc

  • 114, chmod 640 /home/oracle/.bash_profile chmod 640 /home/oracle/.bashrc chmod 640 /home/oracle/.kshrc chmod 640 /root/.bash_profile chmod 640 /root/.bashrc chmod 640 /root/.cshrc chmod 640 /home/test/.bash_profile chmod 640 /home/test/.bashrc

  • 115 chmod 640 /home/oracle/.bash_profile chmod 640 /home/oracle/.bashrc chmod 640 /root/.bash_profile chmod 640 /root/.bashrc chmod 640 /root/.cshrc chmod 640 /home/test/.bash_profile chmod 640 /home/test/.bashrc

at 접근제한 파일 소유자 및 권한 설정

chown root /etc/at.deny chmod 640 /etc/at.deny

과도한 시스템 로그파일 권한 설정

chmod 640 /var/log/libasm.log chmod 640 /var/log/libatamptl.log chmod 640 /var/log/xferlog

  • 111번

chmod 640 /var/log/lsi_1119.log

※ ls -l /var/log/* 재확인 필요 함.

계정 잠금 임계값 설정

  • vi /etc/pam.d/system-auth 추가

auth required pam_tally2.so deny=5 unlock_time=60 account required pam_tally2.so

  • vi /etc/pam.d/password-auth 추가

auth required pam_tally2.so deny=5 unlock_time=60 account required pam_tally2.so

SU 명령 사용가능 그룹 제한 미비

  1. wheel 그룹 있는지 확인 cat /etc/group
    • 없으면 생성 : groupadd wheel
  2. su 명령어 그룹 변경 chgrp wheel /usr/bin/su
  3. su 명령어 사용권한 변경 chmod 4750 /bin/su
  4. wheel 그룹에 su 명령 허용 계정 등록 usermod -G wheel <user_name> ※ su 권한 유저 확인 : ls -l /bin/su
  5. /etc/pam.d/su 설정 vi /etc/pam.d/su

auth required pam_wheel.so use_uid

원격 접속 세션 타임아웃 미설정

  • 111, 113 : dell, root

  • 114, 115 : oracle, root, test

  • home에서 각 계정리스트 확인

cd /home/ ll

  • 계정 디렉터리 접근해서 profile 찾기

cd /home/[계정명] ll - a

  • 편집기로 파일 열기

vi .bash_profile

  • 내용 편집

# 맨하단에 추가 (Spell 주의) TMOUT=300 export TMOUT

이벤트 로그에 대한 접근 권한 설정 미비

vi /etc/pam.d/su -> auth sufficient pam_rootok.so debug

시스템 사용 주의사항 미출력

vi /etc/motd


----------------------------------------------------------------------------------
*                                                                                *
*     Authorized access only!                                                    *
*     If you are not authorized to access or use this system, disconnect now.    *
*                                                                                *
----------------------------------------------------------------------------------

사용자 shell 점검

vi /etc/passwd halt1:1::/:/sbin/nologin shutdown1:1::/:/sbin/nologin sync1:1::/:/sbin/nologin

유추가능한 비밀번호 사용 여부

  • 114, 115
  1. Oracle 유저 패스워드 설정 확인 /etc/passwd /etc/shadow
  2. 비밀번호 설정 passwd [계정 명]

서버 시각 동기화

timedatectl set-ntp yes

vi /etc/ntp.conf

server 0.centos.pool.ntp.org iburst

server 1.centos.pool.ntp.org iburst

server 2.centos.pool.ntp.org iburst

server 3.centos.pool.ntp.org iburst

server 194.0.5.123
server 36.91.114.86
server 95.216.144.226
server 140.112.2.188

firewall-cmd --add-service=ntp --permanent firewall-cmd --reload

systemctl start ntpd systemctl enable ntpd

ntpq -p

※ ntpq -p 오류나는 경우

cd /var/lib/ntp mkdir drift cd /var/lib/ntp/drift vi ntp.drift chown -R ntp /var/lib/ntp/drift