블로그 이미지
오정oI

카테고리

분류 전체보기 (119)
회사 - pj # 나라원 (1)
회사 - pj # 나라원 (2)
이직준비 (10)
국비-클라우드 (1)
학점은행제 (0)
취미 (0)
주식 (0)
외국어 (0)
자격증 (14)
BigData_On (1)
BigData_Off1 (74)
클라우드 (0)
언어_Framework (1)
언어-Server (2)
언어_Client (0)
업무 (1)
IT참고서적 (1)
IT 최신 트랜드 (0)
제테크 (1)
Study Plan (2)
동영상 및 자료 (5)
여행 (1)
git (0)
Total
Today
Yesterday
반응형
SMALL

* 강사님 강의 노트 정리 :

1월23일_9평일리2.txt

* 자동 마운트(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 파일 설정에 적용(거부)

반응형
LIST
Posted by 오정oI
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함