Ubuntu 26.04.1 LTS Desktop 웹서버 구축 완전판
페이지 정보
작성자 낙엽타는향기 댓글 0건 조회 6회 작성일 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
예제 웹 루트:
/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 기본 페이지 확인
서버 자체 브라우저에서:
또는:
다른 같은 공유기 PC에서는:
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://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나 휴대폰을 같은 공유기에 연결하고:
접속합니다.
`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
추가합니다.
그 후:
으로 내부 테스트할 수 있습니다.
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로:
접속합니다.
그리고:
도 확인합니다.
이 단계가 성공하기 전에는 SSL 인증서를 발급하지 않습니다.
38. phpMyAdmin 설치
Ubuntu 26.04 저장소에서 설치합니다.
bash
sudo apt update
sudo apt install phpmyadmin -y
설치 과정에서 웹서버 선택 화면이 나오면:
apache2
에 Space 키로 체크 후 Enter를 누릅니다.
`dbconfig-common` 설정 질문이 나오면 일반적으로 Yes를 선택할 수 있습니다.
39. 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 표시가 나오면 인증서 설정이 완료된 것입니다.
48. HTTP → HTTPS 강제 전환
Certbot 실행 과정에서 Redirect를 선택했다면 자동 설정되어 있을 수 있습니다.
확인:
으로 접속했을 때:
으로 넘어가면 정상입니다.
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
댓글목록
등록된 댓글이 없습니다.