Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

나의 IT일지

FTP서버 본문

정보보안

FTP서버

세레프 2023. 7. 19. 22:48

서버

 서버서비스를 제공하는 프로그램이 설치되어 있는 컴퓨터로, 클라이언트가 서비스를 요청하면 서버는 해당 서비스가 존재하면 클라이언트에게 서비스를 제공한다. 이때 클라이언트에는 해당 서버의 서비스를 사용하기 위해서 서비스에 맞는 클라이언트 프로그램이 설치되어 있어야 한다. 

 

  • 프로그램 설치
    • yum  install [패키지명] : 해당 패키지를 설치하는 명령어
      • rpm -qa [패키지명] : 해당 패키지가 설치 되었는지 확인하는 명령어
      • rpm -ql [패키지명] : 패키지를 구성하는 파일 확인하는 명령어
        • /usr/lib/systemd/system/[데몬].service : 서버 패키지의 데몬 파일
        • /etc/[데몬]/[데몬].conf : 서버 패키지의 설정파일
        • /usr/sbin/[데몬] : 서버 실행 파일
  • 서버 활성화 
    • service  [데몬 명] start : 서버를 활성화 하는 명령어 (= systemctl start [데몬 명] (in Centos7))
    • service  [데몬 명] stop : 서버를 비 활성화 하는 명령어 ( = systemctl stop [데몬 명] (in Centos7))
    • service  [데몬명] restart : 서버를 재 활성화 하는 명령어 ( =systemctl restart [데몬 명] (in Centos7))
      • netstat -lntup |grep [데몬 명] : 현재 운영체제에서 사용중인 포트와 해당 포트를 사용하는 서비스를 확인하는 명령어
  • 데몬 자동 실행
    • chkconfig --level 35 [데몬 명] on : 해당 데몬은 런레벨 3, 5일 때, 자동적으로 실행하게 하는 명령어
    • systemctl enable [데몬 명] :  해당 데몬은 운영체제가 실행되었을 때,  자동 실행 하도록 하는 명령어
      • systemctl list-unit-files : 자동실행 프로세스를 확인하는 명령어
  • 방화벽 설정
    • service firewalld stop : 방화벽을 비활성화 하는 명령어
    • service firewalld start : 방화벽을 활성화 하는 명령어 
    • service firewalld restart : 방화벽을 재 활성화 하는 명령어 
      • firewall-cmd  --add-service=[서비스 명] : 해당 서버의 방화벽 해제 (재부팅시 내용삭제)
        • /etc/services 파일에 서비스마다 사용하는 포트가 저장되어 있으며, 해당 파일을 기반으로 방화벽 설정
        • firewall-cmd --permanent  --add-service=[서비스명] : 해당 서버의 방화벽을 영구적으로 해제
      •  firewall-cmd  --add-port=[포트번호/tcpudp] : 해당 포트의 방화벽 해제 (재부팅시 내용삭제)
        • firewall-cmd --permanent  --add-port=[포트번호/tcpudp] : 해당 포트의 방화벽을 영구적으로 해제
      •  firewall-cmd --reload : 방화벽 재적용
      • firewall-cmd --list-all : 방화벽 적용상태 확인

 

FTP 서버

 

파일 전송 시스템(FTP)

서버는 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터 프로그램으로, 이러한 서비스를 제공받는 프로그램을 클라이언트라고 한다. 쉽게 말하면, 서비스를 제공하는 프로그램이 설치되어

my-it-diary.tistory.com

 FTP란 파일을 전송하기 위한 프로토콜로, 서버에 저장되어 있는 데이터를 다운로드하거나 서버에 데이터를 저장하는 서비스를 제공한다. 

  • FTP서버 패키지 : vsftpd
    • /etc/vsftpd/vsftpd.conf : ftp서버의 설정 파일
    • /usr/sbin/vsftpd : ftp서버의 데몬 실행 파일
    • /usr/lib/systemd/system/vsftpd.service : ftp서버의 데몬 파일
      • /etc/rc.d/init.d/vsftpd : CentOS 6버전 이전까지 사용한 ftp서버의 데몬 파일
  • FTP클라이언트 패키지 : ftp
    • /usr/bin/ftp : ftp클라이언트 실행 파일

 이때, 평문 형태로 패킷이 전송된다. 즉 FTP를 통해 데이터를 업로드 다운로드하는 경우, 해당 데이터를 확인 할 수 있다. 그래서 SSH를 사용하여 안전하고 암호화된 방법으로 파일을 전송하는 SFTP를 사용한다.

ftp서버에 접근한 패킷 내용

 

 FTP는 사용자가 접속할 때 사용하는 포트(ftp : 21)와 데이터를 서버에 업로드 다운로드 할 때 사용하는 포트가 나눠져 있으며, Active Mode인지 Passive Mode인지 따라서 데이터를 전송할 때 사용하는 포트가 달라진다.

  • active mode :  고정된 포트를 사용하는 방법  (ftp-data : 20)
    • 클라이언트에서 데이터 채널을 전송하는 경우 
    • 방식 : 클라이언트가 서버쪽으로 접속  → 서버에게 데이터 채널 생성을 요청함 → 서버의 20번포트에서 데이터 채널 → 서버가 클라이언트에게 데이터 채널 생성을 알림

  • passive mode : 유동적인 포트를 사용하는 방법 (ftp-data : random)
    • 서버에서 데이터 채널을 보내는 형식
    • 방식 : 클라이언트가 서버쪽으로 접속 → 서버에게 데이터 채널 생성을 요청함 → 서버는 1024~65535까지의 랜덤한 포트 [보통45000~60000사이]에 데이터 채널 생성 → 서버가 랜덤한 포트에 데이터 채널 생성을 알림

xferlog 파일
 서버와 클라이언트간 데이터 파일이 전송이 되었을 경우, 해당 파일에 전송기록이 남는다. 즉, 해당 파일은 데이터 파일의 송수신 관련 기록을 저장하는 파일이다.  
  • 파일 위치 : /var/log/xferlog
기록 구성 의미
송수신 시각 데이터가 송수신이 발생한 시각을 기록 (요일 월 일 시: 분: 초  년도)
송수신 걸린 시간 데이터가 송수신하는 데 걸린 시간을 기록
접속자의 IP 데이터 송수신 대상을 기록
파일용량 데이터 파일의 용량을 기록
파일 위치 데이터 파일의 위치를 기록
데이터 전송 파일 형식 전송되는 데이터 파일 형식을 기록 (binary : 프로그램형 파일, ascii : 문서형 파일)
압축상태 해당 파일의 압축 전송 여부를 기록 (c : 압축 전송, _ : 일반 전송)
업로드, 다운로드 데이터의 업로드, 다운로드 여부를 기록 (input : upload, output : download)
익병계정, 실제계정 데이터  파일의 교환에 사용된 계정의 종류를 기록 (a : 익명계정, r : 실제계정)
계정명 해당 서버에 접속되어서 파일을 교환한 계정 명을 기록 
서비스 데이터 파일 교환에 사용된 서비스, 프로토콜을 기록
인증 방식 해당 서버에 접속한 접속 방법의 인증 방식 기록 ( 0 : 정상 인증 접속 , 1 : rfc931 원격 인증 접속)
정상 전송 완료  데이터 파일이 정상적으로 데이터를 전송하고 종료했는지 기록 ( i : 실패  , c : 성공)

 

FTP서버 접속

 클라이언트에서 FTP서버로 접속하기 위해서는 클라이언트 프로그램을 설치되어야  FTP 서버의 접근이 가능하다.

  • ftp [서버 IP주소 / 서버 도메인] : FTP 서버에 접속하는 명령어
    • Centos 7의 telnet 클라이언트 설치 방법 : yum install ftp
    • 윈도우에는 ftp클라이언트 기능이 자동적으로 설치 되어 있다.
    • 그 외 클라이언트 프로그램 : 알FTP

 

 

FTP 서버 설정 

  • 설정파일 : vi /etc/vsftpd.conf
    1.  ftp 기초 설정
      • local_enable : 일반 계정 사용 여부 (default : yes) (yes : 사용, no : 비사용)
      • write_enable :  FTP 사용 중 해당 계정을 통한 수정 가능 여부
      • local_umask : 파일을 업로드 하는 경우 적용시키는 umask
      • dirmessage_enable : FTP사용 중 디렉토리를 변경하는 경우, ".message"파일의 내용이 출력 여부
      • xferlog_enable : xferlog 파일에 기록 여부
        • xferlog_file : xferlog 파일 결정
        • xferlog_std_format : xferlog 파일에 FTP사용 내역 기록 여부
          • /var/log/vsftpd.log : xferlog파일에 기록하지 않는다면 대신 FTP사용내역을 기록하는 파일
      • connect_from_port_20 : 액티브 모드 사용 시, 20번 포트 사용 여부
      • asyn_abor_enable : 비동기화 기능 사용 여부
        • yes : 데이터 송수신중 서버가 차단되었을 경우, 해당 데이터는 송수신 완료후 서버 차단
        • no : 데이터 송수신중 서버가 차단되었을 경우, 데이터 송수신 취소후 서버 차단
      •  ftpd_banner : ftp 서버에 접속할 때, 출력하는 배너
        • banner_file : 배너의 파일 위치 
      • max_clients : 접속 가능한 최대 세션 수 설정
      • max_per_ip : 한 호스트당 최대로 접속 가능한 세션 수 설정
    2. 세션 관리 설정
      • idle_session_timeout : 세션 연결 후 어떠한 행동을 하지 않을 경우, 세션을 차단 시킬때까지 대기 시간 설정
      • data_connection_timeout : 데이터 전송이 완료후, 데이터 전송 세션을 차단 시킬때까지의 대기시간 설정
    3.  문서 파일 송수신 설정 
      • ascii_upload_enable : 문서 파일 업로드 여부
      • ascli_download_enable : 문서 파일 다운로드 여부
    4.  익명(anonymous) 계정 ftp 설정
      • anonymous_enable : 익명 게정 사용 여부 (default : yes) (yes : 사용, no : 비사용)
      • anon_upload_enable : 익명 계정의 업로드 권한 여부 (default : no)
      • anon_mkdir_write_enable : 익명 계정의 디렉토리 생성 권한 여부 (default : no)
      • anon_root : 익명계정 접속위치 지정 
        • /var/ftp : 익명 계정 홈디렉토리
    5. 홈 디렉토리 이동 제한 설정 (chroot 환경 설정)
      • chroot_local_user : 홈디렉토리의 상위 디렉토리에 접근 할 수 없는 기능(chroot 환경) 활성화 여부 (default : no) 
        • allow_writeable_chroot : chroot 환경 사용 중, 사용자에게 쓰기 권한 부여 여부
      •  chroot_list_enable : 디렉토리 이동제한 예외리스트 활성화여부
        • chroot_list_file=/etc/vsftpd/chroot_list : 디렉토리 이동제한을 예외처리할 LIST위치지정
    6.  passive 모드 설정
      • pasv_enable : 패시브 모드 사용 여부 (기본 사용 포트  : 1024-65535)
      • pasv_min_port : 패시브 모드에서 사용하는 최소 포트
      • pasv_max_port : 패시브 모드에서 사용하는 최대 포트

 

 ftp 서버 계정 차단

 FTP서버는 기본적으로 보안 상 접속하지 못하도록 계정을 차단한다. 이떄 차단하는 방식은 계정을 차단하는 방식과 계정의 패스워드를 차단하는 방식이 있다. 만약 계정의 차단을 해제하기 위해서는 계정 차단과 패스워드 차단을 해제해야 한다.

  1.  계정 차단 방식
    • userlist_enable : 계정 차단 기능을 사용여부
      • /etc/vsftpd/user_list : 차단 기능이 적용되는 계정 목록
      • userlist_file : 별도의 차단 목록 파일지정
    • userlist_deny : 계정 차단 기능 타입 설정
      • YES(접근거부) : no_access 타입 (블랙 리스트)
      • NO (접근 허가) : only_from 타입 (화이트 리스트)
  2. 패스워드 차단 방식 (pam 사용 방식)
    • pam_service_name : pam 사용하는 서비스 이름 설정
      • /etc/pam.d/vsftpd : vsftpd의 pam 설정 파일
      • /etc/ftpusers : pam을 통한 차단 계정 목록
PAM(Pluggable Authentication Modules)
 찰탁형 인증 모듈로, 유닉스 계열에서 제공하는 별도의 사용자 인증 서비스이다. 해당 서비스를 통해 1차적으로 계정을 보안 정책을 적용하더라도, 2차적으로 OTP 등 추가 보안 정책을 적용할 수 있다.  

 

'정보보안' 카테고리의 다른 글

암호학  (0) 2023.07.20
telnet 서버와 xinet  (0) 2023.07.19
스왑과 쿼터  (0) 2023.07.10
윈도우 설치 및 보안 정책  (0) 2023.07.05
네트워크 공격  (0) 2023.07.05
Comments