나의 공부기록

[VMware]03. Xshell & SELinux & 정적 웹 서버 & GNS3 본문

CS/Linux

[VMware]03. Xshell & SELinux & 정적 웹 서버 & GNS3

나의 개발자 2025. 1. 8. 18:33

 

Xshell

  • SSH 클라이언트 프로그램
  • 실습은 CentOS 7을 사용 예정
    • CentOS 7은 RedHat의 기술 지원이 끝나서 yum install을 하면 레포지토리 사용 불가
      ➡️ 패키지 설치 불가
    • CentOS7은 RedHat의 기술지원이 끝나서 레포지토리 사용 불가
      ➡️패키지 install(다운로드&설치)가 불가능
      👉패키지를 install 하기 위해서 레포지토(Repository) 설정이 필요
✅레포지토리 사용 가능 여부 확인방법
[root@web ~]#ifconfig
➡️ifconfig 명령어가 없으면 설치하면 됨
검색 후, 설치

 

SElinux(Secure Linux)

  • 리눅스 추가 보안 설정
  • SELINUX가 활성화가 되어있으면 나중에 DNS나 KVM을 구성할 때, 문제가 발생할 수 있어서 비활성화로 설정 변경하고 진행
[root@web ~]#cat /etc/selinux/config
➡️ selinux 설정 확인

 

✅ 3가지 모드

1. enforcing - 활성화
2. permissive - 임시 비활성화
3. disabled - 비활성
➡️ 모드 설정 후, 서버 재부팅해야 반영됨

 

SElinux 명령어

1. 현재 설정 확인 - getenforce

[root@web ~]#getenforce

 

2. 임시 비활성화(비추천) - setenforce 0

[root@web ~]#setenforce 0

 

3. 설정 파일 확인

  • 설정에서 SELINUX TYPE을 잘못 건드리면, 오류 발생🌟🌟🌟
  • SELINUX만 건드리기!
1. 설정파일 vi 접속
[root@web ~]#vi /etc/selinux/config

2. SELINUX 설정 변경 ➡️ 저장
SELINUX = disabled

3. 서버 reboot
[root@web ~]#reboot
➡️ 모드 변경 후, 반영 확인
[root@web ~]#getenforce 👉Permission ➡️ Disabled 변경 확인

 

레포지토리(Repository)

  • 설치하고 싶은 패키지가 있는 저장소
  • 확장자 : .repo ➡️ 레포지토리 설정이 정의된 파일

 

[ 레포지토리 파일 설정 ]

1. 레포지토리 설정 파일 목록 확인

  • /etc/yum.repos.d/ : 레포지토리 파일이 모여있는 경로
[root@web ~]# ls /etc/yum.repos.d/
➡️ /etc/yum.repos.d/에 있는 파일 확인

 

2. 레포지토리 설정 파일 편집

1️⃣레포지토리 설정 파일 위치로 이동
[root@web ~]#cd /etc/yum.repos.d/

2️⃣레포지토리 설정 파일 편집 모드
[root@web ~]#vi CentOS-Base.repo
➡️CentOS-Base.repo 파일 편집 모드
CentOs-Base.repo 파일 내용

3️⃣레포지토리 설정 파일 전체 삭제
[root@web ~]#vi CentOs-Base.repo
➡️해당 파일 편집
➡️명령모드에서 ggdG 하거나 d를 연속으로 눌러서 삭제

4️⃣레포지토리 설정 변경 내용 복사 & 붙여넣기 👉 저장
➡️Ctrl + Insert : 복사 / Shift + Insert : 붙여넣기
🌟'명령모드'에서 붙여넣기를 하면 내용이 잘릴 수 있음
[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
baseurl=https://vault.centos.org/7.9.2009/os/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#released updates
[updates]
name=CentOS-$releasever - Updates
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
baseurl=https://vault.centos.org/7.9.2009/updates/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
baseurl=https://vault.centos.org/7.9.2009/extras/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
baseurl=https://vault.centos.org/7.9.2009/centosplus/x86_64/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib&infra=$infra
baseurl=https://vault.centos.org/7.9.2009/contrib/x86_64/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7​

➡️ 저장 :wq


✅ 레포지토리 파일 항목
- Base : 레포지토리 항목
- name : 레포지토리 이름
- mirrorlist : 사이트 목록
                👉 하나의 사이트를 복제한 사이트 목록
                👉 가장 빠른 사이트에서 패키지를 가지고 옴
                👉 gpgcheck : 무결성 검증키(자물쇠 - 키 개념) / gpg : 무결성 검증(변하지 않는지 확인)
                                       1 - 무결성을 검증해서 문제가 없다는 의미

- baseurl : 단일 사이트
- enabled : 0 ➡️ 해당 레포지토리 사용 ❌ / 1 ➡️ 해당 레포지토리 사용 🅾️ (default 값)
                👉 enabled 값이 없으면 default로 설정된 것

 

정적 웹 서버

  • 프론트엔드로 만들어진 웹 페이지(html, js, css 등)파일을 보여주는 서버
    • DB 연동 ❌
    • 프로그램 : apache(httpd), nginx

apach 접속 테스트, 화면

  • Apache 테스트할 때, 웹 서버 접속 시에 화면에 출력된 것은 무엇인가?
    • Apache에서 자동으로 설정해 주기 때문에 출력됨
    • 해당 경우는 Test 화면으로 연결

 

Apache - httpd

  • 웹 루트 디렉토리 - /var/www/html
[root@web ~]#cd /var/www/html
➡️ 사용자가 웹 서버 접속할 때 연결되는 디렉토리
➡️ 상위 디렉토리로 이동 ❌

 

 

[ 웹 서버 화면 지정 ] 

  • 정적 파일을 저장하는 경로(=최상위 디렉토리)가 존재하는 데, 해당 경로는 사용자가 지정할 수 있음
    ➡️ /var/www/html/을 다른 걸로 변경 가능
    • 웹 서버의 최상위 디렉토리 설정을 저장하는 파일인 httpd 설정 파일을 수정하면 최상위 디렉토리를 변경 가능

1. html 생성

[root@web ~]#echo web-test > /var/www/html/index.html
➡️ /var/www/html/index.html에 web-test라는 내용을 저장

 

2. 웹 서버 확인

  • 해당 서버에 접속했을 때, index.html 파일을 보여주는지 확인
  [root@web ~]# curl localhost = 211.183.3.80 = 127.0.0.1

✅웹 브라우저에서 접속 확인

 

 

웹 서버 화면 지정 - 실습

Q. 211.183.3.80/test.html을 쳤을 때, good job이라는 내용이 뜨도록 해보시오.

 

1. [root@web ~]#echo 'good job' > /var/www/html/test.html

2. [root@web ~]#curl 211.183.3.80/test.html

➡️ /var/www/html/test.html 화면 띄워라 

 


 

GNS3 프로그램 설치

  • 애뮬레이터 & 컴퓨터를 속이고 실제처럼 작동

1. 방화벽 & 바이러스 및 위협 방지 해제

윈도우 설정

 

2. GNS 설치

 

[ GNS3에서 VMware의 VM과 통신하는 방법 ]

1. 라우터 추가

👉 ISO 설정(preference > Dynamips > IOS routers > IOS 설정)

➡️ISO 설정 후, Router 목록에 추가된 것 확인 가능

➡️R1을 생성 후, Start(=장치 ON) 필수!

 

✅라우터가 CPU에 패킷을 계속 보내서 부하 발생
➡️ 라우터에서 우클릭 👉 Auto Ide-PC : CPU 부하 낮춤
( 이해 : PC의 CPU에 부하를 줌 👉 DNS3에서 라우터를 생성하는데, 이때 실제 라우터가 생긴 것으로 PC가 간주함 👉 라우터와 PC의 체계가 다르기 때문에, 부하가 많이 생김 ➡️ Auto Ide-PC를 통해 최적화를 진행함)
➡️ dbclick : 라우터 콘솔 접속

✅콘솔 변경(perference > General > console applications)
➡️Console application command for Telnet 변경

 

2. 클라우드(VMnet SW) - 라우터 연결

➡️클라우드를 VMnet SW을 연결하면 VMnet8의 네트워크에 연결하는 것과 같음

👉 Cloud 선택 후, 우클릭 ➡️ VMware 선택

 

✅R1의 f0/0에 어떤 대역(범위)의 IP를 설정해야 하는가?🤔
➡️ VMnet8의 SW와 연결되어 있으므로 , R1의 f0/0은 VMnet8과 같은 대역의 IP를 가져야 함
➡️제외 IP
     - .1 : host-connection
     - .2 : G/W(NAT라는 대역의 외부와 통신하기 위한 G/W로 사용되고 있기 때문에, 사용 불가❌)
     - .255 : 브로드캐스트 주소 

 

3. R1의 f0/0 설정

  • Ip add 설정 후, R1과 VMnet8의 클라이언트와 ping 테스트 진행
    • 통신되는지 확인할 필요 있음
[root@web ~]#tcpdump -i ens32 icmp
➡️VM-web으로 ping이 오는 걸 확인
➡️ -i : 인터페이스, icmp : 필터링


[ 조건 ]
➡️ R1 👉 VM(web) : ping
➡️ VM(web) : tcpdump -i ens32 icmp 명령어 실행
➡️ R1이 ping을 보낼 때, VM(web)이 tcpdump 명령어를 실행해야 로그(log)가 찍힘

리눅스 명령어

1. 사용한 명령어 기록 조회 - history

[root@web ~]#history
➡️명령어 기록 조회

[root@web ~]#history | cut -c 8-
➡️ 명령어 앞의 번호 생략하고 조회

 

2. 텍스트 가공 - cut

[root@web ~]#cut -c 8-
➡️8번째 문자부터 끝까지 출력

 

3. IP-영문주소 맵핑 파일 조회

[root@web ~]#cat /etc/hosts
➡️DNS 개념이 없을 때, 생긴 것
➡️/etc/hosts : IP - 영문주소를 맵핑한 파일 = 나만의 DNS 서버 

 

4. 표준 입력 -  <<

[root@web ~]#cat << EOF > /etc/yum.repos.d/CentOS-Base.repo
➡️ cat << EOF 을 /etc/yum.repos.d/CentOS-Base.repo 파일에 입력
➡️ EOF(End Of File)
➡️ cat << EOF : EOF라는 단어가 나오기 전까지 입력된 내용(n 줄)

✅실습
➡️명령어 입력 후, Enter치면 > 생성 👉 내용 입력 👉 EOF 단어 입력하면 EOF 이전 내용이 파일로 저장됨

✅연습 문제
➡️ /test/cattest.txt 파일 안에 cat 명령으로 리다이렉션 하여 아래의 내용을 저장하시오.
[내용]
AWS CLOUD SCHOOL짱
AWS CLOUD SCHOOL짱
8기 화이팅
AWS CLOUD SCHOOL짱
AWS CLOUD SCHOOL짱
8기 화이팅
[root@web ~]#mkdir /test
[root@web ~]#cat <<EOF > /test/cattest.txt (enter 👉 내용 입력)

 

5. 메아리 - echo

  • echo 뒤에 오는 문장을 명확하게 하고 싶으면 ""이나 ''을 사용하는 게 좋음
    ➡️"" / ''를 사용하지 않아도 제대로 인식
[root@web ~]#echo <문장>
➡️<문장>을 출력

[root@web ~]#echo web-test = echo "web-test"