FTP란 ?
File Transfer Protocol, 서버와 클라이언트 사이의 파일 전송을 하기 위한 프로토콜이다
- Active (능동모드)
서버가 클라이언트에 접속을 시도함.
- 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
- 방화벽 오픈
포트 번호 : 20 21번 ( 20번 전송 21번은 인증 및 제어에 사용)# firewall-cmd --permanent --add-port={20,21}/tcp # firewall-cmd --permanent --add-service=ftp # firewall-cmd --reload
- 환경설정
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
- 데몬 재실행
# systemctl enable --now vsftpd
5 . 결과 확인
디렉터리 최상위 처럼 보이며 경고문 나옴.