서브 노트북 사설망 고정 IP 설정 및 SSH 보안 강화 (CentOS 9)

최지웅·2025년 11월 9일

백엔드

목록 보기
5/6

이 문서는 CentOS 9 환경에서 서브 노트북의 고정 사설 IP 설정부터 SSH 및 기본 보안 강화까지의 과정을 정리합니다.


1. 환경 확인 및 고정 IP 설정

1.1. 현재 환경 확인

$ echo $SHELL
/bin/bash

$ cat /etc/centos-release
CentOS Stream release 9

1.2. 네트워크 인터페이스 이름 확인

고정 IP를 설정할 네트워크 연결 이름을 확인합니다.

nmcli connection show

1.3. 고정 IP 및 DNS 설정

IP 주소, 게이트웨이, 연결 이름을 본인 환경에 맞게 변경하세요. (예시 IP: 172.x.x.x 대역)

# IP 주소, 서브넷 마스크, 게이트웨이 설정 (예시: 172.30.1.50)
$ sudo nmcli connection modify '연결이름' ipv4.method manual \
    ipv4.addresses 172.x.x.x/24 \
    ipv4.gateway 172.x.x.x

# DNS 서버 설정 (예시: 구글 DNS)
$ sudo nmcli connection modify '연결이름' ipv4.dns 8.8.8.8,8.8.4.4

# 고정 IP 적용을 위해 연결 재활성화
$ sudo nmcli connection up '연결이름'

2. 고정 IP 설정 후 통신 문제 해결 (ICMP/Ping)

ICMP(Ping) 요청을 허용하도록 방화벽 규칙을 수정합니다.

# public zone에서 핑(ICMP) 허용 규칙 추가 (영구 적용)
sudo firewall-cmd --zone=public --add-icmp-block-inversion
sudo firewall-cmd --zone=public --add-icmp-block=echo-request --permanent
sudo firewall-cmd --reload

# 서비스 시작 및 부팅 시 자동 시작 설정
sudo systemctl start firewalld
sudo systemctl enable firewalld 

3. SSH 접속 설정 및 보안 강화

3.1. SSH 서비스 활성화 및 방화벽 설정

# SSH 서비스 상태 확인
sudo systemctl status sshd

# public zone에 기본 SSH 포트(22/tcp) 허용 (영구 적용)
sudo firewall-cmd --zone=public --add-port=22/tcp --permanent
sudo firewall-cmd --reload

# Windows에서 SSH 접속
ssh [CentOS 사용자 이름]@[CentOS IP 주소]

3.2. SSH 키 기반 인증 설정 (권장)

# /etc/ssh/sshd_config 파일 수정
sudo vim /etc/ssh/sshd_config

# 아래 두 옵션 설정 또는 확인
PasswordAuthentication no
PubkeyAuthentication yes

# SSH 서비스 재시작 (비밀번호 인증 비활성화)
sudo systemctl restart sshd

3.3. SSH 포트 변경 및 SELinux 설정

기본 22번 포트를 변경하여 무작위 대입 공격 위험을 줄입니다. (예시 포트: 32000)

  1. /etc/ssh/sshd_config에서 포트 변경:

    sudo vim /etc/ssh/sshd_config
    # Port 22를 주석 처리하거나 다른 포트로 변경 (예시: 32000)
    Port 32000
  2. FirewallD 규칙 추가 및 기존 22번 포트 삭제:

    sudo firewall-cmd --zone=public --add-port=32000/tcp --permanent
    sudo firewall-cmd --zone=public --remove-port=22/tcp --permanent
    sudo firewall-cmd --reload
  3. SELinux에 새 포트 허용 규칙 추가:

    # ssh_port_t 타입에 새 포트 추가
    sudo semanage port -a -t ssh_port_t -p tcp 32000 
    
    # SSH 서비스 재시작
    sudo systemctl restart sshd

    접속: ssh -p 32000 [CentOS 사용자 이름]@[CentOS IP 주소]로 접속해야 합니다.

3.4. 루트 계정 SSH 접속 제한

# /etc/ssh/sshd_config 파일 수정
sudo vim /etc/ssh/sshd_config

# 루트 계정 접속 비활성화
PermitRootLogin no

# SSH 서비스 재시작
sudo systemctl restart sshd

4. Fail2ban 설치 및 설정 (브루트포스 방어)

4.1. Fail2ban 설치 및 활성화

sudo dnf install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

4.2. 기본 설정 복사 및 이메일 알림 설정

# 기본 설정 파일 복사
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

# jail.local 수정
sudo vim /etc/fail2ban/jail.local

# [default] 섹션에 알림 받을 이메일 주소 설정 (필수)
dest = yout_fail2ban_email@gmail.com 
sender = fail2ban@<hostname>

# [sshd] 섹션 활성화 및 설정 (SSH 포트 32000에 적용)
# port = ssh,32000
# action = %(action_mwl)s 

# Fail2ban 재시작
sudo systemctl restart fail2ban

4.3. Postfix 설정 (Gmail SMTP 연동)

Gmail을 통해 알림 메일을 보내기 위해 Postfix (MTA)를 설정합니다.

  1. Postfix 설치 및 상태 확인

    sudo dnf install postfix -y
    sudo systemctl status postfix
  2. Postfix 설정 파일 수정 (main.cf)

    sudo vim /etc/postfix/main.cf
    
    # 릴레이 호스트 설정
    relayhost = [smtp.gmail.com]:587
    
    # 인증 설정
    smtp_sasl_auth_enable = yes
    smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
    smtp_sasl_security_options = noanonymous
    smtp_sasl_tls_security_options = noanonymous
    smtp_use_tls = yes
    smtp_generic_maps = hash:/etc/postfix/generic
    
    # 메일 전송 문제 해결을 위한 호스트/도메인 설정
    myhostname = localhost.localdomain
    mydestination = $myhostname, localhost, localhost.localdomain
  3. Gmail 앱 비밀번호 설정 (sasl_passwd)

    sudo vim /etc/postfix/sasl_passwd
    
    # 형식: [smtp.gmail.com]:587 YOUR_GMAIL_ADDRESS@gmail.com:YOUR_APP_PASSWORD
    [smtp.gmail.com]:587    yout_fail2ban_email@gmail.com:your_app_password
  4. 설정 적용 및 권한 설정

    # postmap 실행 및 권한 설정
    sudo postmap /etc/postfix/sasl_passwd
    sudo postmap /etc/postfix/generic
    sudo chmod 600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
    
    # Postfix 서비스 재시작
    sudo systemctl restart postfix
  5. 메일 전송 테스트 및 최종 확인

    echo "Test body" | mail -s "Test Subject" yout_fail2ban_email@gmail.com
    # 메일이 정상적으로 도착하면 설정 완료.

5. Windows SSH 접속을 위한 DNS 등록 (SSH Config)

Windows 환경에서 SSH 접속 시 IP 주소 대신 별칭(Alias)을 사용하여 편리하게 접속할 수 있도록 설정합니다.

# Windows PowerShell 또는 CMD에서 실행 (파일 편집)
notepad $env:USERPROFILE\.ssh\config

# CentOS 서버 접속 별칭 설정 (위 파일에 내용 추가/수정)
Host your_dns_name
    Hostname 172.x.x.x
    User your_name
    Port your_port
    IdentityFile ~/.ssh/your_key_name
    
# 별칭을 이용한 접속
ssh your_dns_name
profile
이제 4학년!!!

0개의 댓글