리눅스 vsFTP 서버 / 서비스 유형 / Firewall, NAT
기본 구성
FTP 서버 모드
Positive 모드
- 21 : ftp 클라이언트에서 ftp 서버 포트로 접속한다. (명령 전송 포트)
- 20 : ftp 서버에서 ftp 클라이언트 포트로 접속한다. (데이터 전송 포트)
- 먼저 클라이언트에서 서버의 21번 포트로 접속 후 클라이언트가 사용할 두 번째 포트를 서버에게 알려준다.
- 서버는 이에 대한 ack 로 응답하고(여기까지 일반적인 TCP/IP 작동방식임), 서버의 20번 포트는 클라이언트가 알려준 두 번째 포트로 접속을 시도한다.
- 마지막으로 클라이언트가 ack로 응답한다.
Passive 모드
- 21 : ftp 클라이언트에서 ftp 서버 포트로 접속한다. (명령 전송 포트)
- 1024 포트 이상 사용 : ftp 서버에서 ftp 클라이언트 포트로 접속한다. (데이터 전송 포트)
- 먼저 클라이언트가 command 포트로 접속을 시도하면 서버에서는 서버가 사용할 두 번째 포트를 알려준다.
- 클라이언트는 다른 포트를 열어 서버가 알려준 이 포트로 접속을 시도하고, 서버는 ack로 응답한다.
- 단점은 비 특권포트(1024부터 65535까지)를 방화벽에서 모두 열어 주어야 한다는 것이다. ( 그러나 대부분 FTP서버에서 포트를 제한할수 있다. )
- passive 모드에서는 두 번째 data 포트로서 active 모드가 사용했던 20번을 사용하지 않고 대신 1024 이후의 임의의 비특권 포트를 사용하게 된다.
참고
# vi /etc/vsftpd.conf
pasv_enable=YES <= 추가
pasv_min_port=54040 <= 추가
pasv_max_port=54050 <= 추가
VSFTP (Very Secure FTP Daemon)
- vsftp 는
보안
부분을 특히 강조한 데몬으로 Redhat, Suse, Open-BSD 에서 기본 FTP로 채택하고 있으며,보안, 빠른 퍼모먼스, 안정성
을 주요 특징으로 소개하고 있고 그 성능도 여느 ftp 서버 보다 탁월하다.
user 비고립화 시키기
# yum -y install vsftpd
# service vsftpd restart
# useradd user1
# passwd user1
user 고립화 시키기
# useradd user2
# passwd user2
# cd /etc/vsftpd
# vi vsftpd.conf
chroot_list_enable=YES 96행
chroot_list_file=/etc/vsftpd/chroot_list 98행
# cd /etc/vsftpd
# touch chroot_list
# vi chroot_list
user2
# service vsftpd restart
user FTP 접근 제한 시키기
# useradd user3
# passwd user3
# cd /etc/vsftpd
# vi ftpusers
user3
# vi user_list
user3
# service vsftpd restart
anonymous 구성하기
# cd /etc/vsftpd
# vi vsftpd.conf
anonymous_enable=YES 12행
write_enable=YES 18행
anon_upload_enable=YES 27행
anon_mkdir_write_enable=YES 31행
# chmod 755 /var/ftp
# service vsftpd restart
Ex. user1
문제
# mkdir /dir1
# chmod 1777 /dir1
# cd /etc/vsftpd
# vi vsftpd.conf
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
# cd /etc/vsftpd
# touch chroot_list
# vi chroot_list
user4
user5
# vi /etc/passwd
user4 /dir1
user5 /dir1
# service vsftpd restart
WA2003)
- C드라이브에 dir 폴더를 생성 후, 4랑 5 텍스트 파일을 만들기
ftp 192.168.10.2
user4 / 4
lcd c:\dir
put 4.txt <- 가져오기
get 5.txt <- 업로드
mkdir user4 <- user4 파일 생성
서비스 유형
데몬이란?
- 데몬이란 시스템에 관련된 작업을 하는 후위 프로세스 (background process)
- 대부분의 데몬은 시스템에 관련된 작업을 하게 되는데, 서비스 요청이 없을 때는 후위 프로세스로서 유후(idle)상태에 들어가 있게 되어 시스템의 CPU를 차지하지 않지만 메모리와 기타 자원을 상당수 차지하게 된다
standalone 방식
- 서비스를 하려면 해당 서버가
메모리에 미리 올라와 있어야 한다.
여기에 해당되는 서비스는 sendmail, apache, mysql, name server, nfs 등 이며, 이 방식으로 운영되는 서비스는
/etc/init.d/
에 있는 스크립트 파일을 보면 알 수 있다.- 독립적으로 실행되는 모드
- 독립적으로 실행되며 항상 메모리에 상주하여 서비스 요청이 있을 때 언제든 바로 응답
- 빠른 응답속도를 요하는 경우 이 모두 사용
- 백그라운드 프로세스
1. standalone 서비스 자동 실행 방법
ntsysv
(chkconfig)는 부팅시 데몬의 실행여부 제어함service [데몬] [상태]
(/etc/rc.d/init.d = /etc/init.d/)는 실행중인 데몬을 제어함.- system-config-services는 그래픽 환경에서만 실행됨
- ntsysv
- chkconfig
chkconfig [옵션] 데몬 [상태]
- Linux 리스트 확인
# chkconfig --list [프로그램명]
- Linux 시작시 실행되도록 설정
# chkconfig [프로그램명] on
- Linux 시작시 실행되지 않도록 설정
# chkconfig [프로그램명] off
- Linux 런 레벨별로 시작시 실행되도록 설정
# chkconfig --level [레벨] [프로그램명] on
- Linux 런 레벨별로 시작시 실행되지 않도록 설정
# chkconfig --level [레벨] [프로그램명] off
Ex. 서비스 유형
방법
- vsftp 서버 설치
mount /dev/cdrom /cdrom
cd /cdrom/CentOS
(yum -y remove ftpd)
rpm -ivh vsftpd-2.0.5-16.e15_4.1.i386.rpm
- vi 편집
vi /etc/vsftpd/vsftpd.conf
:set nu
:109
Linsten=NO
- restart
/etc/rc.d/init.d/vsftpd restart
하면 fail
이 뜬다.
cd /etc/xinetd.d
복사 후 vi 편집
cp ekrb5-telnet vsftp
vi vsftp
service telnet
{
disable = no
flags = reuse
socket_type = stream
wait = no
user = root
server = /usr/sbin/vsftpd
log_on_failure += USERID
}
- restart
service xinetd restart
Firewall, NAT
- 방화벽에서 패킷의 이동 경로
iptables 명령어 사용법
iptables [-t table명] 명령어 [매칭옵션] [타겟]
- iptables
- [table 구문]
# iptables ( -t filter ) -D INPUT -p tcp --dport 80 -j DROP
# iptables -t nat -D INPUT -p tcp --dport 80 -j DROP
# iptables -t mangle -D INPUT -p tcp --dport 80 -j DROP
- [rule 구문]
# iptables -A INPUT [-p tcp] [-s 주소] [multiport] [--sport 1024:]
[-d 주소] [multiport] [--dport 21]
[-m state]
[--state NEW,ESTABLISHED,RELATED]
-j ACCEPT
- iptables의 명령어
- iptables 매칭 옵션
옵션 | 의미 |
---|---|
NEW | 새로운 연결을 요청하는 패킷 |
ESTABLISHED | 기존 연결의 일부인 패킷 |
RELATED | 기존 연결에 속하지마 새로운 연결을 요청하는 패킷 |
기본 구성
방법
- Firewall)
# setup
- spacebar 누르기
# vi /etc/sysconfig/iptables
# service iptables stop
# service iptable start
# iptables -P FORWARD DROP
# service iptables save
- 결과
# vi /etc/sysconfig/iptables
Ex.
Firewall
# vi /etc/sysconfig/iptables
# service iptables stop
# service iptables start
# iptables -P FORWARD DROP
# iptables -A FORWARD -s 1.1.1.1 -p tcp --dport 80 -j ACCEPT
# iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# service iptables save
# vi /etc/sysctl.conf
net.ipv4.ip_forward=1 -- 7행
# /sbin/sysctl -p
결과