항목 중요도: 상
3.1. Finger 서비스 비활성화
- 점검 내용: finger 서비스 비활성화 여부 점검
- Finger(사용자 정보 확인 서비스): who 명령어가 현재 사용중인 사용자들에 대한 간단한 정보만 보여주는데 반해 finger 명령은 옵션에 따른 시스템에 등록된 사용자 뿐만아니라 네트워크를 통하여 연결되어 있는 다른 시스템에 등록된 사용자들에 대한 자세한 정보를 보여준다
- 점검 목적: Finger를 통해서 네트워크 외부에서 해당 시스템에 등록된 사용자 정보를 확인할 수 있어 비 인가자에게 사용자 정보가 조회되는 것을 차단하고자 함
- 보안 위협: 비인가자에게 사용자 정보가 조회되어 패스워드 공격을 통한 시스템 권한 탈취 가능성이 있으므로 사용하지 않는다면 서비스를 중지해야한다
# 확인
# 1. inetd 일 경우
finger stream tcp nowait bin /usr/bin/fingerd
fingerd 주석처리 확인
# 2. xinetd 일 경우
ls -alL /etc/xinted.d/* | egrep "echo finger"
# 조치 방법
# inetd 일 경우
1. 주석처리
(전) finger stream tcp nowait bin /usr/bin/fingerd
(후) #finger stream tcp nowait bin /usr/bin/fingerd
2. inetd 서비스 재시작
ps -ef | grep 'inetd'
kill -HUP [PID]
# xinted 일 경우
1. vi /etc/xinted.d/finger
2. 아래와 같이 설정 (Disable = yes 설정)
service finger
{
socket_type = stream
wait = no
user = nobody
server = /usr/sbin/in.fingerd
diable = yes
}
3. xinted 서비스 재시작
systemctl restart xinted
3.2. Anonymous FTP 비활성화
- 점검 내용: 익명 FTP 접속 허용 여부 점검
- Anonymous FTP: 파일 전송을 위해서는 원칙적으로 상대방 컴퓨터를 사용할 수 있는 계정이 필요하나, 누구든지 계정없이 anonymous 또는 ftp 로그인명과 임의의 비밀번호를 사용하여 ftp를 실행시킬 수 있음
- 점검 목적: 실행중인 FTP 서비스에 익명 FTP 접속이 허용되고 있는지 확인하여 접속허용을 차단하는 것을 목적으로 함
- 보안 위협: Anonymous FTP를 사용시 anonymous 계정으로 로그인 후 디렉터리에 쓰기 권한이 설정되어 있다면 악의적인 사용자가 local exploit을 사용하여 시스템에 대한 공격이 가능하다
# 확인 -> /etc/passwd 파일에 ftp 계정 존재 여부 확인
cat /etc/passwd | grep -i 'ftp'
# 조치 방법
1. 일반 FTP -> /etc/passwd에서 ftp 또는 anonymous 계정 삭제
userdel ftp
2. ProFTP -> conf/proftpd.conf 파일의 anonymous 관련 설정 중 User, Useralias 항목 주석처리
<Anonymous ~ftp> -> anonymous 설정 구간
# User ftp -> anonymous로 사용되는 계정
Group ftp
# UserAlias anonymous ftp -> 별칭으로 사용되는 계정
</Anonymous>
3. vsFTP
vsFTP 설정파일 (/etc/vsftpd/vsftpd.conf 또는 /etc/vsftpd.conf)에서 anonymous_enable=no 로 설정
3.3. r 계열 서비스 비활성화
- 점검 내용: r-command 서비스 비활성화 여부 점검
- r-command: 인증 없이 관리자의 원격접속을 가능하게 하는 명령어들로 rsh(remsh), rlogin, rexec, rsync 등이 있음
- 점검 목적: r-command 사용을 통한 원격 접속은 NET Backup 또는 클러스터링 등 용도로 사용되기도 하나, 인증 없이 관리자 원격접속이 가능하여 이에 대한 보안위협을 방지하고자 함
- 보안 위협: rsh, rlogin, rexec 등의 명령어를 이용하여 원격에서 인증절차 없이 터미널 접속 및 쉘 명령어를 실행이 가능
# 확인
# rsh, rlogin, rexec (shell, login, exec) 서비스 구동 확인
ls -alL /etc/xinted.d/* | egerp "rsh|rlogin|rexec" | egrep -v "grep|klogin|kshell|kexec"
# 조치 방법
1. vi 편집기를 이용해 /etc/xinetd.d/ 디렉터리 내 rlogin,rsh,rexec 파일 열기
2. 아래와 같이 설정 (Disable=yes 설정)
/etc/xinted.d/rloing 파일
/etc/xinted.d/rsh 파일
/etc/xinted.d/rexec 파일
service rlogin
{
socket_type = stream
wait = no
user = nobody
log_on_success += USERID
log_on_failure += USERID
server = /usr/sbin/in.fingerd
diable = yes
}
3. xinted 서비스 재시작
systemctl restart xinted
4. r-command 사용시 보안 설정 -> 2.13. 참고
3.4. crond 파일 소유자 및 권한 설정
- 점검 내용: cron 관련 파일의 권한 적절성 점검
- cron 시스템: 특정 작업이 정해진 시간에 주기적이고 반복적으로 실행하기 위한 데몬 및 설정
- cron.allow: 사용자 ID를 등록하면 등록된 사용자는 crontab 명령어 사용이 가능
- cron.deny: 사용자 ID를 등록시 등록된 사용자는 crontab 명령어 사용 불가능
- 점검 목적: 관리자 외 cron 서비스를 사용할 수 없도록 설정하고 있는지 점검하는 것을 목적으로 함
- 보안 위협: root 외 일반 사용자에게도 crontab 명령어를 사용할 수 있도록 할 경우, 고의 또는 실수로 불법적인 예약 파일을 실행으로 시스템 피해를 일으킬 수 있음
# 확인
1. cron 관련 파일 권한 확인
ls -al /usr/bin/crontab
2. 점검 파일 확인
/etc/
- crontab -> 예약 작업 등록 파일
- cron.hourly -> 시간 단위
- cron.daily -> 일 단위
- cron.weekly -> 주 단위
- cron.monthly -> 월 단위
- cron.allow -> 명령어 허용 유저
- cron.deny -> 명령어 차단 유저
3. 사용자별 설정된 cron 작업 목록 확인
/var/spool/cron
/var/spool/cron/crontabs
# 조치 방법
## 공통 설정
1. crontab 일반 사용자 권한 삭제 (crontab 명령어는 SUID 설정이 되어있음 -> 설정 제거)
ls -al /usr/bin/crontab
chmod 750 /usr/bin/crontab
2. cron 관련 설정파일 소유자 및 권한 설정
chown root <cron 관련 파일>
chmod 640 <cron 관련 파일>
## 일반 사용자에게 crontab을 허용하는 경우
1. /etc/cron.d/cron.allow 및 /etc/cron.d/cron.deny 파일의 소유자 및 권한 변경
chown root /etc/cron.d/{cron.allow, cron.deny}
chmod 640 /etc/cron.d/{cron.allow, cron.deny}
2. /etc/cron.d/cron.allow 및 /etc/cron.d/cron.deny 파일에 사용자 등록
3.5. DoS 공격에 취약한 서비스 비활성화
- 점검 내용: 사용하지 않은 DoS 공격에 취약한 서비스의 실행 여부 점검
- DoS(Denial of Service attack): 시스템을 악의적으로 공격해 해당 시스템의 자원을 부족하게하여 원래 의도된 용도로 사용하지 못하게 하는 공격
- 점검 목적: 시스템 보안성을 높이기 위해 취약점이 많이 발표된 echo, discard, daytime, chargen, ntp,snmp 등 서비스를 중지함
- 보안 위협: 해당 서비스가 활성화 되어 있는 경우 시스템 정보 유출 및 DoS 공격의 대상이 될 수 있음
# 조치 방법
1. vi 편집기를 사용해 /etc/xinted.d 디렉터리 내에 echo, discard, daytime, chargen 파일 열기
2. 아래와 같이 설정
/etc/xinted.d/echo 파일(echo-dgram, echo-stream)
/etc/xinted.d/discard 파일(discard-dgram, discard-stream)
/etc/xinted.d/daytime 파일(daytime-dgram, daytime-stream)
/etc/xinted.d/chargen 파일(chargen-dgram, chargen-stream)
service echo
{
diable = yes
id = echo-stream
type = internal
wait = no
socket_type = stream
}
3. xinted 서비스 재시작
systemctl restart xinted
3.6. NFS 서비스 비활성화
- 점검 내용: 불필요한 NFS 서비스 사용 여부 점검
- NFS(Network File System): 원격 컴퓨터의 파일 시스템을 로컬 시스템에 마운트하여 로컬 파일 시스템처럼 사용할 수 있는 프로그램
- 원칙적으로 사용지 금지되어 있지만, 불가피하게 사용될 경우 3.7 과 같이 접근 통제를 해야함
- 점검 목적: NFS 서비스는 한 서버의 파일을 많은 서비스 서버들이 공유하여 사용할 때 많이 이용되는 서비스이지만 이를 이용한 침해사고 위험성이 높으므로 사용하지 않는 경우 중지해야함
- 보안 위협: 서버의 디스크를 클라이언트와 공유하는 서비스로 적정한 보안설정이 안되어 있다면, 불필요한 파일 공유로 인한 유출위험이 있다
# 확인 (NFS 서비스 데몬 확인, NFS 동작 SID 확인)
ps -ef | egrep "nfs|statd|lockd"
# 조치 방법
1. NFS 서비스 데몬 중지
kill -9 [PID]
2. 시동 스크립트 삭제 또는 스크립트 이름 변경
ls -al /etc/rc.d/rc*.d/* | grep nfs
mv /etc/rc.d/rc2.d/s60nfs /etc/rc.d/rc2.d/_s60nfs
*shomount, share,exportfs 명령어를 사용하여 마운트 되어있는 디렉터리 확인, 설정 여부 확인 하여
디렉터리가 존재하지 않을 경우에 서비스 중지가 가능하다
3.7. NFS 접근 통제
- 점검 내용: NFS 사용시 허가된 사용자만 접속할 수 있도록 접근 제한 설정 적용 여부 점검
- NFS 서비스 사용 금지가 원칙이나 불가피하게 사용이 필요한 경우 NFS v2,v3는 평문으로 전송되는 취약점이 존재하기 때문에 암호화되는 v4 사용을 권장한다
- 점검 목적: 접근 권한이 없는 비인가자의 접근을 통제함
- 보안 위협: 접근 제한 설정이 적절하지 않을 경우 인증철자 없이 비인가자의 디렉터리나 파일의 접근이 가능하며, 해당 공유 시스템에 원격으로 마운트하여 중요 파일을 변조하거나 유출할 위험이 있음
# 확인
/etc/exports
# 조치 방법 (설정 예문)
1. /etc/exports 파일에 접근 가능한 호스트명 추가
ex) /stand host1(또는 IP 주소) host2
2. 접속 시 인증 및 클라이언트 권한 nobody 설정
vi /etc/exports
/stand host1 (root_squash)
() 옵션에 인증되지 않은 액세스를 허용하는 'insecure' 구문 설정 금지
3. NFS 서비스 재구동
/etc/exportfs -u
/etc/exportfs -a
3.8. automountd 제거
- 점검 내용: automountd 서비스 데몬의 실행 여부 점검
- automountd: 클라이언트에서 자동으로 서버에 마운트 시키고 일정 시간 사용하지 않으면 umount 시켜주는 기능을 말함
- RPC(Remote Procedure Call): 별도의 원격 제어를 위한 코딩없이 다른 주소 공간에서 함수나 프로시저를 실행할 수 있게 하는 프로세스 간 프로토콜
- 점검 목적: 로컬 공격자가 automountd 데몬에 RPC를 보낼 수 있는 취약점이 존재하기 때문에 해당 서비스가 실행중일 경우 서비스를 중지 시키기 위함
- 보안 위협: 파일 시스템의 마운트 옵션을 변경하여 root 권한을 획득할 수 있으며, 로컬 공격자가 automountd 프로세스 권한으로 임의의 명령 실행 가능하다
# 확인
ps -ef | grep automount(or autofs)
# 조치 방법
1. automountd 서비스 데몬 중지
kill -9 [PID]
2. 시동 스크립트 삭제 또는 스크립트 이름 변경
ls -al /etc/rc.d/rc*.d/* | grep automount(or autofs)
mv /etc/rc.d/rc2.d/S28automountd /etc/rc.d/rc2.d/_S28automountd
# 조치 시 영향
NFS 및 Samba 서비스에서 사용시 automound 사용 여부 확인이 필요하고, 적용 시 CDROM의 자동 마운트는 이뤄지지 않는다
3.9. RPC 서비스 확인
- 점검 내용: 불필요한 RPC 서비스의 실행 여부 점검
- 불필요한 RPC 서비스: rcp.cmsd, rpc,ttdbserverd, sadmind, rusersd, walld, sprayd, statd, rpc.nisd, rexd, rpc.pcnfsd, rpc.statd, rpc.ypupdated, rpc.rquotad, kcms_server, cashefsd
- 점검 목적: 다양한 취약점(버퍼 오버플로우, DoS, 원격 실행 등)이 존재하는 RPC 서비스를 점검하여 해당 서비스를 비활성화 하도록 함
- 보안 위협: 버퍼 오버 플로우(Buffer Overflow), DoS, 원격 실행 등의 취약성이 존재하는 RPC 서비스를 통해 비인가자의 root 권한 획득 및 침해사고 발생 위험이 있으므로 서비스를 중지하여야함
# /etc/xinted.d/ 디렉터리 내 서비스별 파일 비활성화 여부 확인
vi /etc/xinted.d/<servire_file_name>
# 조치 방법
1. vi 편집기를 이용해 불필요한 RPC 서비스 파일 열기
2. 아래와 같이 설정 (Disable = yes 설정)
service finger
{
disable = yes
socket_type = stream
wait = no
}
3. xinted 서비스 재시작
systemctl restart xinted
3.10. NIS, NIS+ 점검
- 점검 내용: 안전하지 않은 NIS 서비스의 비활성화, 안전한 NIS+ 서비스의 활성화 여부 점검
- NIS 주 서버는 정보표를 소유하여 NIS 대응 파일들로 변환하고, 이 대응 파일들이 네트워크를 통해 제공됨으로 써 모든 컴퓨터에 정보가 갱신되도록 함. 네트워크를 통한 공유로부터 관지라와 사용자들에게 일관성있는 시스템 환경을 제공함
- 점검 목적: 안전하지 않는 NIS 서비스를 비활성화 하고 안전한 NIS+ 서비스를 활성화 하여 시스템 보안 수준을 향상하고자함
- 보안 위협: 보안상 취약한 서비스인 NIS를 사용하는 경우 비인가자가 타시스템의 root 권한 획득이 가능하므로 사용하지 않는 것이 바람직하다, 허나 사용해야하는 경우 사용자 정보보안에 많은 문제를 내포하고 있는 NIS 보단 NIS+ 사용을 권장한다
# NIS, NIS+ 서비스 구동 확인
ps -ef | egrep "ypserv|ypbind|ypxfrd|rpc.yppasswdd|rpc.ypupdated"
# 조치 방법
1. NIS 서비스 데몬 중지
kill -9 [PID]
2. 시동 스크립트 삭제 또는 스크립트 이름 변경
ls -al /etc/rc.d/rc*.d/* | egrep "ypserv|ypbind|ypxfrd|rpc.yppasswdd|rpc.ypupdated”
mv /etc/rc.d/rc2.d/S73ypbind /etc/rc.d/rc2.d/_S73ypbind
3.11. tftp,talk 서비스 비활성화
- 점검 내용: tftp,talk 등의 서비스를 사용하지 않거나 취약점이 발표된 서비스 활성화 여부 점검
- 점검 목적: 안전하지 않거나 불필요한 서비스를 제거함 으로서 시스템 보안성 및 리소스의 효율적 운영
- 보안 위협: 사용하지 않는 서비스나 취약점이 발표된 서비스 운용 시 공격 시도 가능
# tftp,talk,ntalk 서비스 활성화 여부 확인
ls -al /etc/xinted.d/ | grep -i 'tftp|talk|ntalk"
# 조치 방안
1. vi 편집기능 이용해 /etc/xinted.d/ 디렉터리내 tftp,talk,ntalk 파일 열기
2. 아래와 같이 설정
/etc/xinted.d/tftp 파일
/etc/xinted.d/talk 파일
/etc/xinted.d/ntalk 파일
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
disable = yes
}
3. xinted 재시작
systemctl restart xinted
'주요정보통신기반시설 기술적 취약점 분석 평가 가이드' 카테고리의 다른 글
Unix 서버 취약점 분석 평가 _ 3. 서비스 관리(2) (0) | 2024.08.01 |
---|---|
Unix 서버 취약점 분석 평가 _ 2. 파일 및 디렉터리 관리 (0) | 2024.07.30 |
Unix 서버 취약점 분석 평가 _ 1. 계정 관리 (0) | 2024.07.29 |