
10.5 서버에 방화벽을 설정하려고 하는데 제대로 작동하지 않는 것 같습니다. 주요 목표는 지속적인 무차별 메일 로그인 시도를 중지하는 것입니다.
이를 위해 나는 실패한 로그인을 찾아내고 금지하기 위해 Fail2ban을 설치했습니다. 대부분의 경우 이는 작동합니다. 즉, 금지된 IP 주소를 제출하고 해당 효과에 대한 이메일을 나에게 보내는 메커니즘이 완료되었습니다. 터미널 세션을 시작하면 다음 명령을 사용하여 수십 개의 IP 주소가 나열됩니다.
sudo ipfw list
다음과 같은 항목이 있습니다.
12345 deny tcp from 123.123.23.123 to any in
그러나 차단은 효과적이지 않습니다. 동일한 IP 주소가 나중에, 때로는 몇 시간 동안 몇 초마다 다시 시도됩니다.
Fail2ban 로그를 확인하면 다음과 같은 메시지가 표시됩니다(악성 로그인 시도가 여러 번 감지된 후).
"WARNING [sasl-ipfw] 123.123.123.123 already banned"
나는 다양한 방법으로 금지 형식을 지정해 보았습니다.
12345 deny tcp from 123.123.23.123 to 127.0.0.1 dst-port 25
12345 deny tcp from 123.123.23.123 to 192.168.123.123 dst-port 25
그러나 아무런 차이가 없습니다. 웹 서비스에 대한 로컬 네트워크 네트워크 금지도 시도했습니다.
12345 deny tcp from 192.168.123.122 to 192.168.123.123 dst-port 80
그러나 이번에도 아무런 효과가 없습니다. IPFW 목록의 다른 규칙은 기본값인 것 같습니다.
12300 allow log logamount 1000 tcp from any to any established
12301 allow log logamount 1000 tcp from any to any out
12302 allow log logamount 1000 tcp from any to any dst-port 22 …
목록의 마지막 규칙 중 하나는 다음과 같습니다(어딘가에서 읽은 내용은 변경할 수 없습니다).
65535 allow ip from any to any
서버 관리 앱은 방화벽 서비스가 실행 중임을 나타내며 ipfw 로그에 "거부" 목록이 없습니다. fall2ban에 의해 IPFW에 패치된 항목은 Server Admin 항목이나 ipfw.conf 또는 ipfw.conf.apple 파일 어디에도 나타나지 않습니다(따라서 어디에 저장되어 있는지 잘 모르겠습니다). 하지만 터미널에 "ipfw 목록"이 표시되고 서버 관리의 방화벽 섹션에 있는 "활성 규칙" 탭에 나열되어 있으면 해당 규칙이 표시됩니다.
이 문제에 대해 도움을 주셔서 감사합니다.
답변1
Fail2ban 스크립트가 너무 높은 규칙 번호를 사용하고 있는 것 같습니다. ipfw는 숫자 순서로 규칙을 평가하고 주어진 패킷에 적용되는 첫 번째 항목에 따라 수행할 작업이 결정됩니다. 즉, 번호가 낮은 규칙의 우선순위가 더 높습니다. Fail2ban "거부" 규칙은 12345번으로 추가되지만 서버 관리자가 구성한 "허용" 규칙은 12302에서 시작하므로 최소한 허용 규칙 중 일부는 Fail2ban의 거부 규칙을 재정의합니다.
간단한 수정: Fail2ban 스크립트에서 규칙 번호가 정의된 위치를 찾아서 12200과 같이 낮춥니다.
그런데, fall2ban의 규칙이 구성 파일에 추가되지 않는다는 사실은 정상이며 아마도 좋을 것입니다. 이러한 파일은 방화벽이 다시 로드될 때(예: 재부팅할 때) 사용되지만 반드시 "라이브" 방화벽 상태를 반영하지는 않습니다. 원하는 경우 Fail2ban 스크립트를 편집하여 해당 파일에 규칙을 추가하고 실시간 상태로 설정할 수 있지만 이는 시간이 지남에 따라 규칙 세트가 임의로 커질 수 있음을 의미합니다. IMO, 이러한 "영구적" 금지를 처리해야 하는 유일한 경우는 동일한 IP에서 오랜 기간 동안 계속해서 남용되는 경우입니다. 그러나 이러한 경우는 드물 것으로 예상됩니다.