Trang chủ Thủ thuật

Sử dụng SSH an toàn với Fail2ban

Để kết nối đến các máy chủ ảo hay muốn điều khiển từ xa một máy chủ nào đó ta thường sử dụng SSH, phương pháp này tiềm ẩn rủi ro hacker có thể dò đoán mật khẩu đăng nhập. Một biện pháp hạn chế điều này là thay đổi cổng mặc định SSH từ 22 sang cổng khác nhưng điều này không thực sự gây nhiều trở ngại cho hacker, vì hacker có thể  “quét cổng đang mở” để xác định cổng rồi tiếp tục tấn công.

Giải pháp khá triệt để giải quyết vấn đề này là sử dụng công cụ tự động block IP khi số lần đăng nhập lỗi vào máy chủ vượt quá giới hạn - Fail2ban.

  1. Fail2ban là gì? Cài đặt Fail2ban

Fail2ban là ứng dụng theo dõi các file log, phát hiện và ngăn chặn kết nối từ những địa chỉ IP có những dấu hiệu độc hại như đăng nhập sai mật khẩu SSH nhiều lần, sử dụng iptables firewall để block địa chỉ IP trong một thời gian nhất định.

Lưu ý: Fail2ban không khuyến khích hoạt động với các chương trình tường lửa khác như CSF vì sẽ xung đột hoạt động điều khiển tường lửa ‘iptables’.

Trên Debian và Ubuntu, có thể cài đặt Fail2ban như sau.

sudo apt update

sudo apt install fail2ban

Trên Centos:

sudo yum -y install epel-release

sudo yum -y install fail2ban

Sau khi cài đặt thành công, Fail2ban đã sẵn sàng bảo vệ SSH. Mặc định Fail2ban sẽ cho phép đăng nhập sai 6 lần trong 10 phút, sau đó nó sẽ khóa địa chỉ IP trong vòng 10 phút. Tuy nhiên, bạn có thể thay đổi chính sách này theo ý muốn.

  1. Cấu hình Fail2ban bảo vệ SSH

Khi sử dụng Fail2ban, có 3 yếu tố quan trọng cần lưu ý:

  • Filter: Chứa mã regex lọc ra các mẫu cụ thể cần nhận dạng trong log file.
  • Action: định nghĩa lệnh Fail2ban thực hiện.
  • Jail: bao gồm một filter và một hoặc một vài actions, ví dụ quy định các chính sách như số lần đăng nhập lỗi, thời gian ban IP…

Mặc định sau khi cài đặt Fail2ban sẽ có cấu hình:

vim /etc/fail2ban/jail.conf

[DEFAULT]

# "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not
# ban a host which matches an address in this list. Several addresses can be
# defined using space separator.
ignoreip = 127.0.0.1

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

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

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

Trong đó

ignoreip: không block những địa chỉ này

  • bantime: khoảng thời gian (giây) bị block.
  • findtime: khoảng thời gian một ip phải login thành công.
  • maxretry: số lần đăng nhập lỗi.

Chúng ta sẽ cùng cấu hình tùy chỉnh Jail bảo vệ SSH như sau:

Tạo jail mới:

vi /etc/fail2ban/jail.local

có nội dung:

[sshd]
enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
logpath  = /var/log/secure
maxretry = 2
bantime = 60

Trong đó:

  • enabled: kích hoạt bảo vệ nếu muốn tắt ta chuyển sang false.
  • filter: để mặc định để trỏ tới file cấu hình /etc/fail2ban/filter.d/sshd.conf
  • action: Fail2ban sẽ ban địa chỉ IP nếu nó match filter trong tập tin /etc/fail2ban/action.d/iptables.conf. Nếu bạn đã thay đổi cổng ssh, đổi port=ssh bằng port mới, ví dụ port=2222
  • logpath: đường dẫn file log Fail2ban sử dụng để theo dõi
  • maxretry: số lần đăng nhập sai tối đa.
  • bantime: thời gian IP bị cấm tính đơn vị giây, ví dụ ở đây là một phút.

Restart service để thay đổi được áp dụng:

sudo service fail2ban restart

Cấu hình Fail2ban khởi động cùng hệ điều hành khi reboot máy chủ:

Với Ubuntu, Debian:

update-rc.d fail2ban defaults

Với CentOS6:

chkconfig --level 23 fail2ban on

Với CenOS7:

systemctl enable fail2ban

Sử dụng câu lệnh “iptables -L” để kiểm tra xem iptables đã được update chưa.

Nếu có Chain có tên F2b-ssh là đã thành công.

  1. Kiểm tra khả năng bảo vệ SSH của Fail2ban.

Từ một máy khác, thực hiện SSH vào máy chủ vừa cấu hình Fail2ban, nhập sai password 2 lần và kiểm tra hoạt động của Fail2ban trên máy chủ bằng câu lệnh:

fail2ban-client status sshd

Status for the jail: sshd
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     2
|  `- File list:        /var/log/secure
`- Actions
  |- Currently banned: 1
  |- Total banned:     1
  `- Banned IP list:   103.207.68.xx

Như vậy bạn đã có thể tự thực hiện cài đặt và cấu hình Fail2ban để bảo vệ SSH khỏi các cuộc tấn công Brute Force vào hệ thống VPS/Cloud Server rồi. Chúc các bạn thành công.

>>Bài viết bổ ích: Tạo notification nhắc nhở uống nước trên Ubuntu

Mạng xã hội

2.8KFansLike
FollowersFollow
10SubscribersSubscribe
- Advertisement -