안녕하세요. 오송입니다.
오늘은 간단하게 Linux 보안 취약점 중 서비스 관리 부분의 조치사항 조치방법에 대해 알아보겠습니다.
천천히 따라오시면서 모르는 부분이 있으시면, 댓글 달아주시면 됩니다.
1. 서비스 관리
1.1 Finger 서비스 비활성화
- 비인가자에게 사용자 정보가 조회되어 패스워드 공격을 통한 시스템 권한 탈취 가능성이 있으므로 사용하지 않는다면 해당 서비스를 중지하여야 한다.
진단 기준 |
양호 |
finger 서비스가 비활성화 되어 있는 경우 |
취약 |
finger 서비스가 활성화 되어 있는 경우 |
1.1.1 진단방법
# xinetd인 경우 /etc/xinetd.d/finger 파일에서 서비스 비활성화 여부 확인
cat /etc/xinetd.d/finger | grep disable
# inetd인 경우 /etc/inetd.conf 파일에서 finger 서비스 라인 #처리(주석) 또는 삭제되어 있는지 확인
cat /etc/inetd.conf | grep finger
1.1.2 조치방법
# /etc/xinetd.d/finger 파일에서 서비스 비활성화 설정
vi /etc/xinetd.d/finger
disable = no
1.2 Anonymous FTP 비활성화
- Anonymous FTP(익명 FTP)를 사용 시 anonymous 계정으로 로그인 후 디렉터리에 쓰기 권한이 설정되어 있다면 악의적인 사용자가 local exploit을 사용하여 시스템에 대한 공격을 가능하게 한다.
진단 기준 |
양호 |
Anonymous FTP 접속을 차단한 경우 |
취약 |
Anonymous FTP 접속을 차단하지 않은 경우 |
1.2.1 진단방법
# Default FTP를 사용하는 경우 /etc/passwd 파일에 ftp 계정 존재 여부 확인
cat /etc/passwd | grep ftp
# ProFTP를 사용하는 경우 proftpd.conf 파일에서 <Anonymous ~ ftp> 부분 확인
# UserAlias 항목이 주석처리 되어있거나, 없으면 양호
cat /etc/proftpd/proftpd.conf
UserAlias anonymous ftp
# vsFTP 사용하는 경우 vsftpd.conf 파일에서 anonymous_enable 값이 No로 설정되어 있는지 확인
cat /etc/vsftpd/vsftpd.conf
anonymous_enable = Yes
1.2.2 조치방법
# 일반 FTP - Anonymous FTP 접속 제한 설정 방법 /etc/passwd 파일에서 ftp 또는 anonymous 계정 삭제
userdel ftp
# ProFTP - Anonymous FTP 접속 제한 설정 방법
# /etc/passwd 파일에서 ftp 계정 삭제
userdel ftp
# vsFTP - Anonymous FTP 접속 제한 설정 방법
# vsFTP 설정파일("/etc/vsftpd/vsftpd.conf" 또는 "etc/vsftpd.conf") 에서
anonymous... enalbe=NO 설정
Anonymous FTP를 사용하지 않을 경우 영향 없음
1.3 r 계열 서비스 비활성화
- 서비스 포트가 열려있을 경우, 비인가지에 의한 중요 정보 유출 및 시스템 장애 발생 등 침해사고의 원인이 될 수 있다.
진단 기준 |
양호 |
r 계열 서비스(rlogin, rsh, rexec)가 비활성화 되어 있는 경우 |
취약 |
r 계열 서비스(rlogin, rsh, rexec)가 활성화 되어 있는 경우 |
1.3.1 진단방법
# xinetd인 경우 rsh, rlogin, rexec (shell, login, exec) 서비스 비활성화 여부 확인
cat /etc/xinetd.d/rsh | grep disable
cat /etc/xinetd.d/rlogin | grep disable
cat /etc/xinetd.d/rexec | grep disable
# inetd인 경우 rsh, rlogin, rexec (shell, login, exec) 서비스 비활성화 여부 확인
cat /etc/inetd.conf | rgrep "rsh|rlogin|rexec" (주석 처리 되어 있으면 비활성화)
1.3.2 조치방법
# vi 편집기를 사용해서 /etc/xinetd.d/ 디렉터리 내 rlogin, rsh, rexec 파일 오픈 후 아래와 같이 설정
- /etc/xinetd.d/rlogin 파일
- /etc/xinetd.d/rsh 파일
- /etc/xinetd.d/rexec 파일
service rlogin
{
...
disable = yes
}
rlogin, rshell, rexec 서비스는 backup 등의 용도로 종종 사용되며 /etc/hosts.equiv 또는 각 홈 디렉터리 밑에 있는 rhosts 파일에 설정 유무를 확인하여 해당 파일이 존재하지 않거나 해당 파일 내에 설정이 없다면 사용하지 않는 것으로 파악
1.4 DoS 공격에 취약한 서비스 비활성화
- 해당 서비스가 활성화되어 있는 경우 시스템 정보 유출 및 DoS(서비스 거부 공격)의 대상이 될 수 있다.
진단 기준 |
양호 |
Dos 공격에 취약한 echo, discard, daytime, chargen 서비스가 비활성화된 경우 |
취약 |
Dos 공격에 취약한 echo, discard, daytime, chargen 서비스가 활성화된 경우 |
1.4.1 진단방법
# xinetd인 경우 /etc/xinetd.d/ 디렉터리 내 echo, discard, daytime, chargen 서비스 비활성화 여부 확인
cat /etc/xinetd.d/echo | grep disable
cat /etc/xinetd.d/discard | grep disable
cat /etc/xinetd.d/daytime | grep disable
cat /etc/xinetd.d/chargen | grep disable
# inetd인 경우 /etc/inetd.conf 파일에서 echo, discard, daytime, chargen 서비스 비활성화 여부 확인
cat /etc/inetd.conf | grep "echo|discard|daytime|chargen" (주석 처리 되어 있으면 비활성화)
1.4.2 조치방법
# vi 편집기로 /etc/xinetd.d/ 디렉터리 내 echo, discard, daytime, chargen 파일 오픈
# 아래와 같이 설정
/etc/xinetd.d/echo 파일(echo-dgramm, echo-stream)
/etc/xinetd.d/discard 파일(discard-dgramm, discard-stream)
/etc/xinetd.d/daytime 파일(daytime-dgramm, daytime-stream)
/etc/xinetd.d/chargen 파일(chargen-dgramm, chargen-stream)
service echo
**************************************************
{
disable = yes
id = echo-stream
type = internal
wait = no
socket-type = stream
}
**************************************************
# xinetd 서비스 재시작
service xinetd restart
1.5 NFS 서비스 비활성화
- 비인가자가 NFS 서비스로 인가되지 않은 시스템이 NFS 시스템 마운트하여 비인가된 시스템 접근 및 파일변조 등의 침해 행위 가능성이 존재한다.
진단 기준 |
양호 |
NFS 서비스 관련 데몬이 비활성화 되어 있는 경우 |
취약 |
NFS 서비스 관련 데몬이 활성화 되어 있는 경우 |
1.5.1 진단방법
# NFS 데몬 구동 여부 확인
ps -ef | grep nfsd
1.5.2 조치방법
# NFS 데몬(nfsd)을 중지
kill -9 [PID]
showmount, share, exportfs 동의 명령어를 사용하여 로컬 서버에 마운트 되어 있는 디렉터리 확인 및 NFS 설정파일에 공유디렉터리 설정 여부 확인 후 해당 디렉터리가 존재하지 않을 경우 서비스 중지 가능
1.6 NFS 접근통제
- 접근제한 설정이 적절하지 않을 경우 인증절차 없이 비인가자의 디렉터리나 파일의 접근이 가능하며, 해당 공유 시스템에 원격으로 마운트하여 중요 파일을 변조하거나 유출할 위험이 있다.
진단 기준 |
양호 |
NFS 서비스 사용 시 everyone 공유를 제한한 경우 |
취약 |
NFS 서비스 사용 시 everyone 공유를 제한하지 않은 경우 |
1.6.1 진단방법
# everyone으로 시스템이 마운트 되어 있는지 확인
showmount -e hostname
# /etc/exports 파일에서 접근 통제 설정 여부 확인
cat /etc/exports
- 취약한 설정 예 : /var/www/img *(ro,all_squash)
- 양호한 설정 예 : /data 172.27.0.0/16(rw,no_root_squash)
1.6.2 조치방법
# everyone 마운트 제거
umount "파일시스템 이름"
# /etc/exports 파일에서 접근 통제 설정
vi /etc/exports
(예) /data 172.27.0.0/16(rw,no_root_squash)
showmount, share, exportfs 등의 명령어를 사용하여 로컬 서버에 마운트 되어 있는 디렉터리 확인 및 NFS 설정파일에 공유디렉터리 설정 여부 확인 후 해당 디렉터리가 존재하지 않을 경우 서비스 중지 가능
1.7 automountd 제거
- 파일 시스템의 마운트 옵션을 변경하여 root 권한을 획득할 수 있으며, 로컬 공격자가 automountd 프로세스 권한으로 임의의 명령을 실행할 수 있다.
진단 기준 |
양호 |
automount 서비스가 비활성화 되어 있는 경우 |
취약 |
automount 서비스가 활성화 되어 있지 않은 경우 |
1.7.1 진단방법
# automountd 서비스 데몬 확인
ps -ef | grep auto
1.7.2 조치방법
# automountd 서비스 데몬 실행 중지
kill -p [PID]
# 시스템 재시작 시 automount가 시작되지 않도록 설정
방법 1. 부팅스크립트에서 automountd 제거
chkconfig --level 0123456 autofs off
방법 2. 아래와 같이 파일경로 확인 후 파일명 변경
mv /etc/rc2.d/S28autofs /etc/rc2.d/S28autofs.orig
NFS 및 삼바(Samba) 서비스에서 사용 시 automountd 사용 여부 확인이 필요하며, 적용 시 CDROM의 자동 마운트는 이뤄지지 않는다 (/etc/auto.*, /etc/auto_* 파일 확인하여 필요 여부 확인)
1.8 RPC 서비스 확인
- 버퍼 오버플로우(Buffer Overflow), Dos, 원격실행 등의 취약성이 존재하는 RPC 서비스를 통해 비인가자의 root 권한 획득 및 침해사고 발생 위험이 있으므로 서비스를 중지하여야 한다.
진단 기준 |
양호 |
불필요한 RPC 서비스가 비활성화 되어 있는 경우 |
취약 |
불필요한 RPC 서비스가 활성화 되어 있는 경우 |
1.8.1 진단방법
# xinetd 인 경우 /etc/xinetd.d/ 디렉터리 내 RPC 서비스 파일에서 비활성화 여부 확인
cat /etc/xinetd.d/rstatd
# inetd인 경우 /etc/inetd.conf 파일에서 불필요한 RPC 서비스 비활성화 여부 확인
cat /etc/inetd.conf | grep rpc.cmsd
1.8.2 조치방법
# vi 편집기로 /etc/xinetd.d/ 디렉터리 내의 불필요한 RPC 서비스 파일을 오픈 후 아래와 같이 설정
************************************
service rstatd
{
disable = yes
...이하생략...
}
************************************
1.9 NIS, NIS+ 점검
- 보안상 취약한 서비스인 NIS를 사용하는 경우 비인가자가 타시스템의 root 권한 획득이 가능하므로 사용하지 않는 것이 가장 바람직하나 만약 NIS를 사용해야 하는 경우 사용자 정보보안에 많은 문제점을 내포하고 있는 NIS보다 NIS+를 사용하는 것을 권장한다.
진단 기준 |
양호 |
NIS, NIS+ 서비스가 구동 중이지 않을 경우 |
취약 |
NIS, NIS+ 서비스가 구동 중일 경우 |
1.9.1 진단방법
# NIS, NIS+ 서비스 구동 확인
ps -ef | grep "ypserv|ypbind|ypxfrd|rpc.yppasswdd|rpc.ypupdated" | grep -v "grep"
1.9.2 조치방법
# NFS 서비스 데몬 중지
kill -9 [PID]
1.10 tftp, talk 서비스 비활성화
- 사용하지 않는 서비스나 취약점이 발표된 서비스 운용 시 공격자의 공격 시도가 가능하다.
진단 기준 |
양호 |
tftp, talk 서비스가 비활성화 되어 있는 경우 |
취약 |
tftp, talk 서비스가 활성화 되어 있는 경우 |
1.10.1 진단방법
# xinetd 인 경우 /etc/xinetd.d/ 디렉터리 내 tftp, talk, ntalk 서비스 파일에서 비활성화 여부 확인
cat /etc/xinetd.d/tftp
# inetd 인 경우 /etc/inetd.conf 파일에서 tftp, talk, ntalk 서비스 비활성화 여부 확인
cat /etc/inetd.conf | grep "tftp|talk|"
1.10.2 조치방법
# vi 편집기로 /etc/xinetd.d/ 디렉터리 내 tftp, talk, ntalk 파일 오픈 후 아래와 같이 설정
- /etc/xinetd.d/tftp 파일
- /etc/xinetd.d/talk 파일
- /etc/xinetd.d/ntalk 파일
***********************************
service tftp
{
...생략...
disable = yes
}
***********************************
1.11 Sendmail 버전 점검
- 취약점이 발견된 Sendmail 버전의 경우 버퍼 오버플로우 공격에 의한 시스템 권한 획득 및 주요 정보 유출 가능성이 있다.
진단 기준 |
양호 |
Sendmail 버전을 정기적으로 점검하고, 최신 버전 패치를 했을 경우 |
취약 |
Sendmail 버전을 정기적으로 점검하지 않거나, 최신 버전 패치가 되어 있지 않은 경우 |
1.11.1 진단방법
# Sendmail 프로세스 확인
ps -ef | grep sendmail
# Sendmail 버전 확인
cat /etc/mail/sendmail.cf | grep DZ
1.11.2 조치방법
# Sendmail 서비스 실행 여부 및 버전 점검 후, http://www.sendmail.org/ 또는 각 OS 벤더사의 보안 패치 설치
1.12 스팸 메일 릴레이 제한
- SMTP 서버의 릴레이 기능을 제한하지 않는 경우, 악의적인 사용목적을 가진 사용자들이 스팸메일 서버로 사용하거나 Dos 공격의 대상이 될 수 있다.
진단 기준 |
양호 |
SMTP 서비스를 사용하지 않거나 릴레이 제한이 설정되어 있는 경우 |
취약 |
SMTP 서비스를 사용하며 릴레이 제한이 설정되어 있지 않은 경우 |
1.12.1 진단방법
# SMTP 서비스 사용 여부 및 릴레이 제한 옵션 확인
ps -ef | grep sendmail | grep -v "grep"
cat /etc/mail/sendmail.cf | grep "R$ \*" | grep "Relaying denied"
1.12.2 조치방법
# vi 편집기로 sendmail.cf 설정파일 오픈 후 아래와 같이 주석 제거
(수정 전) #R$* $#error $@ 5.7.1 $: "550 Relaying denied"
(수정 후) R$* $#error $@ 5.7.1 $: "550 Relaying denied"
# 특정 IP, domain, Email Address 및 네트워크에 대한 sendmail 접근 제한 확인
vi /etc/mail/access
1.13 일반사용자의 Sendmail 실행 방지
- 일반 사용자가 q 옵션을 이용해서 메일큐, sendmail 설정을 보거나 메일큐를 강제적으로 drop 시킬 수 있어 악의적으로 SMTP 서버의 오류를 발생시킬 수 있다.
진단 기준 |
양호 |
SMTP 서비스 미사용 또는 일반 사용자의 Sendmail 실행 방지가 설정된 경우 |
취약 |
SMTP 서비스 사용 또는 일반 사용자의 Sendmail 실행 방지가 설정되지 않은 경우 |
1.13.1 진단방법
# sendmail.cf 파일에서 restrictqrun 옵션 설정 여부 확인
cat /etc/mail/sendmail.cf | grep PrivacyOptions
O PrivacyOptions=authwarnings, novrfy, noexpn
1.13.2 조치방법
# vi 편집기를 이용하여 sendmail.cf 파일 오픈
vi /etc/mail/sendmail.cf
# O PrivacyOptions= 설정 부분에 restrictqrun 옵션 추가
(수정 전) O PrivacyOptions=authwarnings, novrfy, noexpn
(수정 후) O PrivacyOptions=authwarnings, novrfy, noexpn, restrictqrun
1.14 DNS 보안 버전 패치
- 최신버전 이하의 버전에서는 서비스거부 공격, 버퍼 오버플로우 및 DNS 서버 원격 침입 등의 취약성이 존재한다.
진단 기준 |
양호 |
DNS 서비스를 사용하지 않거나 주기적으로 패치를 관리하고 있는 경우 |
취약 |
DNS 서비스를 사용하며 주기적으로 패치를 관리하고 있지 않은 경우 |
1.14.1 진단방법
# DNS 서비스 사용 및 BIND 버전 확인
ps -ef | grep named
named -v
1.14.2 조치방법
# DNS 서비스를 사용할 경우
1. DNS 서비스 사용 시 BIND 버전 확인 후 최신 버전으로 업데이트
# DNS 서비스를 사용하지 않는 경우
1. 서비스 중지
kill -9 [PID]
1.15 DNS ZoneTransfer 설정
- 비인가자 Zone Transfer를 이용해 Zone 정보를 전송받아 호스트 정보, 시스템 정보, 네트워크 구성 형태 등의 많은 정보를 파악할 수 있다.
진단 기준 |
양호 |
DNS 서비스 미사용 또는, Zone Transfer를 허가된 사용자에게만 허용한 경우 |
취약 |
DNS 서비스를 사용하며 Zone Transfer를 모든 사용자에게 허용한 경우 |
1.15.1 진단방법
# 설정 파일에서 zone transfer 설정 확인
cat /etc/named.conf
*******************************************
Options {
allow-transfer(10.10.10.10;};
};
*******************************************
1.15.2 조치방법
# 특정 서버의 Zone Transfer 지정
vi /etc/named.conf
*******************************************
Options {
allow-transfer(10.10.10.111; 10.10.10.112;};
};
*******************************************
# 특정 도메인의 Zone에 대해서 제한할 경우에는 다음과 같이 설정
vi /etc/named.conf
*******************************************
zone "xxx.co.kr" {
Type master ;
File "db.xxx.co.kr";
allow-transfer(10.10.10.111; 10.10.10.112;};
}
*******************************************
※ 참고문서
https://ssv.skill.or.kr/cloud-security/linux-security-vulnerability