기술 가이드

Config Server Firewall (CSF) 설치 및 구성 가이드

7 min read 서버 보안 업데이트됨 07 Oct 2025
CentOS 7에 CSF 설치·구성 가이드
CentOS 7에 CSF 설치·구성 가이드

중요: 라이브 서버에서 방화벽을 변경하기 전에 반드시 콘솔 접근(예: KVM, IPMI) 또는 대체 SSH 세션이 있는지 확인하세요. 잘못된 규칙으로 인해 원격 접속이 차단될 수 있습니다.

개요

Config Server Firewall(CSF)는 Linux 서버용 애플리케이션 계층 방화벽이자 로그인/침입 탐지 도구입니다. SSH, SMTP, IMAP, POP3, su 명령 등 다양한 서비스의 인증 실패와 의심스러운 행위를 감지하여 경고하거나 차단할 수 있습니다. CSF는 WHM/cPanel, DirectAdmin, Webmin 같은 웹 관리 UI와 통합되어 호스팅 서버 보안을 쉽게 관리하게 해줍니다.

정의: LFD(로그인 패스워드 감시 데몬)는 CSF와 함께 동작하며 로그를 모니터링해 공격을 탐지하고 자동으로 차단합니다.

H2: 이 문서에서 다루는 내용

  • 설치 전 요구사항
  • CSF 의존성 설치
  • CSF 설치 및 동작 확인
  • CSF 기본 명령어 모음
  • 고급 구성 옵션과 권장 설정
  • 운영 체크리스트, 테스트 케이스, 역할별 작업 목록
  • 대안 도구와 마이그레이션 팁
  • FAQ

요구사항

  • 운영체제: CentOS 7 (예시 서버 IP: 192.168.1.101)
  • 루트 권한
  • 콘솔 접근 권한(중요)

준비 단계: 의존성 설치

CSF는 Perl 기반으로 작성되었습니다. 설치 전에 Perl과 wget, 편집기(vim 등)를 설치합니다. 루트로 아래를 실행하세요:

yum install wget vim perl-libwww-perl.noarch perl-Time-HiRes

설치가 끝나면 /usr/src/ 디렉터리로 가서 CSF 설치 파일을 다운로드합니다.

단계 1 - CSF 설치

다음 명령으로 소스 디렉터리로 이동하고 압축파일을 다운로드 및 설치합니다.

cd /usr/src/
wget https://download.configserver.com/csf.tgz

다운로드 후 압축을 풀고 설치 스크립트를 실행합니다.

tar -xzf csf.tgz
cd csf
sh install.sh

설치가 완료되면 아래와 같은 메시지를 기대합니다.

CSF 설치 완료 화면 스크린샷

설치가 끝나면 CSF가 서버에서 정상 동작하는지 테스트합니다. 실행 파일이 위치한 디렉터리로 이동해 csftest.pl을 실행하세요.

cd /usr/local/csf/bin/
perl csftest.pl

정상 동작하면 결과는 다음과 같이 표시됩니다.

RESULT: csf should function on this server

CSF 동작 확인 스크린샷

단계 2 - CentOS 7에서 CSF 구성

CentOS 7은 기본적으로 firewalld를 사용합니다. CSF를 사용하려면 firewalld를 중단하고 부팅 시 비활성화해야 합니다.

systemctl stop firewalld
systemctl disable firewalld

그런 다음 CSF 설정 파일을 편집합니다.

cd /etc/csf/
vim csf.conf
  • TESTING 모드를 비활성화: 기본은 테스트 모드일 수 있으므로 실제 적용을 위해 아래처럼 수정합니다(파일의 11번째 줄 참고).
TESTING = "0"
  • SSH 포트를 기본(22) 대신 사용 중이라면 TCP_IN에 해당 포트를 추가하세요(예: 2222).

파일 수정 후 CSF와 LFD를 시작하고 부팅 시 자동 시작하도록 설정합니다.

systemctl start csf
systemctl start lfd
systemctl enable csf
systemctl enable lfd

CSF의 기본 규칙 목록을 확인하려면:

csf -l

기본 CSF 명령어 (자주 쓰는 명령)

  1. 방화벽 적용(시작):
csf -s
  1. 규칙 제거(중지/플러시):
csf -f
  1. 규칙 재로딩:
csf -r
  1. IP 허용 (csf.allow에 추가):
csf -a 192.168.1.109

출력 예시:

Adding 192.168.1.109 to csf.allow and iptables ACCEPT...
ACCEPT  all opt -- in !lo out *  192.168.1.109  -> 0.0.0.0/0
ACCEPT  all opt -- in * out !lo  0.0.0.0/0  -> 192.168.1.109
  1. IP 허용 해제:
csf -ar 192.168.1.109
  1. IP 차단 (csf.deny에 추가):
csf -d 192.168.1.109

출력 예시:

Adding 192.168.1.109 to csf.deny and iptables DROP...
DROP  all opt -- in !lo out *  192.168.1.109  -> 0.0.0.0/0
LOGDROPOUT  all opt -- in * out !lo  0.0.0.0/0  -> 192.168.1.109
  1. IP 차단 해제:
csf -dr 192.168.1.109
  1. csf.deny의 모든 항목 제거/차단 해제:
csf -df

예시 출력:

DROP  all opt -- in !lo out *  192.168.1.110  -> 0.0.0.0/0
LOGDROPOUT  all opt -- in * out !lo  0.0.0.0/0  -> 192.168.1.110
DROP  all opt -- in !lo out *  192.168.1.111  -> 0.0.0.0/0
LOGDROPOUT  all opt -- in * out !lo  0.0.0.0/0  -> 192.168.1.111
csf: all entries removed from csf.deny
  1. iptables에서 특정 패턴(예: IP, CIDR, 포트) 검색:
csf -g 192.168.1.110

고급 구성 팁 및 권장 설정

설정 파일 위치: /etc/csf/csf.conf

cd /etc/csf/
vim csf.conf
  1. csf.allow에 있는 IP가 LFD에 의해 차단되지 않게 하기

기본적으로 LFD는 csf.allow 내부 IP도 차단할 수 있습니다. 특정 IP(예: 사무실, 집의 고정 IP)를 절대 차단하지 않으려면 다음을 활성화하세요(파일의 272번째 줄 참고).

IGNORE_ALLOW = "1"
  1. ICMP(ping) 허용
  • 수신 ping 허용 (line 152)
ICMP_IN = "1"
  • 발신 ping 허용 (line 159)
ICMP_OUT = "1"
  1. 국가별 차단/허용

CC_DENY와 CC_ALLOW 옵션으로 CIDR 데이터베이스 기반 국가 차단을 설정할 수 있습니다(예: 중국, 영국, 미국 차단).

CC_DENY = "CN,UK,US"
CC_ALLOW = "ID,MY,DE"

주의: 국가 차단은 우회(프록시, VPN, CDN)로 우회될 수 있고 합법적 사용자 차단 위험이 있으므로 신중히 사용하세요.

  1. SSH 및 su 로그인 알림 이메일 발송

LFD가 SSH 로그인 이벤트와 su 명령 실행 이벤트를 이메일로 알려주도록 설정합니다.

LF_SSH_EMAIL_ALERT = "1"
LF_SU_EMAIL_ALERT = "1"

알림 수신 이메일 주소는 다음 항목에서 지정합니다(예: line 588).

LF_ALERT_TO = "[email protected]"

메일 전송이 필요한 경우 서버에 MTA(예: postfix, exim)가 올바르게 설정되어 있어야 합니다.

보안 하드닝 권장사항

  • SSH 접속 포트를 기본(22)에서 변경하고, 가능한 한 키 기반 인증을 사용하세요.
  • root 직접 로그인을 금지하세요(SSH 설정에서 PermitRootLogin no).
  • 관리용 공인 IP를 csf.allow에 등록하고 IGNORE_ALLOW=1 설정을 고려하세요.
  • 정기적으로 /var/log/ 디렉터리(secure, auth.log 등)를 모니터링하세요.
  • CSF 업데이트 정책을 수립하세요(새 버전 릴리스 시 테스트 후 배포).

역할별 체크리스트

Sysadmin 체크리스트:

  • 설치 전 콘솔 접근 확인
  • 의존성(wget, perl) 설치
  • CSF 설치 및 csftest.pl 통과 확인
  • TESTING=0 적용 및 서비스 활성화
  • SSH 포트와 csf.allow에 관리 IP 추가
  • 메일 알림 주소 설정과 MTA 동작 확인
  • 정기 백업(설정 파일) 자동화

Helpdesk / 운영팀 체크리스트:

  • 차단된 IP 목록 정기 확인
  • csf -l으로 기본 규칙 검토
  • 사용자 차단/허용 요청 처리 절차 숙지
  • 긴급 롤백 플랜(예: csf -f; 그리고 csf -s로 재적용)

테스트 케이스 및 수용 기준

  1. 설치 테스트
  • 입력: yum install 후 csf 설치
  • 기대 결과: perl csftest.pl 출력에 “RESULT: csf should function on this server”
  1. 방화벽 적용 테스트
  • 입력: csf -s
  • 기대 결과: iptables 규칙에 ACCEPT/DROP 규칙이 반영
  1. IP 허용/차단 테스트
  • 입력: csf -a 192.168.1.109, csf -d 192.168.1.109
  • 기대 결과: csf.allow와 csf.deny에 각각 항목이 추가/삭제되고 iptables 규칙이 일치
  1. 알림 테스트
  • 입력: LF_SSH_EMAIL_ALERT=1, LF_ALERT_TO 설정 후 SSH 로그인 시도
  • 기대 결과: 지정 메일로 알림 수신

대안 솔루션 및 비교

  • fail2ban: 로그 기반 차단에 특화. CSF는 더 많은 관리 기능과 웹 패널 통합을 제공.
  • nftables: 최신 네트워크 스택용 기본 프레임워크. iptables 기반 솔루션에서 이전을 고려할 때 설계 변경 필요.
  • Cloud WAF / CDN: 애플리케이션 계층 공격(예: DDoS, OWASP TOP 10)에 대한 외부 보호를 제공. CSF는 서버 단 위주의 보호.

선택 가이드: 단일 서버 호스팅 환경에서 웹 패널 통합과 다중 서비스 보호가 필요하면 CSF가 적합합니다. 중앙 집중식 관리, 컨테이너화, 대규모 분산 환경이라면 다른 솔루션과 병행 고려하세요.

마이그레이션 팁 (iptables -> CSF)

  • 기존 iptables 규칙을 백업하세요: iptables-save > /root/iptables.backup
  • CSF 설치 전 TESTING=1로 시작해 규칙 충돌을 점검하세요.
  • CSF 적용 후 모니터링 기간을 두고 로그를 확인한 뒤 TESTING을 0으로 변경하세요.

의사결정 흐름(설치/활성화 여부)

flowchart TD
  A[서버 용도 판단] --> B{관리형 패널 사용 여부}
  B -->|예| C[CSF 권장]
  B -->|아니오| D{대규모/컨테이너 환경}
  D -->|예| E[중앙 관리형 방화벽 또는 Cloud WAF 권장]
  D -->|아니오| C
  C --> F[firewalld 중지]
  F --> G[의존성 설치]
  G --> H[CSF 설치 및 테스트]
  H --> I[TESTING=0 적용 후 모니터링]

운영 중 발생 가능한 문제와 대응 예시

  • 문제: SSH 접속 불가

    • 원인: 잘못된 iptables 규칙으로 SSH 포트 차단
    • 대응: 콘솔 접속으로 csf -f 실행(모든 규칙 플러시), csf.conf에서 SSH 포트와 관리 IP 확인
  • 문제: 합법적 사용자 차단 빈번 발생

    • 원인: 공격 유사 패턴에 의한 오탐 또는 잘못된 임계치
    • 대응: LF_* 관련 임계치 조정, csf.allow에 신뢰 IP 추가, IGNORE_ALLOW=1 고려

테스트용 빠른 치트시트

  • 방화벽 시작: csf -s
  • 방화벽 중지(규칙 제거): csf -f
  • 규칙 재시작: csf -r
  • IP 허용: csf -a
  • IP 허용 해제: csf -ar
  • IP 차단: csf -d
  • IP 차단 해제: csf -dr
  • 차단 목록 초기화: csf -df
  • 규칙 검색: csf -g <패턴>

FAQ

Q: CSF와 fail2ban의 주요 차이점은?

A: fail2ban은 로그 기반으로 주로 서비스별 브루트포스 차단에 집중합니다. CSF는 방화벽(iptables) 관리, LFD 통합, 웹 패널 연동 등 좀 더 광범위한 서버 보안 관리 기능을 제공합니다.

Q: CentOS 8 / 다른 배포판에서 사용 가능한가요?

A: CSF는 여러 배포판을 지원하지만 배포판 기본 방화벽(nftables 등)과의 호환성을 확인해야 합니다. CentOS 8 이후는 firewalld/nftables 변화가 있으니 사전 테스트가 필요합니다.

Q: 국가 차단은 완벽한 차단 수단인가요?

A: 아니요. VPN, 프록시, CDN을 통해 IP가 우회될 수 있습니다. 또한 정상 사용자가 차단될 위험이 있으므로 주의해서 사용하세요.

결론

CSF는 리눅스 서버에서 애플리케이션 수준 방화벽과 로그인/침입 탐지 기능을 동시에 제공하는 유용한 도구입니다. 설치와 기본 구성이 비교적 간단하며 cPanel/WHM, DirectAdmin, Webmin 같은 UI와 통합되어 호스팅 운영에 적합합니다. 그러나 운영 환경에 따라 방화벽 정책을 신중히 설계하고, 테스트 및 모니터링을 통해 오탐/차단 관련 문제를 최소화해야 합니다.

요약: CSF는 단일 서버·호스팅 환경에서 실용적인 선택입니다. 대규모 분산 환경이나 최신 네트워크 스택(nftables 중심)에서는 대안도 함께 고려하세요.


요약 요점:

  • CSF는 iptables 기반 애플리케이션 방화벽 + LFD로 로그인/침입 탐지를 제공
  • 설치 전 firewalld 비활성화 및 Perl/wget 등 의존성 설치 필요
  • TESTING 모드 해제, SSH 포트·관리 IP 설정, 이메일 알림 설정을 권장
  • 운영 전 콘솔 접근 확보 및 테스트 케이스 실행 권장
공유하기: X/Twitter Facebook LinkedIn Telegram
저자
편집

유사한 자료

미국에서 TF1 시청하는 방법 — 4가지 우회 가이드
스트리밍 가이드

미국에서 TF1 시청하는 방법 — 4가지 우회 가이드

Origin 오류 65546:0 완전 해결 가이드
트러블슈팅

Origin 오류 65546:0 완전 해결 가이드

Feedburner 구독자 수 0 표시 버그 해결법
워드프레스

Feedburner 구독자 수 0 표시 버그 해결법

iPad와 Android 파일 전송 가이드
파일 전송

iPad와 Android 파일 전송 가이드

Conan Exiles에서 원형·나선형 계단 만들기
게임 가이드

Conan Exiles에서 원형·나선형 계단 만들기

인스타그램 익명 보기: 스토리·릴·게시물 가이드
소셜미디어

인스타그램 익명 보기: 스토리·릴·게시물 가이드