CSF (ConfigServer Security & Firewall) là một công cụ tường lửa và bảo mật phổ biến được sử dụng trên các máy chủ Linux. Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách cài đặt CSF Firewall trên DirectAdmin để bảo vệ máy chủ của bạn. Hãy làm theo các bước sau:
Lưu ý: Vui lòng đảm bảo rằng bạn đã đăng nhập vào máy chủ DirectAdmin với quyền root hoặc quyền sudo.
Xem bài viết hướng dẫn đăng nhập VPS bằng SSH.
Bước 1: Stop và vô hiệu hóa tường lửa FirewallD
FirewallD là một công cụ tường lửa dòng lệnh nhẹ và phổ biến trên hệ điều hành Linux. Nó được thiết kế để quản lý các quy tắc tường lửa và cấu hình một cách dễ dàng và linh hoạt. FirewallD cung cấp các tính năng như quản lý các khu vực (zones), mở cổng (ports), quản lý dịch vụ (services) và nhiều cấu hình tường lửa nâng cao khác.
Trước khi cài đặt CSF, chúng ta sẽ tắt và vô hiệu hóa vĩnh viễn dịch vụ tường lửa FirewallD hiện có trên máy chủ Linux để tránh xung đột khi cài đặt CSF firewall.
Tắt FirewallD cho phiên (session) hiện tại:
systemctl stop firewalld
Vô hiệu hóa FirewallD:
systemctl disable firewalld
Xác nhận FirewallD đã được vô hiệu hóa:
systemctl status firewalld
Bước này đảm bảo rằng tường lửa mặc định (trong trường hợp này là FirewallD) đã được tắt và vô hiệu hóa.
Bước 2: Cài đặt CSF
Trong phần này, chúng ta sẽ tìm hiểu cách cài đặt CSF Firewall theo hai cách: cài đặt tự động và cài đặt thủ công.
Cách 1: Cài đặt tự động CSF/LFD
Nếu bạn muốn sử dụng kịch bản tự động để cài đặt CSF/LFD trên DirectAdmin, hãy làm theo các bước sau:
cd ~
wget -O csf-bfm-install.sh https://raw.githubusercontent.com/poralix/directadmin-bfm-csf/master/install.sh
chmod 700 csf-bfm-install.sh
./csf-bfm-install.sh
Kịch bản này sẽ tự động cài đặt CSF và thiết lập tích hợp giữa BFM và CSF/LFD trên máy chủ DirectAdmin của bạn. Tuy nhiên, kịch bản cài đặt CSF firewall thủ công sau đây là mới cách được nhà phát hành CSF firewall là Way to the Web Limited khuyến cáo sử dụng và được đưa vào file hướng dẫn cài đặt gốc (Tiếng Anh) của CSF.
https://download.configserver.com/csf/install.txt
Cách 2: Cài đặt thủ công CSF/LFD
Để cài đặt CSF/LFD và BFM thủ công khá đơn giản, bạn chỉ cần lần lượt chạy các lệnh bên dưới theo thứ tự.
Di chuyển đến thư mục /usr/src:
cd /usr/src
Xóa file csf.tgz nếu tồn tại:
rm -fv csf.tgz
Tải xuống gói cài đặt CSF:
wget https://download.configserver.com/csf.tgz
Giải nén gói cài đặt:
tar -xzf csf.tgz
Di chuyển vào thư mục csf:
cd csf
Chạy script cài đặt:
sh install.sh
Quá trình này sẽ tải xuống gói cài đặt CSF, giải nén nó và chạy script cài đặt.
Bước 3: Kiểm tra CSF
Sau khi cài đặt CSF, chúng ta sẽ kiểm tra xem tất cả các tính năng của CSF có hoạt động đúng không, bao gồm cả việc kiểm tra tính khả dụng của module iptables. Sử dụng lệnh sau:
perl /usr/local/csf/bin/csftest.pl
Kết quả kiểm tra sẽ được hiển thị và nó sẽ cho biết CSF có hoạt động chính xác trên máy chủ của bạn hay không. Đừng lo lắng nếu bạn không thể chạy tất cả các tính năng, miễn là script không báo lỗi FATAL.
Bạn không nên chạy bất kỳ script cấu hình tường lửa iptables nào khác. Ví dụ, nếu bạn đã sử dụng APF+BFD trước đó, bạn có thể gỡ bỏ sự kết hợp đó (bạn cần làm điều này nếu đã cài đặt chúng, nếu không chúng sẽ xung đột):
sh /usr/local/csf/bin/remove_apf_bfd.sh
Cài đặt CSF cho DirectAdmin đã được thiết lập sẵn để hoạt động trên các máy chủ đó với tất cả các cổng tiêu chuẩn mở. CSF tự động cấu hình cổng SSH của bạn khi nó đang chạy trên một cổng không tiêu chuẩn. Ngoài ra, CSF tự động thêm địa chỉ IP đã kết nối của bạn vào danh sách trắng (white list) trong cài đặt.
Đến đây đã gần như hoàn tất phần cài đặt CSF firewall cho DirectAdmin. Bạn có thể cấu hình CSF và LFD bằng cách đọc tài liệu và tệp cấu hình trong /etc/csf/csf.conf và /etc/csf/readme.txt trực tiếp hoặc thông qua Giao diện người dùng CSF. Xem phần hướng dẫn này ở bước tiếp theo bên dưới.
**Lưu ý: Bạn nên đảm bảo rằng dịch vụ ghi nhật ký kernel (klogd) đã được kích hoạt. Thông thường, các máy chủ VPS chạy RedHat/CentOS v5 có dịch vụ này đã bị tắt và bạn nên kiểm tra tệp /etc/init.d/syslog và đảm bảo rằng các dòng klogd không bị chú thích. Nếu bạn thay đổi tệp, hãy nhớ khởi động lại syslog. Xem tệp csf.conf và readme.txt để biết thêm thông tin.
/etc/csf/csf.conf
/etc/csf/readme.txt
Bước 4: Cấu hình CSF
CSF sử dụng tệp cấu hình `/etc/csf/csf.conf` để quản lý các tùy chọn tường lửa. Bạn có thể sử dụng trình soạn thảo văn bản để chỉnh sửa tệp cấu hình này theo nhu cầu của bạn:
nano /etc/csf/csf.conf
Hãy đảm bảo bạn đã xem xét và cấu hình các tùy chọn tường lửa như TCP_IN, TCP_OUT, UDP_IN và UDP_OUT để phù hợp với yêu cầu bảo mật của máy chủ.
Tắt TESTING Mode
Mặc định sau khi cài đặt CSF, nó được thiết lập để chạy ở chế độ Testing Mode (chế độ kiểm tra). Trong chế độ này, CSF không chặn thực tế bất kỳ kết nối nào, mà chỉ ghi lại các quyết định mà nó sẽ thực hiện dựa trên cấu hình của bạn. Điều này cho phép bạn kiểm tra các quy tắc tường lửa mới mà không lo lắng về việc bị chặn truy cập.
Tuy nhiên, khi bạn đã kiểm tra và chắc chắn rằng cấu hình của CSF hoạt động đúng, bạn có thể tắt chế độ Testing Mode để CSF thực hiện thực tế các quyết định tường lửa.
Bằng cách sửa đổi tệp cấu hình csf.conf và đổi giá trị của TESTING từ "1" (chế độ Testing) thành "0" (chế độ thực tế), bạn cho phép CSF chặn và cho phép kết nối dựa trên cấu hình đã thiết lập. Sau khi thay đổi và lưu tệp cấu hình, bạn cần khởi động lại CSF để áp dụng các thay đổi mới.
Lưu ý rằng việc tắt chế độ Testing Mode đồng nghĩa với việc CSF sẽ chặn và cho phép kết nối dựa trên cấu hình, vì vậy hãy đảm bảo rằng bạn đã kiểm tra và cấu hình đúng các quy tắc tường lửa trước khi tắt chế độ Testing Mode.
Mở tệp cấu hình csf.conf bằng trình chỉnh sửa văn bản, ví dụ:
vi /etc/csf/csf.conf
Tìm đến dòng TESTING = "1" và thay "1" bằng "0". Bạn có thể sử dụng các phím mũi tên để di chuyển trong trình chỉnh sửa và nhấn phím "i" để chuyển sang chế độ chỉnh sửa.
Sau khi chỉnh sửa, nhấn phím "Esc" để thoát chế độ chỉnh sửa và sau đó nhập ":wq" để lưu tệp và thoát khỏi trình chỉnh sửa.
Khởi động lại CSF để áp dụng cấu hình mới:
service csf restart
Các file cầu hình cơ bản của CSF firewall
Các file cấu hình và quản lý CSF đều được đặt trong thư mục /etc/csf/. Nếu có chỉnh sửa gì trong các file này thì cần reload lại CSF để áp dụng.
- csf.conf: file cấu hình chính để quản lý CSF.
- csf.allow: Danh sách các địa chỉ IP cho phép đi qua Firewall.
- csf.deny: Danh sách các địa chỉ IP bị chặn không cho đi qua Firewall.
- csf.ignore: Danh sách các địa chỉ IP cho phép qua firewall và không bị block nếu có vấn đề.
- csf.*ignore: Danh sách user, IP được ignore.
Bước 5: Khởi động lại CSF
Sau khi đã cấu hình xong, khởi động lại CSF để áp dụng các thay đổi bằng lệnh sau:
csf -ra
Hoàn tất cài đặt
Khi quá trình khởi động lại CSF hoàn tất, CSF Firewall sẽ được cài đặt và sẵn sàng bảo vệ máy chủ của bạn. Bạn có thể sử dụng giao diện DirectAdmin để quản lý và cấu hình CSF theo nhu cầu của bạn.
Xong! Bạn đã thành công cài đặt CSF Firewall trên DirectAdmin. CSF sẽ cung cấp cho bạn một lớp bảo mật bổ sung và giúp bảo vệ máy chủ của bạn khỏi các mối đe dọa bên ngoài.
Xem thêm các bài viết hướng dẫn liên quan CSF Firewall.
[TIPS] Các mô-đun Perl cần thiết cho CSF
Trong khi hầu hết các mô-đun đã được cài đặt trên phiên bản Perl tiêu chuẩn, có một số mô-đun sau có thể cần được cài đặt thủ công:
Trên các hệ thống dựa trên RPM:
yum install perl-libwww-perl.noarch perl-LWP-Protocol-https.noarch perl-GDGraph
Trên các hệ thống dựa trên APT:
apt-get install libwww-perl liblwp-protocol-https-perl libgd-graph-perl
Sử dụng cpan:
perl -MCPAN -eshell
cpan> install LWP LWP::Protocol::https GD::Graph
[TIPS] Chống UDP Flood Port với CSF Firewall
Để cấu hình CSF Firewall để chống các cuộc tấn công UDP Flood vào cổng cụ thể, bạn có thể sử dụng tùy chọn Port Flood Protection. Tùy chọn này giới hạn số lượng kết nối mỗi khoảng thời gian mà các kết nối mới có thể được tạo tới các cổng cụ thể.
Lưu ý rằng tính năng này chỉ hoạt động trên các máy chủ có module iptables ipt_recent được tải. Điều này thường áp dụng cho các kernel monolithic. Các bạn Quản trị viên máy chủ VPS nên hỏi nhà cung cấp dịch vụ VPS xem module iptables có được cài đặt sẵn hay chưa để chủ động trong việc sử dựng CSF firewall trong việc chống flood port.
Mặc định, ipt_recent chỉ theo dõi 100 địa chỉ IP gần đây nhất. Các địa chỉ IP đã được theo dõi có thể được xem trong thư mục /proc/net/ipt_recent/* với số cổng là tên tệp.
Cú pháp cho cài đặt PORTFLOOD
PORTFLOOD là một danh sách phân cách bằng dấu phẩy gồm:
port;protocol;hit count*;interval seconds
Ví dụ, cài đặt PORTFLOOD = "22;tcp;5;300,80;tcp;20;5" có nghĩa là:
- Nếu có hơn 5 kết nối tới cổng tcp 22 trong 300 giây, hãy chặn địa chỉ IP đó khỏi cổng 22 ít nhất trong 300 giây sau khi gói tin cuối cùng được nhìn thấy, nghĩa là phải có một khoảng thời gian "yên lặng" là 300 giây trước khi khóa được gỡ bỏ.
- Nếu có hơn 20 kết nối tới cổng tcp 80 trong 5 giây, hãy chặn địa chỉ IP đó khỏi cổng 80 ít nhất trong 5 giây sau khi gói tin cuối cùng được nhìn thấy, nghĩa là phải có một khoảng thời gian "yên lặng" là 5 giây trước khi khóa được gỡ bỏ.
Thông tin chi tiết về module ipt_recent có thể được tìm thấy trong trang man iptables và tại http://snowman.net/projects/ipt_recent/
**Lưu ý: Các địa chỉ IP bị chặn không xuất hiện trong bất kỳ chuỗi iptables nào khi sử dụng module này. Bạn phải thao tác trên các tệp /proc/net/ipt_recent/* theo tài liệu của module để xem và gỡ bỏ các địa chỉ IP đang bị chặn nếu các khóa chưa hết hạn.
Khởi động lại csf sẽ đặt lại các bảng ipt_recent và gỡ bỏ tất cả các khóa của nó.
Ngoài ra, các bạn cũng cần lưu ý về một số hạn chế khi sử dụng ipt_recent là cần giữ số lượng hit dưới 20.
- Mặc định chỉ theo dõi 100 địa chỉ mỗi bảng (chúng tôi cố gắng tăng giới hạn này lên 1000 thông qua modprobe).
- Mặc định chỉ đếm 20 gói tin cho mỗi địa chỉ được ghi nhớ.