FTP
TCP/IP 환경에서 파일전송용 application protocol
시스템에 등록된 사용자들을 위한 FTP Service와 익명의 모든 사용자에게 개방하는 anonymous FTP service가 있음
FTP는 TCP 기반으로서 TCP 서비스만 사용하게 됨
20번의 DATA 포트(데이터 전송용)와 Control 포트인 21번 포트 2개의 포트 사용
FTP 모드에 따라 Data 포트가 항상 20번 포트를 사용하는것은 아님 (active>data port=20)
Active와 Passive 모드가 있으며 접속요청을 하는 클라이언트가 결정하게됨
Active FTP
1. 서버 컨트롤포트(21)에게 접속하면서 데이터포트(5151)도 함께 알려준다.
2. 연결
3. 서버 데이터포트(20)로 클라이언트 데이터포트(5151)로 접근
4. 데이터 교환
엑티브 모드인 경우 서버가 클라이언트로 접속한다라는게 문제
기본 FTP 도구를 사용하려면 firewall 설정을 해주어야 한다.
전용 프로그램을 사용하면 그럴 필요 없음
Passive FTP
1. 서버 컨트롤포트(21)에게 접속
2. 랜덤포트 하나를 만들어서 클라이언트에게 전달
3. 클라이언트 데이터포트(5151)에서 랜덤포트로 접근
4. 데이터 교환
모든 랜덤포트를 열고 대기할 수는 없어서
데이터포트로 사용할 포트 범위를 설정하고 방화벽에서 미리 풀어줘야한다.
/etc/vsftpd/vsftpd.conf
vsftpd 메인 설정 파일
line 60 트래픽 관리를 해주어야한다.
세션관리 - 굉장히 중요하다.
linux01 = server
win10 = client(file zilla/설치 시 방화벽 열림)
linux01 패키지 설치 및 방화벽 설정
itbank 계정으로 접속
바탕화면에 txt파일 만들고 더블클릭만 해주면 linux01으로 업로드
/usr와 같이 허가권이 없는 디렉토리의 경우 전송 오류가 발생한다.
익명 사용자로 연결
/var/ftp 디렉토리로 연결됨
/var/ftp/pub 디렉토리안에서 익명사용자로 쓰기작업이 진행된다.
하지만 실제로는 other의 쓰기 권한까지 부여해주어야 작업이 가능하다.
접속을 한상태에서 리모트사이트에 우클릭 디렉토리 만들기도 가능하다.
연결조차 되지 않음
익명사용자는 제한이 많이 걸려있다.
Active & Passive mode 사용
엑세스 허용을 누르면 자동으로 방화벽 설정이 추가된다.
wireshark로 확인해보면
20번 포트 사용(active mode)
연결을 끊고 전송모드를 수동형
랜던포트 3500~3550 중 3502으로 연결(passive mode)
chroot
사용자 격리, 허용된 공간만 사용 가능하게 설정
예외의 사용자들을 chroot_list에 추가(itbank)
itbank로 로그인하면 예외리스트에 추가해놓았기 때문에 다른곳도 접근 가능
s1으로 로그인했을시 /home/s1에서 시작하고 다른곳을 사용 불가능
특정 확장자 거부
확장자를 인식해서 거부하는건 아니고 파일이름으로 거부
133번 줄을 허용하겠다
.exe .sh 파일을 거부하겠다
2.exe 파일 업로드시 차단됨
TCP-Wrapper
서버에 TCP연결 요청이 전송되면, 정당한 사용자인지 확인하는 Linux 보안 기능
/etc/hosts.allow : 서비스 접속을 허용 할 HOST를 정의하는 파일
/etc/hosts.deny : 서비스 접속을 거부 할 HOST를 정의하는 파일
hosts.allow랑 hosts.deny가 싸우면 allow가 이김 (white list 방식)
패키지 설치
hosts.allow hosts.deny 작성방법
구문 > [서비스명(데몬명)] : [호스트 주소]
ex) sshd:1.1.1.1
ex) vsftpd:2.2.2.2 3.3.3.3
ex) sshd:192.168.1.0/24
ex) sshd:192.168.1.0/255.255.255.0
ex) vsftpd:192.168.1.
ex) ALL:ALL
vi /etc/hosts.deny
vsftpd로 들어오는 모든 접속을 차단하겠다.
vi /etc/hosts.allow
192.168.1.200에서 vsftpd로 들어오는 모든 접속은 허용하겠다.
로그기록
누가, 언제, 어디에서, 뭘 했는지 파악
시간 / 전송에걸린시간 / 누가 / 파일사이즈 / 파일명 / a=ASCII b=binary / _ / i=incoming o=outgoing (서버기준) / 인증방식 / 계정명 / 연결방식 / 추가인증 / 추가인증사용자 / c=성공 i=실패
'[Linux]' 카테고리의 다른 글
[Linux] 리눅스 NFS / 오토마운트(autofs) (0) | 2022.06.15 |
---|---|
[Linux] FTP 실습 (0) | 2022.06.14 |
[Linux] 리눅스 ssh scp (0) | 2022.06.13 |
[Linux] 리눅스 원격접속 telnet / ssh (0) | 2022.06.10 |
[Linux] 리눅스 DHCP / DHCP 예약 / DHCP failover 구성 (0) | 2022.06.09 |