FTP 서버 10111033 사이버경찰학과 이주환
목차 1. 개요 2. 설치하기 3. 주요 설정 4. 계정 및 패스워드 생성 5. 접속하기 6. 파일 업로드 및 다운로드
passive 모드와 active 모드에 대해 쓰는 데몬 -vsftpd (Very Secure FTP Daemon) vsftp 는 보안 부분을 특히 강조한 데몬으로 Redhat, Open-BSD 에서 기본 FTP 로 채택하고 있으며보안, 빠른 퍼포먼스, 안정성을 주요 특징으로 소개하고 있고 그 성능도 여느 ftp 서버 보다 탁월하다.또한 config 파일의 설정 문법도 아주 간단해서 FTP 서버 관리를 쉽게 할 수 있다. 전송 방식 passive 모드와 active 모드에 대해
서버에게 명령을 전달하면 서버는 해당 클라이언트의 데이터세션 생성을 위해 1024 이사의 passive 모드 :클라이언트가 서버의 21번(Control session)에 접속한 뒤 클라이언트가 서버에게 명령을 전달하면 서버는 해당 클라이언트의 데이터세션 생성을 위해 1024 이사의 임의의 포트를 열고 난 후 해당 포트번호를 클라이언트에게 알려준다. 클라이언트는 전달받은 서버의 포트번호로 접속해 데이터세션을 생성한다.
Active 모드 : 서버에서 클라이언트로 파일을 가져다 주는 형태. 클라이언트가 방화벽 설정을 잘못해두면 접속이 안됨. 20번 포트로 여러명 제어 가능하지만 데이터를 전송해서 성공할 확률이 낮다. 그래서 보통은 패시브 모드를 쓴다.
설치하기 먼저su 모드로 들어간다. 그 후, 설치되어 있는가 확인하기 위해 rpm -qa vsftpd를 해 본다. 위 화면은 설치가 되어서 저렇게 나오는 것이고, 보통은 설치가 되어 있지 않다. 다음은 설치하는 명령어이다. 엔터를 누르면 자동적으로 설치가 된다.
주요 설정 여기서는 설치 후, 주요 설정들을 해보는 단계이다. 먼저, 다 깐 후에, vi /etc/vsftpd/vsftpd.conf 파일을 불러온다. 불러오면 다음과 같이 상당히 많은 주석문과 설정들로 뒤덮여 있다 여기서 주석 처리된 부분을 전부 지우고, 다음의 내용을 새로 써 넣는다..
anonymous_enable=yes (익명 사용자의 접속 여부) anon_upload_enable=YES(익명 사용자의 업로드 허용) anon_mkdir_write_enable=YES(익명 사용자의 디렉터리 만들기 허용) local_enable=YES (원래는 no. 로컬 계정 사용자의 접속 허용 여부) write_enable=YES (업로드 허용 여부) local_umask=022 (로컬 계정 사용자용 umask) dirmessage_enable=YES (새 디렉터리에 들어갔을때 위에 적어줄 메시지 사용 여부) xferlog_enable=YES (파일 전송 로그를 남길 것인가?) connect_from_port_20=YES (20포트 사용 유무. 기본적으로는 21번 포트만 사용함.) xferlog_file=/var/log/xferlog (원래 없던 설정. 파일 전송 기록을 다음 위치에 저장해둔다.) xferlog_std_format=YES (xferlog 표준 포맷으로 로그를 남길 것인가 여부) chroot_local_user=YES (원래는 no, 홈 디렉터리를 벗어날수 있게 한다.) listen=YES (vsftpd 데몬 동작 방식 지정 (yes-standalone, no - Xinted) pam_service_name=vsftpd (PAM 파일명을 지정 (설치할 때 /etc/pam.d/vsftpd 명으로 복사함) userlist_enable=YES /etc/vsftpd.user_list 에 있는 사용자에 대해 접근을 허가 설정. ftpd_banner= 서버 접속시 배너 출력
계정 및 패스워드 생성 계정을 만드는 방법은 두가지가 있다. 그중 하나는 아예 새 계정을 파는 방법이고, 또 하나는 가상 계정을 만드는 것이다. 다음과 같이 타이핑한다. - useradd 자신이 사용할 계정 - passwd 계정명 그후 암호 입력 ↑ text 라는 사용자를 만들고, 그 사용자의 암호를 지정해 주는 모습
가상 계정 등록하기 yum -y install db4-utils -> 가상 사용자 리스트를 등록해, db포맷으로 바꿔줘야 하는데, 그 유틸이 들어있다. 그후, vi /etc/vsftpd/vusers.txt 이 파일을 새로 생성해, 가상 사용자들의 이름과 패스워드를 써 넣는다. 그리고 가상의 저 사용자들을 db포맷으로 바꿔줘야 한다. -> db_load -T -t hash -f /etc/vsftpd/vusers.txt /etc/vsftpd/vt_user.db 그리고가상의 다른 사용자들이나 보안상을 위해 vt_user.db파일에 접근권한을 걸어준다.
사용자 인증에 사용할 pam 파일을 만든다. -> vi /etc/pam.d/vsftpd.pam을 열어서 다음과 같은 내용을 써 넣는다. auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vt_user account required /lib/security/pam_userdb.so db=/etc/vsftpd/vt_user 그다음은 가상 사용자계정 생성 및 홈 디렉터리를 지정해 줘야 한다. 가상 사용자계정 생성-> useradd virtual 가상 사용자 계정의 홈 디렉터리 생성 -> cd /home/virtual -> mkdir vuser1 vuser2(가상 유저들의 홈 디렉터리 생성) chown virtual.virtual * ->가상 유저 홈 디렉터리 소유권 변경 그리고 가상 사용자 계정을 위한 설정 파일이 필요하다. -> cp -p /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd_vt.conf 위치로 복사하여, 다음과 같이 설정을 해 준다.
anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_file=/var/log/vsftpd.log chroot_local_user=YES listen=YES listen_port=1004 guest_enable=YES 가상ftp 유저 운영 guest_username=virtual 가상유저의 실제 계정 지정 pam_service_name=vsftpd.pam 생성된 pam 파일이름 지정 pasv_min_port=30000 접속 port 대역 설정 pasv_max_port=30999 virtual_use_local_privs=YES 가상사용자에게 시스템사용자의 권한과 같은 권한 부여. 설정되어있지 않으면 익명 권한을 갖게됨 user_sub_token=$USER 가상유저에게 서로다른 홈디렉토리부여 local_root=/home/virtual/$USER 이 설정들을 마무리해주고 이 ftp를 다 실행시키면 계정이 만들어 집니다.
접속하기
파일 업로드 및 다운로드 업로드 - (임시 가상 파일 업로드) -> touch 12345.test 다운로드 -binary (대용량 파일을 받을때 이걸 타이핑 해 둔 후에 다운을 받는다.) get 다운받을 파일 이름