CAB TA 4기 18일차의 기록

Urban Jungle·2025년 4월 4일

CAB TA 4기

목록 보기
18/28
post-thumbnail

패키지 실습

DVD 마운트 및 repo 설정

umount /dev/cdrom
mkdir /media/cdrom
mount /dev/cdrom /media/cdrom

기존 .repo 파일들 백업

cd /etc/yum.repos.d/
mkdir backup
mv *.repo backup/

DVD와 인터넷 repo 동시 사용을 위한 test.repo 구성 예시

[DVD_BaseOS]
name=dvd-baseos
baseurl=file:///media/cdrom/BaseOS/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9

[DVD_AppStream]
name=dvd-appstream
baseurl=file:///media/cdrom/AppStream/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9

[NET_BaseOS]
name=network-baseos
baseurl=http://dl.rockylinux.org/$contentdir/$releasever/BaseOS/$basearch/os/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9

dnf makecache
dnf repolist all

패키지 설치/삭제

zsh 설치/삭제 (RPM 직접 설치)

rpm -ivh /media/cdrom/BaseOS/Packages/z/zsh-5.8-9.el9.x86_64.rpm
rpm -e zsh

ksh 설치/삭제 (YUM 사용)

dnf install ksh -y
dnf remove ksh -y

zsh 설치 (YUM + ISO rpm)

dnf localinstall /media/cdrom/BaseOS/Packages/z/zsh-5.8-9.el9.x86_64.rpm

Security Tools & httpd

그룹 패키지 확인/설치/삭제

dnf group list
dnf group info "Security Tools"
dnf group install "Security Tools"
dnf group remove "Security Tools"

/var/www 디렉토리 생성한 패키지 확인

dnf provides /var/www

httpd 관련 실습

dnf install httpd -y
rpm -qc httpd # 설정 파일 확인
rpm -qd httpd # 문서 파일 확인
dnf info httpd # 패키지 정보 확인

httpd 서비스 제어

systemctl start httpd
systemctl enable httpd

systemctl stop httpd
systemctl disable httpd

httpd 삭제 및 재설치 (무응답 설치)

dnf remove httpd -y
dnf install httpd -y


네트워크 실습

초기 설정 및 IP 확인

모든 인터페이스 IP 확인

ip addr
ifconfig

특정 인터페이스만 확인 (예: eth0 또는 enp0s3)

ip addr show eth0
ifconfig eth0

연결 생성

유동 IP 연결 생성 (DHCP)

nmcli con add con-name dhcp1 ifname eth0 type ethernet

고정 IP 연결 생성 (STATIC)

nmcli con add con-name static1 ifname eth0 type ethernet ip4 192.168.56.200/24 gw4 192.168.56.1 ipv4.method manual

  • ipv4.method manual을 꼭 추가해야 고정 IP로 설정됨

연결 수정

dhcp1 → static100 변경 + 고정 IP로 수정

nmcli con mod dhcp1 \
connection.id static100 \
ipv4.addresses 192.168.56.150/24 \
ipv4.gateway 192.168.56.1 \
ipv4.dns 8.8.8.8 \
connection.autoconnect no \
ipv4.method manual

static1 → dhcp2 변경 + 유동 IP로 수정

nmcli con mod static1 \
connection.id dhcp2 \
ipv4.method auto \
ipv4.addresses "" \
ipv4.gateway ""

호스트네임 변경

hostnamectl hostname servera.cccr.org

변경 확인

hostname


SSH(Secure Shell)

SSH란?

  • 원격 서버에 암호화된 통신으로 접속할 수 있도록 해주는 보안 프로토콜
  • telnet은 평문 전송 (보안 없음)
  • ssh는 암호화 전송 (보안 있음)

암호화 방식

대칭키 (Symmetric Key)

  • 같은 키로 암호화/복호화
  • 빠르지만, 키가 노출되면 위험

비대칭키 (Asymmetric Key)

  • 공개키(암호화) + 개인키(복호화) 한 쌍
  • 공개키는 누구나 공유 가능
  • 개인키는 나만 보관

SSH 접속 원리

  1. 클라이언트가 서버에 접속 요청
  2. 서버가 공개키 전달
  3. 클라이언트가 대칭키(비밀키) 생성
  4. 클라이언트는 이 대칭키를 서버의 공개키로 암호화하여 전송
  5. 서버는 개인키로 복호화하여 대칭키 획득
  6. 이후 통신은 대칭키로 암호화된 채 전송됨
  • 접속 후 통신은 대칭키 방식 → 빠르고 보안 유지 가능

SSH 인증 방식

일반 인증 (ID + PW 입력)

  • 원격 접속 시 매번 패스워드 입력 필요

키 기반 인증 (더 안전 & 자동화 가능)

  • 클라이언트에서 해야 할 작업
    ssh-keygen

  • 공개키 (id_rsa.pub) + 개인키 (id_rsa) 생성됨
    ssh-copy-id 사용자명@서버IP

  • 서버에 공개키 등록 (~/.ssh/authorized_keys)

-> 이제 비밀번호 없이 SSH 접속 가능

기억하면 좋은 명령어

ssh 접속

ssh 사용자명@서버IP

키 생성

ssh-keygen

공개키 복사

ssh-copy-id 사용자명@서버IP


SSH 실습

네트워크 설정

클라이언트 (Client)

nmcli con add con-name static-client type ethernet ifname eth1 ip4 192.168.56.200/24 ipv4.method manual

서버 (Server)

nmcli con add con-name static-server type ethernet ifname eth1 ip4 192.168.56.150/24 ipv4.method manual

사용자 생성 및 활성화

클라이언트

useradd cuser
passwd cuser

서버

useradd suser
passwd suser

일반 SSH 접속 테스트

클라이언트(cuser)에서 서버(suser)로 SSH 접속

ssh suser@192.168.56.150
exit

공개키/개인키 관련 확인

클라이언트

vim ~/.ssh/known_hosts

서버

vim /etc/ssh/ssh_host_rsa_key.pub

  • 두 파일의 fingerprint는 일치해야 정상 상태

서버 공개키 제거 & 재생성

rm -rf /etc/ssh/ssh_host*
systemctl restart sshd
ls /etc/ssh/

  • 공개키가 재생성되면서 클라이언트와 fingerprint가 불일치하게 됨

클라이언트에서 등록된 키 제거 후 재접속

rm -rf ~/.ssh/known_host*
ssh suser@192.168.56.150
exit

  • 새 서버 공개키를 다시 등록하게 됨

암호 없이 로그인 (키 기반 인증 설정)

클라이언트 (cuser)

ssh-keygen
# 엔터 3번
ssh-copy-id suser@192.168.56.150

  • 이제부터는 cuser → suser 접속 시 암호 없이 로그인 가능

root 계정 SSH 접속 차단

서버

vim /etc/ssh/sshd_config

PermitRootLogin no # 설정 확인 또는 추가

systemctl restart sshd

  • 이제 root는 SSH로 접속할 수 없음

요약

연결 상태 확인: nmcli con show
IP 설정 확인: ip addr show eth1
서버 공개키: cat /etc/ssh/ssh_host_rsa_key.pub
클라 서버 키 등록: cat ~/.ssh/known_hosts
암호 없이 로그인 테스트: ssh suser@192.168.56.150


firewalld

firewalld 개요

  • 리눅스 방화벽 서비스
  • 동적(Dynamic) 구성 가능
  • iptables보다 현대적이며 유연함

구성 흐름

Netfilter(Kernel)
  ↳ iptables → iptables.service
  ↳ firewalld → firewall-cmd / firewall-config (GUI)

구성 요소

Zone: 네트워크 신뢰 수준
Service: 허용할 서비스 (ssh, http 등)
Port: 포트 기반 접근 허용
IP(Source): 접근 가능한 IP 제한
Interface: 네트워크 장치를 특정 Zone에 연결

Zone 종류 (사전 정의됨)

drop: 모든 수신 DROP (ICMP 응답도 없음)
block: 모든 수신 REJECT (ICMP 거절)
external: 외부에서 SSH만 허용
internal / home: 내부망 접근 허용 (SSH, DHCP 등)
public(기본): SSH만 허용된 공개망
trusted: 모든 트래픽 허용
work: 제한적 허용 (SSH, DHCPv4 등)

주요 명령어 (firewall-cmd)

--state firewalld: 상태 확인
--get-default-zone: 현재 기본 zone 확인
--set-default-zone=ZONE: 기본 zone 변경
--get-zones: 사용 가능한 zone 전체 보기
--get-active-zones: 활성화된 zone + 인터페이스 확인
--get-services: 등록된 서비스 목록 보기
--list-all --zone=ZONE: zone에 구성된 모든 규칙 보기

설정 예시

IP 소스 추가

firewall-cmd --zone=public --add-source=192.168.56.0/24

인터페이스 추가

firewall-cmd --zone=internal --add-interface=eth1

서비스 허용

firewall-cmd --zone=public --add-service=http

포트 허용

firewall-cmd --zone=public --add-port=8080/tcp

영구 설정

--permanent

변경사항 적용

firewall-cmd --reload

런타임 설정을 영구 설정으로 저장

firewall-cmd --runtime-to-permanent


Firewalld 실습 (NFS + HTTP 구성)

서버 초기화 후 필수 패키지 설치

dnf -y install nfs-utils
dnf -y install httpd

서비스 시작 & 활성화

systemctl enable nfs-server --now
systemctl enable httpd --now
systemctl status nfs-server

홈 zone에 포트 / 프로토콜 / 서비스 추가 (영구 설정)

포트 허용 (NFS, HTTP 관련)
firewall-cmd --add-port=80/tcp --add-port=111/tcp --add-port=2049/udp --add-port=20048/tcp --permanent --zone=home

프로토콜 허용 (ICMP 허용)
firewall-cmd --add-protocol=icmp --permanent --zone=home

서비스 허용 (NFS)
firewall-cmd --add-service=nfs --permanent --zone=home

변경사항 적용
firewall-cmd --reload

zone 확인 및 default zone 변경

firewall-cmd --list-all --zone=home
firewall-cmd --set-default-zone=home

웹서버 구성

고정 IP 설정
nmcli con add con-name xxx ifname eth1 type ethernet ip4 "192.168.56.100/24"
nmcli con up xxx

확인
nmcli con show
nmcli con show xxx
ip addr show eth1

테스트용 페이지 생성

echo "this is Rocky" > /var/www/html/index.html

클라이언트 접속 테스트

브라우저 or curl 사용

http://192.168.56.100/index.html

→ "this is Rocky" 출력 확인


profile
똑똑해지고 싶은 공학도

0개의 댓글