Rocky Linux 8.10 – 서버 보안 설정
이번 글은 실제 프로젝트 의뢰를 통해 진행한
Rocky Linux 8.10 – 서버 보안 설정 과정 기록입니다.
보안 정책 요청서를 기반으로 각 항목을 설정하는 과정을 단계별로 정리했습니다.
(※ 설정 결과 검증은 2부에서 다룹니다)
Rocky Linux 8.10 – 서버 보안 설정 Step_by_Step
1. 요청받은 보안 항목 요약
| No | 보안 항목 | 설정 내용 |
|---|---|---|
| 1 | 패스워드 최대 사용기간 | 40일 |
| 2 | 패스워드 구성 | 대문자/소문자/숫자/특수문자 포함, 8자 이상 |
| 3 | 로그인 실패 시 계정 잠금 | 5회 실패 시 계정 잠금 |
| 4 | root 원격 접속 제한 | SSH root 로그인 차단 |
| 5 | 불필요 서비스 차단 | FTP, Telnet 비활성화 |
| 6 | 세션 타임아웃 | 10분 |
| 7 | 미사용 계정 제한 | adm, sync, shutdown, halt, operator, nobody → nologin |
| 8 | 보안 패치 | 최신 버전 업데이트 |
2. 작업 목차
- 2.1 OS & 보안 패치
- 2.2 MySQL 설치 및 계정 설정
- 2.3 Apache & PHP 설정
- 2.4 계정 생성 및 웹 디렉토리 구성
- 2.5 Bonding 네트워크 구성
- 2.6 보안 정책 적용
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은 서버 네트워크 가용성을 높이는 핵심 설정입니다.
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부)에서는 이 설정들이 실제로 정상 동작하는지 검증한 과정을 다룹니다.