0. FTP
- File Transfer Protocol; 파일 전송에 관련된 프로토콜
- FTP를 이용한 서버를 운영하여 client와 파일을 공유한다.
> client가 FTP server에 접속하여 자신의 파일을 server에 넘겨주거나(upload)
server에 있는 파일을 내 컴퓨터로 전송(download)하는 방식으로 사용
- FTP 프로그램도 여러가지가 있으나 vsftpd 사용하여 실습
- FTP server는 두 가지로 분류
로컬 FTP server : FTP server가 설치된 OS의 사용자 계정들이 접속하는 FTP
익명 FTP server : 누구나 접근 가능한 FTP
- FTP는 active mode와 passive mode로 분류
1) active mode
기본 사용 상태
접속은 client가 FTP server로 접속하여 명령어를 주고 받음(client:random1 -> server:21)
데이터를 주고 받게 되면 client는 FTP server에게 자신의 data port를 알려주고
FTP server가 client로 연결하여 data 전송(server:20 -> client:random2)
> FTP server와 client 전부 방화벽 설정이 필요
2) passive mode
active mode에서 별도의 명령어를 입력하여 passive mode로 전환
접속은 client가 FTP server로 접속하여 명령어를 주고 받음(client:random1 -> server:21)
데이터를 주고 받게 되면 Passive mode 상태여서 server가 client에게 data port를 알려주고
client가 FTP server로 연결하여 data전송(client:random2 -> Server:random)
> FTP server에서만 방화벽을 설정, random port를 사용하기 때문에 service로 방화벽 제어
* 현재 윈도우에서는 passive mode를 지원하지 않는다.
- 정보
패키지 : vsftpd-*
데몬 : vsftpd
방화벽 : port=21 + 20 + random/tcp, service=ftp
설정파일 : /etc/vsftpd/vsftpd.conf
- 설치 및 사용
yum -y -install vsftpd-*
systemctl restart vsftpd
firewall-cmd --permanent --add-service=ftp : 방화벽 예외처리 셋팅
firewall-cmd --reload
윈도우 cmd ftp 접속
ftp 192.168.10.128
사용자(192.168.10.128:(none)): anonymous
331 Please specify the password.
암호: 입력 없이 엔터
230 Login successful.
ftp> : 익명 FTP 접속
1. ftp 설정 파일 가지고 놀아보기
[root@server ~]# ll /etc/vsftpd/vsftpd.conf
-rw------- 1 root root 5116 6월 10 2021 /etc/vsftpd/vsftpd.conf
[root@server ~]# vi /etc/vsftpd/vsftpd.conf
11 # Allow anonymous FTP? (Beware - allowed by default if you comment this out).
12 anonymous_enable=NO : 익명 접속 허용 여부
15 # When SELinux is enforcing check for SE bool ftp_home_dir
16 local_enable=YES
저장 후 나가서 데몬 재실행
systemctl restart vsftpd
윈도우 cmd ftp 접속
ftp 192.168.10.128
사용자(192.168.10.128:(none)): anonymous
331 Please specify the password.
암호:
530 Login incorrect.
로그인하지 못했습니다. : 설정 바꾼 후 접속 불가
C:\Users\user>ftp 192.168.10.128
192.168.10.128에 연결되었습니다.
500 OOPS: vsftpd: both local and anonymous access disabled!
원격 호스트에 의해 연결이 닫혔습니다. : 둘다 접속을 거부해 놓은 경우
접속 할 때 메세지 띄우기
37 dirmessage_enable=YES
echo "내용" : 내용을 화면에 출력
echo "내용" >> 파일명 : 화면에 출력된 내용을 파일에 저장
[root@server ~]# cd ~itbank
[root@server itbank]# echo "itbank's home" >> .message
[root@server itbank]# echo "directory /home" >> ../.message
[root@server itbank]# ls -la ./ ../
C:\Users\user>ftp 192.168.10.128
192.168.10.128에 연결되었습니다.
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
사용자(192.168.10.128:(none)): itbank
331 Please specify the password.
암호:
230-itbank's home
230 Login successful.
ftp> cd ../
250-directory /home
250 Directory successfully changed.
ftp>
42 # Make sure PORT transfer connections originate from port 20 (ftp-data).
43 connect_from_port_20=YES
* 익명 사용자가 업로드한 파일의 소유권에 대한 제어
48 #chown_uploads=YES
49 #chown_username=whoever
60 #idle_session_timeout=600 : 세션 유지 시간
63 #data_connection_timeout=120 : 데이터 연결 후에 타임까지 걸리는 시간
87 #ftpd_banner=Welcome to blah FTP service. : 접속 시 메세지 띄우는 banner 설정
91 #deny_email_enable=YES : 익명 접속 시 이메일 형식의 아이디 사용
93 #banned_email_file=/etc/vsftpd/banned_emails : 특정 이메일 주소는 접속 불가하게 조치
110 #ls_recurse_enable=YES : ls -R 옵션 허용 여부 (default no)
* recurse 옵션 : 하위 디렉터리의 내부까지 보여주는 것
도스나 디도스 공격에 악용될 소지가 있어서 기본적으로 허용되지 않는다.
ftp 접속 상태로 ls -l은 사용 가능
115 listen=NO : 데몬프로세스 동작을 standalone / 일반 설정으로 할지
* standalone : 자체적으로 동작하는 데몬이다
CentOS 6버전까지는 YES 7버전부터 systemd에 종속된 상태로 사용하도록 바뀌면서 기본값 NO
IPv4는 보안성이 낮아 기본값 NO, IPv6는 보안성이 높아서 기본값 YES
*chroot : 로컬 사용자격리에 관한 옵션
* 사용자 격리
모든 사용자는 최초 접속 시 자신의 홈디렉토리에서 시작하도록 되어있음
익명 사용자의 경우에 처음 접속 시 /var/ftp/pub으로 시작되지만 : find / -name pub -type d
pwd 명령를 치거나 cd를 해도 항상 "/"에 위치한 것으로 보여짐
보안을 위해 익명의 사용자는 시작 디렉토리를 벗어 날 수 없음
로컬 사용자의 경우에는 기본적으로 /home 디렉토리 이상 벗어나지 못하게 되어 있음
* chroot 옵션을 통해 변경 가능
100 # chroot)
101 #chroot_local_user=YES
102 #chroot_list_enable=YES
103 # (default follows)
104 #chroot_list_file=/etc/vsftpd/chroot_list
105 #
100 # chroot)
101 chroot_local_user=YES
102 chroot_list_enable=YES
103 # (default follows)
104 chroot_list_file=/etc/vsftpd/chroot_list : touch /etc/vsftpd/chroot_list 만들기
105 allow_writeable_chroot=YES : 해당 구문 추가
106 #
저장 후 데몬 재실행 >> ftp 로컬 사용자 접속 시도 성공
로컬 사용자도 익명 사용자 처럼 /var/ftp/pub에 사용자 격리되는 것을 확인 할 수 있다.
[root@server var]# echo "itbank" >> /etc/vsftpd/chroot_list
[root@server var]# cat /etc/vsftpd//chroot_list
list 파일에다가 사용자 이름을 넣어주면 자신의 로컬 시작 디렉터리(/home/itbank)에서
시작하는 것을 볼 수 있다. 그러나 상위 /home 폴더로는 이동 불가
3. 실습
익명 사용자가 파일 업로드를 할 수 있도록 설정해보기
* FTP 접속 후 권한 변경은 반칙
Step 1. ftp 설정 변경
[root@server pub]# vi /etc/vsftpd/vsftpd.conf
29 anon_upload_enable=YES
33 anon_mkdir_write_enable=YES
설정 변경저장 후 재실행
ftp로 익명 접속 후 파일 업로드 안됨 (권한이 없음)
Step 2. 시작 폴더 권한 변경
[root@server pub]# chmod 757 /var/ftp/pub
pub 디렉토리의 권한지정
익명 ftp 접속 후 cd pub 으로 들어가서 파일 업로드하면 성공
'Base > Linux(CentOS)' 카테고리의 다른 글
17. NFS / autofs 네크워트 마운트 사용 (0) | 2022.06.27 |
---|---|
16 . auto mount (0) | 2022.06.27 |
14. remote access (3- VNC) (0) | 2022.06.25 |
13. remote access (2 - ssh / scp / sftp) (0) | 2022.06.23 |
12. remote access (1 - telnet) + CD 마운트 + firewall(방화벽) (0) | 2022.06.21 |
댓글