Ubuntu 서버의 기본 보안을 단계별로 잡는 가이드다. 원문(The Fan Club, 2012)은 Ubuntu 12.04 기준이라, 지금 LTS(22.04/24.04)에서 달라진 부분을 반영해 정리했다. 모든 명령은 sudo 권한으로, 바꾸기 전에 설정 파일을 백업하고, 특히 SSH·방화벽은 접속이 끊길 수 있으니 콘솔 접근 수단을 확보한 뒤 진행한다.
1. 방화벽 – UFW
UFW(Uncomplicated Firewall)로 시작한다. 방화벽을 켜기 전에 SSH 부터 허용해야 접속이 […]
서버가 느려졌을 때 디스크, CPU·메모리, 네트워크 중 어디가 병목인지 찾는 데 쓰는 명령어와 도구를 정리했다.
1. top – 실시간 프로세스 현황
CPU, 메모리를 많이 쓰는 프로세스를 실시간으로 보여 준다. 기본 3초마다 갱신된다.
키 기능 P / M CPU 사용량 순 / 메모리 사용량 순으로 정렬 t CPU 요약 줄 표시 방식 바꾸기 m 메모리 요약 […]
아래 예시의 appdb, app, <password>, 10.0.0.x 는 실제 값으로 바꿔서 쓴다.
1. 설치
sudo apt install mariadb - server mariadb - client
sudo mariadb - secure - installation
2. DB, 계정, 권한
CREATE DATABASE appdb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'app' @'%' IDENTIFIED BY '<password>' ;
GRANT ALL PRIVILEGES ON appdb.* TO 'app' @'%' ;
-- 특정 뷰만 읽게 하는 계정
CREATE USER 'report' @'%' IDENTIFIED BY '<password>' ;
GRANT SELECT ON appdb.view_users TO 'report' @'%' ;
SHOW GRANTS FOR 'app' @'%' ;
root@’%’ 처럼 root 를 외부에 여는 것은 피하고, 서비스마다 필요한 DB 에만 권한을 준 계정을 따로 만든다. GRANT 와 CREATE USER 를 쓰면 FLUSH PRIVILEGES 는 필요 없다.
3. 백업과 복원
# 백업 (InnoDB 는 --single-transaction 으로 잠금 없이 일관된 백업)
mysqldump - u app - p -- single - transaction -- routines -- triggers appdb | gzip - 9 > appdb .sql .gz
# 복원
gunzip < appdb .sql .gz | mysql - u app - p appdb
# 다른 서버로 바로 복원
mysqldump - h 127.0.0.1 - u app - p -- single - transaction appdb | mysql - h 10.0.0.12 - u app - p appdb
-p비밀번호 처럼 명령줄에 비밀번호를 […]
링크