이 문서는 CentOS 9 환경에서 서브 노트북의 고정 사설 IP 설정부터 SSH 및 기본 보안 강화까지의 과정을 정리합니다.
$ echo $SHELL
/bin/bash
$ cat /etc/centos-release
CentOS Stream release 9
고정 IP를 설정할 네트워크 연결 이름을 확인합니다.
nmcli connection show
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 '연결이름'
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
# 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 주소]
# /etc/ssh/sshd_config 파일 수정
sudo vim /etc/ssh/sshd_config
# 아래 두 옵션 설정 또는 확인
PasswordAuthentication no
PubkeyAuthentication yes
# SSH 서비스 재시작 (비밀번호 인증 비활성화)
sudo systemctl restart sshd
기본 22번 포트를 변경하여 무작위 대입 공격 위험을 줄입니다. (예시 포트: 32000)
/etc/ssh/sshd_config에서 포트 변경:
sudo vim /etc/ssh/sshd_config
# Port 22를 주석 처리하거나 다른 포트로 변경 (예시: 32000)
Port 32000
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
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 주소]로 접속해야 합니다.
# /etc/ssh/sshd_config 파일 수정
sudo vim /etc/ssh/sshd_config
# 루트 계정 접속 비활성화
PermitRootLogin no
# SSH 서비스 재시작
sudo systemctl restart sshd
sudo dnf install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
# 기본 설정 파일 복사
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
Gmail을 통해 알림 메일을 보내기 위해 Postfix (MTA)를 설정합니다.
Postfix 설치 및 상태 확인
sudo dnf install postfix -y
sudo systemctl status postfix
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
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
설정 적용 및 권한 설정
# 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
메일 전송 테스트 및 최종 확인
echo "Test body" | mail -s "Test Subject" yout_fail2ban_email@gmail.com
# 메일이 정상적으로 도착하면 설정 완료.
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