글
FTP & 접근제어
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 |