Rocky Linux 8.10 – 서버 보안 설정 (1부: 설정 과정)

Rocky Linux 8.10 – 서버 보안 설정
이번 글은 실제 프로젝트 의뢰를 통해 진행한
Rocky Linux 8.10 – 서버 보안 설정 과정 기록입니다.
보안 정책 요청서를 기반으로 각 항목을 설정하는 과정을 단계별로 정리했습니다.
(※ 설정 결과 검증은 2부에서 다룹니다)

Rocky Linux 8.10 – 서버 보안 설정 Step_by_Step


1. 요청받은 보안 항목 요약

No보안 항목설정 내용
1패스워드 최대 사용기간40일
2패스워드 구성대문자/소문자/숫자/특수문자 포함, 8자 이상
3로그인 실패 시 계정 잠금5회 실패 시 계정 잠금
4root 원격 접속 제한SSH root 로그인 차단
5불필요 서비스 차단FTP, Telnet 비활성화
6세션 타임아웃10분
7미사용 계정 제한adm, sync, shutdown, halt, operator, nobody → nologin
8보안 패치최신 버전 업데이트

2. 작업 목차


2.1 OS & 보안 패치

[root@localhost ~]#
dnf update --security -y

설치됨: kernel-4.18.0-553.69.1.el8_10 ...
완료되었습니다!

최신 보안 패치를 먼저 적용합니다.
Tip: 신규 서버 작업 시 반드시 커널과 핵심 패키지를
최신 상태로 맞추고 시작하세요.


2.2 MySQL 설치 및 계정 설정

[root@localhost ~]# 
dnf install -y mysql-community-server
[root@localhost ~]#
systemctl enable --now mysqld

MySQL 설치 후 root 임시 비밀번호로 접속하여 새 비밀번호를 지정합니다.
업무용 계정 yondu를 생성하고 원격 접속을 허용합니다.

mysql>
ALTER USER 'root'@'localhost' IDENTIFIED BY '보안비밀번호';
mysql>
CREATE USER 'yondu'@'localhost' IDENTIFIED BY '보안비밀번호';
mysql>
CREATE USER 'yondu'@'172.16.2.%' IDENTIFIED BY '보안비밀번호';
mysql>
GRANT ALL PRIVILEGES ON *.* TO 'yondu'@'localhost' WITH GRANT OPTION;
mysql>
GRANT ALL PRIVILEGES ON *.* TO 'yondu'@'172.16.2.%' WITH GRANT OPTION;
mysql>
FLUSH PRIVILEGES;

마지막으로 MySQL 방화벽 예외를 등록합니다.

[root@localhost ~]# 
firewall-cmd --permanent --add-service=mysql
[root@localhost ~]# 
firewall-cmd --reload

2.3 Apache & PHP 설정

[root@localhost ~]# 
dnf install -y httpd
[root@localhost ~]# 
systemctl enable --now httpd
[root@localhost ~]# 
dnf module enable -y php:7.4
[root@localhost ~]# 
dnf install -y php php-cli php-mysqlnd php-pdo php-gd php-xml php-mbstring
[root@localhost ~]# 
systemctl enable --now php-fpm

Apache + PHP 7.4 환경을 설치하고 기본 페이지로 정상 구동을 확인합니다.

[root@localhost /]# 
echo "<?php phpinfo(); ?>" > /var/www/html/info.php

http://서버IP/info.php 접속 → PHP 동작 확인

2.4 계정 생성 및 웹 디렉토리 구성

[root@localhost /]# 
useradd -m yondu
[root@localhost /]# 
passwd yondu
새 암호: ****

업로드 전용 계정을 만들고 /home/yondu/public_html 디렉토리를 구성합니다.

[root@localhost /]# 
mkdir /home/yondu/public_html
[root@localhost /]# 
chown -R yondu:yondu /home/yondu/public_html
[root@localhost /]# 
chmod 755 /home/yondu /home/yondu/public_html
[root@localhost /]# 
echo "<h1>Hello from yondu</h1>" > /home/yondu/public_html/index.html

http://서버IP/~yondu 접속 → 페이지 표시 확인

2.5 Bonding 네트워크 구성

[root@localhost /]# nmcli device status
eno1    ethernet  연결됨 (slave)
eno2    ethernet  연결됨 (slave)
bond0   bond      연결됨 (active-backup)

LAN1/2 인터페이스를 bond0
(active-backup 모드)으로 묶어 이중화를 구성했습니다.
Tip: Bonding은 서버 네트워크 가용성을 높이는 핵심 설정입니다.

*추가 참고
Bonding 설정의 원리와 전체 과정을 자세히 알고 싶다면
아래 포스팅을 참고하세요.
Rocky Linux 9.5 – 본딩 설정 가이드

2.6 보안 정책 적용

패스워드 정책

[root@localhost ~]# 
vi /etc/security/pwquality.conf

minlen = 8
minclass = 3

패스워드 최소 길이를 8자 이상, 대/소문자·숫자·특수문자 중 3종
이상을 요구하도록 설정합니다.

계정 잠금

[root@localhost ~]# 
vi /etc/security/faillock.conf

deny = 5
unlock_time = 600

5회 실패 시 계정을 잠그고 10분 뒤 자동 해제되도록 구성합니다.

SSH root 로그인 제한

[root@localhost ~]# 
vi /etc/ssh/sshd_config

PermitRootLogin no

[root@localhost ~]# systemctl restart sshd

세션 타임아웃

[root@localhost ~]# 
vi /etc/profile

TMOUT=600
export TMOUT

10분 이상 입력이 없으면 세션이 자동 종료되도록 설정합니다.

불필요 서비스 비활성화

[root@localhost ~]# 
vi /etc/services

# ftp 21/tcp
# telnet 23/tcp

미사용 계정 제한

[root@localhost ~]# usermod -s /sbin/nologin shutdown
[root@localhost ~]# usermod -s /sbin/nologin halt

Rocky Linux 8.10 – 서버 보안 설정 3. 마무리

여기까지는 Rocky Linux 8.10 – 서버 보안 설정 보안 설정 적용 과정입니다.
다음 글(2부)에서는 이 설정들이 실제로 정상 동작하는지 검증한 과정을 다룹니다.

댓글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다