외로운 Nova의 작업실

정보보안기사 필기 - 31(애플리케이션 보안) 본문

Certification/정보보안기사

정보보안기사 필기 - 31(애플리케이션 보안)

Nova_ 2022. 12. 21. 12:51

- 파일관련 프로토콜

<FTP>

FTP(file transfer protocol)은  파일 전송 프로토콜로 하나의 연결은 데이터를 전송을 위하여 사용되고 또 다른 하나는 명령과 응답 등의 제어 정보를 위하여 사용합니다. 이러한 제어와 데이터 전송의 분리는 FTP를 좀 더 효율적으로 사용할 수 있도록 만들어줍니다. FTP는 포트 21번을 제어연결을 위해 포트 20번을 데이터 연결을 위해 사용합니다.

 

<FTP 로그인 순서>

USER 명령을 통해 사용자 명령을 전송하고 PASS 명령을 통해 사용자의 비밀번호를 전송합니다.

 

<FTP 연결 - Active mode>

일반적으로 능동모드가 FTP 클라이언트의 기본값으로 설정됩니다. 클라이언트에서 서버측 21번 포트로 접속하여 제어채널을 생성하고 데이터는 서버에서 클라이언트로 접속하여 데이터를 보내는 방식입니다. 만약 클라이언트가 방화벽이 설치되어 외부에서 접속을 허용하지않는다면 FTP 접속은 되지만 데이터 채널 연결이 불가능하여 파일을 받을 수 없는 문제가 발생합니다.

 

<FTP 연결 - Passive mode>

방화벽에의해 FTP사용에 문제가 있는 점을 해결하기위해서 고안된 방식으로 클라이언트에서 서버측 21번 포트로 접속하여 제어채널을 생성하고 데이터 채널도 클라이언트에서 서버로 접속하여 데이터를 보내는 방식입니다.

 

<TFTP>

TFTP(trivial file transfer protocol)은  FTP의 기능을 전부 지원할 필요가 없거나 모두 지원하는 것이 비현실적인 경우를 위해 더 간단히 개발된 파일 전송 프로토콜입니다. TFTP는 UDP(69번)포트를 사용합니다. 소프트웨어 패키지를 읽기 전용 메모리나 디스크 없는 워크스테이션에 설치할때 주로 쓰입니다. UDP는 오류제어를 위한 기능이 없으므로 TFTP는 연속적인 데이터 블록으로 파일을 전송할때는 흐름제어와 오류제어 메커니즘을 생성해야합니다.

 

<TFTP와 FTP 차이점>

  • FTP는 다양한 명령어를 지원하지만 TFTP는 파일을 보내고 받는 기능만 지원합니다.
  • FTP는 데이터 표현 방식을 여러개 지원하지만 TFTP는 ASCII와 바이너리만 지원합니다.
  • FTP는 인증기능이 있지만 TFTP는 인증기능이 없습니다.

<NFS>

NFS(network file system)은  TCP/IP 프로토콜을 사용하여 네트워크상에서 파일시스템을 운영할 수 있도록 해주는 프로토콜입니다. 보안과 무결성을 보장하면서 인증된 네트워크 사용자가 공유된 네트워크 파일을 마치 자신의 저장장치에 있는 것 처럼 사용할 수 있는 방법을 제공합니다. 여러명이 함께 사용하는 대용량 프로그램이나 데이터를 하나의 호스트에 넣어두고 NFS로 연결하면 디스크 공간이 많이 절약됩니다.

 

<Samba>

Samba는 SMB(server message block) 프로토콜을 사용하여 유닉스 계열 시스템과 윈도우 시스템 간에 파일 및 프린터 자원을 공유할 수 있는 기능을 제공합니다.

 

- FTP 보안 위협 및 대책

<FTP 취약점>

FTP의 비밀번호는 평문으로 되어있어 공격자가 가로채어 사용할 수 있는 취약점이 있습니다. 또한, 데이터 전송 연결또한 보호되지않은 평문으로 데이터를 전송합니다. 이에따라 FTP 응용계층과 TCP 전송 계층 사이에 보안 소켓 계층을 추가해야합니다. 이를 SSL-FTP라고합니다.

 

<Bounce Attack>

취약점 : 능동모드에서 데이터 채널을 생성할때 목적지를 확인하지 않아, 다른 호스트의 포트를 줘도 FTP는 연결하여 데이터를 전송합니다.

공격 방법 :

1. 능동모드에서 FTP 서버로 파일을 요청할떄 클라이언트는 파일을 받을 IP와 포트를 지정해서 전달해줍니다.(PORT 명령)

2. 이때 IP와 포트를 요청한 클라이언트가 아닌 표적의 주소와 포트번호를 주면 FTP는 표적으로 데이터를 전송합니다.

보안 대책 :

1. FTP의 원래 규약을 어느정도 제한합니다.

2. 표적에서는 다른 서비스가 20번 port 접속을 요청하면 거절합니다.

 

<Anonymous FTP>

취약점 : FTP는 보안 절차를 거치지 않은 익명의 사용자에게 접근을 허용합니다. 이에따라 쓰기권한이 있을때 악성코드 생성이가능합니다.

공격 방법 : 

1. 사용자 아이디로 "anonymous" 라고 입력하고, 패스워드에는 자신의 이메일 주소를 입력하면 로그인이 허용됩니다.

2. 쓰기 권한이 있다면 악성코드를 심습니다.

보안 대책 : anonymous 서비스를 제거하고 디렉터리의 소유자와 권한을 관리합니다.

 

<SFTP>

SFTP(secure file stransfer protocol)은 보안채널을 생성하고 응용프로그램에 나눠주는 SSH 프로토콜을 사용한 FTP입니다. 즉, SFTP는 SSH응용 요소의 일부이며 SFTP 프로그램은 FTP 처럼 동작할 수 있는 쌍방향 프로그램이며 SSH 클라이언트와 SSH 서버 사이에서 파일을 전송하기위해 인터페이스 명령 세트를 사용합니다.

 

<TFTP 보안>

TFTP는 보안에 대한 고려가 없습니다. 심지어 비밀번호 확인조차 없기때문에 해커로부터 파일을 보호해야합니다. 이를 수행하는 방법중 하나는 중요하지 않는 파일에만 TFTP가 접근할 수 있도록 제안하고 TFTP 서버 근처에 있는 라우터에 보안을 구현하여 특정한 호스트만 서버에 접근할 수 있도록 하고 secure mode에서 chroot 기능으로 지정한 디렉터리를 최상위 디렉터리로 지정하여 지정한 디렉터리의 상위 디렉터리로 접근하지 못하도록 제한해야합니다.

 

<FTP 접근제어 설정>

ftpusers 파일을 통한 접근 제어 : ftpusers 파일은 접속을 제한할 계정정보를 담고 있는 설정파일로 중요 계정들을 ftpusers파일에 명시하여 접속을 제어합니다.

TCPWrapper를 통한 접근 제어 : host.allow, host.deny 파일을 이용하여 ip기반의 접근제어를 수행합니다. 

 

<FTP 서버 - proftpd>

proftpd는 FTP서버로  매우 안정적이고 빠릅니다. ftp 접속시 아래와 같은 확인을 도와줍니다.

  • /etc/password, /etc/shadow에 사용자 계정이 있는지 검사합니다.
  • /etc/ftpusers에 사용자 id가 있으면 거부합니다.
  • /etc/shell에 등록되지 않은 셸을 사용하는 유저는 접근을 거부합니다.

<proftpd 설정 파일 옵션>

  • ServerType stamda;pme : 서버 타입 설정
  • RootLogin off : 루트 계정 로그인 허용 안함
  • User nobody : 데몬 동작 계정
  • Group nobody : 데몬 동작 그룹
  • Serverldent On "Welcome to FTP" : 버전 정보 숨기기
  • MaxClients : 최대 접속 허용
  • TimeoutLogin : 아아디/암호로 인증이 완료될때까지의 제한 시간
  • Timeoutdleftp : 접속후 아무런 데이터 전송이 없는 idle 상태
  • TimeoutSession : 일정시간 후에는 무조건 접속 종료
  • Limit Command : 사용 가능한 command 제한
Comments