관리 메뉴

IT창고

리눅스 서버 보안3 본문

보안/Security

리눅스 서버 보안3

방구석여포 2018. 6. 16. 17:55

2018/06/14 - [보안/Security] - 리눅스 서버 보안2에 이어서 진행합니다.



3.9 RPC 서비스 확인


RPC(Remote Procedure Call)는 분산 환경에서 서버 응용프로그램에 접근하여 특정 작업을 요구하는 Call을 말하는데 불필요한 RPC 서비스 중 아래의 서비스는 버퍼 오버플로우 취약점이 다수 존재하는 서비스입니다.



/etc/xinetd.d/ 디렉토리로 가서 위에 해당 하는 서비스별 파일명을 확인합니다. 만약있을 경우 vi 편집기로 해당 파일을 열어 

Disable = yes 설정으로 바꿔줍니다.


3.10 NIS, NIS+ 점검


NIS(Network Information Service)는 주 서버는 정보표를 소유하여 NIS 대응 파일들로 변환하고, 이 대응 파일들이 네트워크를 통해 제공됨으로써 모든 컴퓨터에 정보가 갱신되도록 합니다. 네트워크를 통한 공유로부터 관리자와 사용자들에게 일관성 있는 시스템 환경을 제공합니다. 만약 NIS를 사용해야하는 경우라면 NIS+를 사용하는게 권장사항입니다 CentOS 6버전 이상이면 관련 사항이 없습니다.



3.11 tftp, talk 서비스 비활성화


불필요한 서비스는 비활성하는것이 바람직합니다. 보안양호상태는 tftp, talk, ntalk 서비스가 비활성화 되어 있는 경우로 해당 서비스의 활성화 여부는 /etc/xinetd.d/ 디렉토리에 가서 확인합니다.

킥스타트 서버를 제외한 서버에 tftp 서비스는 구분하고 tftp 서비스 정도만 비활성기키면 됩니다 나머지 talk, ntalk 서비스는 현재에는 거의 사용하지 않는 서비스입니다.


3.12 Sendmail 버전 점검


Sendmail은 많이 사용되는 만큼 많은 취약점이 알려져있습니다. 보안양호상태는 Sendmail 버전이 8.13.8 이상인 경우 입니다.

서비스를 사용하지 않을 경우 서비스 중지를 꼭 합니다.


(3.13 & 3.14)

3.13 스펨 메일 릴레이 제한


SMTP(Simple Mail Transfer Protocol) 서버의 릴레이 기능을 제한하지 않을 경우 스팸 메일 서버로 악용되거나, 서버의 부하가 증가할 수 있습니다. 따라서 인증된 사용자에게 메일을 보낼 수 있도록 설정하거나 불필요 시 SMTP 서비스를 중지하여야 합니다.

cat /etc/mail/sendmail.cf | grep "R$\*" | grep "Relaying denied" 명령어로 SMTP 서비스 사용 여부와 릴레이 제한 옵션을 확인합니다 /etc/mail/sendmail.cf 에 설정파일이 있습니다.



3.14 일반사용자의 Sendmail 실행 방지


/etc/mail/sendmail.cf 설정파일에 들어가서 O PrivacyOptions= 설정 부분에 restrictqrun 옵션 추가합니다.



3.15 DNS 보안 버전 패치


BIND 패키지의 버전을 최신화 해주면 됩니다.

yum -y install bind로 패키지를 설치하며 설치가 되어있다면 yum update로 패키지를 최신 버전으로 유지해줍니다.



3.16 DNS Zone Tansfer 설정 


DNS Zone Transfer는 Primary Name Server와 Secondary Name Server 간에 Zone 정보를 일관성 있게 유지하기 위하여 사용하는 기능으로 Secondary Name Server로만 Zone 정보를 전송하도록 제한하여야 합니다. 만약 허가되지 않는 사용자에게 Zone Transfer를 허용할 경우 공격자는 전송받은 Zone 정보를 이용하여 호스트 정보, 시스템 정보, 네트워크 구성 형태 등의 많은 정보를 파악할 수 있게 됩니다.


named.conf 설정파일에 allow-transfer 옵션을 이용하여 정해진 Slave Name Server에게만 Zone파일 (DB파일)이 전송되도록 합니다.



3.17 Apache 디렉토리 리스팅 제거


아파치 웹 서버에서 디렉토리 검색은 디렉토리 요청 시 해당 디렉토리를 기본 문서가 존재하지 않을 경우 디렉토리내 모든 파일의 목록을 보여주는 기능입니다. 이 디렉토리 검색 기능이 활성화되어있으면 외부에서 디렉토리 안의 파일에 접근이 가능하기 때문에 디렉토리 검색 기능을 차단해야합니다.


테스트를 위하여 yum -y install httpd로 패키지를 설치합니다.


웹 서버에 디렉토리를 하나 만들고 안에 파일들을 만들어 둡니다.

테스트를 위하여 iptables는 정지 시켜둡니다.

vi /etc/httpd/conf/httpd.conf 파일은 웹 서버 주설정파일로 136번 째 줄에 Listen 자신의ip:80 , 276번째 줄에 ServerName 자신의ip:80 으로 수정하고 httpd 데몬을 시작합니다.


윈도우 PC에서 웹서버로 접근하면 해당 디렉토리에 접근이 가능합니다. 


보안 양호상태는 디렉토리 검색 기능을 사용하지 않는 경우입니다. 디렉토리 검색기능을 비활성화 하려면 httpd.conf파일에 들어가서 331번 째 줄에 있는 옵션을 Options FollowSymLinks로 변경합니다. 다시 httpd데몬을 재시작하면 아래와 같습니다.


더 이상 디렉토리 검색을 사용할수없게 됩니다.



3.18 Apache 웹 프로세스 권한 제한


UNIX시스템은 웹 서버 데몬이 root권한으로 운영될 경우 웹 어플리케이션 취약점, 버퍼 오버플로우 취약점으로 인하여 root권한을 획득할수있으므로 서버 데몬이 root 권한으로 운영되지 않도록 해야합니다.

먼저 계정의 상태를 확인합니다 만약 root계정으로 운영중이라면 root계정이 아닌 별도의 계정으로 바꿔줘야합니다.

httpd.conf 주설정파일에 242번째 줄에 가서 계정을 변경할수있습니다.



3.19 Apache 상위 디렉토리 접근 금지


특정 디렉토리에 접근하는 것을 방지하기 위하여 인증모듈을 이용하여 접근 제어하는 내용입니다.



3.20 Apache 불필요한 파일 제거


웹 서버를 설치하게 되면 기본적으로 생성되는 메뉴얼 파일은 외부 침입자에게 정보를 줄수있기 때문에 꼭 제거해줘야만 합니다.

기존에 있는 아파치 홈 디렉토리에서 ls -al 명령어로 확인하거나 rpm -ql httpd 명령어로 확인합니다.



3.21 Apache 링크 사용 금지


일부 서버는 심볼릭링크를 이용하여 기존의 웹 문서 이외에 파일시스템에 접근 가능하도록하는데 심볼릭링크를 통하여 비인가 사용자가 접근할 수 있습니다.

심볼릭 링크(Symbolic link, 소프트 링크)는 윈도우 운영체제의 바로가기 아이콘과 비슷합니다.


보안양호상태는 심볼릭 링크, aliases 사용을 제한한 경우 입니다.

302번째 줄안에 있는 곳에 Options 내용중 FollowSymLinks 옵션을 지워줍니다.



3.22 Apache 파일 업로드 및 다운로드 제한


불필요한 대량의 업로드나 다운로드 시 서비스 불능상태가 발생할수 있기 때문에 제한에 두어야합니다.

 /[Apache_home]/conf/httpd.conf 파일에 들어가서 302번째 줄부터 시작하는 <Directory />안에 

LimitRequestBody 5000000 ( 는 모든 파일 사이즈를 5M로 제한하는 설정) 을 추가합니다.



3.23 Apache 웹 서비스 영역의 분리


아파치 웹 서버 설치 시 htdocs 디렉토리를 DocumentRoot로 사용하는데 설치시 기본 경로로 되어있어 공격당할 우려가 있습니다.

/[Apache_home]/conf/httpd.conf 파일에 들어가서 독자적인 경로에 디렉토리를 지정해줍니다.


3.24 ssh 원격접속 허용


Telnet, FTP는 암호화되지 않는 상태로 테이터를 전송하기 때문에 ID/패스워드가 유출될 위험이 있습니다. 그렇기에 원격접속시 SSH 서비스를 사용할것을 권장합니다.




3.25 ftp 서비스 확인


FTP서비스는 반드시 필요한 경우를 제외하고 서비스 사용을 제한해야만 합니다. 이유는 보안에 취약한데 암호화되지않는 전송과 스니핑이 가능하기 때문입니다.



서비스 사용중일 시 kill -9 [PID]로 꼭 중지시켜줍니다.



3.26 ftp 계정 shell 제한


FTP계정은 FTP서비스를 이용하기 위한 계정으로 이러한 계정으로 shell접속을 하면 안됩니다.


보안양호상태는 /sbin/nologin, /bin/false 설정이 되어있다면 양호입니다.


3.27 Ftpusers 파일 소유자 및 권한 설정


FTP 접근제어 설정파일을 관리자가 아닌 일반사용자들이 접근하거나 수정해서는 안됩니다. 

보안양호상태는 소유자가 root이며 , 권한은 640 이하여야만 합니다.


ex)

#chown root /etc/ftpusers

#chmod 600 /etc/ftpusers


3.28 Ftpusers 파일 설정


/etc/vsftpd/ftpusers파일은 FTP서비스를 수행하는 파일이기에 위험성은 위에서 이미 나와 있습니다.

root 계정으로 FTP접속하는것은 계정정보를 위해서 안됩니다. /etc/vsftpd/ftpusers 파일에 root를 주석처리하거나 지워줍니다.



3.29 At 파일 소유자 및 권한 설정


at 데몬 (일회성 작업 예약)는 지정한 시간에 어떠한 작업이 실행될 수 있도록 작업 스케줄을 예약 처리해 주는 기능을 제공하는데 /etc/at.allow 파일에 등록된 사용자만이 at 명령을 사용할 수 있습니다. at.allow , at.deny 파일을 통해 접근 제어합니다.


테스트를 위하여 yum -y install at 패키지를 설치합니다.

at.allow파일은 관리자가 직접 생성해야 합니다.

“/etc/at.allow” 및 “/etc/at.deny” 파일의 소유자 및 권한을 관리자 계정으로 변경해야 합니다.

ex) 

chown root /etc/at.allow

chmod 640 /etc/at.allow

chown root /etc/at.deny

chmod 640 /etc/at.deny



(3.30 & 3.31)

3.30 SNMP 서비스 구동 점검


SNMP(Simple Network Management Protocol)은 TCP/IP 기반 네트워크상의 각 호스트에서 정기적으로 여러 정보를 자동으로 수집하여 네트워크 관리를 하기 위한 프로토콜을 의미합니다.


보안양호상태는 SNMP 서비스를 사용하지 않는 경우인데 SNMP 프로토콜 같은 경우는 현재에도 많이 사용합니다. 대표적으로 ZABBIX tool을 사용하면 SNMP를 사용할수밖에 없습니다.



3.31 SNMP 서비스 Community String의 복잡성 설정


위와 동일

보안양호상태는 SNMP Community 이름이 public, private가 아닌 경우입니다.


3.32 로그인 시 경고 메세지 제공


로그인 배너가 설정되지 않을 경우 배너에 서버 OS 버전 및 서비스 버전이 공격자에게 노출될 수 있으며, 공격자는 이러한 정보를 통하여 해당 OS 및 서비스의 취약점을 이용하여 공격을 시도할 수 있습니다.

기본적으로 설정을 안해두면 위와 같이 시스템의 정보가 배너에 있습니다.


보안양호상태는 서버 및 Telnet 서비스에 로그인 메세지가 설정된 경우입니다.

vi /etc/motd 명령어로 서버 로그온 메시지 설정 여부 확인하고 vi /etc/issue.net으로 배너관련된 파일은 모두 확인합니다.



3.33 NFS 설정파일 접근권한


NFS는 비인가자가 파일시스템을 마운트하여 불법적인 변조를 할수있기 때문에 NFS설정파일은 관리자가 관리해야합니다.

/etc/exports 가 NFS 서버 주설정파일인데 보안양호상태는 소유자가 root이며 권한은 644이하여야만 합니다.



3.34 expn, vrfy 명령어 제한


SNMP관련 내용이므로 넘어갑니다.


3.35 Apache 웹 서비스 정보 숨김


에러페이지, 웹 서버 종류, OS정보를 등 공격자에게 유리한 불필요한 정보를 노출하지 않도록 해야합니다.


/etc/httpd/conf/httpd.conf 파일에 44번째 줄에 옵션을 변경하면 됩니다.

보안양호상태는 ServerTokens 지시자에 Prod옵션이 설정된 경우 입니다. 만약 ServerTokens 지시자 아무런 옵션이 없다면 기본값은 Full옵션으로 적용됩니다. 

위의 사진은 OS옵션입니다.

위의 사진이 Prod옵션입니다.


가장 좋은 방법은 아예 새롭게 에러페이지를 만들어 작은 정보라도 노출하지않는 방법이 가장 좋습니다.



4. 패치관리 , 5.로그관리 는 테스트 가능한 내용이 아니므로 여기까지 테스트를 하겠습니다.

'보안 > Security' 카테고리의 다른 글

리눅스 iptables 심화  (0) 2018.06.24
리눅스 iptables 기초  (0) 2018.06.17
리눅스 서버 보안2  (0) 2018.06.14
리눅스 서버 보안 1  (0) 2018.06.13
테스트 환경구성  (0) 2018.06.11
Comments