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 : 스토리지 장치와 시스템 케이블로 연결하는 방식
- 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 의 세가지 종류>
- master map
- AutoFS에서 가장 기준이 되는 맵
- /etc/auto.master.d/에 이름.autofs파일에 설정 저장
- 직접 맵이나 간접맵의 이름과 포인터를 정의하는 역할을 담당
- direct map
- /etc/auto.이름으로 관습적으로 파일을 만들어서 설정 저장
- 맵 내부의 마운트 포인터로 절대경로명을 사용함
- 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환경에서 사용을 안한다
<파일질라>
- 공식 홈페이지에서 클라이언트 파일질라 다운로드
- 호스트(192.168.56.101), 사용자명(anonymous), 포트(21)입력해서 연결
- 호스트(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

-
동작과정 = 임대(네트워크세팅) 과정
- broadcast로 ip할당(네트워크 세팅) 해달라고 요청
- unicast로 특정 client에게 네트워크 세팅 제안
- broadcast로 제안에 대해 쓰겠다고 응답
- 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가 세팅 범위내에 재할당된것을 확인할 수 있다
추가정보
📗 프로젝트 참고