리눅스 학습 시리즈 안내
시리즈 목차 보기

리눅스 중급 단계를 지나면 이제는 단순 관리가 아니라 운영 자동화와 서비스 구성, 보안 강화, 성능 최적화까지 다루게 된다. 고급 단계부터는 실무 환경에서 자주 마주치는 문제를 스스로 해결할 수 있는 수준으로 올라가는 것이 목표다.

이번 글에서는 리눅스 고급 과정에서 꼭 익혀야 할 핵심 주제를 한 번에 정리해본다.

1. 리눅스 쉘 스크립트

고급 단계에서 쉘 스크립트는 필수다. 반복 작업을 줄이고, 점검과 운영을 자동화하는 가장 기본적인 도구이기 때문이다.

쉘 스크립트의 기본 구조와 문법

기본적인 스크립트는 보통 아래처럼 시작한다.

쉘 스크립트 기본 예시 : bash 스크립트의 기본 구조를 보여줍니다.

이 예시는 쉘 스크립트 파일이 어떻게 시작되는지 이해할 때 사용합니다.

#!/bin/bash

echo "Hello Linux"

간단해 보여도, 여기서부터 운영 자동화가 시작된다.

변수, 조건문, 반복문

bash 변수, 조건문, 반복문 예시 : 쉘 스크립트의 기본 제어 구조를 보여줍니다.

이 예시는 변수 선언, 조건문, 반복문을 함께 사용하는 기본 패턴입니다.

#!/bin/bash
NAME="server01"

if [ -f /etc/os-release ]; then
  echo "$NAME is ready"
fi

for USER in alice bob charlie; do
  echo "$USER"
done

이 구조를 익히면 사용자 생성, 로그 점검, 백업 자동화 같은 작업을 훨씬 쉽게 만들 수 있다.

파일 처리 및 파이프라인

리눅스의 강점은 작은 명령어들을 조합하는 데 있다.

파이프라인 예시 : 여러 명령어를 연결해 필요한 결과만 추려냅니다.

이 예시는 로그 필터링이나 특정 프로세스 검색처럼 명령어 조합이 필요한 상황에서 유용합니다.

cat /var/log/syslog | grep ssh | tail -n 20
ps aux | grep nginx

실무에서는 grep, awk, sed, cut, sort, uniq 같은 도구와 함께 많이 사용한다.

자동화 스크립트와 크론탭 설정

백업, 로그 정리, 상태 점검 같은 작업은 스크립트 + cron 조합으로 많이 처리한다.

크론탭 예시 : 매일 새벽 2시에 점검 스크립트를 실행합니다.

이 설정은 디스크 상태 점검 같은 반복 작업을 자동화할 때 사용합니다.

0 2 * * * /usr/local/bin/check-disk.sh

고급 단계에서는 “명령어를 아는 것”보다 “반복 작업을 줄이는 구조를 만드는 것”이 중요하다.

2. 고급 네트워킹 기술

서버 운영에서 네트워크는 거의 모든 서비스의 기반이다. 고급 단계에서는 단순 접속을 넘어서 구성, 방화벽, 트러블슈팅까지 다룰 수 있어야 한다.

네트워크 인터페이스 구성 및 관리

ip, nmcli 명령어 : 네트워크 인터페이스와 라우팅, 연결 상태를 확인합니다.

이 명령어들은 IP 주소, 라우팅 정보, 네트워크 연결 구성을 점검할 때 사용합니다.

ip addr
ip route
nmcli connection show

이 단계에서는 다음을 이해해야 한다.

  • 인터페이스별 IP와 서브넷
  • 라우팅 테이블 구조
  • 정적 IP와 DHCP 차이
  • NetworkManager와 수동 설정 방식 차이

방화벽 설정

배포판과 환경에 따라 다른 도구를 쓸 수 있다.

iptables, firewall-cmd 명령어 : 방화벽 규칙을 조회하고 관리합니다.

이 명령어들은 서비스 포트 개방 여부를 확인하거나 방화벽 규칙을 변경할 때 사용합니다.

sudo iptables -L -n -v
sudo firewall-cmd --list-all
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --reload

기본 원칙은 단순하다.

  • 필요한 포트만 허용
  • 나머지는 차단
  • 규칙 변경 후 실제 서비스 접근 테스트

네트워크 트러블슈팅

문제가 생기면 빠르게 원인을 좁혀야 한다.

ping, traceroute, ss, netstat 명령어 : 네트워크 연결과 포트 상태를 진단합니다.

이 명령어들은 연결 문제, 라우팅 문제, 서비스 포트 상태를 점검할 때 자주 사용합니다.

ping 8.8.8.8
traceroute example.com
ss -tulpn
netstat -tulpn

이런 도구는 다음 상황에서 유용하다.

  • DNS 문제인지 확인
  • 라우팅 문제인지 확인
  • 서비스가 실제 포트를 열고 있는지 확인
  • 방화벽 또는 외부 보안 그룹 문제인지 확인

네트워크 파일 시스템 (NFS)

여러 리눅스 서버 간 파일 공유가 필요할 때 NFS를 사용한다.

  • 서버에서 export 설정
  • 클라이언트에서 mount
  • 접근 권한과 성능 옵션 조정

운영 환경에서는 성능과 권한 설정을 함께 고려해야 한다.

3. 인터넷 프로토콜 이해

리눅스를 오래 운영하다 보면 결국 TCP/IP를 이해해야 문제 해결이 빨라진다.

TCP/IP 프로토콜 스택

TCP/IP는 네트워크 통신의 핵심 구조다. 애플리케이션, 전송, 인터넷, 링크 계층이 어떻게 이어지는지 이해하면 서비스 장애를 분석할 때 큰 도움이 된다.

IPv4 vs IPv6

기본 개념은 반드시 알아두는 편이 좋다.

  • IPv4는 아직 가장 널리 쓰임
  • IPv6는 주소 공간이 넓고 점점 중요해짐
  • 클라우드와 최신 네트워크 환경에서는 IPv6 이해가 점점 중요해짐

DNS 설정 및 관리

리눅스 서버에서 DNS 문제는 매우 흔하다.

dig, nslookup, cat 명령어 : DNS 질의와 설정 상태를 확인합니다.

이 명령어들은 도메인 해석 문제나 DNS 설정 이상을 점검할 때 유용합니다.

dig example.com
nslookup example.com
cat /etc/resolv.conf

DNS가 꼬이면 외부 접속, 패키지 다운로드, API 연동까지 전부 영향을 받는다.

DHCP 서버 설정

일반 서버 운영에서 직접 DHCP를 구성할 일은 많지 않을 수 있지만, 내부망이나 실습 환경에서는 충분히 중요하다.

  • DHCP 기본 개념
  • 주소 풀 구성
  • 고정 할당
  • 라우터/게이트웨이/DNS 옵션 설정

4. 리눅스 서버 환경 구성

고급 단계에서는 실제 서비스 서버를 구축하고 운영하는 경험이 중요하다.

웹 서버 설치 및 설정

대표적으로 Apache와 Nginx를 많이 사용한다.

nginx 설치 명령어 : 웹 서버를 설치하고 즉시 활성화합니다.

이 명령어는 리눅스 서버에 Nginx를 설치하고 서비스 시작과 자동 실행을 설정할 때 사용합니다.

sudo apt install nginx
sudo systemctl enable --now nginx

이 단계에서 알아야 할 것:

  • 가상 호스트 / 서버 블록
  • 정적 파일 서비스
  • 리버스 프록시
  • HTTPS 연동
  • 로그와 에러 페이지 관리

데이터베이스 서버 설치 및 설정

MySQL/MariaDB, PostgreSQL은 서버 운영에서 자주 등장한다.

mariadb 설치 명령어 : 데이터베이스 서버를 설치하고 즉시 활성화합니다.

이 명령어는 MariaDB를 설치하고 서비스 시작과 자동 실행을 설정할 때 사용합니다.

sudo apt install mariadb-server
sudo systemctl enable --now mariadb

중요한 포인트:

  • 외부 노출 최소화
  • 인증 방식 점검
  • 백업/복구 전략
  • 성능 튜닝의 기본

FTP/SFTP 서버 구성

요즘은 일반 FTP보다 SFTP를 훨씬 더 많이 사용한다.

  • OpenSSH 기반 SFTP 활용
  • 계정별 접근 제한
  • 업로드 전용 디렉토리 구성

SAMBA 서버 파일 공유

윈도우와 리눅스가 함께 있는 환경에서는 SAMBA가 유용하다.

  • 공유 디렉토리 설정
  • 사용자별 접근 제어
  • 내부망 환경에서의 파일 교환

5. 리눅스 보안 관리

고급 단계부터는 보안이 선택이 아니라 필수 영역이 된다.

보안의 기초 이해 및 강화

기본 원칙은 단순하지만 강력하다.

  • 최소 권한 원칙
  • 불필요한 서비스 비활성화
  • 정기 업데이트
  • 관리자 계정 분리
  • 로그와 감사 체계 유지

SELinux 개념 및 설정

SELinux는 처음엔 어렵게 느껴질 수 있지만, 정책 기반 보안을 이해하는 데 매우 중요하다.

  • Enforcing / Permissive / Disabled 모드
  • 컨텍스트 개념
  • 서비스 접근 제한 원리

RHEL 계열 운영에서는 특히 중요하다.

SSL/TLS 인증서 관리

HTTPS와 암호화 통신은 기본이다.

certbot 명령어 : HTTPS 인증서를 발급하고 Nginx와 연동합니다.

이 명령어는 Let's Encrypt 인증서를 발급하고 웹 서버에 HTTPS를 적용할 때 사용합니다.

sudo certbot --nginx -d example.com

알아야 할 것:

  • 인증서 발급과 갱신
  • 체인 인증서 개념
  • 웹 서버와의 연동
  • 만료 모니터링

auditd, fail2ban 활용

auditd는 감사 기록용, fail2ban은 반복 공격 차단용으로 유용하다.

fail2ban, auditd 서비스 활성화 명령어 : 보안 방어와 감사 기능을 활성화합니다.

이 명령어는 반복 공격 차단과 시스템 감사 로그 수집을 시작할 때 사용합니다.

sudo systemctl enable --now fail2ban
sudo systemctl enable --now auditd

이 도구들은 공격을 막는 것뿐 아니라, 사후 분석에도 큰 도움을 준다.

6. 리눅스 고급 관리 기술

이 단계부터는 시스템 자체를 좀 더 깊게 조정할 수 있어야 한다.

커널 튜닝 및 관리

sysctl 명령어 : 커널 파라미터를 조회하고 특정 값을 확인합니다.

이 명령어는 네트워크와 메모리 같은 커널 설정을 점검하거나 튜닝할 때 사용합니다.

sysctl -a
sysctl net.ipv4.ip_forward

sysctl을 통해 네트워크, 메모리, 커널 동작을 조정할 수 있다. 단, 운영 환경에서는 무작정 튜닝하기보다 변경 이유와 영향 범위를 명확히 알아야 한다.

고급 파일 시스템 관리: RAID, LVM

운영 환경에서는 단일 디스크만으로는 부족할 수 있다.

  • RAID로 가용성과 성능 확보
  • LVM으로 유연한 볼륨 관리
  • 확장, 축소, 스냅샷 전략 이해

시스템 성능 모니터링 및 최적화

iostat, vmstat, sar 명령어 : 시스템 성능과 자원 사용 상태를 분석합니다.

이 명령어들은 CPU, 메모리, 디스크 I/O 병목을 찾을 때 자주 사용합니다.

iostat
vmstat
sar

이 도구들은 CPU, 메모리, 디스크 I/O, 네트워크 병목을 찾는 데 매우 유용하다.

클라우드 환경에서의 리눅스 운영

AWS, GCP, Azure 같은 환경에서는 전통적인 서버 운영과 다른 부분도 많다.

  • 보안 그룹과 방화벽 차이
  • 클라우드 디스크와 로컬 디스크 차이
  • 오토스케일링과 이미지 기반 배포
  • 메타데이터와 IAM 역할 활용

고급 단계에서 꼭 해볼 실습

고급 단계는 실습 비중이 특히 높아야 한다. 추천 실습은 아래와 같다.

  1. 쉘 스크립트로 시스템 점검 자동화하기
  2. nginx를 리버스 프록시로 구성해보기
  3. MariaDB 또는 PostgreSQL 설치 후 로컬 접속 테스트하기
  4. 방화벽 규칙을 설정하고 포트 접근 테스트하기
  5. certbot으로 HTTPS 인증서 발급해보기
  6. fail2ban 설치 후 SSH 보호 확인하기
  7. iostat, vmstat, sar로 시스템 상태 비교해보기

마무리

리눅스 고급 단계는 단순히 서버를 “쓸 줄 아는 수준”을 넘어, 안정적으로 운영하고, 자동화하고, 보호하는 단계라고 볼 수 있다. 이 단계를 잘 익히면 실무에서 웹 서버, DB 서버, 보안 설정, 성능 점검을 혼자서도 상당 부분 처리할 수 있게 된다.

중급 단계가 운영 감각을 만드는 과정이었다면, 고급 단계는 그 감각을 실제 서비스 운영 수준으로 끌어올리는 과정이라고 보면 된다.


시리즈 이동