SBP 2025. 4. 22. 15:02

Windows Server와 마찬가지로 Linux 서버의 기본 설정, 사용자 관리, 네트워크 인터페이스 설정, 방화벽 설정, 그리고 주요 네트워크 서비스에 대해 자세히 설명해 드리겠습니다. Linux는 다양한 배포판(Ubuntu, CentOS, Debian, Fedora, RHEL 등)이 있으며, 배포판마다 명령어와 설정 파일의 위치가 약간씩 다를 수 있습니다. 여기서는 일반적으로 많이 사용되는 명령어와 설정 방식을 중심으로 설명하겠습니다.
Linux 서버 관리는 대부분 명령어 줄 인터페이스(CLI)를 통해 이루어지며, 설정 파일 편집기를 사용하여 각종 설정을 변경합니다. vi, nano 등의 편집기가 주로 사용됩니다. 시스템 서비스 관리는 systemd 시스템(최신 배포판)에서는 systemctl 명령어를 사용하고, 구형 시스템에서는 service 명령어를 사용하기도 합니다.

  1. Linux 서버 기본 설정
    Linux 서버 설치 후 초기 단계에서 수행해야 하는 기본적인 설정들입니다.

    • 호스트 이름 변경 (Hostname):
    • 서버를 네트워크에서 식별하기 위한 이름입니다.
    • 확인: hostname
    • 변경: hostnamectl set-hostname 새로운_호스트이름 (systemd 사용 시) 또는 /etc/hostname 파일 직접 편집 후 재부팅 또는 hostname 새로운_호스트이름 (일시적용)
    • /etc/hosts 파일에도 새로운 호스트 이름을 등록해주는 것이 좋습니다.
    • 시간 및 표준 시간대 설정:
    • 시스템 로그 및 서비스 동작의 정확성을 위해 올바른 시간과 표준 시간대 설정이 필수입니다.
    • 확인: timedatectl status (systemd 사용 시) 또는 date
    • 표준 시간대 변경: timedatectl set-timezone Asia/Seoul (예: 서울 시간) 또는 /etc/localtime 파일을 원하는 시간대 파일로 링크
    • 시간 동기화 (NTP): 네트워크 타임 프로토콜(NTP)을 사용하여 정확한 시간 서버와 동기화하도록 설정합니다. chrony 또는 ntpd 서비스가 사용됩니다.
      • sudo systemctl enable chronyd
      • sudo systemctl start chronyd
    • 패키지 업데이트:
    • 시스템 보안 및 안정성을 위해 설치된 패키지들을 최신 상태로 유지해야 합니다.
    • Ubuntu/Debian 계열:
      • sudo apt update (패키지 목록 업데이트)
      • sudo apt upgrade (설치된 패키지 업그레이드)
    • CentOS/RHEL/Fedora 계열:
      • sudo yum update 또는 sudo dnf update
    • SSH 서버 설정:
    • 원격에서 보안 터미널 접속을 위해 SSH 서버(sshd) 설정을 확인하고 필요에 따라 변경합니다. 기본적으로 22번 포트를 사용합니다.
    • 설정 파일: /etc/ssh/sshd_config
    • 주요 설정: 포트 번호 변경, root 로그인 허용 여부, 비밀번호 인증 또는 키 기반 인증 설정 등
    • 설정 변경 후 sudo systemctl restart sshd 명령으로 서비스를 재시작해야 적용됩니다.
  2. 사용자 관리
    Linux는 다중 사용자 운영체제로, 여러 사용자가 시스템에 접근할 수 있습니다. 사용자 계정, 그룹, 그리고 파일 권한 관리는 보안의 핵심입니다.

    • 사용자 계정:
    • 각 사용자는 고유한 사용자 이름과 사용자 ID(UID)를 가집니다. root 사용자는 시스템의 모든 권한을 가진 최고 관리자입니다.
    • 생성: sudo useradd 사용자이름
    • 비밀번호 설정: sudo passwd 사용자이름
    • 삭제: sudo userdel 사용자이름 (계정만 삭제), sudo userdel -r 사용자이름 (계정 및 홈 디렉터리 삭제)
    • 정보 확인: /etc/passwd 파일 또는 getent passwd 사용자이름
    • 그룹 관리:
    • 사용자들을 그룹으로 묶어 파일 및 자원에 대한 접근 권한을 효율적으로 관리할 수 있습니다. 각 사용자는 하나 이상의 그룹에 속할 수 있습니다.
    • 생성: sudo groupadd 그룹이름
    • 삭제: sudo groupdel 그룹이름
    • 사용자를 그룹에 추가: sudo usermod -aG 그룹이름 사용자이름
    • 사용자가 속한 그룹 확인: groups 사용자이름
    • 정보 확인: /etc/group 파일
    • sudo 설정:
    • 일반 사용자가 sudo 명령어를 사용하여 일시적으로 root 권한으로 명령을 실행할 수 있도록 허용하는 설정입니다. 직접 root 계정 사용을 제한하고 sudo를 사용하는 것이 보안상 권장됩니다.
    • sudo 권한을 가진 사용자 또는 그룹은 /etc/sudoers 파일을 통해 관리됩니다. visudo 명령어로 안전하게 편집합니다.
    • 파일 권한 (Permissions):
    • 파일 및 디렉터리에 대한 사용자(owner), 그룹(group), 기타 사용자(others)의 읽기(read), 쓰기(write), 실행(execute) 권한을 설정합니다.
    • 확인: ls -l
    • 변경: chmod 권한설정 파일/디렉터리 (예: chmod 755 script.sh), chown 소유자:그룹 파일/디렉터리
  3. 네트워크 인터페이스 설정
    Linux 서버가 네트워크에 연결되고 IP 주소를 할당받으며 통신 경로를 설정하는 방법입니다. 배포판 및 네트워크 관리 서비스에 따라 설정 방식이 다를 수 있습니다.

    • 네트워크 인터페이스 확인:

    • 시스템에 설치된 네트워크 어댑터 목록과 현재 설정된 IP 주소 등을 확인합니다. 인터페이스 이름은 eth0, eth1과 같거나 enp0s3, ens33과 같은 형태로 나타납니다.

    • 명령어: ip addr show 또는 ifconfig (구형)

    • IP 주소 설정 (정적 또는 DHCP):

    • 서버는 안정적인 접근을 위해 고정 IP 주소를 사용하는 것이 일반적입니다.

    • 설정 파일 (배포판별 상이):

      • Debian/Ubuntu (구형 또는 Server): /etc/network/interfaces
      • RHEL/CentOS/Fedora: /etc/sysconfig/network-scripts/ifcfg-인터페이스이름
      • Ubuntu (신형, Desktop): Netplan (/etc/netplan/*.yaml)
    • 설정 내용 (고정 IP 예시):

      Debian/Ubuntu /etc/network/interfaces

      auto eth0
      iface eth0 inet static
      address 192.168.1.100
      netmask 255.255.255.0
      gateway 192.168.1.1
      dns-nameservers 8.8.8.8 8.8.4.4

    • 설정 변경 후 네트워크 서비스를 재시작해야 적용됩니다.

      • sudo systemctl restart networking (Debian/Ubuntu)
      • sudo systemctl restart network (RHEL/CentOS)
      • sudo netplan apply (Netplan 사용 시)
    • 기본 게이트웨이 및 라우팅 설정:

    • 외부 네트워크와 통신하기 위한 기본 게이트웨이 주소를 설정하고, 필요에 따라 정적 라우팅 경로를 추가합니다.

    • 확인: ip route show

    • 추가 (임시): sudo ip route add default via 기본_게이트웨이_IP

    • 영구 설정은 네트워크 인터페이스 설정 파일에 포함시키거나 /etc/sysconfig/network 파일 등에 설정합니다.

  4. 방화벽 설정
    Linux 시스템은 강력한 방화벽 기능을 제공하여 네트워크 트래픽을 제어하고 보안을 강화합니다. 여러 방화벽 관리 도구가 사용됩니다.

    • iptables:
    • Linux 커널의 Netfilter 프레임워크를 제어하는 기본 도구입니다. 복잡하고 상세한 규칙 설정이 가능하지만 사용법이 어렵습니다.
    • 규칙은 테이블(table)과 체인(chain)으로 구성됩니다 (예: filter 테이블의 INPUT, OUTPUT, FORWARD 체인).
    • 명령어 예시:
      • sudo iptables -L (현재 규칙 확인)
      • sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT (TCP 22번 포트 인바운드 허용)
      • sudo iptables -A INPUT -j DROP (명시적으로 허용되지 않은 모든 인바운드 패킷 차단)
    • 재부팅 시 규칙이 유지되도록 저장하는 과정이 필요합니다.
    • firewalld:
    • RHEL/CentOS/Fedora 등에서 기본적으로 사용되는 동적 방화벽 관리 도구입니다. iptables 위에 추상화된 레이어를 제공하여 관리가 더 용이합니다. 영역(Zone) 개념을 사용하여 네트워크 인터페이스나 소스 IP에 따라 다른 보안 수준을 적용할 수 있습니다.
    • 명령어 예시:
      • sudo firewall-cmd --state (방화벽 상태 확인)
      • sudo firewall-cmd --get-active-zones (활성 영역 확인)
      • sudo firewall-cmd --zone=public --add-port=80/tcp --permanent (public 영역에 TCP 80번 포트 영구적 허용)
      • sudo firewall-cmd --reload (설정 변경 적용)
    • UFW (Uncomplicated Firewall):
    • Ubuntu/Debian에서 사용되는 간편한 방화벽 관리 도구입니다. iptables를 쉽게 설정할 수 있도록 고안되었습니다.
    • 명령어 예시:
      • sudo ufw status (방화벽 상태 확인)
      • sudo ufw enable (방화벽 활성화)
      • sudo ufw allow ssh (SSH 서비스(기본 22번 포트) 허용)
      • sudo ufw allow 80/tcp (TCP 80번 포트 허용)
  5. 주요 네트워크 서비스 (데몬)
    Linux 서버는 다양한 역할을 수행하기 위해 여러 네트워크 서비스를 데몬(daemon) 형태로 실행합니다. 주요 서비스는 다음과 같습니다.

    • SSH 서버 (sshd):
    • 원격에서 안전하게 서버에 접속하여 명령을 실행할 수 있도록 하는 서비스입니다. 암호화된 통신 채널을 제공합니다. 서버 관리 및 설정 변경에 필수적입니다.
    • 웹 서버 (Web Server):
    • 웹 사이트나 웹 애플리케이션을 호스팅하고 클라이언트의 HTTP/HTTPS 요청에 응답하는 서비스입니다.
    • 종류: Apache HTTP Server (httpd), Nginx 등
    • 파일 공유 서비스:
    • 네트워크 상에서 파일을 공유할 수 있도록 하는 서비스입니다.
    • Samba: Windows 클라이언트와의 파일 및 프린터 공유를 지원합니다.
    • NFS (Network File System): Unix/Linux 시스템 간의 파일 시스템 공유에 사용됩니다.
    • DNS 서버 (BIND - Berkeley Internet Name Domain):
    • 도메인 이름을 IP 주소로 변환하거나 그 반대 역할을 수행하는 서비스입니다. 자체적인 네임 서버를 운영할 때 사용됩니다.
    • DHCP 서버 (ISC DHCP Server - dhcpd):
    • 네트워크에 연결된 장치들에게 IP 주소 및 네트워크 설정을 자동으로 할당하는 서비스입니다.
    • 메일 서버 (Mail Server):
    • 전자 메일의 송수신을 처리하는 서비스입니다.
    • 종류: Postfix, Sendmail (MTA - Mail Transfer Agent), Dovecot, Courier (MDA - Mail Delivery Agent) 등
    • 데이터베이스 서버:
    • 네트워크를 통해 여러 클라이언트가 데이터베이스에 접근할 수 있도록 하는 서비스입니다.
    • 종류: MySQL, PostgreSQL, MariaDB 등
      이 외에도 다양한 네트워크 서비스들이 있으며, 서버의 역할과 목적에 따라 필요한 서비스를 설치하고 systemctl (또는 service) 명령어를 사용하여 시작, 중지, 재시작, 상태 확인 등을 수행하며 관리합니다.
      Linux 서버는 유연하고 강력하며, 다양한 도구와 설정 파일을 통해 세밀한 관리가 가능하다는 특징이 있습니다. 각 배포판의 문서와 man 페이지(명령어 사용법 설명)를 참고하시면 더 자세한 정보를 얻으실 수 있습니다.