Ubuntu 26.04.1 LTS Desktop 웹서버 구축 완전판 > 우툰투 자료실

본문 바로가기

우툰투 자료실

우툰투 자료실 HOME


Ubuntu 26.04.1 LTS Desktop 웹서버 구축 완전판

페이지 정보

작성자 낙엽타는향기 댓글 0건 조회 4회 작성일 26-09-22 11:38

본문

Ubuntu 26.04.1 LTS Desktop 웹서버 구축 완전판

> 기준일: 2026-09  

> 운영체제: Ubuntu 26.04.1 LTS Desktop (Resolute Raccoon)  

> 목적: Apache + MySQL + PHP + phpMyAdmin + SSH/SFTP + UFW + Let's Encrypt HTTPS 웹서버 구축


0. 이 가이드의 기준과 최종 구성

이 문서는 Ubuntu 26.04.1 LTS Desktop ISO를 새로 설치한 직후부터 실제 외부 HTTPS 웹서버를 완성하는 과정을 순서대로 정리한 설치 가이드입니다.

기본 구성:


운영체제 : Ubuntu 26.04.1 LTS Desktop

코드명   : Resolute Raccoon

웹서버   : Apache2

DB       : MySQL 8.4 계열

PHP      : PHP 8.5 계열

DB관리   : phpMyAdmin

SSH/SFTP : OpenSSH Server

방화벽   : UFW

SSL      : Let's Encrypt + Certbot


예제 도메인:


pcjoin.com

www.pcjoin.com


예제 웹 루트:


/var/www/html/pcjoin/g5


이 가이드에서 가장 중요한 원칙은 다음과 같습니다.


1. Ubuntu 설치

2. 시스템 업데이트

3. 서버 내부 IP 확인 및 고정

4. SSH/SFTP 준비

5. UFW 설정

6. Apache 설치

7. MySQL 설치

8. PHP 설치

9. HTTP 가상호스트 구성

10. 내부 HTTP 접속 확인

11. 공유기 포트포워딩

12. DNS 연결

13. 외부 HTTP 접속 확인

14. phpMyAdmin 설치

15. Certbot 설치

16. SSL 인증서 발급

17. HTTPS 강제 전환

18. 최종 보안 및 자동갱신 확인


HTTPS 설정부터 먼저 만들지 않습니다.

먼저 HTTP가 정상적으로 작동하는 것을 확인한 후 마지막에 SSL을 적용합니다.


1. Ubuntu 26.04.1 LTS Desktop 설치

Ubuntu Desktop ISO를 이용해 설치합니다.

설치 시 일반 사용자 계정을 하나 생성합니다.

예:


사용자명 : pcjoin

컴퓨터명 : webserver


웹서버 구축을 위해 root GUI 로그인을 활성화할 필요는 없습니다.

설치가 끝나면 재부팅합니다.


2. 시스템 버전 확인

터미널을 열고 다음을 실행합니다.

bash

lsb_release -a


또는:

bash

cat /etc/os-release


예상 결과:


Ubuntu 26.04.1 LTS

Resolute Raccoon


커널 확인:

bash

uname -a



3. 시스템 전체 업데이트

먼저 저장소 정보를 갱신합니다.

bash

sudo apt update


업데이트:

bash

sudo apt full-upgrade -y


사용하지 않는 패키지 정리:

bash

sudo apt autoremove -y


필요하면 재부팅합니다.

bash

sudo reboot



4. 기본 관리 유틸리티 설치

bash

sudo apt install -y \

nano \

curl \

wget \

unzip \

zip \

git \

ca-certificates \

software-properties-common \

net-tools \

dnsutils


설치 후 `nano`, `curl`, `wget`, `nslookup`, `dig` 등을 사용할 수 있습니다.


5. root 계정 GUI 로그인은 사용하지 않음

과거 Ubuntu 웹서버 구축 문서에서 다음과 같은 설정을 사용하기도 했습니다.


AllowRoot=true

/etc/pam.d/gdm-password 수정

root GUI 로그인 허용


Ubuntu 26.04에서는 웹서버 구축을 위해 이런 작업이 필요하지 않습니다.

일반 사용자에서:

bash

sudo 명령어


를 사용하면 됩니다.

일시적으로 root shell이 필요하면:

bash

sudo -i


root shell 종료:

bash

exit



6. 서버 내부 IP 확인

다음 명령:

bash

hostname -I


또는:

bash

ip addr


예:


192.168.0.100


이 IP는 나중에 다음 용도로 사용됩니다.


내부 웹접속

SSH/SFTP 접속

공유기 포트포워딩



7. 서버 IP 고정 권장

웹서버 내부 IP가 DHCP로 계속 바뀌면 공유기 포트포워딩이 끊길 수 있습니다.

가장 간단하고 안전한 방법은 공유기에서 DHCP 예약을 하는 것입니다.

예:


서버 MAC 주소

        ↓

192.168.0.100 고정 할당


Ubuntu Desktop은 NetworkManager를 사용하므로 GUI에서 IPv4 수동 설정을 사용할 수도 있습니다.

하지만 일반 가정/소규모 사무실에서는 공유기 DHCP 예약 방식이 관리하기 쉽습니다.


8. OpenSSH Server 설치

원격 관리를 위해 SSH 서버를 설치합니다.

bash

sudo apt install openssh-server -y


자동 시작:

bash

sudo systemctl enable ssh


즉시 시작:

bash

sudo systemctl start ssh


상태 확인:

bash

sudo systemctl status ssh --no-pager


정상이면:


active (running)


이 표시됩니다.


9. 내부 SSH 접속 테스트

다른 PC에서:

bash

ssh pcjoin@192.168.0.100


Windows에서는 PowerShell에서도 사용할 수 있습니다.

powershell

ssh pcjoin@192.168.0.100


접속되면 SSH 서버는 정상입니다.


10. FTP 대신 SFTP 권장

Ubuntu 서버에서 별도의 FTP 서버를 설치하지 않아도 OpenSSH가 설치되어 있으면 SFTP를 사용할 수 있습니다.

FileZilla 설정 예:


프로토콜 : SFTP - SSH File Transfer Protocol

호스트   : 192.168.0.100

포트     : 22

사용자   : pcjoin

비밀번호 : Ubuntu 사용자 비밀번호


SFTP의 장점:


FTP 21번 포트 불필요

Passive FTP 포트 불필요

전송 암호화

vsftpd 별도 설치 불필요


특별한 이유가 없다면 SFTP 사용을 권장합니다.


11. UFW 방화벽 설치 및 상태 확인

대부분 기본 설치되어 있습니다.

bash

sudo apt install ufw -y


현재 상태:

bash

sudo ufw status


처음에는 일반적으로:


Status: inactive


입니다.


12. SSH 포트 먼저 허용

방화벽을 켜기 전에 SSH를 먼저 허용합니다.

bash

sudo ufw allow 22/tcp


또는:

bash

sudo ufw allow OpenSSH


이 단계를 생략한 상태에서 원격 SSH로 작업 중 UFW를 켜면 접속이 끊길 수 있습니다.


13. HTTP/HTTPS 포트 허용

HTTP:

bash

sudo ufw allow 80/tcp


HTTPS:

bash

sudo ufw allow 443/tcp


방화벽 활성화:

bash

sudo ufw enable


상태 확인:

bash

sudo ufw status verbose


예:


22/tcp    ALLOW

80/tcp    ALLOW

443/tcp   ALLOW



14. Apache 웹서버 설치

bash

sudo apt install apache2 -y


서비스 활성화:

bash

sudo systemctl enable apache2


시작:

bash

sudo systemctl start apache2


상태 확인:

bash

sudo systemctl status apache2 --no-pager


정상:


active (running)



15. Apache 방화벽 프로필 확인

Apache 설치 후:

bash

sudo ufw app list


보통 다음 항목이 표시됩니다.


Apache

Apache Full

Apache Secure


`Apache Full`은 HTTP와 HTTPS를 모두 허용합니다.

이미 80/443을 직접 열었다면 추가 작업은 필요하지 않습니다.

대신 다음 방식으로 관리해도 됩니다.

bash

sudo ufw allow 'Apache Full'



16. Apache 기본 페이지 확인

서버 자체 브라우저에서:


http://localhost


또는:


http://127.0.0.1


다른 같은 공유기 PC에서는:


http://192.168.0.100


Apache 기본 페이지가 나오면 정상입니다.


17. MySQL Server 설치

Ubuntu 26.04 LTS 기본 저장소의 MySQL Server를 설치합니다.

bash

sudo apt install mysql-server -y


서비스 자동 시작:

bash

sudo systemctl enable mysql


시작:

bash

sudo systemctl start mysql


상태 확인:

bash

sudo systemctl status mysql --no-pager


버전 확인:

bash

mysql --version


Ubuntu 26.04 계열에서는 MySQL 8.4 계열이 기본입니다.


18. MySQL 초기 보안 설정

다음을 실행합니다.

bash

sudo mysql_secure_installation


환경에 따라 질문 내용이 조금 다를 수 있습니다.

일반적인 운영 서버라면 다음 방향을 권장합니다.


익명 사용자 제거          : Yes

원격 root 로그인 제한     : Yes

test 데이터베이스 제거    : Yes

권한 테이블 다시 읽기     : Yes


비밀번호 검증 플러그인 설정은 운영 정책에 맞게 선택합니다.


19. MySQL root 로그인

Ubuntu 기본 MySQL 설치에서는 root 사용자가 시스템 인증을 사용하는 경우가 많습니다.

따라서 다음이 가장 간단합니다.

bash

sudo mysql


MySQL 프롬프트가 나오면 정상입니다.


mysql>


종료:

sql

EXIT;



20. PHP 8.5 및 필수 확장 설치

Ubuntu 26.04 LTS 기본 PHP 계열은 PHP 8.5입니다.

일반적인 그누보드/Rhymix/PHP 웹사이트에서 자주 사용하는 확장을 함께 설치합니다.

bash

sudo apt install -y \

php \

libapache2-mod-php \

php-cli \

php-common \

php-mysql \

php-curl \

php-gd \

php-mbstring \

php-xml \

php-zip \

php-intl \

php-bcmath


설치 후 PHP 버전 확인:

bash

php -v


예:


PHP 8.5.x



21. Apache PHP 모듈 확인

다음 명령:

bash

apache2ctl -M | grep php


PHP 모듈이 표시되면 정상입니다.

필요한 경우:

bash

sudo systemctl restart apache2



22. PHP 동작 테스트

테스트 파일 생성:

bash

sudo nano /var/www/html/phpinfo.php


내용:

php

<?php

phpinfo();


브라우저:


http://localhost/phpinfo.php


또는:


http://192.168.0.100/phpinfo.php


PHP 정보 페이지가 뜨면 PHP와 Apache 연동이 정상입니다.

확인이 끝나면 즉시 삭제합니다.

bash

sudo rm /var/www/html/phpinfo.php


`phpinfo()` 페이지를 인터넷에 계속 공개하지 않습니다.


23. Apache Rewrite 모듈 활성화

그누보드, Rhymix, WordPress 등 `.htaccess`를 사용하는 프로그램을 위해:

bash

sudo a2enmod rewrite


SSL 모듈:

bash

sudo a2enmod ssl


Headers:

bash

sudo a2enmod headers


기타 일반적으로 많이 사용하는 모듈:

bash

sudo a2enmod expires


적용:

bash

sudo systemctl restart apache2



24. AllowOverride 설정

파일 열기:

bash

sudo nano /etc/apache2/apache2.conf


다음 부분을 찾습니다.

apache

<Directory /var/www/>

    Options Indexes FollowSymLinks

    AllowOverride None

    Require all granted

</Directory>


다음처럼 변경합니다.

apache

<Directory /var/www/>

    Options FollowSymLinks

    AllowOverride All

    Require all granted

</Directory>


`Indexes`를 제거하면 index 파일이 없는 디렉터리의 파일 목록 노출을 막을 수 있습니다.

설정 검사:

bash

sudo apache2ctl configtest


정상:


Syntax OK


그 후:

bash

sudo systemctl reload apache2



25. 웹사이트 디렉터리 생성

예:

bash

sudo mkdir -p /var/www/html/pcjoin/g5


테스트 index 파일:

bash

sudo nano /var/www/html/pcjoin/g5/index.html


내용:

html

<!doctype html>

<html lang="ko">

<head>

    <meta charset="utf-8">

    <title>PCJOIN WEB SERVER</title>

</head>

<body>

    <h1>PCJOIN WEB SERVER OK</h1>

</body>

</html>



26. 웹 디렉터리 권한 설계

Apache 서비스 계정:


www-data


웹서버가 파일을 소유하도록 단순 구성한다면:

bash

sudo chown -R www-data:www-data /var/www/html/pcjoin


하지만 SFTP로 `pcjoin` 사용자가 자주 수정해야 한다면 그룹 방식이 편리합니다.

예:

bash

sudo usermod -aG www-data pcjoin

sudo chown -R pcjoin:www-data /var/www/html/pcjoin

sudo find /var/www/html/pcjoin -type d -exec chmod 775 {} \;

sudo find /var/www/html/pcjoin -type f -exec chmod 664 {} \;


로그아웃 후 다시 로그인해야 새 그룹 권한이 반영될 수 있습니다.

무조건 다음처럼 설정하지 않습니다.

bash

chmod -R 777 /var/www/html



27. HTTP 가상호스트 만들기

SSL 적용 전에는 HTTP 가상호스트만 만듭니다.

bash

sudo nano /etc/apache2/sites-available/pcjoin.conf


내용:

apache

<VirtualHost *:80>

    ServerAdmin webmaster@localhost

    ServerName pcjoin.com

    ServerAlias www.pcjoin.com

    DocumentRoot /var/www/html/pcjoin/g5

    <Directory /var/www/html/pcjoin/g5>

        Options FollowSymLinks

        AllowOverride All

        Require all granted

    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/pcjoin_error.log

    CustomLog ${APACHE_LOG_DIR}/pcjoin_access.log combined

</VirtualHost>


저장합니다.


28. 사이트 활성화

bash

sudo a2ensite pcjoin.conf


기본 사이트가 필요 없다면:

bash

sudo a2dissite 000-default.conf


반드시 검사:

bash

sudo apache2ctl configtest


정상:


Syntax OK


가상호스트 구조 확인:

bash

sudo apache2ctl -S


그 다음:

bash

sudo systemctl reload apache2



29. Apache 80포트 LISTEN 확인

bash

sudo ss -lntp | grep ':80'


예:


LISTEN ... 0.0.0.0:80


또는:


*:80


이면 정상입니다.


30. 내부 IP로 사이트 테스트

다른 PC나 휴대폰을 같은 공유기에 연결하고:


http://192.168.0.100


접속합니다.

`PCJOIN WEB SERVER OK`가 나오면 Apache와 내부 네트워크는 정상입니다.


31. hosts 파일을 이용한 내부 도메인 테스트 - 선택사항

DNS 연결 전에도 가상호스트를 도메인 이름으로 확인할 수 있습니다.

Windows PC:


C:\Windows\System32\drivers\etc\hosts


관리자 권한 메모장으로 열고:


192.168.0.100 pcjoin.com

192.168.0.100 www.pcjoin.com


추가합니다.

그 후:


http://pcjoin.com


으로 내부 테스트할 수 있습니다.

DNS 설정 후에는 hosts 파일에 추가한 줄을 제거합니다.


32. 공유기 포트포워딩

인터넷 외부에서 서버에 들어오려면 공유기 포트포워딩이 필요합니다.

서버 내부 IP가:


192.168.0.100


이라면:


서비스  외부포트   내부IP          내부포트   프로토콜

HTTP    80         192.168.0.100   80         TCP

HTTPS   443        192.168.0.100   443        TCP


SSH를 외부에서 사용할 경우에만:


SSH     22         192.168.0.100   22         TCP


를 추가합니다.

외부 SSH가 필요하지 않다면 22번은 공유기에 포트포워딩하지 않아도 됩니다.


33. 공인 IP 확인

서버에서:

bash

curl -4 ifconfig.me


또는 공유기 관리자 페이지의 WAN IP를 확인합니다.

예:


123.123.123.123



34. CGNAT / 이중 NAT 확인

공유기의 WAN IP와 외부 공인 IP가 다르면 포트포워딩이 작동하지 않을 수 있습니다.

특히 WAN IP가 다음과 같다면 확인이 필요합니다.


10.x.x.x

172.16.x.x ~ 172.31.x.x

192.168.x.x

100.64.x.x ~ 100.127.x.x


가능성:


통신사 CGNAT

상위 공유기 존재

모뎀 + 공유기 이중 NAT


이 경우 상위 라우터 포트포워딩 또는 통신사 공인 IP 서비스가 필요할 수 있습니다.


35. DNS 설정

도메인 관리 사이트에서 A 레코드를 서버 공인 IP로 설정합니다.

예:


유형    이름    값

A       @       123.123.123.123

A       www     123.123.123.123


또는 `www`를 CNAME으로:


www → pcjoin.com


설정할 수 있습니다.


36. DNS 적용 확인

bash

nslookup pcjoin.com


bash

nslookup www.pcjoin.com


또는:

bash

dig +short pcjoin.com


공인 IP와 같은 값이 나와야 합니다.


37. 외부 HTTP 접속 테스트

스마트폰 Wi-Fi를 끄고 LTE/5G로:


http://pcjoin.com


접속합니다.

그리고:


http://www.pcjoin.com


도 확인합니다.

이 단계가 성공하기 전에는 SSL 인증서를 발급하지 않습니다.


38. phpMyAdmin 설치

Ubuntu 26.04 저장소에서 설치합니다.

bash

sudo apt update

sudo apt install phpmyadmin -y


설치 과정에서 웹서버 선택 화면이 나오면:


apache2


에 Space 키로 체크 후 Enter를 누릅니다.

`dbconfig-common` 설정 질문이 나오면 일반적으로 Yes를 선택할 수 있습니다.


39. phpMyAdmin 접속 확인


http://localhost/phpmyadmin


또는:


http://192.168.0.100/phpmyadmin


404가 나오면:

bash

sudo nano /etc/apache2/apache2.conf


아래 내용이 포함되어 있는지 확인합니다.

apache

Include /etc/phpmyadmin/apache.conf


없다면 추가합니다.

그 후:

bash

sudo apache2ctl configtest

sudo systemctl reload apache2



40. phpMyAdmin용 관리자 계정 만들기

MySQL root 계정은 phpMyAdmin에서 바로 로그인되지 않을 수 있습니다.

별도 관리 계정을 만드는 것이 편합니다.

bash

sudo mysql


예:

sql

CREATE USER 'pcjoinadmin'@'localhost'

IDENTIFIED BY '매우강력한비밀번호';


전체 DB 관리가 필요한 관리자 계정이라면:

sql

GRANT ALL PRIVILEGES ON *.* TO 'pcjoinadmin'@'localhost'

WITH GRANT OPTION;


적용:

sql

FLUSH PRIVILEGES;


종료:

sql

EXIT;


phpMyAdmin에서:


ID : pcjoinadmin

PW : 설정한 비밀번호


로 로그인합니다.


41. 실제 웹사이트용 DB와 사용자는 별도로 생성

웹사이트에는 전체 MySQL 관리자 계정을 넣지 않습니다.

bash

sudo mysql


DB 생성:

sql

CREATE DATABASE pcjoin

CHARACTER SET utf8mb4

COLLATE utf8mb4_unicode_ci;


사용자 생성:

sql

CREATE USER 'pcjoin'@'localhost'

IDENTIFIED BY '웹사이트전용강력한비밀번호';


해당 DB만 권한 부여:

sql

GRANT ALL PRIVILEGES ON pcjoin.* TO 'pcjoin'@'localhost';


적용:

sql

FLUSH PRIVILEGES;


확인:

sql

SHOW GRANTS FOR 'pcjoin'@'localhost';


종료:

sql

EXIT;


그누보드나 기타 PHP 웹프로그램 설치 시 이 계정을 사용합니다.


42. MySQL 3306 외부 공개 금지

일반적인 웹사이트에서는 MySQL에 외부에서 직접 접속할 필요가 없습니다.

따라서:


UFW 3306 개방하지 않음

공유기 3306 포트포워딩하지 않음


을 기본으로 합니다.

DB 작업은:


phpMyAdmin

SSH

로컬 MySQL

SSH 터널


등을 이용합니다.


43. Certbot 설치

Ubuntu 26.04 공식 저장소 패키지를 이용합니다.

bash

sudo apt update

sudo apt install certbot python3-certbot-apache -y


설치 확인:

bash

certbot --version



44. SSL 발급 전 최종 조건 확인

다음이 모두 정상이어야 합니다.


[ ] http://pcjoin.com 접속됨

[ ] http://www.pcjoin.com 접속됨

[ ] DNS가 서버 공인 IP를 가리킴

[ ] 공유기 80 TCP 포트포워딩 완료

[ ] 공유기 443 TCP 포트포워딩 완료

[ ] UFW 80/443 허용

[ ] Apache 정상 실행


확인:

bash

sudo apache2ctl configtest

sudo apache2ctl -S

sudo ufw status



45. Let's Encrypt 인증서 발급

한 인증서에 루트 도메인과 www를 함께 넣습니다.

bash

sudo certbot --apache -d pcjoin.com -d www.pcjoin.com


진행 중:


이메일 주소 입력

약관 동의


를 진행합니다.

Certbot이 Apache 설정을 자동으로 분석하고 SSL 설정을 구성하도록 합니다.


46. 인증서 확인

bash

sudo certbot certificates


예:


Certificate Name: pcjoin.com

Domains: pcjoin.com www.pcjoin.com


일반적인 인증서 경로:


/etc/letsencrypt/live/pcjoin.com/fullchain.pem

/etc/letsencrypt/live/pcjoin.com/privkey.pem


`www.pcjoin.com` 인증서를 별도로 만들 필요는 없습니다.


47. HTTPS 접속 확인

브라우저에서:


https://pcjoin.com



https://www.pcjoin.com


접속합니다.

브라우저 주소창에 정상적인 HTTPS 표시가 나오면 인증서 설정이 완료된 것입니다.


48. HTTP → HTTPS 강제 전환

Certbot 실행 과정에서 Redirect를 선택했다면 자동 설정되어 있을 수 있습니다.

확인:


http://pcjoin.com


으로 접속했을 때:


https://pcjoin.com


으로 넘어가면 정상입니다.

Certbot이 자동 설정하지 않은 경우 HTTP 가상호스트를 다음처럼 설정할 수 있습니다.

apache

<VirtualHost *:80>

    ServerName pcjoin.com

    ServerAlias www.pcjoin.com

    Redirect permanent / https://pcjoin.com/

</VirtualHost>


변경 후:

bash

sudo apache2ctl configtest

sudo systemctl reload apache2



49. HTTPS VirtualHost에 불필요한 Rewrite 넣지 않기

443 VirtualHost 안에서 다음 같은 설정은 불필요합니다.

apache

RewriteEngine On

RewriteCond %{HTTPS} off

RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]


443 VirtualHost 요청은 이미 HTTPS입니다.

HTTP에서 HTTPS로 보내는 코드는 `*:80` 쪽에서 처리합니다.


50. 인증서 자동 갱신 테스트

bash

sudo certbot renew --dry-run


성공하면 자동 갱신 구조가 정상입니다.

timer 확인:

bash

systemctl list-timers | grep certbot


또는:

bash

systemctl status certbot.timer --no-pager


설치 방식에 따라 서비스 표시 형태는 다를 수 있으므로 가장 중요한 검사는:

bash

sudo certbot renew --dry-run


입니다.


51. Apache 설정 변경 후 기본 습관

Apache 설정을 수정한 뒤 바로 재시작하지 않습니다.

먼저:

bash

sudo apache2ctl configtest


`Syntax OK` 확인 후:

bash

sudo systemctl reload apache2


를 사용합니다.

서비스 자체 문제가 있을 때만:

bash

sudo systemctl restart apache2


를 사용해도 됩니다.


52. Apache 가상호스트 확인

bash

sudo apache2ctl -S


이 명령은 매우 중요합니다.

다음을 확인할 수 있습니다.


어떤 도메인이 어느 conf에 연결되는지

80 VirtualHost

443 VirtualHost

기본 VirtualHost

ServerName 중복



53. Apache 포트 확인

bash

sudo ss -lntp | grep -E ':80|:443'


정상 웹서버라면 80과 443이 LISTEN 상태여야 합니다.

예:


*:80

*:443



54. 서비스 자동 시작 확인

Apache:

bash

sudo systemctl enable apache2


MySQL:

bash

sudo systemctl enable mysql


SSH:

bash

sudo systemctl enable ssh


상태 확인:

bash

systemctl is-enabled apache2

systemctl is-enabled mysql

systemctl is-enabled ssh



55. 서버 시간대 확인

bash

timedatectl


한국 서버라면:


Asia/Seoul


인지 확인합니다.

필요하면:

bash

sudo timedatectl set-timezone Asia/Seoul


확인:

bash

date



56. PHP 시간대 확인

PHP 기본 설정 확인:

bash

php --ini


Apache용 PHP 설정 파일은 환경에 따라 다음 계열에 있습니다.


/etc/php/8.5/apache2/php.ini


편집:

bash

sudo nano /etc/php/8.5/apache2/php.ini


다음 항목:

ini

date.timezone = Asia/Seoul


설정 후:

bash

sudo systemctl reload apache2


CLI PHP도 동일하게 하려면:


/etc/php/8.5/cli/php.ini


도 확인합니다.


57. PHP 업로드 용량 조정 - 필요 시

그누보드나 파일 업로드 사이트를 운영할 경우:

bash

sudo nano /etc/php/8.5/apache2/php.ini


예:

ini

upload_max_filesize = 100M

post_max_size = 110M

memory_limit = 256M

max_execution_time = 300

max_input_time = 300


사이트 용도에 맞게 조정합니다.

변경 후:

bash

sudo systemctl reload apache2


무작정 지나치게 큰 값으로 설정하지 않습니다.


58. Apache 디렉터리 목록 차단

다음 설정을 권장합니다.

apache

<Directory /var/www/html/pcjoin/g5>

    Options FollowSymLinks

    AllowOverride All

    Require all granted

</Directory>


`Indexes`를 넣지 않으면 index 파일이 없는 폴더의 파일 목록 노출을 막을 수 있습니다.


59. phpMyAdmin 외부 노출 최소화

`/phpmyadmin`은 공격 시도가 많은 경로입니다.

가능하면 다음 중 하나 이상을 적용합니다.


내부망 전용

특정 IP만 허용

VPN 이용

Apache Basic Authentication 추가

별도 관리자 서브도메인 사용


최소한 phpMyAdmin 계정 비밀번호는 길고 복잡하게 설정합니다.


60. SSH 보안 권장사항

외부 SSH를 사용할 경우 비밀번호 로그인보다 SSH Key 사용을 권장합니다.

또한 다음 원칙을 권장합니다.


root SSH 로그인 금지

외부 SSH가 필요 없으면 공유기 22 포트포워딩 안 함

강력한 비밀번호 사용

SSH Key 인증 사용

필요하면 fail2ban 적용


root 계정 직접 로그인을 웹서버 관리 방식으로 사용하지 않습니다.


61. Fail2ban 설치 - 선택사항

외부 SSH 또는 웹서비스 보호에 사용할 수 있습니다.

bash

sudo apt install fail2ban -y


활성화:

bash

sudo systemctl enable --now fail2ban



댓글목록



등록된 댓글이 없습니다.

댓글쓰기

내용
자동등록방지 숫자를 순서대로 입력하세요.