Cài đặt và tối ưu CSF Firewall trên hệ thống VPS/Server sẽ giúp kiểm soát các gói tin, ports trên hệ thống. Ngoài ra các tùy chỉnh cơ bản sẽ hạn chế Ddos cơ bản. Click Xem!

[CSF Là Gì] - Cấu Hình CSF Firewall Hạn Chế Ddos

csf-la-gi
 

CSF khái niệm – là gì

CSF (ConfigServer & Firewall) là 1 gói ứng dụng hoạt động trên Linux như 1 Firewall được phát hành miễn phí để tăng tính bảo mật cho server (VPS và Dedicated). CSF hoạt động dựa trên iptables và tiến trình ldf để quyét các file log để phát hiện các dấu hiệu tấn công bất thường.

CSF sẽ giúp server của bạn:

  • Chống DoS các loại
  • Chống Scan Port
  • Đưa ra các lời khuyên về việc cấu hình server (VD: Nên nâng cấp MySQL lên bản mới hơn)
  • Chống BruteForce Attack vào ftp server, web server, mail server,directadmin,cPanel…
  • Chống Syn Flood
  • Chống Ping Flood
  • Cho phép ngăn chặn truy cập từ 1 quốc gia nào đó bằng cách chỉ định Country Code chuẫn ISO
  • Hỗ trợ IPv6 và IPv4
  • CHo phép khóa IP tạm thời và vĩnh viễn ở tầng mạng (An toàn hơn ở tầng ứng dụng ) nên webserver ko phải mệt nhọc xử lý yêu cầu từ các IP bị cấm nữa
  • Cho phép bạn chuyến hướng yêu cầu từ các IP bị khóa sang 1 file html để thông báo cho người dùng biết IP của họ bị khóa
  • Và rất nhiều tính năng khác, các bạn tự tìm hiểu thêm
csf-dac-tinh

 

Hướng dẫn cài đặt CSF

 

1. Cài đặt các module cần thiết cho CSF

Cài đặt module Perl cho CSF script

  • yum install perl-libwww-perl

2. Tải CSF

cd /tmp
wget https://download.configserver.com/csf.tgz

3. Cài đặt CSF

Tiến hành giải nén và cài đặt CSF

tar -xzf csf.tgz
cd csf
sh install.sh

4. Cấu hình CSF

Mặc định thì script trên sẽ cài đặt và chạy CSF ở chế độ “Testing”, có nghĩa là server lúc này chưa được bảo vệ toàn diện. Để tắt chế độ “Testing” bạn cần cấu hình các lựa chọn TCP_IN, TCP_OUT, UDP_IN và UDP_OUT cho phù hợp với nhu cầu .

Mở file cấu hình CSF

nano /etc/csf/csf.conf

Chỉnh sửa các thông số cho phù hợp

# Allow incoming TCP ports
TCP_IN = "20,21,22,25,53,80,110,143,443,465,587,993,995"

# Allow outgoing TCP ports
TCP_OUT = "20,21,22,25,53,80,110,113,443"

# Allow incoming UDP ports
UDP_IN = "20,21,53"

# Allow outgoing UDP ports
# To allow outgoing traceroute add 33434:33523 to this list
UDP_OUT = "20,21,53,113,123"

Khi đã cấu hình xong, tắt chế độ Testing bằng cách chuyển TESTING = “1” thành TESTING = “0”

TESTING = "0"

Cuối cùng lưu lại file cấu hình CSF

5. Khởi động CSF

Chạy CSF và cho phép tự kích hoạt mỗi khi boot VPS

chkconfig --level 235 csf on
service csf restart

6. Những file cấu hình CSF

Toàn bộ thông tin cấu hình và quản lý CSF được lưu ở các file trong folder /etc/csf. Nếu bạn chỉnh sửa các file này thì cần khởi động lại CSF để thay đổi có hiệu lực.

  • csf.conf : File cấu hình chính để quản lý CSF.
  • csf.allow : Danh sách địa chỉ IP cho phép qua firewall.
  • csf.deny : Danh sách địa chỉ IP từ chối qua firewall.
  • csf.ignore : Danh sách đị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.

7. Một số lệnh thường dùng

Một số câu lệnh sử dụng để add (-a) hoặc deny (-d) một địa chỉ IP.

csf -d IPADDRESS //Block địa chỉ IP
csf -dr IPADDRESS //Xóa địa chỉ IP đã bị block
csf -a IPADDRESS //Allow địa chỉ IP
csf -ar IPADDRESS //Xóa địa chỉ IP đã được allow
csf -g IPADDRESS //Kiểm tra địa chỉ IP có bị block không
csf -r //Khởi động lại CSF
csf -x //Tắt CSF
csf -e //Mở CSF

Trong trường hợp bạn quên những lệnh trên, hãy sử dụng csf sẽ liệt kê toàn bộ danh sách các option.

8. Xóa CSF

Nếu bạn muốn xóa hoàn toàn CSF, chỉ cần sử dụng script sau:

/etc/csf/uninstall.sh

Việc này sẽ xóa toàn bộ CSF nên bạn cần cân nhắc khi dùng. Nếu muốn tạm thời tắt CSF thì có thể chuyển chế độ TESTING sang 1.
 

Hướng dẫn cài đặt và sử dụng CSF trên cPanel

csf-cpanel

 

1. Cài đặt

- Đăng nhập vào VPS/Server với tài khoản root.
- Thực hiện một số dòng lệnh ở dưới để thực hiện tải và cài đặt CSF:

- Tiếp theo, kiểm tra module iptables đã được cài được hay chưa, thực hiện lệnh dưới:
perl /usr/local/csf/bin/csftest.pl
- Thay đổi chế độ giá trị biến TESTING về 0, thực hiện lệnh:
vi /etc/csf/csf.conf
Sau đó tìm đến dòng TESTING = "1" thay đổi thành TESTING = "0"
- Khởi động lại dịch vụ CSF, sử dụng lệnh:
/etc/init.d/csf restart

Sau khi cài đặt xong Khách hàng sẽ thấy một chức năng mới trên giao diện quản trị cPanel là ConfigServer Security&Firewall ở phần WHM >> Plugins.

 

Hình 1. Giao diện CSF.

2. Cấu hình một số tính năng cơ bản

- Cấu hình địa chỉ email nhận cảnh báo: Đăng nhập vào Cpanel chọn Basic cPanel & WHM Setup. Thay đổi phần Contact Information với địa chỉ email nhận được cảnh báo. Sau đó nhấn vào nút Save Changes.

Hình 2. Cấu hình địa chỉ email nhận cảnh báo.

- Cấu hình khóa/cho phép truy cập từ một địa chỉ IP: chọn WHM >> ConfigServer Security&Firewall bên phải màn hình tìm đếncsf - ConfigServer Firewall:

  • Khóa IP tìm điền IP vào ô bên cạnh nút Quick Deny sau đó nhấn nút Quick Deny.
  • Cho phép IP tìm điền IP vào ô bên cạnh nút Quick Allow sau đó nhấn nút Quick Allow.
  • Xem IP bị tường lửa khóa thì chọn nút Firewall Deny IPs sau đó nhấn nút Firewall Deny.
  • Xem IP bị tường lửa cho phép thì chọn nút Firewall Allows IPs sau đó nhấn nút Firewall Deny.

Hình 3. Chức năng khóa/mở khóa địa chỉ IP.

+ Kiểm tra một IP nào đó bị khóa thì nhập vào ô bên cạnh nút Search for IP sau đó nhấn nút Search for IP.

Hình 4. Chức năng tìm kiếm một địa chỉ IP bị khóa.

Sau khi nhấn vào nút Searh for IP, nếu địa chỉ IP bị khóa bởi CSF thì sẽ hiện một thông báo tương tự ở dưới:

Hình 5. Thông tin IP bị khóa

Nếu muốn mở khóa một địa chỉ IP đang bị khóa thì nhấn vào biểu tượng ổ khóa.

3. Một số khắc phục các lỗi đi kèm trong quá trình sử dụng:

Tình huống: Khi truy cập WHM >> ConfigServer FireWall thì gặp thông báo lỗi: No response from subprocess (/usr/local/cpanel/whostmgr/docroot/cgi/configserver/csf.cgi): The subprocess exited with status 2 (ENOENT)
- Xử lý: Cài đặt thêm JSON:XS bằng cách thực hiện lệnh: /scripts/perlinstaller JSON::XS

Tình huống: Khi khởi động lại CSF/iptables thì gặp thông báo lỗi: The VPS iptables rule limit (numiptent) is too low (491/500) – stopping firewall to prevent iptables blocking all connections, at line xxx.
Xử lý: Gửi yêu cầu đến bộ phận kỹ thuật tăng giá trị numiptent cho VPS.

Tình huống: Khi truy cập WHM >> ConfigServer FireWall thì gặp thông báo lỗi: 500.
Xử lý:
Kiểm tra error_log cPanel bằng dòng lệnh: tail -f /usr/local/cpanel/logs/error_log
Khi gặp thông báo lỗi tương tự như ở dưới :

Compilation failed in require at /usr/local/cpanel/Cpanel/Template/Plugin/JSON.pm line 12.
BEGIN failed–compilation aborted at /usr/local/cpanel/Cpanel/Template/Plugin/JSON.pm line 12.
Compilation failed in require at /usr/local/cpanel/Cpanel/Template.pm line 53.
BEGIN failed–compilation aborted at /usr/local/cpanel/Cpanel/Template.pm line 53.
Compilation failed in require at /usr/local/cpanel/Whostmgr/HTMLInterface.pm line 12.
BEGIN failed–compilation aborted at /usr/local/cpanel/Whostmgr/HTMLInterface.pm line 12.
Compilation failed in require at /usr/local/cpanel/whostmgr/docroot/cgi/addon_csf.cgi line 27.
BEGIN failed–compilation aborted at /usr/local/cpanel/whostmgr/docroot/cgi/addon_csf.cgi line 27.
Internal Server Error: “GET /cpsess8628579591/cgi/addon_csf.cgi HTTP/1.1″ 500 No response from subprocess (/usr/local/cpanel/whostmgr/docroot/cgi/addon_csf.cgi): subprocess exited with status 2

Sửa lỗi bằng cách nhật lại CSF bằng dòng lệnh: curl -s configserver.com/free/csupdate|perl.

Bạn có thể xem thêm video hướng dẫn sau:

 


Cài Đặt Cấu Hình Nâng Cao CSF

Bước 1: Cấu hình ports

Đầu tiên hãy xác định những port bạn sẽ sử dụng và đóng tất cả số còn lại để tăng thêm tính bảo mật cho server.

Mặc định thì những port sau được mở:

TCP_IN = "20,21,22,25,53,80,110,143,443,465,587,993,995"
TCP_OUT = "20,21,22,25,53,80,110,113,443"
UDP_IN = "20,21,53"
UDP_OUT = "20,21,53,113,123"

Danh sách các service đang sử dụng những port trên:

  • Port 20: FTP data transfer
  • Port 21: FTP control
  • Port 22: Secure shell (SSH)
  • Port 25: Simple mail transfer protocol (SMTP)
  • Port 53: Domain name system (DNS)
  • Port 80: Hypertext transfer protocol (HTTP)
  • Port 110: Post office protocol v3 (POP3)
  • Port 113: Authentication service/identification protocol
  • Port 123: Network time protocol (NTP)
  • Port 143: Internet message access protocol (IMAP)
  • Port 443: Hypertext transfer protocol over SSL/TLS (HTTPS)
  • Port 465: URL Rendesvous Directory for SSM (Cisco)
  • Port 587: E-mail message submission (SMTP)
  • Port 993: Internet message access protocol over SSL (IMAPS)
  • Port 995: Post office protocol 3 over TLS/SSL (POP3S)

Khi bạn đã hiểu được ý nghĩa rồi, hãy lựa chọn những port cần thiết mà thôi. Bên dưới là cấu hình những port bạn cần mở khi sử dụng các loại service:

– Trên tất cả server:

TCP_IN: 22,53
TCP_OUT: 22,53,80,113,443
UPD_IN: 53
UPD_OUT: 53,113,123

– Apache/Nginx:

TCP_IN: 80,443

Nếu không dùng HTTPS có thể bỏ port 443

– FTP server:

TCP_IN: 20,21
TCP_OUT: 20,21
UPD_IN: 20,21
UPD_OUT:20,21

– Mail server:

TCP_IN: 25,110,143,587,993,995
TCP_OUT: 25,110

– MySQL server (nếu cần remote access)

TCP_IN: 3306
TCP_OUT: 3306

Lưu ý: Nếu bạn đang dùng IPv6, cần phải cấu hình TCP6_IN, TCP6_OUT, UPD6_IN, và UPD6_OUT tương tự như các port IPv4. Tham khảo thêm danh sách port TCP và UDP trên wiki.

Bước 2: Cấu hình khác

Bên cạnh việc quy định sử dụng port, CSF còn có rất nhiều tùy chọn khác nữa trong file cấu hình. Một số tùy chọn thông dụng bạn nên biết như:

ICMP_IN cho phép ping đến server của bạn, set = 0 để từ chối các request này.

ICMP_IN_LIMIT giới hạn số lượng ping request đến từ 1 địa chỉ IP trong thời gian nhất định. Thông thường bạn không cần phải sửa đổi giá trị mặc định này (1/s)

DENY_IP_LIMIT giới hạn số lượng IP bị block bởi CSF, nếu số lượng IP vượt quá giới hạn này thì những IP cũ sẽ được unblock. Nên giữ số lượng vừa phải bởi nếu bạn lưu nhiều IP quá có thể làm giảm performance hệ thống.

DENY_TEMP_IP_LIMIT cũng tương tự như trên, nhưng cho IP tạm thời.

LF_DAEMON bật chức năng phát hiện login lỗi.

PACKET_FILTER filter các gói tin không hợp lệ.

SYNFLOOD, SUNFLOOD_RATE và SYNFLOOD_BURST kích hoạt chức năng bảo vệ chống SYN flood attacks.

CONNLIMIT giới hạn số lượng kết nối liên tiếp trên 1 port. Ví dụ:

CONNLIMIT = "22;5;80;20"

cho phép tối đa 5 kết nối liên tiếp đến port 22 và 20 kết nối đến port 80

PORTFLOOD giới hạn số lượng kết nối trong mỗi khoảng thời gian trên 1 port. Ví dụ

PORTFLOOD = "22;tcp;5;250"

sẽ giới hạn block địa chỉ IP nếu như tạo quá 5 kết nối trên port 22 sử dụng giao thức TCP trong vòng 250s. Việc block sẽ được tự động xóa sau sau 250s kể từ lần gửi packet cuối cùng. Bạn có thể add thêm port cách nhau bởi dấu phẩy

port1;protocol1;connection_count1;time1,port2;protocol2;connection_count2;time2

Ngoài ra còn có rất nhiều thông số của CSF khác bạn có thể điều chỉnh thêm. Các giá trị mặc định khá tốt và có thể chống lại được việc bị tấn công flood, port scans hoặc dò pass server.

Nếu muốn, các bạn có thể đọc thêm những comment trong file /etc/csf/csf.conf hoặc tham khảo hướng dẫn chính thức từ CSF.

Cuối cùng, để thay đổi có hiệu lực các bạn cần restart lại CSF với lệnh:

csf -r

Chúc các bạn thành công.


>> Xem thêm: [HOT] - 5 Công Cụ Kiểm Tra Tốc Độ WEBSITE | VinaHost.VN
>> Xem thêm: [GIẬT MÌNH] - 7 Cách Tăng Traffic Tự Nhiên (Organic) Cho Website
>> Xem thêm: [HTTP/2 Là Gì] - Điều Mà Mỗi Chuyên Gia SEO Cần Biết | VinaHost