본문 바로가기
Study/리눅스

RHCSA 정리 (3) - Security, Networking, File

by yingtao 2025. 2. 19.

SSH 구성하고 보안 강화하기

 

SSH 

SSH(Secure Shell)는 원격으로 리눅스 시스템에 접속할 수 있도록 하는 보안 프로토콜
암호화된 연결을 제공하여 안전한 원격 접속을 가능하게 함

명령을 받아들여 커널로 변환해 하드웨어를 관리한다.
(Hardware > 커널이 관리 > Shell이 관리)

기본적으로 22번 포트를 사용하나 /etc/ssh/sshd_config 파일에서 변경 가능하다.

기본 사용법

ssh username@remote_server_ip

 

SSH 보안설정

  • Idle Timeout Interval (비활성화 시간 설정)
    비활성 사용자의 SSH 세션을 자동 종료하여 보안을 강화한다.
# 설정파일 열기
sudo vi /etc/ssh/sshd_config

# 다음 두 줄 추가 또는 수정
ClientAliveInterval 300  # 300초 (5분)마다 연결 확인
ClientAliveCountMax 0    # 응답이 없으면 즉시 연결 종료

# 설정 적용
sudo systemctl restart sshd
  • 루트 사용자 로그인 차단
    보안 강화를 위해 root 계정의 SSH 접속을 비활성화
# 설정 파일 수정
sudo vi /etc/ssh/sshd_config

# 다음 줄을 PermitRootLogin no로 변경
PermitRootLogin no

# 설정 적용
sudo systemctl restart sshd
  • 빈 암호 로그인 차단
    비밀번호 없이 로그인하는 계정 차단하여 보안 강화
# 설정 파일 수정
sudo vi /etc/ssh/sshd_config

# 다음 줄을 PermitEmptyPasswords no로 변경
PermitEmptyPasswords no

# 설정 적용sudo systemctl restart sshd
  • 특정 사용자 또는 그룹만 SSH 접속 허용
    보안 강화를 위해 지정된 사용자만 SSH 접속 가능하도록 제한
# 설정 파일 수정
sudo vi /etc/ssh/sshd_config

# 접속 가능한 사용자 지정
AllowUsers user1 user2

# 또는 특정 그룹만 SSH 허용
AllowGroups sshusers

# 설정 적용
sudo systemctl restart sshd
  • 기본 22번 포트 변경
    해커의 자동 스캔 피하기 위해 SSH 포트 변경
# 설정 파일 수정
sudo vi /etc/ssh/sshd_config

# 다음 줄을 수정
Port 2222

# 방화벽에서 새 포트 허용
sudo firewall-cmd --add-port=2222/tcp --permanent
sudo firewall-cmd --reload

# 설정 적용
sudo systemctl restart sshd

# SSH 접속시 포트 지정
ssh -p 2222 user@remote_server_ip

 

SSH 키 기반 인증

비밀번호 없이 SSH 접속을 위해 공개 키 & 개인 키 사용

  • SSH 키 생성
# 로컬 컴퓨터에서 실행
ssh-keygen -t rsa -b 4096

~/.ssh/id_rsa → 개인 키 (절대 공개하면 안 된다)
~/.ssh/id_rsa.pub → 공개 키 (서버에 저장)

  • 서버에 공개 키 복사
ssh-copy-id user@remote_server_ip

# 또는 수동으로 복사
cat ~/.ssh/id_rsa.pub | ssh user@remote_server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
  • SSH 키 인증만 허용 (비밀번호 로그인 차단)
# 서버의 SSH 설정 파일 수정
sudo vi /etc/ssh/sshd_config

# 비밀번호 로그인 차단
PasswordAuthentication no
PubkeyAuthentication yes

# 설정 적용
sudo systemctl restart sshd

 

 

네트워킹 관리

 

Static IP vs DHCP (동적 호스트 제어 프로토콜)

  • Static IP (고정 IP)
    사용자가 수동으로 설정
    항상 동일한 IP 주소를 유지
    서버, 네트워크 장비 등에 사용
  • DHCP 
    자동으로 IP 주소를 할당받음
    IP 주소가 변경될 수 있음
    일반 사용자 PC, 모바일 기기에 사용됨

 

IP 주소 (Private vs Public)

  • Private IP (사설 IP)
    내부 네트워크 통신 용도로 사용
    외부 인터넷과 직접 통신 불가 (NAT 필요)
    범위: 192.168.x.x, 10.x.x.x, 172.16.x.x ~ 172.31.x.x
  • Public IP (공인 IP)
    인터넷에서 직접 접근 가능
    서버, 웹사이트 등에 사용됨

IP 주소 확인

ip addr show

 

OS 네트워크 구성 요소

  • 네트워크 인터페이스 (NIC, Network Interface Card)
    다른 컴퓨터와 통신하기 위한 장치.
    고유한 MAC 주소를 갖는다. (변경 가능하지만 기본값은 불변)

[인터페이스 종류]
유선 네트워크 카드 : eth0, eth1
무선 네트워크 (wifi) : wlan0
가상 네트워크 (Loopback 등) : lo (127.0.0.1)

인터페이스 목록 확인

ip link show
  • 서브넷 마스크 (Subnet Mask)
    IP 주소를 네트워크 주소와 호스트 주소로 나누는 값
    같은 서브넷에 속한 장치끼리는 직접 통신 가능

서브넷 마스크 확인

ip addr show eth0
  • 게이트웨이 (Gateway)
    다른 네트워크 (서브넷, 인터넷)와 연결하는 출입구 역할
    일반적으로 라우터(인터넷 공유기)가 게이트웨이 역할을 수행

기본 게이트웨이 확인

ip route show

# 또는
route -ni

-> 기본 게이트웨이 192.168.34.2 를 통해 외부 통신

 

  • DNS (Domain Name System)
    호스트이름 (도메인) -> IP 주소 변환
    /etc/resolv.conf 파일에서 DNS 서버 주소 확인 가능

현재 DNS 서버 확인

cat /etc/resolv.conf

 

네트워크 관리 (NetworkManager)

GUI (Gnome-settings), TUI(nmtui), CLI(nmcli) 제공

  • NetworkManager 상태 확인
systemctl status NetworkManager
  • NetworkManager 시작
sudo systemctl start NetworkManager
sudo systemctl enable NetworkManager
  • 네트워크 변경 시 재시작
sudo systemctl restart NetworkManager

 

nmcli (CLI 기반 네트워크 설정)

  • 네트워크 상태 확인
nmcli general status
nmcli device status
  • Wi-Fi 네트워크 검색
nmcli device wifi list
  • 새로운 Wi-Fi 연결
nmcli device wifi connect "MyWiFi" password "mypassword"
  • 네트워크 인터페이스 활성화/비활성화
nmcli connection up eth0
nmcli connection down eth0
  • 고정 IP 주소 설정
nmcli connection modify eth0 ipv4.addresses 192.168.1.100/24
nmcli connection modify eth0 ipv4.gateway 192.168.1.1
nmcli connection modify eth0 ipv4.dns 8.8.8.8,8.8.4.4
nmcli connection modify eth0 ipv4.method manual
nmcli connection up eth0

고정 IP(192.168.1.100), 게이트웨이(192.168.1.1), DNS(8.8.8.8) 설정 후 활성화.

 

nmtui (TUI 기반 네트워크 설정)

터미널에서 실행 가능한 텍스트 기반 인터페이스

  • 실행
nmtui
  • 실행 후 메뉴 선택
Edit a connection → 네트워크 설정 변경
Activate a connection → 네트워크 인터페이스 활성화
Set system hostname → 시스템 호스트네임 변경

 

GNOME Settings (GUI)

데스크톱 환경에서 GUI 기반 네트워크 설정 가능
IP 설정, DNS 변경 등 가능.

  • 경로
    Settings → Network → Ethernet / Wi-Fi → Configure

 

네트워크 설정 관련 파일

/etc/sysconfig/network-scripts/ : RHEL/CentOS에서 네트워크 인터페이스 설정 파일이 저장됨 (ifcfg-eth0 등)
/etc/hosts : IP 주소와 호스트 이름을 매핑하여 로컬 네임 해석을 제공
/etc/hostname : 시스템의 호스트네임을 저장
/etc/resolv.conf : 시스템의 DNS 서버 주소를 설정
/etc/nsswitch.conf : 호스트 이름 해석 순서를 정의 (예: /etc/hosts → DNS 순)

 

네트워크 관리 명령어

  • ping (네트워크 연결 확인)
    ICMP echo request 패킷을 보내고 응답 (echo reply)을 받으면 연결 성공
    네트워크 상태, 지연 시간 확인 가능
ping www.google.com

[옵션]
-c <숫자> : ping 횟수 지정
-s <크기> : 패킷 크기 설정

  • ip (네트워크 인터페이스 정보 확인)

IP 주소 확인

ip addr show

인터페이스 상태 확인

ip link show

인터페이스 활성화/비활성화

ip link set eth0 up
ip link set eth0 down
  • netstat (네트워크 상태 확인) -- ss로 대체됨
    net-tools 패키지 설치 필요
netstat -tulnp

[옵션]
-t : TCP 포트만 표시
-u : UDP 포트만 표시
-l : 리슨 중인 포트 표시
-n : IP 및 포트를 숫자로 표시
-p : 해당 포트를 사용 중인 프로세스 표시

  • traceroute (라우팅 경로 추적)
    목적지까지의 경로(라우터)를 추적
traceroute www.google.com

목적지까지 몇 개의 라우터를 거치는지 확인 가능

  • tcpdump (패킷 캡쳐 및 분석)
    네트워크 트래픽을 실시간으로 캡쳐하여 분석

모든 패킷 캡쳐

sudo tcpdump -i eth0

특정 포트 (예 - 80번 포트) 패킷 캡쳐

sudo tcpdump -i eth0 port 80
  • nslookup / dig (DNS 조회)

간단한 DNS 조회 (nslookup)

nslookup www.google.com

자세한 DNS 정보 (dig)

dig www.google.com
  • ethtool (네트워크 카드 정보 확인)

인터페이스 정보 확인

ethtool eth0

네트워크 속도 확인

ethtool eth0 | grep Speed

 

 

파일 

파일 아카이브 및 압축

  • tar (파일 및 디렉토리 묶기)

파일/디렉토리 아카이브 생성

tar -cvf archive.tar directory/

압축 해제

gzip file.txt
  • gzip (파일 압축)

파일 압축

gzip file.txt

압축 해제

gunzip file.txt.gz

 

FTP (File Transfer Protocol)

서버 간 파일 전송 프로토콜. 기본포트는 21번이다.
일반적으로 vsftpd를 사용한다.

  • FTP 서버 설치 (vsftpd)
sudo yum install vsftpd # RHEL, CentOS
sudo apt install vsftpd # Ubuntu, Debian

# 설정 파일 수정 (/etc/vsftpd/vsftpd.conf)
sudo vi /etc/vsftpd/vsftpd.conf

# 설정 변경
anonymous_enable=NO
ascii_upload_enable=YES
ascii_download_enable=YES

# FTP 서비스 시작 및 자동 실행 설정
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
  • FTP 클라이언트 사용
# FTP 설치
sudo yum install ftp

# FTP 접속
ftp [FTP 서버 IP]

# 명령어
put file.txt   # 서버로 파일 업로드
get file.txt   # 서버에서 파일 다운로드
bye            # 종료

 

SCP (보안 복사 프로토콜)

SSH 기반의 파일 전송 프로토콜 (기본포트 : 22)
FTP 보다 보안 강함

  • SCP 사용법
# 로컬 -> 원격 서버 파일 전송
scp file.txt user@remote_server:/home/user/

# 원격 서버 -> 로컬 다운로드
scp user@remote_server:/home/user/file.txt .

# 디렉토리 복사 (-r 옵션)
scp -r myfolder user@remote_server:/home/user/