나의 IT일지
FTP서버 본문
서버
서버란 서비스를 제공하는 프로그램이 설치되어 있는 컴퓨터로, 클라이언트가 서비스를 요청하면 서버는 해당 서비스가 존재하면 클라이언트에게 서비스를 제공한다. 이때 클라이언트에는 해당 서버의 서비스를 사용하기 위해서 서비스에 맞는 클라이언트 프로그램이 설치되어 있어야 한다.
- 프로그램 설치
- yum install [패키지명] : 해당 패키지를 설치하는 명령어
- rpm -qa [패키지명] : 해당 패키지가 설치 되었는지 확인하는 명령어
- rpm -ql [패키지명] : 패키지를 구성하는 파일 확인하는 명령어
- /usr/lib/systemd/system/[데몬].service : 서버 패키지의 데몬 파일
- /etc/[데몬]/[데몬].conf : 서버 패키지의 설정파일
- /usr/sbin/[데몬] : 서버 실행 파일
- yum install [패키지명] : 해당 패키지를 설치하는 명령어
- 서버 활성화
- service [데몬 명] start : 서버를 활성화 하는 명령어 (= systemctl start [데몬 명] (in Centos7))
- service [데몬 명] stop : 서버를 비 활성화 하는 명령어 ( = systemctl stop [데몬 명] (in Centos7))
- service [데몬명] restart : 서버를 재 활성화 하는 명령어 ( =systemctl restart [데몬 명] (in Centos7))
- netstat -lntup |grep [데몬 명] : 현재 운영체제에서 사용중인 포트와 해당 포트를 사용하는 서비스를 확인하는 명령어
- 데몬 자동 실행
- chkconfig --level 35 [데몬 명] on : 해당 데몬은 런레벨 3, 5일 때, 자동적으로 실행하게 하는 명령어
- systemctl enable [데몬 명] : 해당 데몬은 운영체제가 실행되었을 때, 자동 실행 하도록 하는 명령어
- systemctl list-unit-files : 자동실행 프로세스를 확인하는 명령어
- 방화벽 설정
- service firewalld stop : 방화벽을 비활성화 하는 명령어
- service firewalld start : 방화벽을 활성화 하는 명령어
- service firewalld restart : 방화벽을 재 활성화 하는 명령어
- firewall-cmd --add-service=[서비스 명] : 해당 서버의 방화벽 해제 (재부팅시 내용삭제)
- /etc/services 파일에 서비스마다 사용하는 포트가 저장되어 있으며, 해당 파일을 기반으로 방화벽 설정
- firewall-cmd --permanent --add-service=[서비스명] : 해당 서버의 방화벽을 영구적으로 해제
- firewall-cmd --add-port=[포트번호/tcpudp] : 해당 포트의 방화벽 해제 (재부팅시 내용삭제)
- firewall-cmd --permanent --add-port=[포트번호/tcpudp] : 해당 포트의 방화벽을 영구적으로 해제
- firewall-cmd --reload : 방화벽 재적용
- firewall-cmd --list-all : 방화벽 적용상태 확인
- firewall-cmd --add-service=[서비스 명] : 해당 서버의 방화벽 해제 (재부팅시 내용삭제)
FTP 서버
FTP란 파일을 전송하기 위한 프로토콜로, 서버에 저장되어 있는 데이터를 다운로드하거나 서버에 데이터를 저장하는 서비스를 제공한다.
- FTP서버 패키지 : vsftpd
- /etc/vsftpd/vsftpd.conf : ftp서버의 설정 파일
- /usr/sbin/vsftpd : ftp서버의 데몬 실행 파일
- /usr/lib/systemd/system/vsftpd.service : ftp서버의 데몬 파일
- /etc/rc.d/init.d/vsftpd : CentOS 6버전 이전까지 사용한 ftp서버의 데몬 파일
- FTP클라이언트 패키지 : ftp
- /usr/bin/ftp : ftp클라이언트 실행 파일
이때, 평문 형태로 패킷이 전송된다. 즉 FTP를 통해 데이터를 업로드 다운로드하는 경우, 해당 데이터를 확인 할 수 있다. 그래서 SSH를 사용하여 안전하고 암호화된 방법으로 파일을 전송하는 SFTP를 사용한다.
FTP는 사용자가 접속할 때 사용하는 포트(ftp : 21)와 데이터를 서버에 업로드 다운로드 할 때 사용하는 포트가 나눠져 있으며, Active Mode인지 Passive Mode인지 따라서 데이터를 전송할 때 사용하는 포트가 달라진다.
- active mode : 고정된 포트를 사용하는 방법 (ftp-data : 20)
- 클라이언트에서 데이터 채널을 전송하는 경우
- 방식 : 클라이언트가 서버쪽으로 접속 → 서버에게 데이터 채널 생성을 요청함 → 서버의 20번포트에서 데이터 채널 → 서버가 클라이언트에게 데이터 채널 생성을 알림
- passive mode : 유동적인 포트를 사용하는 방법 (ftp-data : random)
- 서버에서 데이터 채널을 보내는 형식
- 방식 : 클라이언트가 서버쪽으로 접속 → 서버에게 데이터 채널 생성을 요청함 → 서버는 1024~65535까지의 랜덤한 포트 [보통45000~60000사이]에 데이터 채널 생성 → 서버가 랜덤한 포트에 데이터 채널 생성을 알림
xferlog 파일 | |
서버와 클라이언트간 데이터 파일이 전송이 되었을 경우, 해당 파일에 전송기록이 남는다. 즉, 해당 파일은 데이터 파일의 송수신 관련 기록을 저장하는 파일이다.
|
|
기록 구성 | 의미 |
송수신 시각 | 데이터가 송수신이 발생한 시각을 기록 (요일 월 일 시: 분: 초 년도) |
송수신 걸린 시간 | 데이터가 송수신하는 데 걸린 시간을 기록 |
접속자의 IP | 데이터 송수신 대상을 기록 |
파일용량 | 데이터 파일의 용량을 기록 |
파일 위치 | 데이터 파일의 위치를 기록 |
데이터 전송 파일 형식 | 전송되는 데이터 파일 형식을 기록 (binary : 프로그램형 파일, ascii : 문서형 파일) |
압축상태 | 해당 파일의 압축 전송 여부를 기록 (c : 압축 전송, _ : 일반 전송) |
업로드, 다운로드 | 데이터의 업로드, 다운로드 여부를 기록 (input : upload, output : download) |
익병계정, 실제계정 | 데이터 파일의 교환에 사용된 계정의 종류를 기록 (a : 익명계정, r : 실제계정) |
계정명 | 해당 서버에 접속되어서 파일을 교환한 계정 명을 기록 |
서비스 | 데이터 파일 교환에 사용된 서비스, 프로토콜을 기록 |
인증 방식 | 해당 서버에 접속한 접속 방법의 인증 방식 기록 ( 0 : 정상 인증 접속 , 1 : rfc931 원격 인증 접속) |
정상 전송 완료 | 데이터 파일이 정상적으로 데이터를 전송하고 종료했는지 기록 ( i : 실패 , c : 성공) |
FTP서버 접속
클라이언트에서 FTP서버로 접속하기 위해서는 클라이언트 프로그램을 설치되어야 FTP 서버의 접근이 가능하다.
- ftp [서버 IP주소 / 서버 도메인] : FTP 서버에 접속하는 명령어
- Centos 7의 telnet 클라이언트 설치 방법 : yum install ftp
- 윈도우에는 ftp클라이언트 기능이 자동적으로 설치 되어 있다.
- 그 외 클라이언트 프로그램 : 알FTP
FTP 서버 설정
- 설정파일 : vi /etc/vsftpd.conf
- ftp 기초 설정
- local_enable : 일반 계정 사용 여부 (default : yes) (yes : 사용, no : 비사용)
- write_enable : FTP 사용 중 해당 계정을 통한 수정 가능 여부
- local_umask : 파일을 업로드 하는 경우 적용시키는 umask
- dirmessage_enable : FTP사용 중 디렉토리를 변경하는 경우, ".message"파일의 내용이 출력 여부
- xferlog_enable : xferlog 파일에 기록 여부
- xferlog_file : xferlog 파일 결정
- xferlog_std_format : xferlog 파일에 FTP사용 내역 기록 여부
- /var/log/vsftpd.log : xferlog파일에 기록하지 않는다면 대신 FTP사용내역을 기록하는 파일
- connect_from_port_20 : 액티브 모드 사용 시, 20번 포트 사용 여부
- asyn_abor_enable : 비동기화 기능 사용 여부
- yes : 데이터 송수신중 서버가 차단되었을 경우, 해당 데이터는 송수신 완료후 서버 차단
- no : 데이터 송수신중 서버가 차단되었을 경우, 데이터 송수신 취소후 서버 차단
- ftpd_banner : ftp 서버에 접속할 때, 출력하는 배너
- banner_file : 배너의 파일 위치
- max_clients : 접속 가능한 최대 세션 수 설정
- max_per_ip : 한 호스트당 최대로 접속 가능한 세션 수 설정
- 세션 관리 설정
- idle_session_timeout : 세션 연결 후 어떠한 행동을 하지 않을 경우, 세션을 차단 시킬때까지 대기 시간 설정
- data_connection_timeout : 데이터 전송이 완료후, 데이터 전송 세션을 차단 시킬때까지의 대기시간 설정
- 문서 파일 송수신 설정
- ascii_upload_enable : 문서 파일 업로드 여부
- ascli_download_enable : 문서 파일 다운로드 여부
- 익명(anonymous) 계정 ftp 설정
- anonymous_enable : 익명 게정 사용 여부 (default : yes) (yes : 사용, no : 비사용)
- anon_upload_enable : 익명 계정의 업로드 권한 여부 (default : no)
- anon_mkdir_write_enable : 익명 계정의 디렉토리 생성 권한 여부 (default : no)
- anon_root : 익명계정 접속위치 지정
- /var/ftp : 익명 계정 홈디렉토리
- 홈 디렉토리 이동 제한 설정 (chroot 환경 설정)
- chroot_local_user : 홈디렉토리의 상위 디렉토리에 접근 할 수 없는 기능(chroot 환경) 활성화 여부 (default : no)
- allow_writeable_chroot : chroot 환경 사용 중, 사용자에게 쓰기 권한 부여 여부
- chroot_list_enable : 디렉토리 이동제한 예외리스트 활성화여부
- chroot_list_file=/etc/vsftpd/chroot_list : 디렉토리 이동제한을 예외처리할 LIST위치지정
- chroot_local_user : 홈디렉토리의 상위 디렉토리에 접근 할 수 없는 기능(chroot 환경) 활성화 여부 (default : no)
- passive 모드 설정
- pasv_enable : 패시브 모드 사용 여부 (기본 사용 포트 : 1024-65535)
- pasv_min_port : 패시브 모드에서 사용하는 최소 포트
- pasv_max_port : 패시브 모드에서 사용하는 최대 포트
- ftp 기초 설정
ftp 서버 계정 차단
FTP서버는 기본적으로 보안 상 접속하지 못하도록 계정을 차단한다. 이떄 차단하는 방식은 계정을 차단하는 방식과 계정의 패스워드를 차단하는 방식이 있다. 만약 계정의 차단을 해제하기 위해서는 계정 차단과 패스워드 차단을 해제해야 한다.
- 계정 차단 방식
- userlist_enable : 계정 차단 기능을 사용여부
- /etc/vsftpd/user_list : 차단 기능이 적용되는 계정 목록
- userlist_file : 별도의 차단 목록 파일지정
- userlist_deny : 계정 차단 기능 타입 설정
- YES(접근거부) : no_access 타입 (블랙 리스트)
- NO (접근 허가) : only_from 타입 (화이트 리스트)
- userlist_enable : 계정 차단 기능을 사용여부
- 패스워드 차단 방식 (pam 사용 방식)
- pam_service_name : pam 사용하는 서비스 이름 설정
- /etc/pam.d/vsftpd : vsftpd의 pam 설정 파일
- /etc/ftpusers : pam을 통한 차단 계정 목록
- pam_service_name : pam 사용하는 서비스 이름 설정
PAM(Pluggable Authentication Modules) |
찰탁형 인증 모듈로, 유닉스 계열에서 제공하는 별도의 사용자 인증 서비스이다. 해당 서비스를 통해 1차적으로 계정을 보안 정책을 적용하더라도, 2차적으로 OTP 등 추가 보안 정책을 적용할 수 있다. |
'정보보안' 카테고리의 다른 글
암호학 (0) | 2023.07.20 |
---|---|
telnet 서버와 xinet (0) | 2023.07.19 |
스왑과 쿼터 (0) | 2023.07.10 |
윈도우 설치 및 보안 정책 (0) | 2023.07.05 |
네트워크 공격 (0) | 2023.07.05 |
Comments