20일차 - 리눅스 (디스크 관리, ACL, 방화벽)

Jk Lim·2023년 5월 9일
0

MLOps 부트캠프

목록 보기
19/34

20일차는

  1. 디스크 관리 (이어서)
  2. ACL
  3. 방화벽에 대해서 학습하였다.

1.디스크 관리

(1) 영구 마운트

  • mount 명령어로 마운트를 하게 되면 재부팅 시, 마운트 내용이 초기화 됨
  • 영구적으로 적용시키려면 파일에 근거를 남겨야 함 > /etc/fstab : 마운트 관련 설정파일
  • 형식 : 장치명orUUID 마운트포인트 파일시스템 옵션 덤프생성 fsck(파일시스템체크)
    (장치명 ~ 옵션 까지는 내용에 오류가 있어서는 안됨)
    (마운트한 디스크는 lsblk -fs 에서 UUID(장치고유식별자)를 확인 할 수 있음)

(2) 스왑(swap)

  • 스왑(swap) : 저장장치를 메모리처럼 사용하는 기술
  • 스왑영역 : 저장장치에 메모리처럼 사용하는 공간

    마운트된 디스크를 스왑영역으로 설정 실습

    1. mkswap /dev/sdc1
    2. free 명령어 (-h옵션) : 기존 스왑영역 size 확인
    3. swapon /dev/sdc1 스왑 활성화 → free -h로 늘어난 size 확인

(3) 논리볼륨

  • 단편화 된 디스크를(물리공간) 하나의 디스크로 합쳐서 사용하는 기술

    논리볼륨 실습 - 3개 디스크의 공간 사용

    • (사전작업) 파티셔닝
      a. parted /dev/sdb (/dev/sdc /dev/sdd도 진행)
      b. mkpart
      c. partition name?, file system type? →PASS
      d. start 및 end 지점 지정
      e. parted 나와서 udevadm settle로 저장
    1. 물리볼륨 만들기 : pvcreate /dev/sdb3 /dev/sdc2 /dev/sdd1
      • pvdisplay로 확인
    2. 볼륨그룹 만들기 : vgcreate vg01 /dev/sdb3 /dev/sdc2 /dev/sdd1
      • pgdisplay로 확인 > PE size라는 개념이 등장
    3. 논리볼륨 만들기 : lvcreate
      • 방식1. 직접 : -L 옵션 (lvcreate -n lv01 -L 700MB vg01)
      • 방식2. PE -LE 단위로 쪼개기 (기본 4MB)
      • lvdisplay로 확인 > Currnet LE 값은 700MB를 4M로 쪼갠 값
    4. 논리볼륨 마운트하기
      a. 파일시스템 설정 : mkfs -t xfs /dev/vg01/lv01
      b. 마운트 얹을 디렉토리 생성 : mkdir /mnt/data2
      c. 마운트 : mount /dev/vg01/lv01 /mnt/data2
      d. 영구마운트 : /etc/fstab에서 설정
      • /dev/mapper라는 디렉토리에 있음
    5. 논리볼륨 제거 (1~4의 순서를 역순으로 진행)
      a. 영구마운트 해제
      b. umount /mnt/data2 : 마운트 해제
      c. lvremove /dev/vg01/lv01 : 논리볼륨 해제
      d. vgremove vg01 : 볼륨그룹 제거
      e. pvremove /dev/sdb3 /dev/sdc2 /dev/sdd1 : 물리볼륨 제거
  • 파티션은 용량 확장이 필요할 경우 처음부터 파티션을 구성해야함

  • 논리볼륨은 축소는 안되지만 확장은 가능하다.

    1. 생성은 위와 동일
      a. vgcreate vg01 /dev/sdb3 /dev/sdc2 /dev/sdd1 -s 30M : -s옵션 적용
      b. lvcreate -n lv01 -l 4 vg01 : -l 옵션
    2. lvexteend -L 80M /dev/vg01/lv01 : 80MB만큼 논리볼륨 확장
    3. 파일시스템 설정 및 마운트
    4. 기존 파일시스템이 적용되어있는 논리볼륨을 확장할 경우 자동으로 파일시스템이 늘어나진 않음 → xfs_growfs /mnt/data2 : 수동으로 확장 (ext는 resize2fs 명령어)

2. ACL(Access Control List) : 접근제어 리스트

  • chmod로는 권한을 세부적으로 나눌 수 없음
  • ACL은 권한을 세부적으로 나눠주기 위해 사용됨
  • ACL이 설정되면 퍼미션 제일 끝 .이 + 기호로 바뀜
  • getfacl fileA : ACL 권한 확인 (fileA라는 파일에 대한)
[root@localhost ~]# setfacl -m u:user:rwx fileA  ###user라는 user권한 수정
[root@localhost ~]# setfacl -m g:user:r-- fileA  ###user라는 그룹권한 수정
[root@localhost ~]# setfacl -m u::rwx fileA      ###공백은 파일의 소유자
[root@localhost ~]# setfacl -m g::rwx fileA      ###공백처리시 chmod와 동일
  • mask는 제약 사항을 걸어주는 것 : setfacl -m m::r-- fileA

    • 특정 사용자, 소유 그룹, 특정 그룹은 mask의 권한을 넘어설 수 없음
    • effective로 표시되는 항목이 mask의 영향을 받는 것
  • 디렉토리는 특수하게 default ACL 설정이 가능하다.

    • PPT의 템플릿과 유사
    • 하위에 파일을 만들면 소유자, 기타 사용자를 제외한 특정 사용자, 소유 그룹, 특정 그룹을 그대로 이어받아서 ACL을 적용
    • 하위에 디렉토리를 만들면 상위 폴더의 설정을 그대로 상속받는다.
  • setfacl -x user:user01 dirA/dirB/ : -x 옵션을 통해 ACL 권한 삭제 가능

[root@localhost ~]# setfacl -m d:u:user01:rwx dirA
[root@localhost ~]# setfacl -m d:g:user01:--x dirA
[root@localhost ~]# getfacl dirA
# file: dirA
...
default:user::rwx
default:user:user01:rwx   ### 직접 설정한 내용
default:group::r-x
default:group:user01:--x   ### 직접 설정한 내용
default:mask::rwx
default:other::r-x
[root@localhost ~]# setfacl -m d:u:user01:rwx dirA
[root@localhost ~]# setfacl -m d:g:user01:--x dirA
[root@localhost ~]# getfacl dirA
# file: dirA
...
default:user::rwx
default:user:user01:rwx   ### 직접 설정한 내용
default:group::r-x
default:group:user01:--x   ### 직접 설정한 내용
default:mask::rwx
default:other::r-x

3. 방화벽

  • 네트워크 보안
  • 패킷을 제어함으로써 네트워크로 침투하는 경로의 보안을 강화

(1) 기본 명령어

  • firewall-cmd --list-all : 방화벽 정책 확인 (현재)
  • firewall-cmd --list-all --permanent : 영구 방화벽 정책확인 (재부팅 시 적용되는 Default)
  • firewall-cmd --add-service=ftp : 허용 서비스 추가 (ftp) / --permanent 는 영구
  • firewall-cmd --remove-service=ftp : 허용 서비스 제거
  • firewall-cmd --add-port=21/tcp : 포트번호/프토로콜로 허용 서비스 추가 (ftp)
  • firewall-cmd --remove-port=21/tcp : 포트번호/프로토콜로 허용 서비스 제거
  • firewall-cmd --add-port=8000-9000/tcp : 연속된 포트번호 허용 서비스 추가
  • firewall-cmd --add-source=192.168.56.0/24 : 허용 ip 대역 추가
  • 특별정책 : 특정 ip 주소 거부
    • firewall-cmd --add-rich-rule='rule family="ipv4" source address=192.168.56.101 reject’ : 거절 메시지를 상대방에게 보냄.
    • firewall-cmd --add-rich-rule='rule family="ipv4" source address=192.168.56.102 drop’ : 패킷을 그냥 버림. 상대방이 알 수 없음.

(2) 존(Zone) : 용도에 맞게 미리 정의된 방화벽 설정값

  • firewall-cmd --get-zones : 존(Zone) 목록 확인 (permanent 정책도 별도로 있음)
  • firewall-cmd --get-default-zone : 기본으로 설정되어있는 존 영역 (parmanent에 해당함)
  • firewall-cmd --get-active-zones : 현재 활성화 되어있는 존 확인 (public)
  • firewall-cmd --list-all-zones : 모든 존에 대한 정책 확인 가능

    (실습) 존 생성, 설정, 제거 실습

    1. firewall-cmd --new-zone=webserver --permanent : 존 생성 (영구로 먼저 생성해야함)
    2. firewall-cmd --add-service=http --zone=webserver --permanent : --zone 옵션을 통해 허용 서비스가 설정되는 존을 직접 지정 (없을 시, 현재 상태에 대해 적용)
    3. firewall-cmd --reload : 영구 설정을 현재 상태로 불러옴
    4. firewall-cmd --set-default-zone=webserver : default 존을 변경
    5. firewall-cmd --set-default-zone=public : default 존을 기존 public으로 변경
    6. firewall-cmd --delete-zone=webserver --permanent : 존 제거 (reload 해야 현재 상태에 적용됨)

0개의 댓글