Chuyển tới nội dung chính
Version: 4.1

Thiết lập Fail2ban

Hãy đảm bảo bạn đang chạy bản Enterprise của HiTechCloud. Tính năng email chỉ có ở phiên bản này.

Làm theo hướng dẫn này để bật Email trong HiTechCloud.


Fail2ban là một bộ phần mềm ngăn chặn xâm nhập. Được viết bằng ngôn ngữ Python, nó được thiết kế để chống tấn công dò mật khẩu (brute-force). Nó chạy được trên các hệ thống POSIX có giao diện tới hệ thống kiểm soát gói tin hoặc tường lửa cài cục bộ, như NFTables hay TCP Wrapper. Thông tin thêm

Bật hỗ trợ Fail2Ban cần cấp ít nhất quyền NET_ADMIN cho máy chủ mail để nó tương tác với nhân và chặn địa chỉ IP.

1. Bật Fail2ban​

Để bật Fail2ban, vào HiTechAdmin > Email > Cài đặt, trong mục 'Bật dịch vụ' chọn fail2ban rồi bấm 'Lưu bộ dịch vụ'.

2025-07-17-14-33.png


2. Tạo lại máy chủ mail​

Fail2ban cần container máy chủ mail được dừng rồi khởi động lại để có hiệu lực. Vào HiTechAdmin > Dịch vụ > Trạng thái và bấm 'Dừng' cho mailserver, rồi bấm 'Khởi động'.

2025-07-17-15-37.png


Sửa cấu hình​

Máy chủ mail sẽ tự động chặn địa chỉ IP của các host đã có 6 lần thử thất bại trong tuần qua. Mỗi lần chặn kéo dài một tuần. Jail của Postfix được cấu hình dùng mode = extra.

Nếu được tạo, các tệp cấu hình sau sẽ được sao chép vào container khi khởi động. Để tuỳ chỉnh cấu hình, chỉ cần tạo tệp mới và tuỳ chỉnh từ các ví dụ:

  • /usr/local/mail/hitechmail/docker-data/dms/config/fail2ban-jail.cf - điều chỉnh cấu hình của từng jail và giá trị mặc định của chúng, tệp ví dụ
  • /usr/local/mail/hitechmail/docker-data/dms/config/fail2ban-fail2ban.cf - điều chỉnh hành vi chung của F2B, tệp ví dụ

Ví dụ:

Để thay đổi số lần đăng nhập thất bại trước khi IP bị chặn (mặc định: 6), hoặc đổi thời gian chặn (mặc định: 1w):

  • tạo tệp /usr/local/mail/hitechmail/docker-data/dms/config/fail2ban-jail.cf
  • dán ví dụ này vào đó
  • đổi các giá trị maxretry và bantime:
[DEFAULT]

# "bantime" is the number of seconds that a host is banned.
bantime = 1w

# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime = 1w

# "maxretry" is the number of failures before a host get banned.
maxretry = 6

# "ignoreip" can be a list of IP addresses, CIDR masks or DNS hosts. Fail2ban
# will not ban a host which matches an address in this list. Several addresses
# can be defined using space (and/or comma) separator.
ignoreip = 127.0.0.1/8

# default ban action
# nftables-multiport: block IP only on affected port
# nftables-allports: block IP on all ports
banaction = nftables-allports

[dovecot]
enabled = true

[postfix]
enabled = true
# For a reference on why this mode was chose, see
# https://community.hitechcloud.org
mode = extra

[postfix-sasl]
enabled = true

# This jail is used for manual bans.
# To ban an IP address use: hitechcloudcli email-setup fail2ban ban <IP>
[custom]
enabled = true
bantime = 180d
port = smtp,pop3,pop3s,imap,imaps,submission,submissions,sieve

Xem và quản lý lệnh chặn​

  • hitechcloudcli email-setup fail2ban - hiển thị mọi địa chỉ IP bị chặn
  • hitechcloudcli email-setup fail2ban status - hiển thị trạng thái chi tiết hơn
  • hitechcloudcli email-setup fail2ban ban <IP> - chặn một địa chỉ IP
  • hitechcloudcli email-setup fail2ban unban <IP> - bỏ chặn một địa chỉ IP
  • hitechcloudcli email-setup fail2ban log - xem tệp nhật ký fail2ban