Linux에서 Fail2Ban으로 서버를 보호하는 방법

서버 보안은 모든 비즈니스 또는 조직의 최우선 순위입니다. Fail2Ban은 시스템 관리자의 툴킷에서 가장 중요한 도구 중 하나입니다. 이 가이드에서는 Fail2Ban이 무엇이며 Linux에서 Fail2Ban으로 서버를 공격으로부터 보호하는 방법에 대해 설명합니다.

Linux에서 Fail2Ban으로 서버를 보호하는 방법 - %categories

Fail2Ban이란 무엇입니까?

Fail2Ban은 로그 파일을 모니터링하고 악의적인 활동의 징후를 보이는 IP 주소를 차단하는 침입 방지 도구입니다. 로그 파일의 특정 패턴과 일치하는 "필터"를 생성하고 잘못된 IP 주소 차단과 같은 작업을 수행함으로써 이를 수행합니다.

Linux에서 Fail2Ban을 사용하는 이유는 무엇입니까?

Linux에서 Fail2Ban을 사용하는 몇 가지 이유가 있습니다. 아마도:

  • 악성 IP 주소를 자동으로 차단하여 시간을 절약합니다.
  • 공격이 성공할 가능성을 줄여 서버를 보호하세요.
  • 서버가 모니터링되고 보호되고 있다는 사실을 알고 안심할 수 있습니다.

Linux에 Fail2Ban 설치

기본적으로 Fail2Ban은 Ubuntu 리포지토리에서 사용할 수 있습니다. apt를 사용하여 설치하십시오.

sudo add-apt-repository 유니버스 sudo apt 업데이트 && sudo apt install fail2ban -y

Linux에서 Fail2Ban으로 서버를 보호하는 방법 - %categories

Fail2Ban은 백그라운드에서 서비스를 설정하지만 systemd는 기본적으로 비활성화합니다. 다음 명령을 사용하여 시작하고 활성화할 수 있습니다.

sudo systemctl 시작 fail2ban sudo systemctl 활성화 fail2ban

다음 명령을 사용하여 Fail2Ban이 실행 중인지 확인합니다.

sudo systemctl 상태 fail2ban

아래 이미지와 유사한 출력이 표시됩니다.

Linux에서 Fail2Ban으로 서버를 보호하는 방법 - %categories

Linux에서 Fail2Ban 구성

"/etc/fail2ban" 디렉토리에는 Fail2Ban에 대한 구성 파일이 포함되어 있습니다. 기본적으로 Fail2Ban은 모든 서비스에 적용되는 설정이 포함된 "jail.conf" 파일과 함께 제공됩니다.

Linux에서 Fail2Ban으로 서버를 보호하는 방법 - %categories

그러나 "jail.conf"에 대한 모든 변경 사항은 소프트웨어가 업데이트될 때마다 손실되므로 로컬 "jail.local" 파일을 만들고 "jail.conf"의 설정을 재정의하는 것이 좋습니다.

다음 명령을 사용하여 "jail.local" 파일을 만들 수 있습니다.

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

jail.local 파일을 열어 편집합니다.

sudo nano /etc/fail2ban/jail.local

Linux에서 Fail2Ban으로 서버를 보호하는 방법 - %categories

알아두면 좋은 것: 배우다 LINUX에서 암호 없는 SSH 로그인을 활성화하는 방법.

jail.local 파일 탐색

아래와 비슷한 출력이 표시되며 사용 가능한 옵션의 수에 압도될 수 있습니다. 그러나 걱정하지 마십시오. 가장 중요한 옵션을 안내해 드립니다.

Linux에서 Fail2Ban으로 서버를 보호하는 방법 - %categories

당신은 아이콘을 볼 수 있습니다 "#" 줄의 시작 부분에 주석임을 나타냅니다. Fail2Ban은 이를 사용하여 특정 설정이 수행하는 작업을 설명합니다. 이 아이콘을 제거하여 여기에서 일부 설정을 활성화할 수 있습니다.

섹션 포함 "[기본]" 모든 교도소에 적용 가능한 옵션에 대해. 이것은 Fail2Ban의 일반적인 구성입니다. 다음 스크린샷은 예를 보여줍니다.

Linux에서 Fail2Ban으로 서버를 보호하는 방법 - %categories

서비스 이름으로 시작하는 다른 섹션도 있습니다. 이 감옥은 세계 감옥 위에 특정 서비스에 적용됩니다.

또한 읽기:  Arch Linux에서 Deb 패키지를 설치하는 방법

예를 들어 감옥 섹션이 있습니다. "sshd". 이 섹션에는 sshd 서비스에 대한 옵션이 포함되어 있습니다.

Linux에서 Fail2Ban으로 서버를 보호하는 방법 - %categories

팁: 다음에서 서버 강화에 대해 자세히 알아볼 수도 있습니다. SSH 서버 보안.

자동 차단 기능 활성화

설정으로 이동 "밴타임 = 1시간그리고 코드를 제거 "#" 활성화하려면 줄의 시작 부분에. 이 줄은 Fail2Ban이 IP 주소를 비활성화하는 데 걸리는 시간을 설정합니다. 기본 단위는 XNUMX시간입니다. 분과 같은 다른 단위를 사용할 수도 있습니다. (m) 또는 며칠 (D) 또는 몇 주 (우).

Linux에서 Fail2Ban으로 서버를 보호하는 방법 - %categories

필요에 따라 이 값을 늘리거나 줄일 수 있습니다. 예를 들어 이 값을 30미터로 변경하여 차단 기간을 30분으로 줄일 수 있습니다.

Linux에서 Fail2Ban으로 서버를 보호하는 방법 - %categories

로그인 창의 기본 길이 변경

다음 설정은 "maxretry" 및 "findtime"입니다. Fail2Ban이 IP 주소를 차단하기 전에 공격자가 할 수 있는 로그인 시도 횟수를 제한합니다.

"maxretry" 및 "findtime"의 기본값은 5 및 10m입니다. IP가 2분 동안 XNUMX번 인증에 실패하면 FailXNUMXBan은 bantime 설정에 지정된 기간 동안 IP를 차단합니다.

Linux에서 Fail2Ban으로 서버를 보호하는 방법 - %categories

이 값을 원하는 대로 변경할 수 있습니다. 예를 들어 "maxretry"를 3으로, "findtime"을 5m으로 설정할 수 있습니다. Fail2Ban은 XNUMX분 동안 XNUMX번 인증에 실패하면 IP 주소를 비활성화합니다.

Linux에서 Fail2Ban으로 서버를 보호하는 방법 - %categories

Linux에서 Fail2Ban 알림 기능 활성화

다음 설정은 destemail, 보낸 사람 이름 및 mta입니다. 이러한 설정은 Fail2Ban이 이메일 알림을 구성하는 데 사용하는 것입니다.

  • 이메일 설정은 프로그램이 알림을 보낼 이메일 주소입니다.
  • 보낸 사람의 이름은 알림 이메일의 보낸 사람 필드에 표시되는 이름입니다.
  • mta는 Fail2Ban이 이메일을 보내는 데 사용할 메일 전송 에이전트입니다. mta 기본값은 sendmail 이지만 mail과 같은 다른 것으로 변경할 수 있습니다.

이메일 알림을 받으려면 이 줄의 주석을 제거하고 표시된 대로 적절한 값을 입력해야 합니다.

Linux에서 Fail2Ban으로 서버를 보호하는 방법 - %categories

금지가 발생하면 표시된 바와 같이 금지에 대한 세부 정보가 포함된 이메일 알림을 받게 됩니다.

Linux에서 Fail2Ban으로 서버를 보호하는 방법 - %categories

맞춤형 블록 주문 생성

다음 설정은 "action_="입니다. 이것은 Fail2ban이 IP 주소를 차단할 때 취하는 조치를 지정합니다. 기본값은 iptables를 사용하여 "bantime"이 만료될 때까지 IP를 차단하는 것입니다.

아래와 같이 다른 절차를 사용할 수도 있습니다. 이 튜토리얼은 단순성을 위해 기본 설정을 고수합니다.

  • action_mw: IP 주소가 차단되면 관련 WHOIS 정보와 함께 이메일 알림을 보냅니다.
  • action_mwl: IP 주소가 차단되면 관련 WHOIS 정보 및 차단으로 이어진 로그 파일 항목과 함께 이메일 알림을 보냅니다.
  • action_xarf: 차단을 트리거한 로그 파일 항목과 함께 IP 주소가 차단되면 X-ARF 이메일 알림을 보냅니다.
또한 읽기:  Nyxt로 맞춤형 웹 브라우저를 만드는 방법

다른 많은 절차를 사용할 수 있지만 이 자습서에서 모두 다루는 것은 불가능합니다. 당신은 할 수있다 사용 가능한 모든 절차에 대해 읽어보십시오. Fail2ban 문서에서.

Linux에서 Fail2Ban으로 서버를 보호하는 방법 - %categories

서비스에 대한 구성 활성화

Fail2ban의 기본 동작을 구성하는 것 외에도 일부 인기 있는 인터넷 서비스에 미리 만들어진 필터 파일을 사용할 수도 있습니다. 특정 서버에 대한 특정 로그 출력을 검색하기 위해 개발자가 작성한 작은 파일입니다.

예를 들어, "apache-shellshock.conf" 파일에는 Fail2ban이 shellshock 오류를 생성하려는 악의적인 시도를 확인할 수 있도록 하는 데 필요한 모든 설정이 포함되어 있습니다.

Linux에서 Fail2Ban으로 서버를 보호하는 방법 - %categories

"/etc/fail2ban/filter.d" 디렉토리를 나열하여 시스템에 사용 가능한 모든 필터 파일을 찾을 수 있습니다.

ls /etc/fail2ban/filter.d

Linux에서 Fail2Ban으로 서버를 보호하는 방법 - %categories

사용하려는 필터를 알고 있으면 시작하는 동안 "jail.local" 파일을 열어 Fail2ban에 로드하도록 지시하십시오.

sudo nano /etc/fail2ban/jail.local

새 필터를 활성화할 수 있는 "jail.local"에 공간을 만듭니다. 댓글 제목과 [INCLUDES] 블록 사이에 나만의 것을 만듭니다.

Linux에서 Fail2Ban으로 서버를 보호하는 방법 - %categories

활성화하려는 필터를 추가합니다. 예를 들어, 다음은 내 구성에서 사용하고 있는 스니펫입니다.

# 주석: 주석 행에는 '#'을 사용하고 ';' (공백 뒤) 인라인 주석 [sshd] 활성화 = true [nginx-bad-request] 활성화 = true [bitwarden] 활성화 = true [INCLUDES]

Linux에서 Fail2Ban으로 서버를 보호하는 방법 - %categories

완료되면 파일을 저장하고 닫습니다. 변경 사항을 적용하려면 fail2ban을 다시 시작하십시오.

sudo systemctl 재시작 fail2ban

구성 테스트

이제 Linux에서 Fail2Ban을 구성했으므로 테스트할 차례입니다.

구성을 테스트하는 가장 간단한 방법은 잘못된 암호로 빠르게 연속해서 여러 번 로그인을 시도하는 것입니다. 이를 위해 SSH 연결을 사용할 수 있습니다.

처분 기계에서 'admin' 사용자 이름을 사용하여 Fail2ban 서버에 SSH를 시도하십시오. "your_server_ip_address"를 Fail2ban 서버의 실제 IP 주소로 바꾸십시오.

ssh 관리자@your_server_ip_address

프롬프트가 표시되면 임의의 암호를 입력하고 여러 번 반복하십시오. 여러 번 시도하면 서버에서 연결 시도를 거부했다는 메시지가 표시됩니다.

Linux에서 Fail2Ban으로 서버를 보호하는 방법 - %categories

ssh를 사용하는 것 외에도 Fail Status를 실행하여 Fail2ban에서 다른 필터 파일을 테스트할 수도 있습니다. 제 경우에는 호스트가 잘못된 요청으로 서버를 플러딩하는지 감지하는 "nginx-bad-request" 필터를 사용하고 있습니다.

또한 읽기:  Troff를 사용하여 Linux에서 PDF 문서의 형식을 지정하는 방법

Linux에서 Fail2Ban으로 서버를 보호하는 방법 - %categories

이것을 알고 있으면 의도적으로 curl을 사용하여 웹 서버에 빈 요청을 보내서 이 기능을 테스트할 수 있습니다.

컬 -H "사용자 에이전트:" -H "호스트:" https://yourwebsite.com -v

Linux에서 Fail2Ban으로 서버를 보호하는 방법 - %categories

Linux에서 Fail2Ban 루틴 확인

마지막으로 Fail2ban 서버에서 다음 명령을 실행하여 fail2ban이 iptables에 필요한 규칙을 추가했는지 확인합니다.

grep 명령은 iptables 명령의 출력을 필터링합니다. -S 옵션은 iptables가 쉽게 구문 분석할 수 있는 형식으로 규칙을 인쇄하도록 지시합니다.

sudo iptables -S | 그렙 f2b

아래 이미지와 유사한 출력이 표시됩니다. "–reject-with icmp-port-unreachable" 인수는 클라이언트가 연결을 시도할 때 클라이언트에 ICMP 포트에 연결할 수 없음 메시지를 보내도록 iptables에 지시합니다. 서버에서 차단한 장치의 IP 주소도 볼 수 있습니다.

Linux에서 Fail2Ban으로 서버를 보호하는 방법 - %categories

팁: SELinux를 사용하여 Linux 서버를 보호해야 합니다.

자주 묻는 질문

Q1: Fail2ban이 IP 주소를 차단할 때 빈 이메일 알림을 받는 이유는 무엇입니까?
답변 : 비어 있는 이메일 알림을 받은 경우 메일 서버를 올바르게 구성하지 않았을 수 있습니다. 메일 서버 구성을 확인하고 이메일을 보낼 수 있는지 확인하십시오.

Q2: IP 주소 차단을 해제하려면 어떻게 해야 합니까?
답변 : 먼저 현재 IP 주소가 차단된 감옥을 찾습니다. sudo fail2ban-client status 그런 다음 다음을 실행하여 IP 주소 차단을 해제합니다. sudo fail2ban-client set 언사닙 .

Q3: fail2ban 로그 파일을 보려면 어떻게 해야 합니까?
답변 : 문제를 해결하거나 IP 주소가 차단된 이유를 알아보기 위해 fail2ban 로그 파일을 볼 수 있습니다. "/var/log/fail2ban.log" 파일에는 fail2ban에 의해 생성된 모든 로그가 포함되어 있습니다. cat 명령을 사용하여 fail2ban 로그 파일(cat /var/log/fail2ban.log)을 봅니다.

Q4: 여러 필터 파일을 활성화했습니다. 왜 모두 작동하지 않습니까?
답변 : 이 문제는 필터가 앞에 있는 다른 파일을 덮어쓰기 때문에 발생할 가능성이 높습니다. 이 문제를 해결하는 한 가지 방법은 여러 필터를 결합하여 고유한 필터 파일을 만드는 것입니다.

Q5: Fail2ban은 DoS 공격으로부터 내 서버를 보호합니까?
답변 : 예, 아니오. 대부분의 경우 Fail2ban은 서버에 잘못된 요청을 보내는 모든 IP를 차단할 수 있습니다. 그러나 이 프로그램의 가장 큰 한계 중 하나는 로그 항목을 생성하지 않는 이벤트에 대해 조치를 취할 수 없다는 것입니다. 따라서 이러한 형태의 공격에 대해 다른 도구를 사용하여 Linux 서버를 보호하는 것이 여전히 중요합니다.

당신은 또한 좋아할 수 있습니다