File Service 2(①ftpSvc1(vsftpd) ②응급복구 ③auto mount)
* 강사님 강의 노트 정리 :
* 자동 마운트(auto mount) 1> 개념 - 장치나 파티션을 mount 하고 시스템을 재부팅하면 mount가 해제. 그래서 자동 마운트 설정하면 시스템을 재부팅하여도 지속적으로 mount가 유지됨 2> /etc/fstab - 자동 마운트 관련 설정파일 9 UUID=4d874ef7-f822-41c0-973e-2ff38e224cb8 / xfs defaults 0 0 ㆍ첫번째 항목은 file system - 장치나 파티션을 작성 1) 문자 /dev/sd+문자+숫자(파티션) 2) UUID(Universally Unique IDentifier: 범용 고유 식별자) 사용형식 blkid(명령어) → 지정한 장치(또는 파티션)의 UUID을 확인 cf. 쌍 따옴표 안에 있는 내용을 복사 (" 제외!) => UUID=4d874ef7-f822-41c0-973e-2ff38e224cb8 // block id???
ㆍ두번째 항목은 마운트 포인트(임의의 디렉터리) - 장치(또는 파티션)를 mount할 임의의 디렉터리를 지정 ex> /, /boot, /swap ㆍ세번째 항목은 file system type - 장치(또는 파티션) 타입을 지정 cf) file system type 종류 ext → 초기 리눅스에서 사용되었던 파일 시스템 타입으로 현재는 사용되고 있지 않음 ext2 → 현재도 사용이 가능하며 파일 시스템 타입으로 긴 파일명을 지원하는 것이 특징 ext3 → CentOS 5.x 까지 사용하고 저널링 파일 시스템으로 ext2에 비해 파일 시스템 복구 기능과 보안 부분이 크게 향상 (참고로 저널링은 fsck(file system check)보다 더 빠르고 안전하게 복구 기능을 제공하며 걸리는 시간을 단축했음. 이유는 데이터를 쓰기 전 log에 데이터를 남겨 시스템의 비정상적인 종료에도 log를 사용해서 해결) ext4 → CentOS 6.x에서 사용하고 리눅스 표준 파일 시스템으로 16TB까지만 지원하던 ext3보다 더 큰 용량을 지원할 수 있음. 파일 복구 기능 및 파일 시스템 점검 속도가 빨라짐 xfs → CentOS7에서 사용하고 있는 대용량 파일 시스템으로서 64bit 파일 시스템으로 900TB까지 지원(이론상) 저널링이 내장되어있으므로 예상치 못한 상황으로부터 신속한 복구 및 재시작 가능 읽고 쓰기 속도가 빨라지고 높은 확장성을 지니고 있음
ㆍ네번째 항목은 자동 마운트 관련 옵션
- defaults 옵션을 기본값으로 사용하고 있음
- defaults 옵션은 여러 옵션을 포함하고 있음
rw → 읽고 쓰기
auto → 자동
suid → setuid, setgid를 사용 가능
nouser → 사용자가 사용 불가능
exec → 실행 가능
ㆍ다섯번째 항목은 dump(백업)
- 백업 여부
0 또는 1, 2
0은 dump(백업)을 사용하지 않겠음
1은 매일 수행
2는 이틀에 한 번 수행
/etc/fstab 파일에서 dump frequency 항목을 지원하기 때문에 '0'으로 설정해도
'0' 이외의 값은 무효하다
cf) centOS 6.x (이전 버전)
원래 1이었음
1 / ext4 4 1 1 <- 얘 먼저 작업
1 /boot ext4 4 1 2
/swap 0 0
ㆍ여섯번째 항목은 파일 시스템 점검 여부0 또는 1, 2
0은 부팅 시 파일 시스템을 점검 하지 않음
1은 부팅 시 파일 시스템을 먼저 검사함
2는 부팅 시 파일 시스템 이외의 파일 시스템을 검사
xfs는 커널 공간에서 저널 복구함. 저널은 replay하는 일부 기능이 있으므로
더 이상 부팅할 때 fsck(파일시스템 점검)의 작업이 필요하지 않게 되었음
(커널 공간에서 복구하는 시스템이 생겼으므로 기존 기능 필요 없어짐)
3> 실습
// ① hdd (sci, 1g) 추가
// ② 파티션 생성
[root@localhost ~]# fdisk -l
Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000c264c
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 2050047 1024000 83 Linux
/dev/sda2 2050048 10438655 4194304 82 Linux swap / Solaris
/dev/sda3 10438656 14534655 2048000 83 Linux
/dev/sda4 14534656 41943039 13704192 5 Extended
/dev/sda5 14536704 14946303 204800 83 Linux
/dev/sda6 14948352 41943039 13497344 83 Linux
Disk /dev/sdb: 1073 MB, 1073741824 bytes, 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
[root@localhost ~]#
[root@localhost ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xabe43f44.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-2097151, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151): +500M
Partition 1 of type Linux and of size 500 MiB is set
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
Partition number (2-4, default 2): 2
First sector (1026048-2097151, default 1026048):
Using default value 1026048
Last sector, +sectors or +size{K,M,G} (1026048-2097151, default 2097151): +300M
Partition 2 of type Linux and of size 300 MiB is set
Command (m for help): n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): p
Partition number (3,4, default 3): #
First sector (1640448-2097151, default 1640448): #
Using default value 1640448
Last sector, +sectors or +size{K,M,G} (1640448-2097151, default 2097151): #
Using default value 2097151
Partition 3 of type Linux and of size 223 MiB is set
Command (m for help): p
Disk /dev/sdb: 1073 MB, 1073741824 bytes, 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xabe43f44
Device Boot Start End Blocks Id System
/dev/sdb1 2048 1026047 512000 83 Linux
/dev/sdb2 1026048 1640447 307200 83 Linux
/dev/sdb3 1640448 2097151 228352 83 Linux
Command (m for help): w
The partition table has been altered!
// ③ 포맷
[root@localhost ~]# mkfs -t xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=32000 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=128000, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=855, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost ~]# mkfs -t xfs /dev/sdb2
meta-data=/dev/sdb2 isize=512 agcount=4, agsize=19200 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=76800, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=855, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
// uuid 값 확인 및 포맷 유무 확인
[root@localhost ~]# blkid /dev/sdb1 /dev/sdb2
/dev/sdb1: UUID="8c8488b0-d5cf-4e4b-b699-9342833ecaea" TYPE="xfs"
/dev/sdb2: UUID="2048aaf4-01aa-498d-b155-b6e7df92bb24" TYPE="xfs"
[root@localhost ~]#
[root@localhost ~]# blkid /dve/sdb3 // 포맷을 안 했으므로 안 나옴
[root@localhost ~]#
[root@localhost ~]# mkfs.xfs /dev/sdb3
meta-data=/dev/sdb3 isize=512 agcount=4, agsize=14272 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=57088, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=855, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost ~]#
[root@localhost ~]# blkid /dev/sdb3
/dev/sdb3: UUID="76c9bf12-4f53-4394-bae0-b590b1b220cf" TYPE="xfs"
// etc fstab 설정???
// => 껏다 켯을때 mount 된 상태 유지 되면 성공~!
* 응급 복구 (reboot이 안될 때)
1> 응급 복구 작업
- 시스템이 부팅되지 않았을 때
2> 준비물
mkdir /backup
cp /etc/fstab /backup
/etc/fstab 편집
9~11줄을 삭제 후 저장하고 종료> reboot> 부팅이 되지 않은 상황 확인
3> 작업
① ISO image file을 삽입
작업 후 vmware 프로그램 하단 cd아이콘 초록 불 반짝이는지 체크!
② 재부팅(ctrl+alt+insert)을 하면 큰 VMware 로고가 보일 때 빠르게 F2키를 연타 => BIOS 환경 뜸
③ Boot 항목 → 커서를 CD-ROM Drive로 이동 후 '+'를 눌러서 맨 위로 올려놓음(부팅 순서 변경)
④ Exit 항목 → Exit Saving Changes를 enter → YES
⑤ CentOS7 설치관련 화면에서 커서를 3번째 줄로 이동(Troubleshooting; 문제 해결)후 enter
⑥ 커서를 2번째 줄로 이동(Rescue a CentoOS system) 후 enter
⑦ 숫자 '1'(Continue)을 입력 후 enter (/mnt/sysimage 기억)
⑧ Please press <return> ~ 문구가 보이면 enter
cf.sh : 본쉘, 초창기. 복구모드 때 사용
cf. 우리가 사용하고 있는 하드가 아니라는 증거? (하드디스크로 부팅 no!)
=> ISO image로 부팅함
# ls /
/backup 디렉터리 안 보임
⑨ fdisk -l | more를 사용하여 우리가 사용하고 있는 장치를 확인
=> 3번쨰를 잡아줘야.., (1번째꺼는 * Boot 라서 안되고 2번째꺼는 swap 3번째꺼가 용량이 제일 크므로..,)
⑩ mount 파티션 /mnt/sysimage
mount 해줘야.., => 장치 찾기(#fdisk)
cf) centOS 7 이전에는 # ls /mnt/sysimage가 나왔는데 지금은 잡아줘야..,
⑪ 아래에 방법 중 하나만 사용
1. # 절대 경로
cp /mnt/sysimage/backup/fstab /mnt/sysimage/etc
cat /mnt/sysimage/etc/fstab
reboot
2. # 경로 변경
cd /mnt/sysimage
cp /backup/fstab etc
cat etc/fstab
reboot
3. # 최상위 root dir로 변경
chroot /mnt/sysimage
cp /backup/fstab /etc
cat /etc/fstab
exit
reboot
⑫ 재부팅 후 ②번처럼 작업 후(F2) Hard Drive를 맨 위에 올려놓고 ④번처럼 작업함
[root@junga ~]# ls -l /etc/fstab
-rw-r--r--. 1 root root 501 10월 11 15:04 /etc/fstab
[root@junga ~]#
[root@junga ~]# cp /etc/fstab /backup
[root@junga ~]#
[root@junga ~]# ls -l /backup
합계 40
-rwxr-xr-x 1 root root 8702 1월 12 13:06 00_header
-rw-r--r-- 1 root root 501 1월 23 13:14 fstab
-rw-r--r-- 1 root root 5078 1월 12 13:06 grub.cfg
-rw------- 1 root root 3907 1월 17 14:02 sshd_config
-r--r----- 1 root root 3938 1월 17 13:10 sudoers
-rw------- 1 root root 5030 1월 19 14:47 vsftpd.conf
// reboot 안되게 만들어보기
root@junga ~]# vi /etc/fstab
line 9. ~ 11. 3줄 삭제
[root@junga ~]# reboot
* [FTP 실습6] root ftp 접속 허용 가능하게 만들기
userlist_deny=YES (default) => NO로 해줘야
userlist_enable=YES // 얘를 써먹을 수 있음!
1> root 접속 안됨
vi /etc/vsftpd/ftpusers
2> root 접속 허용
vi /etc/vsftpd/ftpusers # ①
#root
# systemctl restart vsftpd.service
# vi /etc/vsftpd/user_list # ② => 둘 다 주석 처리해야!
#root
# head -5 /etc/vsftpd/ftpusers
# head -7 /etc/vsftpd/user_list
=> chroo_list(예외목록)에 등록된 사용자가 아니므로
root도 cd 불가!!!
보안상 취약함!
// 원복
# cp /backup/vsftpd.conf /etc/vsftpd/vsftpd.conf
# systemctl restart vsftpd.service
# rm -rf /etc/vsftpd/chroot_list
# userdel -r goodman
# userdel -r badman
[root@junga ~]# tail -1 /etc/passwd
itbank:x:1000:1000:dust:/home/itbank:/bin/bash
[root@junga ~]#
[root@junga ~]# vi /etc/vsftpd/vsftpd.conf
/etc/vsftpd/vsftpd.conf (설정 파일)
// 2018.01.19 월
12줄 : 익명사용자 활성화 여부 (공개형 FTP Server라면 허용해도 되지만 시스템에 등록된 사용자들을 위한 FTP Server라면 거부해야함) 16줄 : 로컬 사용자 활성화 여부 (시스템에 등록된 사용자들이기 때문에 거부할 필요가 없음(≠ NO) /etc/passwd 에 등록되 있는 사용자들을 말함) 19줄 : 쓰기 활성화 여부 (FTP Server에서 쓰기 관련 작업) 23줄 : 로컬 사용자가 디렉터리 생성시 기본 퍼미션을 지정하는 지시자 29줄 : 익명 사용자 업로드 활성화 여부 (# 주석을 풀어야..,) (공개형 FTP FTP Server라면 허용해도 되지만 시스템에 등록된 사용자들을 위한 FTP Server라면 거부해야함) 33줄 : 익명 사용자 디렉터리 쓰기 활성화 여부 (공개형 FTP FTP Server라면 허용해도 되지만 시스템에 등록된 사용자들을 위한 FTP Server라면 거부해야함)
// 2018.01.22 월
37줄 : ftp 접속한 사용자 계정이 특정 디렉터리로 변경하였을 때 개별 디렉터리의 메시지를 보여주도록 할 것인지에 대한 여부(별도로 .message 파일을 생성하여 작업) 40줄 : ftp 접속 후 파일 업로드와 다운로드에 대한 로그를 남기느냐 남기지 않느냐에 대한 허용 여부 (로그 안남기면 완전범죄임! 무조건 남겨야..,) 43줄 : ftp 서비스는 기본적으로 20번 포트를 사용하므로 이 때 20번 포트로의 데이터 전송 연결을 할 것인지에 대한 허용 여부(20: 데이타 21: 명령어 port)
48줄 : 익명 사용자의 소유권 변경에 대한 허용 여부 // 48,49 : 익명사용자로 upload 했을때 관련
49줄 : 익명 사용자의 소유권 변경이 가능한 계정명을 설정
53줄 : ftp 로그파일을 기록할 파일의 경로를 결정하는 지시자(40줄 관련; log)
57줄 : 로그파일에 남길 로그파일의 포맷을 기본포맷으로 남길 것인가에 대한 허용 여부
60줄 : ftp 연결에서 idle 타임에 대한 타임아웃값을 설정.
지정한 초까지 아무런 작업을 하지 않으면 자동으로 접속 해제
63줄 : 데이타 전송시 적용되는 타임아웃 기본값을 지정하는 설정
지정한 초까지 오래걸리면 자동으로 데이터 전송 연결 해제
67줄 : vsftpd service가 구동될 서버의 유저를 설정(기본값은 nobody)
100줄 : 사용자 계정이 자신의 홈 디렉터리에서 벗어나지 못하게 하는 설정 (default: 변경할수 있음)
- '#' 주석 풀어보고 저장> 테스트
(참고로 활성화하려면 아래와 같이 항목을 추가)
allow_writable_chroot=YES:
/ → /home/itbank
=> /etc/passwd 전체 사용자에 대해서 접속은 되는데 디렉터리 변경은 안됨
101줄 : 지정된 사용자 계정이 자신의 홈 디렉터리에 상위 디렉터리로 변경할 수 있도록 설정
103줄 : 101wnf
=> (기존 설정 100 줄 : cd 제한)블랙 리스트에서 → 화이트 리스트로 변경!
101 chroot_list_enable=YES
104 chroot_list_file=/etc/vsftpd/chroot_list // 화이트 리스트 대상자 추가
2018.01.23
114줄 : YES(standalone 타입), NO(xinetd 타입)
(참고로 CentOS 7 이전에는 YES 로 기본값이 되어있음)
125줄 : vsftpd에서 PAM 설정파일 명으로 사용할 파일명을 지정 (참고로 /etc/pam.d/vsftpd)
126줄 : 명시된 사용자만 로그인을 허용할 때 사용하는 옵션 /etc/vsftpd/user_list에 명시된 사용자를
읽어올 파일 (참고로 userlist_deny=YES이 비활성화 되어있어야 사용할 수 있음) // 찾아보기!!!
127줄 : tcp_wrappers 적용 여부 YES면 /etc/hosts.allow 파일 설정에(허용)
NO면 /etc/hosts.deny 파일 설정에 적용(거부)
====================================
=============== [Review] ===============
* FTP 실습 1(파일 업로드; itbank 접속)
/var/ftp
/var/ftp/pub
// 1>vsftpd 서비스 재시작 및 ftp 방화벽 등록
[root@junga ~]# firewall-cmd --list-service
ssh dhcpv6-client
[root@junga ~]#
[root@junga ~]# systemctl restart vsftpd.service
[root@junga ~]#
[root@junga ~]# systemctl is-active vsftpd.service
active
[root@junga ~]#
[root@junga ~]# firewall-cmd --list-service
ssh dhcpv6-client
[root@junga ~]#
[root@junga ~]# firewall-cmd --add-service=ftp
success
[root@junga ~]#
// 2> 알 ftp 접속 및 다음 경로로 이동
=> /var/ftp
// 3> 알 ftp 접속 먼저 끊기??(cmd랑 비슷..,) 폴더 허가권 변경(쓰기 추가)
[root@junga ~]# ls -ld /var/ftp/
drwxr-xr-x 3 root root 17 1월 19 14:26 /var/ftp/
[root@junga ~]#
[root@junga ~]# ls -ld /var/ftp/pub/
drwxr-xr-x 2 root root 6 8월 3 15:10 /var/ftp/pub/
[root@junga ~]#
[root@junga ~]# chmod 757 /var/ftp/
[root@junga ~]#
[root@junga ~]# ls -ld /var/ftp/
drwxr-xrwx 3 root root 17 1월 19 14:26 /var/ftp/
[root@junga ~]#
[root@junga ~]#
// 4> 알 ftp 재접속(itbank/itbank) 및 알 ftp에서 해당 파일 업로드
// 5> 업로드 확인
[root@junga ~]# ls -l /var/ftp/
합계 716
-rw-r--r-- 1 itbank itbank 5 1월 22 13:01 a.txt
-rw-r--r-- 1 itbank itbank 727110 1월 22 13:01 b.bmp
drwxr-xr-x 2 root root 6 8월 3 15:10 pub
[root@junga ~]#
[root@junga ~]# chmod 757 /var/ftp/pub
[root@junga ~]#
[root@junga ~]# ls -ld /var/ftp/pub
drwxr-xrwx 2 root root 6 8월 3 15:10 /var/ftp/pub
[root@junga ~]#
[root@junga ~]#
[root@junga ~]# ls -l /var/ftp/pub
합계 716
-rw-r--r-- 1 itbank itbank 5 1월 22 13:02 a.txt
-rw-r--r-- 1 itbank itbank 727110 1월 22 13:02 b.bmp
[root@junga ~]#
[root@junga ~]#
계정 |
작업 |
/var/ftp (755) |
/var/ftp/pub |
itbank |
① 접속 |
○ |
○ |
② 업로드 |
× |
× | |
허가권 변경(757) |
① 접속 |
○ |
○ |
② 업로드 |
○ |
○ | |
ananymous | ① 접속 |
○ |
○ |
② 업로드 |
× |
× | |
허가권 변경(757) | ① 접속 |
× |
× |
② 업로드 |
× |
× |
* FTP 실습 2(업로드; 익명 접속; vsftpd.conf>line29.33.)
// 0> 이전 상태로 돌리기
[root@junga ~]# rm -rf /var/ftp/a.txt /var/ftp/b.bmp
[root@junga ~]#
[root@junga ~]# rm -rf /var/ftp/pub/a.txt /var/ftp/pub/b.bmp
[root@junga ~]#
[root@junga ~]# chmod 755 /var/ftp/ /var/ftp/pub
[root@junga ~]#
[root@junga ~]# ls -l /var/ftp /var/ftp/pub
합계 0
drwxr-xr-x 2 root root 6 1월 22 13:13 pub
[root@junga ~]#
[root@junga ~]# ls -ld /var/ftp/ /var/ftp/pub/
drwxr-xr-x 3 root root 17 1월 22 13:13 /var/ftp/
drwxr-xr-x 2 root root 6 1월 22 13:13 /var/ftp/pub/
// 1> 알 ftp : anonymous 로 접속
=> 현재 경로 : /var/ftp
// 2> 알 ftp 접속 끊고, 해당 폴더 허가권 변경
[root@junga ~]# ls -ld /var/ftp /var/ftp/pub
drwxr-xr-x 3 root root 17 1월 22 13:13 /var/ftp
drwxr-xr-x 2 root root 6 1월 22 13:13 /var/ftp/pub
[root@junga ~]#
[root@junga ~]# chmod 757 /var/ftp /var/ftp/pub
[root@junga ~]#
[root@junga ~]# ls -ld /var/ftp /var/ftp/pub
drwxr-xrwx 3 root root 17 1월 22 13:13 /var/ftp
drwxr-xrwx 2 root root 6 1월 22 13:13 /var/ftp/pub
// 3> 알 ftp 재 접속 및 파일 업로드 (anonymous)
=> 익명 상태라 접속 자체가 안됨!!!
* FTP 실습 3(vsftpd.conf> line.37)
// 1> .message 파일 생성
[root@junga ~]# cd /home/itbank
[root@junga itbank]#
[root@junga itbank]# touch .message
[root@junga itbank]#
[root@junga itbank]# vi .message
[root@junga itbank]#
[root@junga itbank]# touch /backup/.message
[root@junga itbank]#
[root@junga itbank]# vi /backup/.message
[root@junga itbank]#
[root@junga itbank]# vi /etc/vsftpd/vsftpd.conf
[root@junga itbank]#
[root@junga itbank]# ls -l /backup/.message
-rw-r--r-- 1 root root 13 1월 22 13:30 /backup/.message
[root@junga itbank]#
[root@junga itbank]# cat /backup/.message
hihihihihihi
[root@junga itbank]#
[root@junga itbank]# ls -la /backup
합계 44
drwxr-xr-x 2 root root 108 1월 22 13:30 .
dr-xr-xr-x. 20 root root 4096 1월 17 15:05 ..
-rw-r--r-- 1 root root 13 1월 22 13:30 .message
-rwxr-xr-x 1 root root 8702 1월 12 13:06 00_header
-rw-r--r-- 1 root root 5078 1월 12 13:06 grub.cfg
-rw------- 1 root root 3907 1월 17 14:02 sshd_config
-r--r----- 1 root root 3938 1월 17 13:10 sudoers
-rw------- 1 root root 5030 1월 19 14:47 vsftpd.conf
// 2> 알 ftp 접속(itbank)
① ftp 처음 접속 했을 때
/home/itbank/.message 파일에 내가 기록한 내용이 알ftp 로그 창에 뜨는지 확인
② /backup 폴더로 변경 했을 때
/backup/.message 파일에 내가 기록한 내용이 알ftp 로그 창에 뜨는지 확인!
* FTP 모드(vsftpd.conf> line. 43)
1) Active mode
- 클라이언트가 서버에게 자신의 Data Port를 알려준 후 Listening 상태에서 서버로부터의 접속을 대기하는
형태(접속 서버, 데이타전송 클라이언트???, data 전송은 20번 port)
- 클라이언트쪽에 방화벽으로 인한 데이터가 제대로 전송되지 않는 상황이 발생할 수 있다
2) Passive mode
- 서버가 클라이언트에게 접속해야 하는 문제점을 개선
- Data Port를 클라이언트에서 서버쪽으로 접속하는 방식을 사용해서 Active mode에서 발생되는 문제점을 해결
(Data Port를 서버쪽으로 맞췄는데.., 모든 사람이 서버쪽으로 달려드니까 과부화 걸릴 가능성 ○)
- 클라이언트에게 응답해야할 서버의 많은 Data Port가 필요하게 되므로 이에 서버는 20번 Data Port를 사용하지
않고 랜덤(0~1024 이후)포트로 클라이언트에게 알려줌으로써 이를 해결
( 위에 실습들은 Passive mode 였음)
=> http://boanin.tistory.com/194 → 참조
* xferlog 분석(log file)
53 #xferlog_file=/var/log/xferlog
[root@junga itbank]# cat /var/log/xferlog
Mon Jan 22 13:02:18 2018 1 ::ffff:192.168.46.57 727110 /var/ftp/pub/b.bmp b _ i r itbank ftp 0 * c
① ② ③ ④ ⑤ ⑥⑦⑧⑨ ⑩ ⑪ ⑫⑬⑭
① : 접속한 날짜와 시간
② : 접속 했을 때 걸린 시간
③ : 접속한 IP Address (참고로 IPv6 주소에 IPv4 대응(IPv4-mapped IPv6 address))
::ffff:
- IPv4에서 IPv6로 미래에는 변환되므로 그 때 사용할 수 있는 prefix값을 제시함(넷 마스크 처럼)
prefix 값을 보면 이제 IPv6 프로세스가 IPv4에 주소를 이해하고 그걸로 처리하게 됨
④ 727110 : 전송된 파일의 용량
⑤ /var/ftp/pub/b.bmp : 전송된 파일의 경로
⑥ b : 전송된 파일의 종류
a는 ascii(문자) | b는 binary(숫자)
⑦ _ : 전송된 파일의 행동 분석
_는 파일 전송시 아무일도 발생하지 않음(언더바)
C는 파일 전송시 압축되어 졌음
U는 파일 전송시 압축되이지지 않았음
T는 파일 전송시 tar로 묶였음
⑧ i : 전송된 파일의 행동 방식
i는 incoming(upload) | o는 outgoing(download)
⑨ r : 사용자의 접근 방식
r(real) /etc/passwd에 등록되어있는 사용자
a(anonymous) /etc/passwd에 등록되어있지 않은 사용자
⑩ itbank : 로그인 된 사용자 ID
itbank : 컴퓨터가 알고 있음 | ? : 컴퓨터가 모름 (anonymous)
⑪ ftp : 사용한 서비스
⑫ 0 : 인증에 사용된 방법
0은 사용하지 않음 | 1은 RFC931 사용
(참고로 RFC(Request For Comments : 논평 요구서)
IETF(Internet Engineering Tasking Force : 국제 인터넷 표준화 기구)
- 새로운 인터넷 기술이나 연구들을 메모하여 각 기관에 배포한 뒤 논평 요구 입증시 RFC문서로 채택이
되며 각각의 일련번호를 부여 받음)
⑬ * : 인증된 사용자 ID
⑭ c : 전송된 파일의 성공여부
c는 complete(전송 성공)
i는 incomplete(전송 실패)
*[실습4] home dir. 변경 여부(line.100)
centOS 7.x 이전 버전 : 주석만 풀면 됨
이후 버전 : 주석 풀고 항목 추가해야..,
[root@junga itbank]# useradd goodman
[root@junga itbank]#
[root@junga itbank]# passwd goodman
badman 사용자의 비밀 번호 변경 중
새 암호:
잘못된 암호: 암호는 8 개의 문자 보다 짧습니다
새 암호 재입력:
passwd: 모든 인증 토큰이 성공적으로 업데이트 되었습니다.
[root@junga itbank]# useradd badman
[root@junga itbank]#
[root@junga itbank]# passwd badman
badman 사용자의 비밀 번호 변경 중
새 암호:
잘못된 암호: 암호는 8 개의 문자 보다 짧습니다
새 암호 재입력:
passwd: 모든 인증 토큰이 성공적으로 업데이트 되었습니다.
[root@junga itbank]#
[root@junga itbank]#
[root@junga itbank]# systemctl restart vsftpd.service
[root@junga itbank]#
[root@junga itbank]#
[root@junga itbank]# vi /etc/vsftpd/vsftpd.conf
[root@junga itbank]#
[root@junga itbank]#
[root@junga itbank]# vi /etc/vsftpd/vsftpd.conf
100 chroot_local_user=YES // 주석 풀고
101 allow_writeable_chroot=YES // 추가(스펠링 주의!!!)
[root@junga itbank]#
[root@junga itbank]# systemctl restart vsftpd.service
// 알 ftp 다시 접속해 보기! => itbank, goodman, badman
* [실습5]cd dir. 변경 가능 사용자 추가(화이트 리스트; line. 101, 103)
[root@junga itbank]# vi /etc/vsftpd/vsftpd.conf
101 chroot_list_enable=YES
104 chroot_list_file=/etc/vsftpd/chroot_list // 화이트 리스트 대상자 추가: badman만 cd가능하게 변경
[root@junga itbank]#
[root@junga itbank]# systemctl restart vsftpd.service
[root@junga itbank]#
[root@junga itbank]# ls -l /etc/vsftpd/
합계 20
-rw------- 1 root root 125 8월 3 15:10 ftpusers
-rw------- 1 root root 361 8월 3 15:10 user_list
-rw------- 1 root root 5054 1월 22 15:05 vsftpd.conf
-rwxr--r-- 1 root root 338 8월 3 15:10 vsftpd_conf_migrate.sh
[root@junga itbank]# touch /etc/vsftpd/chroot_list // 없으니 만들기!
[root@junga itbank]#
[root@junga itbank]# vi /etc/vsftpd/chroot_list
1 badman
/etc/vsftpd/vsftpd.conf (설정 파일)
// 2018.01.19 월
12줄 : 익명사용자 활성화 여부
(공개형 FTP Server라면 허용해도 되지만 시스템에 등록된 사용자들을 위한 FTP Server라면
거부해야함)
16줄 : 로컬 사용자 활성화 여부
(시스템에 등록된 사용자들이기 때문에 거부할 필요가 없음(≠ NO)
/etc/passwd 에 등록되 있는 사용자들을 말함)
19줄 : 쓰기 활성화 여부
(FTP Server에서 쓰기 관련 작업)
23줄 : 로컬 사용자가 디렉터리 생성시 기본 퍼미션을 지정하는 지시자
29줄 : 익명 사용자 업로드 활성화 여부 (# 주석을 풀어야..,)
(공개형 FTP FTP Server라면 허용해도 되지만
시스템에 등록된 사용자들을 위한 FTP Server라면 거부해야함)
33줄 : 익명 사용자 디렉터리 쓰기 활성화 여부
(공개형 FTP FTP Server라면 허용해도 되지만
시스템에 등록된 사용자들을 위한 FTP Server라면 거부해야함)
// 2018.01.22 월
37줄 : ftp 접속한 사용자 계정이 특정 디렉터리로 변경하였을 때 개별 디렉터리의 메시지를 보여주도록 할 것인지에
대한 여부(별도로 .message 파일을 생성하여 작업)
40줄 : ftp 접속 후 파일 업로드와 다운로드에 대한 로그를 남기느냐 남기지 않느냐에 대한 허용 여부
(로그 안남기면 완전범죄임! 무조건 남겨야..,)
43줄 : ftp 서비스는 기본적으로 20번 포트를 사용하므로 이 때 20번 포트로의 데이터 전송 연결을 할
것인지에 대한 허용 여부(20: 데이타 21: 명령어 port)
48줄 : 익명 사용자의 소유권 변경에 대한 허용 여부 // 48,49 : 익명사용자로 upload 했을때 관련
49줄 : 익명 사용자의 소유권 변경이 가능한 계정명을 설정
53줄 : ftp 로그파일을 기록할 파일의 경로를 결정하는 지시자(40줄 관련; log)
57줄 : 로그파일에 남길 로그파일의 포맷을 기본포맷으로 남길 것인가에 대한 허용 여부
60줄 : ftp 연결에서 idle 타임에 대한 타임아웃값을 설정.
지정한 초까지 아무런 작업을 하지 않으면 자동으로 접속 해제
63줄 : 데이타 전송시 적용되는 타임아웃 기본값을 지정하는 설정
지정한 초까지 오래걸리면 자동으로 데이터 전송 연결 해제
67줄 : vsftpd service가 구동될 서버의 유저를 설정(기본값은 nobody)
100줄 : 사용자 계정이 자신의 홈 디렉터리에서 벗어나지 못하게 하는 설정 (default: 변경할수 있음)
- '#' 주석 풀어보고 저장> 테스트
(참고로 활성화하려면 아래와 같이 항목을 추가)
allow_writable_chroot=YES:
/ → /home/itbank
=> /etc/passwd 전체 사용자에 대해서 접속은 되는데 디렉터리 변경은 안됨
101줄 : 지정된 사용자 계정이 자신의 홈 디렉터리에 상위 디렉터리로 변경할 수 있도록 설정
103줄 : 101wnf
=> (기존 설정 100 줄 : cd 제한)블랙 리스트에서 → 화이트 리스트로 변경!
101 chroot_list_enable=YES
104 chroot_list_file=/etc/vsftpd/chroot_list // 화이트 리스트 대상자 추가
2018.01.23
114줄 : YES(standalone 타입), NO(xinetd 타입)
(참고로 CentOS 7 이전에는 YES 로 기본값이 되어있음)
125줄 : vsftpd에서 PAM 설정파일 명으로 사용할 파일명을 지정 (참고로 /etc/pam.d/vsftpd)
126줄 : 명시된 사용자만 로그인을 허용할 때 사용하는 옵션 /etc/vsftpd/user_list에 명시된 사용자를
읽어올 파일 (참고로 userlist_deny=YES이 비활성화 되어있어야 사용할 수 있음)
127줄 : tcp_wrappers 적용 여부 YES면 /etc/hosts.allow 파일 설정에(허용)
NO면 /etc/hosts.deny 파일 설정에 적용(거부)
'BigData_Off1 > 리눅스2' 카테고리의 다른 글
Autofs 1(① autofs, ② 실습1) (0) | 2018.01.26 |
---|---|
File Service 3(③auto mount ④NFS) (0) | 2018.01.24 |
File Service 1(①ftpSvc1(vsftpd)) (0) | 2018.01.22 |
Remote Service 4(⑥remoSvc4(vnc viewer)⑥방화벽 설정(CLI)) 3.ftp Service(①FtpSvc1(vsftpd)) (0) | 2018.01.19 |
Remote Service 3(④remoSvc2(openssh) ⑤remoSvc3(scp)) (0) | 2018.01.18 |