FTP & 접근제어

Linux/Linux (CentOS) 2018. 7. 20. 18:47

FTP ( File Transfer Protocol )


port : 20 ( data ) , 21 ( command )



1. Server ( Server A )


1) 설치


# yum -y install vsftpd.x86_64


2) 설정


# vi /etc/vsftpd/vsftpd.conf



3) 서비스 시작


# systemctl start vsftpd    

# systemctl enable vsftpd   <------ 자동실행 설정



- 확인


# ss -ant




4) 방화벽 설정


# firewall-cmd --zone=home --add-service=ftp --permanent

# firewall-cmd --reload   <----  --permanent 옵션사용시 사용




2. Client ( Windows , Linux )



1. Windows


- Web Browser

- http://        -> web 을 이용하겠다 ( 80 )

- ftp://          -> ftp  를 이용하겠다 ( 21 )


ex) ftp://100.100.100.100  <------- 브라우저 주소창에 작성



- 업로드 x 다운로드 o

- samba 와 같이 유저가 있어야한다



- File Zilla


Host            < server_ip >    or    < domain >

Username    < user_name ( 리눅스 사용자 ) >

Passwoer      < user_pw ( 리눅스 패스워드 ) >

Port             < ftp_port >


ex) 100.100.100.100 ,  linux 사용자연결

Username : linux

Password : ********


ex) 100.100.100.100 , 익명 사용자 연결

Username : anonymous

Password : X


- CMD ( Command )


cmd > ftp < server_ip > 


ftp > < ftp_command >


+------------------- FTP Command ------------------------+

ftp > dir                            목록확인

ftp > pwd                           작업디렉터리 확인

ftp > cd <path>                   이동

ftp > put <path> <path>       업로드

ftp > get <path> <path>       다운로드

ftp > quit                           종료



2) Linux ( Server B 100.100.100.110 )


- 설치


# yum -y install ftp.x86_64


# ftp < server_ip >



ex) ServerB:/root/serverB.txt 파일을 ServerA:/home/linux/ 로 업로드


ftp > put /root/serverB.txt /home/linux/serverB.txt



Server A에서 확인




ftp > put /root/serverB.txt /root/serverB.txt ( x )

- 접속한 id가 linux 이므로 root디렉터리를 수정할수 없다






------------------------------ [ 실 습 ] --------------------------------------


ServerB 에서

ServerA ftp 서버 접속

root 사용자 연결


ServerB # ftp 100.100.100.100

Name (100.100.100.100:root): root  <---------------- 로그인 실패

-----> 사용자 접근제어






A # vi /etc/vsftpd/vsftpd.conf


12 anonymous_enable=NO                   익명  접속 허용 여부


16 local_enable=YES                           로컬 사용자 접속 허용 여부


19 write_enable=YES                          쓰기 허용 여부


23 local_umask=022                            umask 값 설정


29 #anon_upload_enable=YES           익명 사용자 업로드 허용 여부 ( 주석 풀면 허용 )


33 #anon_mkdir_write_enable=YES  익명 사용자 디렉터리 생성 허용 여부


37 dirmessage_enable=YES                접속시 메세지 표시 여부


40 xferlog_enable=YES                      로그 사용 여부


43 connect_from_port_20=YES         port_num


53 #xferlog_file=/var/log/xferlog    로그 파일 위치 ( 바꾸고싶으면 주석풀고 원하는경로지정)


60 #idel_session_timeout=600          시간 제한( 초 )


63 #data_connection_timeout=120    데이터 전송 시간 제한 ( 초 ) 

114 listen=NO                                      x ( ipv4 )


123 listen_ipv6=YES                            standalone mode 서비스 사용

YES : standalond

NO  : xinetd daemon







           ----------------------- [ 접 근 제 어 설 정 ]  ------------------------


pam_service_name=vsftpd                pam 인증 사용시 사용 파일 이름 지정


userlist_enable=YES                         사용자 접근 제어 사용 여부


tcp_wrappers=YES                            tcp_wrapper( Host 접근제어 ) 사용 여부







3. 보안 설정


# vi /etc/vsftpd/vsftpd.conf


1) 익명 연결


12 anonymous_enable=NO


-> anonymous 사용자 로그인 불가능




2) 상위 디렉터리 접근 거부 ( chroot )


100 chroot_local_user=YES         chroot 사용 여부

-> 쓰기 거부

ERROR :  500 OOPS: vsftpd: refusing to run with writable root inside chroot()

-> 쓰기권한이 있어서 안된다

-> linux 사용자가 본인폴더에 w권한이 있으므로


101 allow_writeable_chroot=YES <-------- 추가해주면 접근 가능하다



- 모든 사용자 상위 디렉터리 접근 거부


 100 chroot_local_user=YES

 101 allow_writeable_chroot=YES



- 특정 사용자만 상위 디렉터리 접근 거부 


  100 chroot_local_user=NO

  101 allow_writeable_chroot=YES

  102 chroot_list_enable=YES

  104 #chroot_list_file=/etc/vsftpd/chroot_list





  # vi /etc/vsftpd/chroot_list  <----- 접근 거부하고싶은 사용자 입력


  ----- 한줄에 하나씩만 입력 -----

  - linux

  - s1




- 특정 사용자만 상위 디렉터리 접근 허용


 100 chroot_local_user=YES

 101 allow_writeable_chroot=YES

 102 chroot_list_enable=YES

 104 #chroot_list_file=/etc/vsftpd/chroot_list



 # vi etc/vsftpd/chroot_list  <----- 접근 허용하고싶은 사용자 입력


 ----- 한줄에 하나씩만 입력 -----

 - linux

 - s1




3) 접근 제어 설정


1. vsftpd 사용자 접근제어 ( user_list )


- 127 userlist_enable=YES  <------- 사용자 접근제어 사용중

- > /etc/vsftpd/user_list


# vi /etc/vsftpd/vsftpd.conf

128 userlist_deny=YES         user_list에 등록된 사용자만 접근 거부

128 userlist_deny=NO          user_list에 등록된 사용자만 접근 허용


ex) user_list 접근 거부시 출력되는 것들


530 Permission denied.

Login failed.

ftp > 




2. PAM : /etc/shadow 파일을 이용한 로그인 인증을 해주는 것이 바로 PAM 모듈


126 pam_service_name=vsftpd


# vi /etc/pam.d/vsftpd


sense=deny file=/etc/vsftpd/ftpusers


# vi /etc/vsftpd/ftpusers 


ex) pam 인증 거부

  

331 Please specify the password.

Password:

530 Login incorrect.

Login failed.

ftp > 



3. tcp_wrappers : Host 접근 제어


# vi /etc/vsftpd/vsftpd.conf


128 tcp_wrappers=YES


/etc/hosts.allow        :    허용할 호스트

/etc/hosts.deny        :     거부할 호스트



< service_name > : < host >


ex) 모든 서비스에 대해서 모든 호스트를 거부


# vi /etc/hosts.deny

ALL:ALL       




ex) 이때 , sshd 100.100.100. 네트워크 대역대만 허용


# vi /etc/hosts.allow

sshd:100.100.100.




ex) 하지만 100.100.100.200은 제외


# vi /etc/hosts.allow

sshd:100.100.100. EXCEPT 100.100.100.200





ex) vsftpd 100.100.100. 네트워크 대역대만 거부


# vi /etc/hosts.deny

vsftpd:100.100.100.




ex) 이때 100.100.100.110 호스트만 허용


# vi /etc/hosts.deny


vsftpd:100.100.100. EXCEPT 100.100.100.110






----------------------------------------- [ 실 습 - 접근제어] --------------------------------------------




- 호스트 ( Host ) 접근 제어


- host allow = 허용할 host

- host deny = 거부할 host 



ex) 100.100.100.200 과 100.100.100.210 호스트만 허용

- host allow = 100.100.100.200 100.100.100.210  <----- 공백을 구분자로 사용함


ex) 100.100.100.0 네트워크 대역대만 허용

- host allow = 100.100.100.   <------- 100.100.100.0 네트워크 대역대


ex) 100.100.100.110 호스트만 거부

- host deny = 100.100.100.110























'Linux > Linux (CentOS)' 카테고리의 다른 글

GNOME Desktop  (0) 2018.07.27
FTP (ACTIVE mode & PASSIVE mode) Xinetd  (0) 2018.07.26
확장된 파일 시스템  (0) 2018.07.17
디스크 관리  (0) 2018.07.16
Network  (0) 2018.07.13

설정

트랙백

댓글