FTP

eatgnoes·2023년 2월 25일

Linux

목록 보기
3/6

FTP란 ?

File Transfer Protocol, 서버와 클라이언트 사이의 파일 전송을 하기 위한 프로토콜이다

    1. Active (능동모드)
      서버가 클라이언트에 접속을 시도함.
    1. Passive (수동모드)
      원격 사용자가 임의의 포트로 접속 , 서버는 1024~65535 사이의 포트를 모두 열어야 해서 보안 xx

      설정 순서
      1.패키지 설치
      2.방화벽 오픈 (포트,서비스)
      3.환경설정 변경 (보안)
      4.데몬 재실행

      • 모든 설정은 거의 대부분 이 순서대로 진행하면 된다
      • 설정파일을 건드릴 때는 백업디렉터리 생성 후 백업 후 작업한다.
      • 작업 후 반드시 명령이 실행되었는 지 확인한다.

1 . 패키지 설치

# yum install -y vsftpd
  • vsftpd = Very Secure File Transfer Protocol Daemon

    1-1 설치 확인

    # rpm -qa | grep vsftpd
  1. 방화벽 오픈
    포트 번호 : 20 21번 ( 20번 전송 21번은 인증 및 제어에 사용)
# firewall-cmd --permanent --add-port={20,21}/tcp
# firewall-cmd --permanent --add-service=ftp
# firewall-cmd --reload
  1. 환경설정

    3-1 설명

 * anonymous_enable=YES : 익명사용자 허용/거부
 * local_enable=YES : 로컬 사용자(/etc/passwd에 있는 사용자) 로그온 허용/거부
 * write_enable=YES : 파일시스템에 데이터 쓰기 허용/거부
 * local_umask=022 : 퍼미션. 반대로 적용된다. 022: 666-022=644 : rwx에서 x는 필요없음. 666이 기본
 * anon_upload_enable=YES : 익명사용자의 파일 업로드 허용/거부
 * anon_mkdir_write_enable=YES : 익명사용자의 디렉토리 생성 허용/거부
 * dirmessage_enable=YES : ftp접속자가 디렉토리 이동시 알림메세지로 설정된 파일 내용 출력
 * xferlog_enable=YES : 사용자의 업로드 다운로드를 로그 파일로 저장(/var/log/xferlog에 기록)
 * connect_from_port_20=YES : 데이터전송포트
 * chown_uploads=YES : 익명사용자가 업로드한 파일의 퍼미션 자동 변경
 * chown_username=whoever : chown_uploads 옵션이 YES일 경우 변경할 사용자 명
 * xferlog_file=/var/log/xferlog : xferlog_enable옵션이 YES일 경우 저장할 경로 지정
 * xferlog_std_format=YES : xferlog 로그의 표준 포맷 사용
 * idle_session_timeout=600 : idle상태가 600초 동안 이어질때 세션 종료
 * data_connection_timeout=120 : 파일 업/다운로드시 연결 유지시간 지정. 시간 초과시 업/다운 취소.
                                 주석처리되면 기본값으로 300초 지정.
 * nopriv_user=ftpsecure : 익명 접속시 사용할 유저 명
 * async_abor_enable=YES : async ABOR 명령 사용을 허용/거부
                           (일부ftp클라이언트에서 파일 전송 취소해도 취소되지 않는 상태가 생길수 있음. 그때 사용)
 * ascii_upload_enable=YES : ASCII 파일 업로드 허용/거부
 * ascii_download_enable=YES : ASCII 파일 다운로드 허용/거부
 * ftpd_banner=Welcome to... : ftp 접속 성공시 출력하는 환영 메세지 지정
 * deny_email_enable=YES : 익명 접속 시 패스워드에 입력하는 이메일 중 특정 이메일 거부
 * banned_email_file=/etc/vsftpd/banned_emails : deny_email_enable 옵션이 YES일때 거부할 이메일 목록
 * chroot_local_user=YES : 사용자 접속시 자신의 홈디렉토리를 / 로 인식하게 하여 하위로 이동만 가능
 * chroot_list_enable=YES : chroot에서 제외할 사용자 목록 사용 여부
 * chroot_list_file=/etc/vsftpd/chroot_list :  chroot_list_enable이 YES일 경우 해당 목록 파일 지정
 * ls_recurse_enable=YES : 접속자에게 ls -R(하위dir까지출력) 명령어 사용 허가/거부(부하가 많으므로 NO)
 * listen=YES : standalone모드는 YES, xinetd모드는 NO
 * listen_ipv6=YES : IPv6응답 허용/거부
 * pam_service_name=vsftpd : 사용자 PAM 인증 시 사용할 설정 파일 이름 지정 (vi /etc/pam.d/vsftpd)
 * userlist_enable=YES : /etc/vsftpd/user_list에 지정된 사용자 접속 거부
 * tcp_wrappers=YES : 접근 필터링
 * pasv_min_port=5000 : 패시브 모드시 사용할 시작 포트 번호
 * pasv_max_port=6000 : 패시브 모드시 사용할 마지막 포트 번호
 * pasv_enable=YES : 패시브 모드 사용/사용안함. NO일 경우 액티브 모드

3-2 기본적인 보안 설정

1. 디렉터리가 최상위로 보이도록
   101 chroot_local_user=YES
   102 allow_writeable_chroot=YES
직접 102번줄은 추가해야함.
2. 시간 동기화 사용 ( 파일 업로드 시 클라이언트와 서버시간 동기화)
    103 use_localtime=YES 
직접 추가
3. 배너 경고문 삽입
    87 ftpd_banner=WARNING!
4. 시간 부여
4-1. 접속 시간 (초단위)
     60 idle_session_timeout=600
4-2. 전송 시간 (초단위)      
     63 data_connection_timeout=120
  1. 데몬 재실행
# systemctl enable --now vsftpd

5 . 결과 확인
디렉터리 최상위 처럼 보이며 경고문 나옴.

profile
이 밤이 지나면

0개의 댓글