웹사이트 검색

Ubuntu에서 구성 서버 방화벽(CSF)을 설치 및 구성하는 방법


소개

Config Server Firewall(또는 CSF)은 대부분의 Linux 배포판 및 Linux 기반 VPS를 위한 무료 고급 방화벽입니다. 방화벽의 기본 기능(패킷 필터링) 외에도 CSF에는 로그인/침입/플러드 감지와 같은 다른 보안 기능이 포함되어 있습니다. CSF에는 cPanel, DirectAdmin 및 Webmin에 대한 UI 통합이 포함되어 있지만 이 자습서에서는 명령줄 사용법만 다룹니다. CSF는 많은 서비스에 대한 포트 스캔, SYN 플러드 및 로그인 무차별 대입 공격과 같은 많은 공격을 인식할 수 있습니다. 클라우드 서버를 공격하는 것으로 감지된 클라이언트를 일시적으로 차단하도록 구성되어 있습니다.

지원되는 운영 체제 및 기능의 전체 목록은 ConfigServer의 웹 사이트에서 찾을 수 있습니다.

이 튜토리얼은 Debian 및 Ubuntu와 같은 Debian 기반 VPS용으로 작성되었습니다. 명령은 루트 권한으로 실행하거나 루트로 로그인하거나 sudo가 설치된 경우 다음 명령으로 루트 셸을 시작해야 합니다.

sudo su

참고: 이 자습서에서는 IPv4 보안을 다룹니다. Linux에서 IPv6 보안은 IPv4와 별도로 유지됩니다. 예를 들어 "iptables"는 IPv4 주소에 대한 방화벽 규칙만 유지하지만 IPv6 네트워크 주소에 대한 방화벽 규칙을 유지하는 데 사용할 수 있는 "ip6tables"라는 IPv6 대응 항목이 있습니다.

VPS가 IPv6용으로 구성된 경우 적절한 도구를 사용하여 IPv4 및 IPv6 네트워크 인터페이스를 모두 보호해야 합니다. IPv6 도구에 대한 자세한 내용은 Linux VPS에서 IPv6를 사용하도록 도구를 구성하는 방법 가이드를 참조하세요.

특징

Config Server Firewall은 VPS에 대한 광범위한 보호 기능을 제공합니다.

로그인 인증 실패 데몬:

CSF는 정기적으로 실패한 로그인 시도에 대한 로그를 확인하고 클라우드 서버에 대한 액세스 권한을 얻기 위한 대부분의 무단 시도를 인식할 수 있습니다. 구성 파일에서 CSF가 수행하는 원하는 조치와 시도 횟수를 정의할 수 있습니다.

이 기능은 다음 애플리케이션을 지원합니다.

  • 택배 imap, Dovecot, uw-imap, Kerio
  • openSSH
  • cPanel, WHM, 웹메일(cPanel 서버만 해당)
  • 순수-ftpd, vsftpd, Proftpd
  • 암호로 보호된 웹페이지(htpasswd)
  • Mod_security 실패(v1 및 v2)
  • 수호신 실패
  • Exim SMTP AUTH

이 외에도 정규식 일치를 사용하여 고유한 로그인 파일을 정의할 수 있습니다. 이는 실패한 로그인을 기록하지만 특정 시도 횟수 후에 사용자를 차단하는 애플리케이션이 있는 경우 유용할 수 있습니다.

프로세스 추적

CSF는 의심스러운 프로세스 또는 열린 네트워크 포트를 감지하기 위해 프로세스를 추적하도록 구성할 수 있으며 감지된 경우 시스템 관리자에게 이메일을 보냅니다. 이는 VPS에서 가능한 악용을 식별하고 중지하는 데 도움이 될 수 있습니다.

디렉토리 감시

디렉터리 감시는 악성 스크립트가 있는지 /temp 및 기타 관련 폴더를 모니터링하고 탐지되면 시스템 관리자에게 이메일을 보냅니다.

메신저 서비스

이 기능을 활성화하면 차단이 적용될 때 CSF가 클라이언트에게 더 많은 정보 메시지를 보낼 수 있습니다. 이 기능에는 장단점이 있습니다. 한편으로 활성화하면 클라이언트에 더 많은 정보를 제공하므로 예를 들어 로그인에 실패한 경우 좌절감을 덜 수 있습니다. 반면에 이는 더 많은 정보를 제공하여 공격자가 VPS를 더 쉽게 공격할 수 있습니다.

항구 침수 방지

이 설정은 서비스 거부(DoS) 공격과 같은 포트 플러드 공격으로부터 보호합니다. 원하는 기간 내에 각 포트에서 허용되는 연결 수를 지정할 수 있습니다. 공격자가 서비스를 강제 종료하는 것을 방지할 수 있으므로 이 기능을 활성화하는 것이 좋습니다. 너무 제한적인 설정은 일반 클라이언트의 연결을 끊기 때문에 어떤 제한을 설정했는지 주의해야 합니다. 그런 다음 너무 허용적인 설정을 사용하면 공격자가 플러드 공격에 성공할 수 있습니다.

포트 노킹

포트 노킹을 통해 클라이언트는 포트가 열려 있지 않은 상태에서 서버에 연결할 수 있습니다. 서버는 성공적인 포트 노크 시퀀스 후에만 클라이언트가 기본 포트에 연결할 수 있도록 합니다. 제한된 청중에게만 제공되는 서비스를 제공하는 경우 이 기능이 유용할 수 있습니다.

연결 제한 보호

이 기능은 IP 주소에서 각 포트로의 동시 활성 연결 수를 제한하는 데 사용할 수 있습니다. 올바르게 구성되면 DoS 공격과 같은 서버 남용을 방지할 수 있습니다.

포트/IP 주소 리디렉션

CSF는 IP/포트에 대한 연결을 다른 IP/포트로 리디렉션하도록 구성할 수 있습니다. 참고: 리디렉션 후 클라이언트의 소스 주소는 서버의 IP 주소가 됩니다. 이는 네트워크 주소 변환(NAT)과 동일하지 않습니다.

UI 통합

명령줄 인터페이스 외에도 CSF는 cPanel 및 Webmin에 대한 UI 통합도 제공합니다. Linux 명령줄에 익숙하지 않은 경우 이 기능이 유용할 수 있습니다.

IP 차단 목록

ConfigServer 방화벽 설치

1단계: 다운로드

Config Server Firewall은 현재 Debian 또는 Ubuntu 리포지토리에서 사용할 수 없으며 ConfigServer의 웹 사이트에서 다운로드해야 합니다.

wget http://download.configserver.com/csf.tgz

이렇게 하면 CSF가 현재 작업 디렉토리에 다운로드됩니다.

2단계: 압축 해제

다운로드한 파일은 tar 패키지에서 압축한 파일이므로 압축을 풀고 압축을 풀어야 사용할 수 있습니다.

tar -xzf csf.tgz

3단계: 설치

UFW와 같은 다른 방화벽 구성 스크립트를 사용하는 경우 계속하기 전에 비활성화해야 합니다. Iptables 규칙은 자동으로 제거됩니다.

다음 명령을 실행하여 UFW를 비활성화할 수 있습니다.

ufw disable

이제 CSF의 설치 프로그램 스크립트를 실행할 차례입니다.

cd csf
sh install.sh

이제 방화벽이 설치되었지만 필요한 iptables 모듈을 사용할 수 있는지 확인해야 합니다.

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

치명적인 오류가 보고되지 않으면 방화벽이 작동합니다.

참고: 가능한 경우 귀하의 IP 주소가 허용 목록에 추가되었습니다. 또한 커스텀 포트를 사용하더라도 SSH 포트가 자동으로 열리게 되었습니다. 방화벽은 또한 테스트 모드를 활성화하도록 구성되었습니다. 즉, iptables 규칙은 CSF 시작 후 5분 후에 자동으로 제거됩니다. 구성이 작동한다는 것을 알게 되면 비활성화해야 하며 잠기지 않습니다.

기본 구성

CSF는 /etc/csf에서 구성 파일 csf.conf를 편집하여 구성할 수 있습니다.

nano /etc/csf/csf.conf

변경 사항은 다음 명령으로 적용할 수 있습니다.

csf -r

1단계: 포트 구성

VPS에 대한 액세스가 적을수록 서버가 더 안전합니다. 그러나 클라이언트가 서비스를 사용할 수 있어야 하므로 모든 포트를 닫을 수는 없습니다.

기본적으로 열리는 포트는 다음과 같습니다.

TCP_IN = "20,21,22,25,53,80,110,143,443,465,587,993,995"

TCP_OUT = "20,21,22,25,53,80,110,113,443"

UDP_IN = "20,21,53"

UDP_OUT = "20,21,53,113,123"

열린 포트를 사용하는 서비스:

  • 포트 20: FTP 데이터 전송
  • 포트 21: FTP 제어
  • 포트 22: 보안 셸(SSH)
  • 포트 25: 단순 메일 전송 프로토콜(SMTP)
  • 포트 53: 도메인 이름 시스템(DNS)
  • 포트 80: 하이퍼텍스트 전송 프로토콜(HTTP)
  • 포트 110: 우체국 프로토콜 v3(POP3)
  • 포트 113: 인증 서비스/식별 프로토콜
  • 포트 123: 네트워크 시간 프로토콜(NTP)
  • 포트 143: 인터넷 메시지 액세스 프로토콜(IMAP)
  • 포트 443: SSL/TLS(HTTPS)를 통한 하이퍼텍스트 전송 프로토콜
  • 포트 465: SSM용 URL Rendesvous Directory(Cisco)
  • 포트 587: 이메일 메시지 제출(SMTP)
  • 포트 993: SSL을 통한 인터넷 메시지 액세스 프로토콜(IMAPS)
  • 포트 995: TLS/SSL(POP3S)을 통한 우체국 프로토콜 3

이러한 서비스를 모두 사용하지 않을 수 있으므로 사용하지 않는 포트를 닫을 수 있습니다. 모든 포트를 닫은 다음(목록에서 포트 번호 제거) 필요한 포트를 추가하는 것이 좋습니다.

다음은 나열된 서비스를 실행 중인 경우 열어야 하는 포트 세트입니다.

모든 서버에서:

TCP_IN: 22,53
TCP_OUT: 22,53,80,113,443
UPD_IN: 53
UPD_OUT: 53,113,123

아파치:

TCP_IN: 80,443

FTP 서버:

TCP_IN: 20,21
TCP_OUT: 20,21
UPD_IN: 20,21
UPD_OUT:20,21

메일 서버:

TCP_IN: 25,110,143,587,993,995
TCP_OUT: 25,110

MySQL 서버(원격 액세스가 필요한 경우)

TCP_IN: 3306
TCP_OUT: 3306

참고: 서비스에 IPv6을 사용하는 경우 이전에 IPv4 포트가 구성된 방식과 유사하게 TCP6_IN, TCP6_OUT, UPD6_IN 및 UPD6_OUT도 구성해야 합니다.

Wikipedia에서 포괄적인 TCP 및 UDP 포트 목록을 찾을 수 있습니다. 사용하는 모든 서비스의 포트를 열어야 합니다.

2단계: 추가 설정

CSF는 구성 파일에서 다양한 옵션을 제공합니다. 가장 일반적으로 사용되는 일부 설정은 아래에 설명되어 있습니다.

ICMP_IN

ICMP_IN_LIMIT

거부_IP_LIMIT

DENY_TEMP_IP_LIMIT

패킷_필터

SYNFLOOOD, SUNFLOOD_RATE 및 SYNFLOOOD_BURST

CONNLIMIT

값:

22;5;443;20

포트 22에서 5개의 동시 연결을 허용하고 포트 443에서 20개의 동시 연결을 허용합니다.

포트플러드

값:

22;tcp;5;250

250초 이내에 TCP 프로토콜을 사용하여 포트 22에서 5개 이상의 연결이 설정되면 IP 주소를 제한 차단합니다. 클라이언트가 이 포트로 마지막 패킷을 보낸 후 250초가 지나면 블록이 제거됩니다. 아래 설명과 같이 쉼표로 구분하여 더 많은 포트를 추가할 수 있습니다.

port1;protocol1;connection_count1;time1,port2;protocol2;connection_count2;time2

자세한 설정

CSF는 이 튜토리얼에서 다루지 않는 다양한 설정을 제공합니다. 기본값은 일반적으로 양호하며 거의 모든 서버에서 사용할 수 있습니다. 기본 설정은 대부분의 플러드 공격, 포트 스캔 및 무단 액세스 시도를 방지하도록 구성됩니다.

그러나 구성을 더 자세히 조정하려면 /etc/csf/csf.conf의 주석을 읽고 원하는 대로 편집하십시오.

3단계: 변경 사항 적용

csf.conf에서 설정을 변경할 때마다 변경 사항을 적용하려면 파일을 저장하고 CSF를 다시 시작해야 합니다.

구성 준비가 되면 Ctrl + X를 눌러 파일을 닫습니다. 변경 사항을 저장할지 여부를 묻는 메시지가 표시되면 Y를 눌러 변경 사항을 저장합니다.

그런 다음 다음 명령으로 CSF를 다시 시작하여 변경 사항을 적용해야 합니다.

csf -r

모든 것이 계획대로 진행되고 여전히 서버에 액세스할 수 있으면 구성 파일을 한 번 더 엽니다.

nano /etc/csf/csf.conf

아래와 같이 구성 파일 시작 부분의 TESTING 설정을 0으로 변경합니다.

TESTING = "0"

파일을 저장하고 다음 명령으로 변경 사항을 적용합니다.

csf -r

IP 주소 차단 및 허용

방화벽의 가장 기본적인 기능 중 하나는 특정 IP 주소를 차단하는 기능입니다. csf.deny, csf.allow 및 csf.ignore 구성 파일을 편집하여 IP 주소를 거부(블랙리스트), 허용(화이트리스트) 또는 무시할 수 있습니다.

IP 주소 차단

IP 주소 또는 범위를 차단하려면 csf.deny를 엽니다.

nano /etc/csf/csf.deny

차단된 IP 주소 또는 범위는 모두 csf.deny 파일에 한 줄을 예약합니다. IP 주소 1.2.3.4와 IP 범위 2.3.*.*를 차단하려면 파일에 다음 줄을 추가해야 합니다.

1.2.3.4 2.3.0.0/16

IP 범위는 CIDR 표기법을 사용하여 표시됩니다.

IP 주소 허용

모든 블록 및 필터에서 제외할 IP 주소 또는 범위를 원하는 경우 csf.allow 파일에 추가할 수 있습니다. 허용된 IP 주소는 csf.deny 파일에서 명시적으로 차단된 경우에도 허용됩니다.

IP 주소를 허용하는 것은 차단하는 것과 유사하게 작동합니다. 유일한 차이점은 csf.deny 대신 /etc/csf/csf.allow를 편집해야 한다는 것입니다.

nano /etc/csf/csf.allow

IP 주소 무시

CSF는 방화벽 필터에서 IP 주소를 제외하는 기능도 제공합니다. csf.ignore의 IP 주소는 방화벽 필터를 우회하며 csf.deny 파일에 나열된 경우에만 차단할 수 있습니다.

nano /etc/csf/csf.ignore

변경 사항을 적용하려면 위에서 설명한 파일을 다음 명령으로 편집한 후 CSF를 다시 시작해야 합니다.

csf -r