Linux 서버는 유연성, 비용 효율성, 강력한 성능 덕분에 기업과 개인 사이에서 엄청난 인기를 얻고 있습니다. 그러나 이러한 서버의 보안을 보장하는 것은 가장 중요합니다.

이 글에서는 CSF(ConfigServer Security & Firewall) 또는 유사한 소프트웨어를 사용하여 Linux 서버를 보호하는 방법을 살펴보고, 서버를 강화하기 위한 링크와 예제를 제공합니다.

CSF란?

CSF는 Linux 서버를 위해 특별히 설계된 강력한 스테이트풀 방화벽입니다. 사용하기 쉬운 인터페이스와 포괄적인 보안 기능을 제공하여 시스템 관리자 사이에서 인기 있는 선택이 되고 있습니다.

CSF는 단순한 방화벽이 아니라 악의적인 활동을 적극적으로 모니터링하고 차단하는 침입 탐지 시스템이기도 합니다.

CSF와 그 기능에 대한 자세한 내용은 공식 웹사이트에서 확인할 수 있습니다: ConfigServer Security & Firewall .

왜 CSF를 선택해야 하나요?

Linux 서버에 다른 방화벽 솔루션 대신 CSF를 선택해야 하는 여러 이유가 있습니다:

  • 간편한 설치 및 구성
  • 정기적인 업데이트와 활발한 커뮤니티 지원
  • 대부분의 Linux 배포판 및 제어판과의 호환성
  • 침입 탐지 및 로그인 실패 추적을 포함한 포괄적인 보안 기능
  • 사용자 정의 가능한 구성 옵션

CSF 설치 및 구성 방법

CSF를 설치하기 전에 서버에 있는 다른 방화벽을 제거하거나 비활성화하는 것이 중요합니다. 다음 단계에 따라 CSF를 설치하고 구성하세요:

  1. SSH를 통해 root 사용자로 서버에 로그인합니다.
  2. 다음 명령으로 CSF의 최신 버전을 다운로드합니다:
1wget https://download.configserver.com/csf.tgz
  1. 다운로드한 아카이브를 압축 해제합니다:
1tar -xzf csf.tgz
  1. 압축 해제된 디렉토리로 이동하여 설치 스크립트를 실행합니다:
1cd csf
2sh install.sh
  1. /etc/csf/csf.conf에 있는 구성 파일을 선호하는 텍스트 편집기(예: nano 또는 vim)로 엽니다. 보안 요구 사항에 맞게 설정을 사용자 정의합니다.
  2. CSF를 구성한 후 다음을 실행하여 서버 호환성을 테스트합니다:
1perl /usr/local/csf/bin/csftest.pl
  1. 테스트가 성공하면 구성 파일에서 TESTING 설정을 0으로 변경하여 CSF를 활성화합니다.
  2. 변경 사항을 적용하기 위해 CSF를 재시작합니다:
1csf -r

더 자세한 지침과 구성 옵션은 CSF 공식 문서 를 참조하세요.

강화된 보안을 위한 최적의 CSF 구성

Linux 서버의 보안을 향상시키기 위한 최적의 CSF 구성 권장 설정을 소개합니다.

이 설정은 모든 서버 환경에 적합하지 않을 수 있으므로 특정 요구 사항에 맞게 사용자 정의하는 것이 중요합니다. 프로덕션 서버에 적용하기 전에 항상 변경 사항을 테스트하세요.

  1. 인바운드 및 아웃바운드 연결 제한

TCP_IN, TCP_OUT, UDP_IN, UDP_OUT 섹션에서 인바운드 및 아웃바운드 연결을 필요한 포트로만 제한합니다. 예:

1TCP_IN = "22,80,443"
2TCP_OUT = "22,80,443,53"
3UDP_IN = "53"
4UDP_OUT = "53"
  1. 로그인 실패 탐지 활성화

구성 파일에서 LF_* 옵션을 활성화하여 CSF가 로그인 실패를 추적하도록 합니다:

1LF_TRIGGER = "5"
2LF_SSHD = "5"
3LF_FTPD = "10"
4LF_SMTPAUTH = "5"
5LF_POP3D = "10"
6LF_IMAPD = "10"

이 예제는 SSH, FTP, SMTP, POP3, IMAP에 대해 지정된 기간 내 5회의 로그인 실패 후 임시 차단을 설정합니다.

  1. 프로세스 추적 활성화

프로세스 추적을 활성화하여 서버 프로세스의 의심스러운 활동을 모니터링합니다:

1PT_LIMIT = "60"
2PT_USERMEM = "200"
3PT_USERTIME = "1800"
4PT_USERKILL = "1"

이 예제는 프로세스 추적 간격을 60초, 메모리 사용 제한을 200MB, 최대 프로세스 시간을 1800초로 설정하고, 제한을 초과하는 프로세스를 종료하는 기능을 활성화합니다.

  1. 구성 파일을 수정한 후 CSF를 재시작하는 것을 잊지 마세요:
1csf -r

CSF에서 프로필을 사용한 강화된 보안

CSF 프로필은 특정 사용 사례나 보안 수준에 맞춘 사전 정의된 구성 설정입니다. 개별 설정을 수동으로 변경하지 않고도 다양한 구성 간에 빠르게 전환할 수 있습니다.

이는 더 엄격한 보안 조치를 적용하거나 일시적으로 제한을 완화해야 할 때 특히 유용합니다. 이 섹션에서는 프로필이 무엇인지, 사용 방법, 그리고 적용 시 고려 사항에 대해 설명합니다.

CSF 프로필이란?

CSF 프로필은 기본적으로 다양한 시나리오에 대한 특정 설정을 포함하는 구성 파일입니다. 이 프로필은 단일 명령으로 적용할 수 있어 다양한 보안 구성 간의 전환이 용이합니다.

CSF에는 웹 서버나 메일 서버 등 특정 목적을 위해 설계된 여러 기본 프로필이 포함되어 있습니다.

CSF 프로필 사용 방법

  1. 먼저 CSF 프로필 디렉토리로 이동합니다:
1cd /usr/local/csf/profiles
  1. 사용 가능한 프로필을 나열합니다:
1ls

webserver.conf, mailserver.conf, default.conf 같은 기본 프로필 목록이 표시됩니다.

  1. 프로필을 적용하려면 다음 명령을 사용합니다:
1csf --profile <profile_name>
  1. 예를 들어, webserver.conf 프로필을 적용하려면:
1csf --profile webserver
  1. 사용자 정의 프로필을 만들려면 기존 구성 파일을 프로필 디렉토리에 복사합니다:
1cp /etc/csf/csf.conf /usr/local/csf/profiles/my_custom_profile.conf

그런 다음 선호하는 텍스트 편집기로 my_custom_profile.conf 파일을 편집하고 필요에 맞게 설정을 조정합니다. 변경을 완료한 후 앞서 언급한 명령을 사용하여 사용자 정의 프로필을 적용할 수 있습니다.

CSF 프로필 사용 시 고려 사항

  1. 새 프로필을 적용하기 전에 현재 구성을 백업하세요. 이를 통해 필요 시 이전 설정으로 쉽게 되돌릴 수 있습니다.
  2. 프로덕션 서버에 적용하기 전에 비프로덕션 환경에서 새 프로필을 테스트하세요. 이를 통해 잠재적인 문제나 충돌을 식별할 수 있습니다.
  3. 사용자 정의 프로필을 만들 때 Linux 서버 보호에 대한 모범 사례를 따르고 특정 사용 사례와 환경을 고려하세요.
  4. 최신 보안 권장 사항과 모범 사례를 따라갈 수 있도록 프로필을 정기적으로 검토하고 업데이트하세요.
  5. 새 프로필을 적용하면 현재 설정이 덮어씌워진다는 점을 기억하세요. 특히 사용자 정의 프로필을 사용하거나 기본 프로필을 수정한 경우 적용 전에 프로필 내용을 검토하세요.

CSF 프로필을 이해하고 활용하면 Linux 서버에서 다양한 보안 구성을 효과적으로 관리하고 전환할 수 있습니다. 이를 통해 시간을 절약할 뿐만 아니라 다양한 상황에서 서버를 보호된 상태로 유지할 수 있습니다.

CSF 사용자 인터페이스 설정

CSF는 방화벽을 관리하고 구성하기 위한 웹 기반 사용자 인터페이스(UI)를 제공합니다. 이 그래픽 인터페이스는 명령줄 도구에 익숙하지 않은 사용자나 시각적 관리를 선호하는 사용자에게 특히 유용합니다.

이 섹션에서는 CSF UI 설정 과정을 안내하고 사용 시 고려 사항에 대해 논의합니다.

CSF UI 설정

CSF UI는 cPanel, DirectAdmin, Webmin과 같은 인기 제어판에는 기본적으로 사용할 수 있습니다. 이 중 하나를 사용하는 경우 CSF UI가 이미 패널에 통합되어 있을 것입니다.

다른 제어판이나 제어판이 없는 서버의 경우 다음 단계로 CSF UI를 설정할 수 있습니다:

  1. 서버에 필요한 종속성이 설치되어 있는지 확인합니다:
  • Perl
  • LWP(libwww-perl) 모듈
  • GD(libgd) 모듈
  • GD::Graph 모듈

패키지 매니저를 사용하여 이러한 종속성을 설치할 수 있습니다. 예를 들어, Ubuntu에서:

1sudo apt-get install perl libwww-perl libgd-dev libgd-perl libgd-graph-perl
  1. /etc/csf/csf.conf에 있는 CSF 구성 파일을 선호하는 텍스트 편집기(예: nano 또는 vim)로 엽니다.
  2. 다음 설정을 찾아 아래와 같이 수정합니다:
1UI = "1"
2UI_PORT = "<your_desired_port>"
3UI_USER = "<your_username>"
4UI_PASS = "<your_password>"

<your_desired_port>를 사용하지 않는 포트 번호(예: 8080)로, <your_username>을 선택한 사용자 이름으로, <your_password>를 강력하고 고유한 비밀번호로 바꾸세요.

  1. 구성 파일을 저장하고 닫습니다.
  2. 변경 사항을 적용하기 위해 CSF를 재시작합니다:
1csf -r

브라우저에서 http://서버_IP:<지정_포트>를 열고 구성 파일에서 지정한 사용자 이름과 비밀번호로 로그인하여 CSF UI에 접근합니다.

CSF UI용 HTTPS 설정

로그인 자격 증명과 데이터 전송의 보안을 위해 CSF UI를 HTTPS로 보호하는 것이 필수적입니다. 특히 인터넷을 통해 UI에 접근하는 경우 HTTPS 사용이 강력히 권장됩니다.

이 섹션에서는 Let’s Encrypt, ACME 또는 Certbot을 사용하여 CSF UI에 HTTPS를 설정하는 방법과 CSF가 읽을 수 있도록 생성된 인증서를 배치할 위치를 보여드립니다.

Certbot을 사용한 HTTPS

  1. 서버에 Certbot이 설치되어 있는지 확인합니다. 특정 배포판에 대한 지침은 Certbot 웹사이트 에서 찾을 수 있습니다.
  2. Certbot을 사용하여 도메인에 대한 인증서를 생성합니다:
1sudo certbot certonly --standalone -d example.com

example.com을 자신의 도메인으로 바꾸세요. 도메인이 서버의 IP 주소를 가리키고 있는지 확인하세요.

  1. 인증서가 생성되면 /etc/letsencrypt/live/example.com/ 디렉토리에서 인증서 파일을 찾을 수 있습니다. 필요한 파일: fullchain.pem(인증서)과 privkey.pem(개인 키).
  2. CSF가 읽을 수 있는 위치에 인증서 파일을 복사합니다:
1sudo cp /etc/letsencrypt/live/example.com/fullchain.pem /etc/csf/ui/ssl/cert.pem
2sudo cp /etc/letsencrypt/live/example.com/privkey.pem /etc/csf/ui/ssl/key.pem
  1. /etc/csf/csf.conf에 있는 CSF 구성 파일을 선호하는 텍스트 편집기(예: nano 또는 vim)로 엽니다.
  2. 다음 설정을 수정합니다:
1UI_SSL = "1"
2UI_CERT = "/etc/csf/ui/ssl/cert.pem"
3UI_KEY = "/etc/csf/ui/ssl/key.pem"
  1. 구성 파일을 저장하고 닫습니다.
  2. 변경 사항을 적용하기 위해 CSF를 재시작합니다:
1csf -r

이제 브라우저에서 https://example.com:<지정_포트>를 열어 HTTPS를 통해 CSF UI에 안전하게 접근할 수 있습니다.

Let’s Encrypt 인증서는 유효 기간이 짧으므로 90일마다 갱신하는 것을 잊지 마세요. 이 프로세스는 cron job으로 자동화할 수 있습니다.

HTTPS는 CSF UI를 보호하기 위해 필수이며 강력히 권장된다는 점을 기억하세요. 이 단계를 따르면 로그인 자격 증명과 데이터 전송이 잠재적인 위협으로부터 보호됩니다.

CSF UI 사용 시 고려 사항

  1. 무단 접근을 방지하기 위해 CSF UI에 강력하고 고유한 비밀번호를 선택하세요. 비밀번호를 정기적으로 업데이트하고 다른 서비스에 같은 비밀번호를 사용하지 마세요.
  2. 특정 IP 주소만 연결할 수 있도록 CSF UI에 대한 접근을 제한하세요. CSF 구성 파일에서 UI_ALLOW 설정을 수정하여 이를 수행할 수 있습니다:
1UI_ALLOW = "192.168.1.1,192.168.1.2"

예시 IP 주소를 CSF UI에 접근을 허용하려는 IP 주소로 바꾸세요.

  1. CSF UI에 선택한 포트가 다른 서비스에서 사용되고 있지 않은지 확인하세요. 또한 자동화된 공격의 가능성을 줄이기 위해 비표준 포트를 사용하는 것이 좋습니다.
  2. 알려진 취약점과 보안 문제로부터 보호하기 위해 CSF UI와 종속성을 정기적으로 업데이트하세요.
  3. 의심스러운 활동이나 무단 로그인 시도를 식별하기 위해 접근 로그를 모니터링하세요. CSF 로그는 /var/log/lfd.log에 있습니다.

CSF UI를 설정하고 사용하면 사용하기 쉬운 그래픽 인터페이스를 통해 방화벽 설정을 효과적으로 관리하고 구성할 수 있습니다.

안전하고 신뢰할 수 있는 환경을 유지하기 위해 모범 사례를 따르고 위에서 언급한 고려 사항을 명심하세요.

DDoS 공격에 대한 CSF 보호

CSF는 다양한 구성과 보안 조치를 적용하여 분산 서비스 거부(DDoS) 공격으로부터 서버를 보호하는 데 도움을 줄 수 있습니다.

이 섹션에서는 CSF가 DDoS 공격으로부터 어떻게 보호할 수 있는지 보여주고 몇 가지 구성 예와 권장 사항을 제공합니다.

SYN Flood 보호

SYN Flood 공격은 공격자가 서버에 대량의 SYN 패킷을 보내 연결을 설정하려는 동안 리소스를 고갈시키는 유형의 DDoS 공격입니다.

CSF에서 SYN Flood 보호를 활성화하려면 /etc/csf/csf.conf에서 다음 설정을 수정합니다:

1SYNFLOOD = "1"
2SYNFLOOD_RATE = "100/s"
3SYNFLOOD_BURST = "150"

이 설정은 SYN Flood 보호를 활성화하고 수신 연결에 대한 속도 및 버스트 제한을 구성합니다.

연결 수 제한 보호

서버에 대한 동시 연결 수를 제한하면 특정 서비스를 대상으로 하는 DDoS 공격을 완화할 수 있습니다.

연결 수 제한 보호를 활성화하려면 CONNLIMIT 설정을 구성합니다:

1CONNLIMIT = "22;5,80;50,443;50"

이 예제는 SSH(22)의 연결을 5개, HTTP(80)를 50개, HTTPS(443)를 50개로 제한합니다.

포트 Flood 보호

포트 Flood 보호는 서버의 특정 포트를 대상으로 하는 DDoS 공격으로부터 보호하는 데 도움을 줍니다.

포트 Flood 보호를 활성화하려면 PORTFLOOD 설정을 구성합니다:

1PORTFLOOD = "22;tcp;5;300,80;tcp;30;5,443;tcp;30;5"

이 예제는 SSH(22)의 새 연결 속도를 300초당 5개, HTTP(80)와 HTTPS(443)를 5초당 30개로 제한합니다.

차단 목록

CSF는 다양한 IP 차단 목록과 통합하여 알려진 악성 IP 주소가 서버에 접근하는 것을 방지할 수 있습니다.

차단 목록 통합을 활성화하려면 CSF 구성 파일에서 BLOCKLIST_* 설정을 구성합니다:

1BLOCKLIST_DE = "1"
2BLOCKLIST_6DE = "1"
3BLOCKLIST_DE_URL = "https://lists.blocklist.de/lists/all.txt"
4BLOCKLIST_6DE_URL = "https://lists.blocklist.de/lists/ipv6/all.txt"

이 예제는 IPv4와 IPv6 주소 모두에 대해 blocklist.de 차단 목록과의 통합을 활성화합니다.

국가 수준 차단

CSF에서는 CC_DENYCC_ALLOW_FILTER 설정을 사용하여 특정 국가로부터의 접근을 차단할 수 있습니다. 이 방법이 모든 상황에 적합한 것은 아니지만 DDoS 공격을 실행하는 것으로 알려진 국가로부터의 접근을 제한하고 싶을 때 유용할 수 있습니다.

1CC_DENY = "CN,IR,RU"
2CC_ALLOW_FILTER = "US,CA,GB"

이 예제는 중국(CN), 이란(IR), 러시아(RU)로부터의 접근을 차단하고 미국(US), 캐나다(CA), 영국(GB)으로부터의 수신 연결만 허용합니다.

구성 파일을 수정한 후 CSF를 재시작하는 것을 잊지 마세요:

1csf -r

이러한 구성과 권장 사항을 적용하면 서버의 DDoS 공격에 대한 보호를 크게 향상시킬 수 있습니다.

어떤 보안 조치도 완벽하지 않으므로 잠재적인 위협에 대해 서버를 정기적으로 모니터링하고 그에 따라 CSF 설정을 조정하는 것이 필수적입니다.

대체 보안 솔루션

CSF가 Linux 서버 보안에 탁월한 선택이지만, 유사한 기능을 제공하는 대체 솔루션도 고려해 볼 가치가 있습니다:

  • UFW (Uncomplicated Firewall) : Ubuntu 기반 시스템을 위한 사용자 친화적인 방화벽.
  • Firewalld : systemd를 사용하는 Linux 배포판용 방화벽 관리 도구.
  • IPTables : Linux에서 패킷 필터링과 네트워크 주소 변환을 위한 강력한 명령줄 도구.

결론

Linux 서버 보호는 데이터를 보호하고 서버 무결성을 유지하는 데 필수적입니다. CSF는 이 목표를 달성하기 위한 강력하고 사용자 친화적인 솔루션을 제공합니다.

이 글에서 설명한 단계를 따르면 Linux 서버에 CSF를 쉽게 설치하고 구성할 수 있습니다. 추가 옵션을 찾고 있다면 UFW, Firewalld, IPTables와 같은 대체 보안 솔루션도 살펴보세요.

이 글이 CSF로 Linux 서버를 보호하는 데 유용하고 유익한 정보가 되었기를 바랍니다. 이 글이 마음에 들고 가치가 있다고 느끼셨다면 도움이 필요한 다른 분들과 공유해 주세요. 생각이나 질문이 있으시면 댓글을 남겨주시면 기꺼이 도와드리겠습니다. 😊

2023년과 그 이후에도 경계하며 서버를 안전하게 유지하세요!