Config Server Firewall (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가 서버에서 정상 동작하는지 테스트합니다. 실행 파일이 위치한 디렉터리로 이동해 csftest.pl을 실행하세요.
cd /usr/local/csf/bin/
perl csftest.pl
정상 동작하면 결과는 다음과 같이 표시됩니다.
RESULT: csf should function on this server
단계 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 명령어 (자주 쓰는 명령)
- 방화벽 적용(시작):
csf -s
- 규칙 제거(중지/플러시):
csf -f
- 규칙 재로딩:
csf -r
- 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
- IP 허용 해제:
csf -ar 192.168.1.109
- 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
- IP 차단 해제:
csf -dr 192.168.1.109
- 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
- iptables에서 특정 패턴(예: IP, CIDR, 포트) 검색:
csf -g 192.168.1.110
고급 구성 팁 및 권장 설정
설정 파일 위치: /etc/csf/csf.conf
cd /etc/csf/
vim csf.conf
- csf.allow에 있는 IP가 LFD에 의해 차단되지 않게 하기
기본적으로 LFD는 csf.allow 내부 IP도 차단할 수 있습니다. 특정 IP(예: 사무실, 집의 고정 IP)를 절대 차단하지 않으려면 다음을 활성화하세요(파일의 272번째 줄 참고).
IGNORE_ALLOW = "1"
- ICMP(ping) 허용
- 수신 ping 허용 (line 152)
ICMP_IN = "1"
- 발신 ping 허용 (line 159)
ICMP_OUT = "1"
- 국가별 차단/허용
CC_DENY와 CC_ALLOW 옵션으로 CIDR 데이터베이스 기반 국가 차단을 설정할 수 있습니다(예: 중국, 영국, 미국 차단).
CC_DENY = "CN,UK,US"
CC_ALLOW = "ID,MY,DE"
주의: 국가 차단은 우회(프록시, VPN, CDN)로 우회될 수 있고 합법적 사용자 차단 위험이 있으므로 신중히 사용하세요.
- 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로 재적용)
테스트 케이스 및 수용 기준
- 설치 테스트
- 입력: yum install 후 csf 설치
- 기대 결과: perl csftest.pl 출력에 “RESULT: csf should function on this server”
- 방화벽 적용 테스트
- 입력: csf -s
- 기대 결과: iptables 규칙에 ACCEPT/DROP 규칙이 반영
- IP 허용/차단 테스트
- 입력: csf -a 192.168.1.109, csf -d 192.168.1.109
- 기대 결과: csf.allow와 csf.deny에 각각 항목이 추가/삭제되고 iptables 규칙이 일치
- 알림 테스트
- 입력: 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 설정, 이메일 알림 설정을 권장
- 운영 전 콘솔 접근 확보 및 테스트 케이스 실행 권장