https = http + ssl / port : 443
-> HTTP는 평문 통신이여서 보안에 취약하기 때문에 SSL프로토콜로 포장해서 암호화 통신
ssl : 1973년 netscape사에 의해 개발된 프로토콜로 http나 ftp 등 평문 통신 프로토콜을 암호화해주는 프로토콜이다.
TLS(Transport Layer Security) : SSL 3.0을 IETF 표준화기구에서 표준 프로토콜로 개발한 것이다.
비대칭키 암호화 통신 단점
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
1980년 중반 썬마이크로시스템즈에서 개발한 분산 파일 시스템 프로토콜이다.
여러 운영체제 지원하며, 서버의 리소스를 클라이언트 상에서 마치 자신의 리소스를 사용하는 것처럼 사용할 수 있도록 제공한다.
즉, 네트워크가 가능한 곳이라면 리눅스 유닉스 등의 운영체제에서 NFS를 사용하여 파일 시스템 공유가 가능하다.
-SAMBA -> 윈도우의 SMB서비스를 리눅스에서도 가능하게 만든 서비스(리눅스<->윈도우)
-> 같은 네트워크에 있을때만 사용가능하다고 보면 됨, 보안상의 이유로 원거리 자료공유는 FTP를 사용
<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번에서 그 결과가 반영되는 것을 확인할 수 있다.
2번 리눅스 (클라이언트)에서 설정할 것
AutoFS 파일 시스템과 맵(MAP)
AutoFS 의 맵 : AutoFS 모듈이 동작하는데 필요한 정보가 저장된 설정 파일
1 . master 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번 리눅스에서 있던 정보를 다시 확인할 수 있다.
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
파일전송 프로토콜인데 단점은 평문 전송 프로토콜이라는 점이다. 따라서 이걸 ssl로 암호화 해서 보내는 sftp로 사용하면 이런 단점을 보완 할 수 있다.
FTP는 File Transfer Protocol의 약자로 말그대로 파일을 전송하는 통신 프로토콜이다. FTP 서버에 파일들을 업로드, 다운로드할 수 있도록 해주는 프로토콜이며, 이는 FTP 서버와 FTP 클라이언트 간에 통신에서 이루어진다.
FTP는 Active 모드와 Passive 모드라는 2개의 모드 존재
같은 네트워크 passive
멀리있는 네트워크 active
대부분 공유기 환경이여서 passive를 잘 이용하지만 클라이언트마다 포트를 줘야하기 때문에 포트낭비가 심하다는 단점이 있다.
📢 참고 사이트: https://madplay.github.io/post/ftp-active-passive
<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 서비스를 이용하여 다시 전송했던 파일을 받아올 수도 있다.
윈도우에서 1번 파일서버에 접속하기
파일질라 클라이언트로 ftp 접속
다운로드 하기: https://filezilla-project.org/download.php?type=client
평문 연결 확인
연결 후 fileb를 드래그하거나 클릭하면 로컬로 파일을 가져올 수 있다.
반대로 내PC에 있는 파일을 1번 리눅스로 전송하는 것도 가능하다.
<ftp 접속 거부 보안설정 파일>
<ftp 서비스의 설정파일>
vi /etc/vsftpd/vsftpd.conf
anonymous 계정 / 일반계정 로그인 허용여부
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
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로 설정해줘야 할 것 같다. 위에 실습은 다시 잘되는 것으로 바꿔두었다.