SSH là một giao thức an toàn để quản lý các server từ xa, sử dụng bằng cách được kích hoạt và truy cập qua Internet. Điều này có thể mang lại một số rủi ro về bảo mật cho server. Khi cài đặt Fail2Ban trên server, dịch vụ này sẽ giúp giảm thiểu nguy cơ server bị tấn công. Trong hướng dẫn này, Vietnix sẽ hướng dẫn cài đặt Fail2Ban bảo vệ SSH trên CentOS 7 một cách đơn giản và dễ hiểu nhất.
Cài đặt Fail2Ban trên CentOS 7
Mặc dù Fail2Ban không có sẵn trong bộ package của CentOS official nhưng vẫn có thể download được từ project EPEL (Extra Packages for Enterprise Linux). Bạn có thể cài đặt project này bằng lệnh sau:
sudo yum install epel-release
Bạn sẽ nhận được output như sau. Nhấn y và Enter để tiếp tục.
yum prompt
Transaction Summary
============================================================================
Install 1 Package
Total download size: 14 k
Installed size: 24 k
Is this ok [y/d/N]: y
Bây giờ hãy cài đặt package fail2ban bằng lệnh sau:
sudo yum install fail2ban
Nhấn y và Enter để tiếp tục.
Khi cài đặt đã hoàn tất, sử dụng lệnh systemctl
để kích hoạt dịch vụ fail2ban
:
sudo systemctl enable fail2ban
Cấu hình các thiết lập nội bộ
Fail2Ban lưu trữ các file cấu hình trong directory /etc/fail2ban
. Ở đây bạn có thể tìm thấy một file là jail.conf
chứa các giá trị mặc định. Tuy nhiên, để tránh bị ghi đè khi cập nhật các package, bạn không nên chỉnh sửa trực tiếp file jail.conf. Thay vào đó hãy tạo một file mới và đặt tên file là jail.local
. Bất kỳ giá trị nào được chỉnh sửa trong file jail.local
đều ghi đè lên giá trị trong jail.conf
.
File jail.conf
chứa một phần được gọi là [DEFAULT] và các giá trị khác nhau cho từng dịch vụ riêng lẻ. File jail.local
có thể ghi đè lên bất kỳ giá trị nào trong file này. Ngoài ra, các file jail.d trong /etc/fail2ban/jail.d/
còn được sử dụng để ghi đè lên các thiết lập trong cả hai file trên. Các file được áp dụng theo thứ tự như sau:
/etc/fail2ban/jail.conf
/etc/fail2ban/jail.d/*.conf
, (theo thứ tự bảng chữ cái)/etc/fail2ban/jail.local
/etc/fail2ban/jail.d/*.local
, (theo thứ tự bảng chữ cái)
[DEFAULT] trong file jail.conf bao gồm các giá trị mặc định cho tất cả các jail trong file. Nếu không có chỉ định cho một giá trị cụ thể, thì giá trị mặc định sẽ được sử dụng.
Tiếp theo bạn hãy thử tạo một phiên bản đơn giản cho file jail.local. Mở một file mới bằng cách sử dụng nano (hoặc text editor bạn muốn):
sudo nano /etc/fail2ban/jail.local
Copy và paste đoạn dưới đây vào file:
[DEFAULT]
# Ban hosts for one hour:
bantime = 3600
# Override /etc/fail2ban/jail.d/00-firewalld.conf:
banaction = iptables-multiport
[sshd]
enabled = true
Đoạn bên trên giúp người dùng ghi đè cả ba giá trị trong file jail.local:
- Gán giá trị 3600 cho bantime đối với tất cả các dịch vụ.
- Sử dụng iptables để cấu hình firewall.
- Kích hoạt cơ chế bảo mật sshd trong fail2ban.
Sau khi đã thay đổi các giá trị trong file jail.local, hãy lưu lại và thoát khỏi file. Trong nano, hãy nhấn Ctrl-X để thoát. Sau đó nhấn y và Enter để lưu file. Bây giờ hãy khởi động lại dịch vụ fail2ban
bằng lệnh systemctl
.
sudo systemctl restart fail2ban
Status
|- Number of jail: 1
`- Jail list: sshd
Bạn có thể biết thêm thông tin chi tiết hơn về một jail cụ thể với lệnh sau:
sudo fail2ban-client status sshd
Để bảo vệ máy chủ, bạn có thể xem xét thuê VPS tại các nhà cung cấp uy tín. Vietnix hiện đang là đơn vị hàng đầu tại Việt Nam chuyên cung cấp các gói dịch vụ VPS tốc độ cao, ổn định, bảo mật và an toàn. Bạn có thể lựa chọn gói VPS phù hợp với nhu cầu như VPS NVMe, VPS Giá Rẻ, VPS Phổ Thông, VPS Cao Cấp hoặc VPS GPU.
Thuê VPS tại Vietnix, bạn sẽ sở hữu máy chủ ảo với tốc độ cao, đảm bảo ổn định và được tối ưu hóa cho các nhu cầu của bạn. Các gói VPS của Vietnix cũng được thiết kế để đảm bảo bảo mật và an toàn, cùng với tốc độ xử lý nhanh chóng và hỗ trợ kỹ thuật chuyên nghiệp 247. Nhờ đó bạn có thể yên tâm tập trung vào phát triển dự án của mình một cách hiệu quả.
Liên hệ ngay với Vietnix để tìm hiểu chi tiết hơn và lựa chọn gói VPS phù hợp với bạn.
Các cài đặt có sẵn trong Fail2Ban
Phiên bản jail.local được đề cập ở trên là phương pháp được khuyến khích nhiều nhưng người dùng có thể cần phải điều chỉnh nhiều cài đặt khác. Mở file jail.conf để kiểm tra các giá trị mặc định. Nếu bạn muốn thay đổi bất kỳ giá trị nào, hãy sao chép vào phần tương ứng của file jail.local và điều chỉnh các giá trị trong file này.
sudo nano /etc/fail2ban/jail.conf
Thiết lập mặc định cho mọi Jail
Đầu tiên, cuộn xuống phần [DEFAULT]
ignoreip = 127.0.0.1/8
Bạn có thể điều chỉnh các địa chỉ nguồn mà Fail2Ban đã bỏ qua bằng cách thêm giá trị vào tham số ignoreip
. Hiện tại, Fail2Ban đã được cấu hình để không cấm bất kỳ lưu lượng truy cập nào đến từ máy địa phương. Tuy nhiên, nếu bạn muốn loại bỏ các địa chỉ khác mà bạn cho là an toàn, hãy bổ sung các địa chỉ nào vào cuối tham số ignoreip, được phân tách bằng khoảng trắng.
bantime = 600
Tham số bantime được dùng để đặt thời gian khách hàng sẽ bị cấm khi họ không xác thực đúng cách. Đơn vị thời gian Vietnix sử dụng là giây. Theo mặc định, giá trị của tham số này là 600 giây, tương đương với 10 phút.
findtime = 600
maxretry = 3
Hai tham số tiếp theo mà bạn cần lưu ý là findtime
và maxretry
. Các tham số này hoạt động cùng nhau để thiết lập các điều kiện mà phía client sẽ bị cấm.
Tham số maxretry
thiết lập số lần thử đăng nhập trong một khoảng thời gian được xác định bởi findtime
trước khi bị cấm. Với các thiết lập mặc định, Fail2Ban sẽ cấm một client sau khi họ đăng nhập thất bại 3 lần trong 10 phút.
destemail = root@localhost
sendername = Fail2Ban
mta = sendmail
Nếu muốn cấu hình cảnh báo qua email, hãy ghi đè các thiết lập destemail, sendername và mta. Tham số destemail thiết lập địa chỉ email sẽ nhận các thông báo. sendername thiết lập giá trị của “From” trong email. mta
cấu hình dịch vụ sẽ được dùng để gửi email.
action = $(action_)s
Tham số này quy định hành động Fail2Ban sẽ làm khi thực hiện việc cấm truy cập. Giá trị action_
được định nghĩa trong file trước tham số này. Giá trị action dùng để cấu hình firewall, giúp từ chối các lưu lượng gây rối từ server cho đến hết thời gian cấm truy cập.
Nếu bạn muốn cấu hình thông báo qua email, hãy ghi đè giá trị action_mw
lên giá trị action_
. Nếu bạn muốn email bao gồm các log liên quan đến việc cấm truy cập, hãy thay đổi thành giá trị action_mwl
. Đảm bảo rằng bạn đã thiết lập email phù hợp nếu bạn chọn sử dụng thông báo qua email.
Thiết lập cho từng Jail riêng
Sau phần [DEFAULT], người dùng sẽ gặp các phần cấu hình từng jail cho các dịch vụ khác nhau. Thông thường, người dùng cần tạo một port
và logpath
để quản lý các truy cập bất hợp pháp. Ví dụ, jail SSH đã được kích hoạt trong file jail.local
có cài đặt như sau:
[sshd]
port = ssh
logpath = %(sshd_log)s
Trong trường hợp này, ssh là một biến được gán cho port và %(sshd_log)s
được định nghĩa trong cấu hình tiêu chuẩn của Fail2Ban (giá trị này giúp giữ file jail.conf tính linh động giữa các hệ điều hành khác nhau).
Một thiết lập khác mà bạn có thể gặp là filter
, thiết lập này được sử dụng để xác định một log có chỉ ra việc xác thực thất bại hay không.
Giá trị filter
thực tế là một tham chiếu nằm trong directory /etc/fail2ban/filter.d
với phần “.conf” đã được lược bỏ. File này chứa các regex giúp xác định dòng nào trong log có vấn đề hay không. Vietnix sẽ không đi sâu vào khía cạnh này do độ phức tạp cao và cần sự tùy biến nhiều hơn.
Tuy nhiên, bạn có thể xem các loại filter nào có sẵn bằng cách xem trong directory bên trên:
ls /etc/fail2ban/filter.d
Nếu bạn thấy một file liên quan đến dịch vụ đang sử dụng, hãy mở file đó bằng một text editor để có thể xem đầy đủ nội dung. Hầu hết các file này được chú thích đầy đủ, giúp bạn hiểu rõ mục đích và công dụng của đoạn mã trong file. Thường các bộ filter này đều có vài section bị vô hiệu trong file jail.conf
và nếu muốn người dùng có thể kích hoạt bằng tay.
Ví dụ, bạn đang cung cấp một website sử dụng Nginx và phát hiện ra phần yêu cầu mật khẩu của website đang bị tấn công với nhiều lần đăng nhập. Bạn có thể chỉ định cho Fail2Ban kiểm tra các điều kiện liên quan trong file nginx-http-auth.conf
và tìm kiếm các thông tin đăng nhập không hợp lệ trong file /var/log/nginx/error.log
.
Trên thực tế, điều này đã được thiết lập ở phần [nginx-http-auth]
trong file /etc/fail2ban/jail.conf
. Bạn chỉ cần thêm tham số enabled cho jail nginx-http-auth
trong jail.local
:
[DEFAULT]
# Ban hosts for one hour:
bantime = 3600
# Override /etc/fail2ban/jail.d/00-firewalld.conf:
banaction = iptables-multiport
[sshd]
enabled = true
[nginx-http-auth]
enabled = true
Sau đó khởi động lại dịch vụ fail2ban
:
sudo systemctl restart fail2ban
Giám sát các Log của Fail2Ban và cấu hình Firewall
Khi Fail2Ban đã hoạt động như mong muốn, hãy bắt đầu sử dụng systemctl
để kiểm tra trạng thái của dịch vụ:
sudo systemctl status fail2ban
Nếu có vấn đề, hãy khắc phục bằng cách kiểm tra log của fail2ban
từ lần khởi động gần đây nhất:
sudo journalctl -b -u fail2ban
Tiếp theo sử dụng fail2ban-client
để truy vấn trạng thái của fail2ban-server
hoặc bật kỳ jail nào.
sudo fail2ban-client status
sudo fail2ban-client status jail_name
Theo dõi log của Fail2ban để có thể xem các hoạt động gần nhất (sau đó nhấn Ctrl-C để thoát):
sudo tail -F /var/log/fail2ban.log
Lệnh dưới đây liệt kê các quy tắc hiện tại đã cấu hình cho iptables:
sudo iptables -L
Hiển thị các quy tắc cho iptables dưới dạng một định dạng các lệnh cần thiết để kích hoạt mỗi quy tắc đó:
sudo iptables -S
Vietnix là nhà cung cấp VPS tốc độ cao uy tín tại Việt Nam, với hơn 11 năm kinh nghiệm và đồng hành cùng hơn 50.000 khách hàng. Trong suốt thời gian hoạt động, đã có hơn 100.000 dịch vụ được kích hoạt thành công cho khách hàng. Sự uy tín của Vietnix được khẳng định qua việc đạt giải thưởng Thương hiệu Việt Nam xuất sắc vào năm 2022.
Nhờ mang lại dịch vụ chất lượng, khiến khách hàng cảm thấy hài lòng, Vietnix nhận được đánh giá 5 sao từ 97% khách hàng sau khi sử dụng dịch vụ. Đáng chú ý, 89% khách hàng đã duy trì sử dụng dịch vụ của Vietnix đến thời điểm hiện tại, điều này chứng tỏ sự tin tưởng và hài lòng từ phía khách hàng.
Với sự uy tín, kinh nghiệm và sự hài lòng của khách hàng, Vietnix là một lựa chọn đáng tin cậy cho ai đang cần tìm giải pháp VPS tốc độ cao. Liên hệ để được tư vấn chi tiết.
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh
- Hotline: 1800 1093
- Email: sales@vietnix.com.vn
Lời kết
Trên đây là hướng dẫn các bước bảo mật SSH với Fail2Ban trên CentOS 7. Nếu bạn có thắc mắc gì về cách mà Fail2Ban hoạt động, hãy để lại bình luận bên dưới. Vietnix sẽ hỗ trợ bạn nhanh chóng.