■ vsftpd 설치
BASH
[root@localhost ~]# yum install vsftpd / rpm -ivh
.
.
============================================================================== Package Arch Version Repository Size ============================================================================== Installing: vsftpd x86_64 3.0.2-21.el7 base 169 k Transaction Summary ============================================================================== Install 1 Package Total download size: 169 k Installed size: 348 k Is this ok [y/d/N]: y
.
.
Running transaction Installing : vsftpd-3.0.2-21.el7.x86_64 1/1 Verifying : vsftpd-3.0.2-21.el7.x86_64 1/1 Installed: vsftpd.x86_64 0:3.0.2-21.el7 Complete!
■ vsftpd.conf (환경설정)
BASH
[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf
.
.
.
12 anonymous_enable=NO (YES → NO 변경)
// 익명 유저 로그인을 차단합니다. YES 되어있을 경우 아무나 접속할 수 있으므로 보안에 취약
.
.
.
100 chroot_local_user=YES (# 주석 제거 / 또는 추가)
// 주석을 제거하고 FTP 일반 계정으로 접속 하게 되면 계정에 대한 홈 디렉터리가 아닌 / 디렉터리로 접속 (파일질라 기준)( 다시 주석처리해주고 FTP 재시작하게 되면 정상적으로 사용자에 홈디렉터리로 접속가능)
(맨 아래줄에 별도 추가)
129 pasv_enable=YES (추가) // passive 모드 활성화
131 pasv_min_port=50001 (추가) // 클라이언트가 21번으로 요청을 하게 되면 min, max port 사이에 포트로 연결
132 pasv_max_port=50005 (추가)
134 allow_writeable_chroot=YES (추가)
// 사용자 디렉터리에 쓰기 권한이 있을 때 이 항목을 추가 안하면 500 에러 발생
:wq (저장)
(Passive 모드의 특징)
- PC클라이언트에서 서버 쪽으로 21번 포트 통신 응답을 시도합니다.
- 서버측에서 응답을 받을 경우 서버에서 사용할 두 번째 포트(1024~65535 포트)를 알려줍니다.
- PC클라이언트는 다른 포트를 열어 서버가 알려준 두 번째 포트로 접속을 시도하고 데이터를 전송합니다.
- 하지만 서버에서 모든 두번째 포트(1024~65535 포트)를 개방하고 알려야 하는 문제가 있지만 접속 범위를 설정하여 문제를 해결할 수 있습니다.
■ pasv_min_port=50001 / 접속 포트 설정의 최소범위 (위 포트 범위 내에서 임의 설정 가능)
■ pasv_max_port=50005 / 접속 포트 설정의 최대 범위 (위 포트 범위 내에서 임의 설정 가능)
■ allow_writeable_chroot=YES / 상위 버전부터는 일반계정 유저에 홈 디렉터리에 쓰기 권한이 있을 경우 해당 옵션을 꼭 주어야 합니다.
안 할 경우 : 500 OOPS: vsftpd: refusing to run with writable root inside chroot() 에러발생[스크린샷 참고]
BASH
[root@localhost ~]# systemctl enable vsftpd ( 활성화 )
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
[root@localhost ~]# systemctl start vsftpd ( 서비스 시작 )
[root@localhost ~]# ps -ef |grep vsftpd ( 구동 확인 )
root 27023 1 0 20:50? 00:00:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf root 27025 2547 0 20:50 pts/1 00:00:00 grep --color=auto vsftpd
■ 방화벽 설정
BASH
[root@localhost ~]# vi /etc/sysconfig/iptables <-- CentOS6에 기준 CentOS7은 firewalld가 기본
# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state RELATED, ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT (추가)
-A INPUT -p tcp -m state --state NEW -m tcp --dport 50001:50005 -j ACCEPT (추가)
-A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
BASH
[root@localhost ~]# service iptables restart (재시작 후)
[root@localhost ~]# iptables -nL (적용 확인)
■ 테스트할 FTP 일반계정 생성
BASH
[root@localhost ~]# useradd test (계정 생성)
BASH
[root@localhost ~]# passwd test (패스워드 설정)
New password: 패스워드 입력 Re-enter new password: 재확인 패스워드 입력
BASH
[root@localhost ~]# vi /etc/passwd (계정 생성 확인)
.
test:x:1001:1001::/home/test:/bin/bash (생성될 시 일반적으로 순차적으로 맨 아래에 생성됩니다.)
BASH
'linux > CentOS' 카테고리의 다른 글
RHEL 7 Teaming 설정 방법 (0) | 2021.01.19 |
---|---|
[CentOS7] 리눅스 DNS 서버 구축 (0) | 2021.01.05 |
가상호스트(virtual host)란? (2) | 2020.06.16 |
[CentOS7 APM 설치] (0) | 2020.06.16 |
CentOS 7 firewall 방화벽 설정 (0) | 2020.04.01 |