쿠버네티스 전문가 양성과정 4주차 5일(1/13)

최수환·2023년 1월 13일
0

Kubernetes

목록 보기
21/75
post-thumbnail

HTTPS

  • HTTPS = HTTP + SSL
    -> HTTP는 평문 통신이여서 보안에 취약하기 때문에 SSL프로토콜로 포장해서 암호화 통신
  • SSL : HTTP, FTP등 평문 통신 프로토콜을 암호화해주는 프로토콜
    • 기능 : 서버인증, 클라이언트 인증(선택적), 기밀성 보장
  • SSL은 현재 TLS(Transport Layer Security로 바뀌었다
    • SSL 3.0 이후 부터는 TLS로 업그레이드
    • IETF 표준화기구에서 표준 프로토콜로 개발
  • 비대칭키 암호화 통신의 단점인 키의 신뢰성 문제를
    • SSH : 디피헬만 알고리즘으로 해결
    • SSL : 제 3의 인증기관 (CA) 으로 해결
      • 신뢰할 수 있는 제 3의 인증기관이 공개키를 보장하는 인증서를 이용
        -> CA가 참여하는 구조 = 공개키 기반 구조

📒 SSL 과정 참조

https(SSL) 구축 실습

  • 실습에서는 CA에게 인증받는것은 힘듦으로 자기 자신이 인증기관 역할을 할 것이다
  • apache서버 설치 및 실행

<개인키 생성>

  • openssl genrsa -out private.key 2048 : 개인키 생성
    📌 rsa 암호화 알고리즘 : 대표적인 개인키, 공개키 생성 알고리즘

  • ls -l private.key, cat private.key로 확인

  • openssl req -new -key private.key -out cert.csr : CSR 생성
    💡 CSR : CA에게 서버 인증서를 발급받기 위해 필요한 서명 요구 = 구청에서 서류를 발급받기 위해 제출해야 하는 발급 신청서라고 보면 된다

  • 서버의 정보를 입력한다

  • openssl x509 -req -signkey private.key -in cert.csr -out cert.crt : 나의 개인키로 cert.csr을 암호화한 cert.crt를 생성
    📒 인증서 파일 확장자 참고

  • mv ./cert.crt /etc/pki/tls/certs : 인증서를 tls 디렉터리에 인증서를 관리하는 디렉터리로 옮긴다

  • mv /root/private.key /etc/pki/tls/private/ : 개인키를 tls 디렉터리에 개인키를 관리하는 디렉터리로 옮긴다

  • restorecon -Rv /etc/pki/tls/ : context복원
    -> mv로 옮겼기 때문에 복원한다

  • chmod 600 /etc/pki/tls/private/private.key : 나 말고는 아무도 개인키를 못 건드리게 권한 변경

  • yum -y install mod_ssl : SSL모듈 설치

  • /etc/httpd/conf.d/ssl.conf 라는 ssl설정 파일에 vi로 접속 후 아래 사진 처럼 수정

    • 외부에서 www.linux.com으로 접속하면 포트443 / https로 접속하도록 설정

    • 인증서의 이름과 키의 이름을 바꿔준다
  • httpd 재시작 후 http, https 방화벽 설정한다

< 클라이언트 측 접속 >

  • /etc/hosts에 10.0.2.15 www.linux.com 저장
    -> 가장 먼저 hosts파일을 확인하기 때문에 ip해당하는 도메인 설정해준다
  • firefox에서 https://www.linux.com에 접속하면 끝

NFS

스토리지 : 데이터를 저장하는 스토리지 혹은 저장기술

  • DAS : 스토리지 장치와 시스템 케이블로 연결하는 방식
    • sata, scsi, sas 등이 있다
  • NAS : 네트워크를 통해 연결된 스토리지
    • 파일 스토리지 (파일 단위 공유)
    • NFS, SAMBA등이 있다
  • SAN : 네트워크를 통해 연결된 스토리지
    • 전용 네트워크 회선 , 블록 스토리지
    • iscsi등이 있다

NFS (Network File System)

  • 네트워크 파일 시스템

  • 1980년 중반 썬마이크로 시스템즈에서 개발

  • 여러 운영체제 지원

  • 서버의 리소스를 클라이언트 상에서 마치 자신의 리소스를 사용하는 것처럼 사용할 수 있도록 제공
    -> 즉, 네트워크가 가능한 곳이라면 리눅스, 유닉스 등의 운영체제에서 NFS를 사용하여 파일 시스템 공유가 가능

    📒 SMB(445) : 윈도우의 파일 및 프린터 공유 서비스
    -> 윈도우와 리눅스가 자료 공유 할 때 사용

<서버측 설정>

  • 서버가 저장소를 제공하고 클라이언트가 저장소를 빌려가는 느낌이다. 이때 NFS를 사용하면 클라이언트가 마치 자신의 로컬 저장소인것처럼 서버의 저장소를 사용한다
  • rpm -qa nfs-utils : nfs-utils 설치 확인
  • vi /etc/exports 접속 후 /share 10.0.2.*(rw,sync) 저장
    -> a,b,c가 연결은 되어있지만 동시에 파일을 읽고 쓰면 파일이 깨질 수 있기때문에 a가 /share를 가지면 잠시동안 읽고/쓰기에 대해서 a한테 sync를 맞춘다 (연결은 a,b,c 모두 유지상태)
  • share디렉터리 만들어서 filea, fileb 생성
  • chmod 777로 권한 변경 : 어차피 누구나 접근해서 파일을 공유해야하기 때문에 강력한 권한 부여
  • systemctl restart nfs-server
  • systemctl enable nfs-server
  • exportfs -v : 제데로 작동하는지 확인
  • 방화벽 열기
    firewall-cmd --add-service=mountd --permanent
    -> nfs정보 얻는데 사용
    firewall-cmd --add-service=nfs --permanent
    firewall-cmd --add-service=rpc-bind --permanent
    -> port를 모를때 rpc서비스에 요청하면 알려줌
    firewall-cmd --reload

< 클라이언트 측>

  • showmount : 원격으로 nfs서버의 공유 디렉터리 정보 본다
  • -e 옵션 : 해당 ip의 공유 디렉터리 정보 본다
    -> ex) showmount -e 10.0.2.15
  • mkdir /nfs_share : 마운트 포인트 생성
  • mount -t nfs 10.0.2.15:/share /nfs_share : 마운트
  • cd /nfs_share : 마운트 포인트 가보면 서버의 share디렉터리가 가진 filea, fileb가 있는 것을 확인할 수 있다
    -> 클라이언트측에서 /nfs_share 디렉터리에 파일을 생성하거나 삭제하면 서버측 /share디렉터리에도 반영된다

AutoFS(자동 마운트 서비스 기능)

  • 이전에 수동 마운트(mount,umount)는 시스템이 재부팅되면 설정이 날아가기 때문에 /etc/fstab에 마운트 설정하면 시스템이 재부팅되도 마운트 설정을 가져오기 때문에 영구적인 설정이 가능하다고 하였다. 하지만 fstab은 클라이언트에서 네트워크 연결이 끊기면 오류가 날 수도 있기 때문에 AutoFS를 사용한다
  • 자동 마운트를 이용하면 자동으로 파일시스템을 마운트하며, 파일 시스템이 사용되지 않고 일정 시간이 흐르면 자동으로 언마운트 한다.
    -> NFS, SAMBA, CD-ROM, USB, 플로피 디스크 등을 자동으로 마운트할때 사용 가능

<AutoFS 파일 시스템과 맵(MAP)>

  • AutoFS 의 맵 : AutoFS 모듈이 동작하는데 필요한 정보가 저장된 설정 파일

<Map 의 세가지 종류>

  1. master map
  • AutoFS에서 가장 기준이 되는 맵
  • /etc/auto.master.d/에 이름.autofs파일에 설정 저장
  • 직접 맵이나 간접맵의 이름과 포인터를 정의하는 역할을 담당
  1. direct map
  • /etc/auto.이름으로 관습적으로 파일을 만들어서 설정 저장
  • 맵 내부의 마운트 포인터로 절대경로명을 사용함
  1. indirect map
  • /etc/auto.이름으로 관습적으로 파일을 만들어서 설정 저장
  • 맵 내부의 마운트 포인터로 상대경로명을 사용함

📒 master map은 항상 존재해야하고 direct map과 indirect map은 둘 중 하나 선택해서 생성

< 직접 맵 마운트 실습, 클라이언트 측>

  • yum -y install autofs

  • vi /etc/auto.master.d/direct.autofs에 접속 후 아래 사진처럼 저장

    • master map생성
    • '/-'는 direct map을 사용하겠다는 것임
    • /etc/auto.direct는 direct map파일 지정
  • vi /etc/auto.direct에 접속 후 아래 사진처럼 저장

  • systemctl start autofs

  • systemctl enable autofs

  • /nfs_share 마운트 포인트 가서 파일 공유되는지 확인

<간접 맵 마운트 실습, 클라이언트 측>

  • 이전 상태로 복구
    • systemctl stop autofs
    • umount /nfs_share
    • rm -rf /etc/auto.master.d/direct.autofs
    • rm -rf /etc/auto.direct
  • mkdir -p /indirect/share : 새로운 마운트 포인트 생성
  • vi /etc/auto.master.d/indirect.autofs 접속 후 아래 사진처럼 저장
    • indirect map사용 한다고 선언
    • /etc/auto.indirect : indirect파일 생성
  • vi /etc/auto.indirect 접속 후 아래 사진처럼 저장
  • systemctl start autofs
  • systemctl enable autofs
  • /indirect/share 마운트 포인트 들어가서 파일 공유되는지 확인

FTP

  • 파일 전송 프로토콜(File Transfer Protocal)
  • 서버에다가 파일을 업로드하거나 다운로드 받을 수 있는 서비스

    장점 : 속도가 빠르다
    단점 : 평문 전송 프로토콜 - 보안에 안좋다
    -> SSL로 암호화해서 사용

<FTP Active모드>

  • 서버에서 반드시 port 20, 21을 열어야 한다
  • 그림에서 5150,5151 port는 임의의 포트이다
  • 데이터채널 연결 요청을 서버가 한다
  • 장점 : 서버의 포트를 두개만 쓴다 (자원 효율)
  • 단점 : client가 공인 IP가 아닌 경우 서버가 Client에게 접속 x
    -> Client는 외부와 통신하기 위해서 gw(라우터,공유기 등..)을 통과한다. 이때 nat로 주소가 변경되어(보안) 공인IP(real ip)로 변경되어 밖으로 나간다. 따라서 FTP서버에서는 실제 Client에게 도달하지 못하고 계속 공인IP에만 도달한다.
    💡 nat을 통해서 Real ip로 변경하면 외부에서는 클라이언트의 실제 주소가 아닌 real ip만 보인다. 따라서 보안이 좋고 서버가 real ip에게 전송하면 각 클라이언트를 구분하기 위하여 세션을 사용한다.

<FTP Passive모드>

  • 클라이언트가 서버에 접속한다
  • 20번 port를 사용하지 않는다
  • 접근요청을 해야 연결이 된다
  • 장점 : 클라이언트가 공인IP인지 사설IP인지 중요하지 않다
    -> 서버의 설정이 중요
  • 단점 : 접속마다 특정 port를 열어야 하므로 port낭비가 심하다

📒 FTP 참조

<FTP 서비스>

  • 두가지 종류의 계정이 있다
    • 서버에 등록되어 있는 계정 : /etc/passwd
    • Anonymous 계정 : id/password없이 로그인 하는 계정

FTP(CLI) 실습

<서버측>

  • yum -y install vsftpd : vsftpd 모듈 설치
  • cd /var/ftp : ftp파일 저장 디렉터리
  • echo 'filea' > /var/ftp/pub/filea : pub디렉터리에 파일 저장
  • echo 'fileb' > /var/ftp/pub/fileb
  • systemctl start vsftpd
  • systemctl enable vsftpd
  • firewall-cmd --add-service=ftp --permanent
  • firewall-cmd --reload

<클라이언트 측>

  • yum -y install ftp : ftp 모듈 설치
  • cd /tmp
    mkdir test
    cd test
    -> 권한을 위해 /tmp/test에서 실행
  • ftp 10.0.2.15 : ftp 연결
  • user계정으로 접속
  • put 파일 : 로그인한 클라이언트의 현재 디렉터리에서 서버의 /home/계정으로 파일 업로드
  • get 파일 : 서버 -> 클라이언트로 현재디렉터리 파일이 다운로드

FTP(GUI) 실습 / 파일질라

보통 FTP는 위의 실습처럼 CLI환경에서 사용을 안한다

<파일질라>

  • 공식 홈페이지에서 클라이언트 파일질라 다운로드
  1. 호스트(192.168.56.101), 사용자명(anonymous), 포트(21)입력해서 연결
  2. 호스트(192.168.56.101), 사용자명(user), 비밀번호, 포트(21)
    입력해서 연결
    -> GUI환경에서 파일 전송,업로드 가능

ftp 설정 파일

📒 ftp 접속 거부 보안 설정 파일 : /etc/vsftpd/ftpusers
-> 계정을 등록하면 해당 계정은 ftp접속이 불가하다

</etc/vsftpd/vsftpd.conf : ftp 설정 파일>

  • 익명 계정 접속 허용 여부
  • root,user같은 로컬 계정들 접속 허용 여부
  • 업로드 허용여부
  • 익명계정 업로드 허용 여부 / 디렉터리에 쓰기 허용 여부

    -> 29번과 33번줄 주석해제 후 chown ftp:ftp /var/ftp/pub 권한 변경 후 systemctl restart vsftpd 재시작하면 익명계정(외부)에서 업로드가 가능해진다

💡 이외에도 수많은 설정들이 있다


DHCP

  • 동작과정 = 임대(네트워크세팅) 과정

      1. broadcast로 ip할당(네트워크 세팅) 해달라고 요청
      1. unicast로 특정 client에게 네트워크 세팅 제안
      1. broadcast로 제안에 대해 쓰겠다고 응답
      1. unicast로 확인했다고 ack응답
  • 컴퓨터가 부팅할 때 자동으로 ip주소, 서브넷마스크, 게이트웨이 주소, DNS서버 주소를 할당해주는 프로토콜

  • 공유기에 기본 내장
    = 공유기가 DHCP ,NAT ,GW, 라우터, 스위치 역할을 함

  • 장점 : 한정된 IP주소를 유용하게 사용 가능

DHCP 실습

  • nmcli con add con-name "DHCP static" ifname enp0s3 type ethernet ipv4.addresses 10.0.2.16/24 ipv4.dns 8.8.8.8 ipv4.gateway 10.0.2.1 : DHCP는 IP를 할당해줄 서버가 없기때문에 수동으로 할당해줘야 한다

  • nmcli con up "DHCP static" : 커넥션과 장비 연결

  • 가상머신의 속성에서 NAT Network의 DHCP enable을 잠시 꺼둔다

  • 2번 리눅스(클라이언트)는 enp0s3로 dhcp세팅이 되어있다

  • yum -y install dhcp

  • ps -ef | grep dnsmasq 으로 해당 1506프로세스 종료
    -> dns와 충돌하기 때문에

  • systemctl disable dnsmasq

  • /etc/dhcp/dhcpd.conf - dhcp설정 파일 접속 후 아래 사진 처럼 수정 후 저장

    -> 해당 subnet(10.0.2.0), netmask(255.255.255.0)에 포함되는 네트워크에게 '{ }'에 포함된 네트워크 세팅을 임대해주는 것이다
    📒 '{ }'에는 게이트웨이주소, 서브넷 마스크, 할당할 ip주소 범위, dns주소 순으로 네트워크 세팅이 되어있다.
    📒 default-lease-time : 클라이언트에게 ip를 임대할때 기본적인 시간(단위 초)
    📒 max-lease-time : 클라이언트가 ip를 임대한후 보유할 수 있는 최대 시간(특정 컴퓨터가 ip 독점 방지)

  • systemctl restart dhcpd

  • systemctl enable dhcpd

  • firewall-cmd --add-service=dhcp --permanent

  • firewall-cmd --add-service=dhcpv6 --permanent

  • firewall-cmd --reload

  • 재부팅하면 ip가 세팅 범위내에 재할당된것을 확인할 수 있다


추가정보

📗 프로젝트 참고

profile
성실하게 열심히!

0개의 댓글