[쿠버네티스 4주차 1/13] https & NFS & FTP & DHCP

신현식·2023년 1월 13일
0

구름_Linux

목록 보기
17/22
post-thumbnail

https

  • https = http + ssl / port : 443
    -> HTTP는 평문 통신이여서 보안에 취약하기 때문에 SSL프로토콜로 포장해서 암호화 통신

  • ssl : 1973년 netscape사에 의해 개발된 프로토콜로 http나 ftp 등 평문 통신 프로토콜을 암호화해주는 프로토콜이다.

    • 기능: 서버인증,클라이언트 인증(선택적), 기밀성 보장
  • TLS(Transport Layer Security) : SSL 3.0을 IETF 표준화기구에서 표준 프로토콜로 개발한 것이다.

  • 비대칭키 암호화 통신 단점

  1. 느리다.
  2. 키의 신뢰성 문제
    -> SSH : 디피헬만 알고리즘로 해결
    -> SSL : 제 3의 인증기관 (CA)으로 해결, 신뢰할 수 있는 제 3의 인증기관이 공개키를 보장하는 인증서를 이용, 즉 CA가 참여하는 구조이고 공개키 기반 구조이다.
    📢 참고 사이트: http://wiki.gurubee.net/display/SWDEV/SSL+%28TLS%29

hhtps 서버 구성

yum install -y httpd
openssl genrsa -out private.key 2048
ls -l private.key 키가 생성된 것을 확인할 수 있다.
openssl req -new -key private.key -out cert.csr 개인키를 가지고 인증기관에 제출하는 서류를 만듬(cert.csr), 공개키를 만들고 나서는 필요없음
extra옵션은 특별한 경우가 아니면 안만들어도 됨

<셀프서명 인증서를 발급>
서버의 공개키를 인증기관의 개인키로 암호화 하는 것이 인증서를 만드는 과정이다.
openssl x509 -req -signkey private.key -in cert.csr -out cert.crt 공개키 만듬개인키(private.key)와 공개키(cert.crt)가 만들어진 것을 볼 수 있다

mv ./cert.crt /etc/pki/tls/certs
mv /root/private.key /etc/pki/tls/private/각 파일의 옮겨준다.

(restorecon -Rv /etc/pki/tls/ : selinux가 실행되어 있다면 mv로 옮겨서 컨텍스트가 깨졌을 수도 있음으로 복원과정을 해준다.)

chmod 600 /etc/pki/tls/private/private.key
개인키는 나말고 누구도 볼 수 없게 권한을 바꿔준다.

<SSL/TLS 설정>
yum install -y mod_ssl
vi /etc/httpd/conf.d/ssl.conf
ssl 설정을 해줌

  • 특정 도메인으로 왔을때 https로 가도록 설정

  • 로그는 다음경로에 설정

  • SSLCertificateKeyFile을 내가 만든 공개키와 개인키로 바꿔준다.
    systemctl restart httpd
    firewall-cmd --add-service=https --permanent
    firewall-cmd --add-service=http --permanent
    firewall-cmd --reload

<2번 서버(client_two)로 가서 1번 서버(server_one)에 접속>
vi /etc/hosts 에 추가해준다.
10.0.2.6(1번 서버 IP) www.linux.com(아까 설정했던 도메인 이름
firefox 들어가서 검색
" https://www.linux.com "

믿을 수 없다고 나와도 계속 진행하겠다고 하면 https인 linux.com에 접속할 수 있다.

일반 컴퓨터 크롬 브라우저에서도 https:내 IP(192.168.56.101)를 검색하면

여기에서 고급을 누르고 진행하겠다고 하면

https로 서버에 접속할 수 있는 것을 확인 할 수 있다.

스토리지

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

  • DAS : 스토리지 장치와 시스템 케이블로 연결하는 방식
    -> sata , scsi , sas

  • NAS : 네트워크를 통해 연결된 스토리지, 파일스토리지 (파일 단위 공유), 원격에 접속해서 파일을 다운받는 것이라 보면 됨
    -> NFS, SAMBA

  • SAN : 네트워크를 통해 연결된 스토리지, 전용 네트워크 회선, 블록 스토리지(하드 디스크가 워격으로 연결된 것이라보면 됨)
    -> iscsi

NFS

1980년 중반 썬마이크로시스템즈에서 개발한 분산 파일 시스템 프로토콜이다.
여러 운영체제 지원하며, 서버의 리소스를 클라이언트 상에서 마치 자신의 리소스를 사용하는 것처럼 사용할 수 있도록 제공한다.
즉, 네트워크가 가능한 곳이라면 리눅스 유닉스 등의 운영체제에서 NFS를 사용하여 파일 시스템 공유가 가능하다.

-SAMBA -> 윈도우의 SMB서비스를 리눅스에서도 가능하게 만든 서비스(리눅스<->윈도우)

-> 같은 네트워크에 있을때만 사용가능하다고 보면 됨, 보안상의 이유로 원거리 자료공유는 FTP를 사용

수동 NFS

<1번 서버에서 작업>
rpm -qa nfs-utils : nfs가 설치되어 있나 확인
vi /etc/exports
<nfs 공유설정 파일 - 빌려줄 저장공간을 설정함>
/share 10.0.2.*(rw,sync) : share라는 디렉터리를 특정 IP를 가진 컴퓨터에만 읽기쓰기 옵션으로, sync은 디렉터리를 빌려갔을 때 동시에 접근한다면 한명에게만 접근하도록 해주도록 설정함

mkdir /share : 공유디렉터리 생성
chmod 777 /share : 권한 부여
touch /share/filea : 파일 몇개 만들기
touch /share/fileb
systemctl restart nfs-server
systemctl enable nfs-server
exportfs -v : 공유디렉터리의 상태를 볼 수 있음

방화벽 열기
firewall-cmd --permanent --add-service mountd
firewall-cmd --permanent --add-service rpc-bind
firewall-cmd --permanent --add-service nfs
firewall-cmd --reload

<2번 리눅스로 가서 작업>

rpm -qa nfs-utils
showmonut : nfs 서버의 원격으로 공유 디렉터리를 보는 명령, 이를 위해 위에서 rpc-bind와 mountd 방화벽을 열어준 것
showmount -e 1번 서버IP(10.0.2.6)

mkdir /nfs_share : 내 로컬에서 마운트할 디렉터리 만들기
mount -t nfs 10.0.2.6:/share /nfs_share : 공유 디렉터리를 마운트함
cd /nfs_share
1번에서 작업했던 내용들이 들어있는 것을 확인할 수 있고 여기서도 파일을 없애거나 추가하면 1번에서 그 결과가 반영되는 것을 확인할 수 있다.

  • 물리적으로는 1번에 있는 것임으로 네트워크가 끊어지면 2번에서는 사라진다. 현재는 마운트 상태로 논리적으로 연결된 것

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

2번 리눅스 (클라이언트)에서 설정할 것

  • 자동 마운트 프로그램
    자동 마운트를 이용하면 자동으로 파일시스템을 마운트하며 파일 시스템이 사용되지 않고 일정시간이 흐르면 자동으로 언마운트를 진행
    -설정파일에서 자동마운트를 해도 되지만 이때 네트워크가 끊어지면 마운트하기 위해 디렉터리를 찾을수 없어 에러가 발생할 수 있음, 따라서 직접 설정파일에서 설정하지 않는다.
  • 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. 이름으로 관습적으로 파일을 만들어서 설정저장
    맵 내부의 마운트포인터로 상대 경로명을 사용함

자동 마운트 실습 1. 직접 Map 마운트

yum install -y autofs
vi /etc/auto.master.d/direct.autofs : 이름은 임의로 지어줌
파일 내용
/- (tab으로 띄어쓰기) /etc/auto.direct
/- : 직접Map 마운트를 사용하겠다는 의미, 뒤는 직접맵 마운트 파일 지정

vi /etc/auto.direct
파일내용
/nfs_share (tab으로 띄어쓰기) -rw,sync (tab으로 띄어쓰기) 10.0.2.6:/share (1번 서버IP: 공유 디렉터리)

mkdir /nfs_share : 위에 만들었다면 다시 안만들어도 됨

systemctl start autofs
systemctl enable autofs

mount | grep /nfs_share : 마운트 정보를 보면 type autofs로 자동으로 마운트 된 것을 볼 수 있다. 따라서 1번 리눅스에서 있던 정보를 다시 확인할 수 있다.

자동 마운트 실습 2. 간접 Map 마운트

mkdir -p /indirect/share : 이 디렉터리에 간접 마운트를 진행할 것

vi /etc/auto.master.d/indirect.autofs
파일내용
/indirect (tab으로 띄어쓰기) /etc/auto.indirect
/inndirect : 간접으로 연결하겠다는 의미, 뒤는 서브 디렉터리

vi /etc/auto.indirect
파일내용
share -rw,sync 10.0.2.6:/share
상대경로 마운트 옵션 공유할 서버와 디렉터리

systemctl start autofs
mount | grep /indirect

FTP

파일전송 프로토콜인데 단점은 평문 전송 프로토콜이라는 점이다. 따라서 이걸 ssl로 암호화 해서 보내는 sftp로 사용하면 이런 단점을 보완 할 수 있다.

FTP는 File Transfer Protocol의 약자로 말그대로 파일을 전송하는 통신 프로토콜이다. FTP 서버에 파일들을 업로드, 다운로드할 수 있도록 해주는 프로토콜이며, 이는 FTP 서버와 FTP 클라이언트 간에 통신에서 이루어진다.

FTP는 Active 모드와 Passive 모드라는 2개의 모드 존재

  • 사용되는 포트는 연결을 제어하는 Command 포트가 있으며 데이터를 전송하는 DATA 포트가 있다.
  • FTP는 TCP 기반으로 만들어져 있으며 기본으로 동작 모드로 Active 모드를 사용하며 20번 또는 1024번 이후의 데이터(Data) 포트는 데이터를 전송하는데 사용하게 되고, 21번 포트는 접속시에 사용되는 명령(Command )포트이다.

같은 네트워크 passive
멀리있는 네트워크 active
대부분 공유기 환경이여서 passive를 잘 이용하지만 클라이언트마다 포트를 줘야하기 때문에 포트낭비가 심하다는 단점이 있다.

📢 참고 사이트: https://madplay.github.io/post/ftp-active-passive

ftp 서비스는 계정이 필요

  1. 서버에 등록되어 있는 계정 (/etc/passwd)
  2. anonymous 계정 (id,pass 없이 로그인하는 계정) -> ftp 계정으로 로그인됨

ftp 실습

<1번 리눅스에서 세팅>
ymu install -y vsftpd : 제일 많이 사용하는 것이 vsftp임

cd /var/ftp : 설치해야 생기는 디렉터리
ls
echo 'filea' > /var/ftp/pub/filea : 파일생성
echo 'fileb' > /var/ftp/pub/fileb
systemctl start vsftpd
systemctl enable vsftpd
firewall-cmd --add-service=ftp --permanent
firewall-cmd --reload

<2번 클라이언트에서 설정>

yum install -y ftp
cd /tmp
mkdir test
touch testa
ftp 1번서버 IP(10.0.2.6)
name, pass 입력 -> user, user
하면 ftp에 들어갈 수 있다.

하면 testa 파일을 전송한 것이다. 실제로 1번을 가서 확인해보면 파일이 전송된 것을 볼 수 있다.

또한 2번에서 testa 파일을 삭제한 이후 ftp 서비스를 이용하여 다시 전송했던 파일을 받아올 수도 있다.

  • put 파일명 : 파일을 내보낸다.
  • get 파일명 : 파일을 가져온다.

윈도우에서 1번 파일서버에 접속하기
파일질라 클라이언트로 ftp 접속

다운로드 하기: https://filezilla-project.org/download.php?type=client



평문 연결 확인

연결 후 fileb를 드래그하거나 클릭하면 로컬로 파일을 가져올 수 있다.

반대로 내PC에 있는 파일을 1번 리눅스로 전송하는 것도 가능하다.

<ftp 접속 거부 보안설정 파일>

<ftp 서비스의 설정파일>
vi /etc/vsftpd/vsftpd.conf

anonymous 계정 / 일반계정 로그인 허용여부

DHCP 서버

dhcp : 컴퓨터가 부팅할때 자동으로 ip주소, 서브넷마스크, 게이트웨이주소, DNS 서버 주소 등을 할당해주는 프로토콜이다. 한정된 ip주소를 유용하게 사용가능하게 해준다.
공유기가 nat. 스위치, 게이트웨이, 라우터, dhcp 서버 등의 종합적인 기능을 해준다.

📢 DHCP 동작과정 참고 사이트: https://www.cisco.com/c/ko_kr/support/docs/switches/catalyst-9300-series-switches/217366-configure-dhcp-in-ios-xe-evpn-vxlan.html

DHCP 실습

1번 리눅스 -> Static ip 세팅
nmcli con add con-name "static1" ifname enp0s3 type ethernet ipv4.addresses 10.0.2.40/24 ipv4.dns 8.8.8.8 ipv4.gateway 10.0.2.1 ipv4.method manual

nmcli con up "static1"
curl naver.com : 잘 되었는지 확인
버츄어박스에서 체크 되어있는 Enable DHCP를 꺼준다.

2번 리눅스 -> dhcp로 세팅

<1번 리눅스로 돌아와서>
yum install -y dhcp
ps -ef | grep dnsmasq : dhcp와 충돌이 나는 것임으로 찾아서 꺼줘야 하는데 1번의 자식인 1534를 kill 해준다.
kill -9 1534
systemctl disable dnsmasq

vi /etc/dhcp/dhcpd.conf
파일 작성, 파일내용 그대로 밑에 복사

ddns-update-style interim;
subnet 10.0.2.0 netmask 255.255.255.0 {
option routers 10.0.2.1;
option subnet-mask 255.255.255.0;
range dynamic-bootp 10.0.2.80 10.0.2.100;
option domain-name-servers 8.8.8.8;
default-lease-time 10000;
max-lease-time 50000;

설명(위는 내 IP 설정과 맞춰둔 것)
ddns-update-style interim; //혹은 none //네임 서버의 동적 업데이트 옵션
subnet 192.168.111.0 netmask 255.255.255.0 { //dhcp서버가 존재하는 네트워크 대역대 주소
option routers 192.168.111.2; //클라이언트에게 알려줄 게이트웨이
option subnet-mask 255.255.255.0; // 클라이언트에게 알려줄 넷마스크(네트워크 범위)
range dynamic-bootp 192.168.111.20 192.168.111.80; 클라이언트에게 할당할 IP 주소 범위
option domain-name-servers 8.8.8.8; 클라이언트에게 알려줄 dns서버 주소
default-lease-time 20000; 클라이언트에게 ip를 임대할때 기본적인 시간(단위 초)
max-lease-time 80000; 클라이언트가 ip를 임대한후 보유할 수 있는 최대 시간(특정 컴퓨터가 ip 독점 방지)
}

systemctl restart dhcpd
systemctl enable dhcpd
firewall-cmd --add-service=dhcp --permanent
firewall-cmd --add-service=dhcpv6 --permanent
firewall-cmd --reload

모든 설정을 완료한 후 2번 서버로 가서 reboot를 실행한다.

😢 오류사항: systemctl status dhcpd -l로 확인하면 ipv4 method가 auto로 되어있기에 실습에서 오류가 있었다. 처음에 manual로 설정해줘야 할 것 같다. 위에 실습은 다시 잘되는 것으로 바꿔두었다.

  • cd /var/lib/dhcpd
    cat dhcpd.leases 를 진행하면 dhcp에서 임대했던 기록들을 확인할 수 있다.
profile
전공 소개

0개의 댓글