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

235 lines
6.8 KiB
Markdown
Raw Normal View History

2023-08-14 16:19:25 +00:00
## 중단파 서버 보안 취약점 종합
![[Pasted image 20220615144242.png]]
- [x] 불필요한 SMTP 서비스 실행 여부
- [x] root 계정 원격 접속 제한
- [x] 비밀번호 관리정책 점검
- [x] 관리자 그룹에 최소한의 사용자 포함
- [x] C 컴파일러 존재 및 권한 설정 오류
- [x] /etc/(x)inetd.conf 파일 소유자 및 권한 설정
- [x] SUID, SGID, Sticky bit 설정 파일 점검
- [x] 사용자, 시스템 시작파일 및 환경파일 소유자 및 권한 설정
- [x] at 접근제한 파일 소유자 및 권한 설정
- [x] 과도한 시스템 로그파일 권한 설정
- [x] 계정 잠금 임계값 설정
- [x] SU 명령 사용가능 그룹 제한 미비
- [x] 원격 접속 세션 타임아웃 미설정
- [x] 이벤트 로그에 대한 접근 권한 설정 미비
- [x] 시스템 사용 주의사항 미출력
- [x] 사용자 shell 점검(관리자 그룹에 최소한의 사용자 포함에서 삭제)
- [x] 유추가능한 비밀번호 사용 여부
### 불필요한 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
> root:x:0:root,test
> -> root:x:0:root
### C 컴파일러 존재 및 권한 설정 오류
>1. cc, gcc 권한&Symbolic여부 확인
> ls -l | grep cc
> 2. 권한제거
> 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
```vi
----------------------------------------------------------------------------------
* *
* Authorized access only! *
* If you are not authorized to access or use this system, disconnect now. *
* *
----------------------------------------------------------------------------------
```
### 사용자 shell 점검
> vi /etc/passwd
> halt:x:1:1::/:/sbin/nologin
> shutdown:x:1:1::/:/sbin/nologin
> sync:x:1: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