Home Máy chủ LinuxTools Giải thích và sử dụng CSF (ConfigServer & Firewall)

Giải thích và sử dụng CSF (ConfigServer & Firewall)

by Thạch Phạm
Published: Last Updated on
A+A-
Reset

Giới thiệu

Khi thiết lập hệ thống máy chủ hosting/vps thì không thể thiếu hệ thống tường lửa, một “rào cản” “bức tường” vững chắn bảo vệ hệ thống. Mặc định ở OS CentOS được tích hợp sẳn Firewalld, tuy nhiên còn một công cụ khác mà được sử dụng nhiều là CSF (ConfigServer & Firewall). Và trong bài viết hôm nay AZDIGI sẽ giới thiệu về CSF, các thông số cũng như tính năng bên trong để giúp bạn dần nắm rõ hơn và có thể chủ động cho việc bảo mật.

Các câu lệnh thường dùng trong CSF (ConfigServer & Firewall)

LệnhChú thíchVí dụ thực tế
csf -eBật csf (start csf)[root@sv ~]#csf -e
csf -xTắt csf (stop csf)[root@sv ~]#csf -x
csf -sBắt đầu các quy tắt tường lửa (Start the firewall rules)[root@sv ~]#csf -s
csf -f
Flush/Stop firewall rules 
[root@sv ~]#csf -f
csf -rKhởi động lại tường lữa[root@sv ~]#csf -r
csf -aCho phép 1 IP vào whitelist[root@sv ~]#csf -a 45.252.249.102
csf -tdThêm IP vào danh sách từ chối tạm (/var/lib/csf/csf.tempban)[root@sv ~]#csf -td 45.252.249.102
csf -trXóa IP khỏi elẹnh cấm tạm hoặc danh sách cho phép[root@sv ~]#csf -tr 45.252.249.102
csf -tfXóa tất cả IP từ các mục IP tạm[root@sv ~]#csf -tf
csf -dLệnh cấm IP. IP sau khi bị cấm sẽ nằm trong /etc/csf/csf.deny[root@sv ~]#csf -d 45.252.249.102
csf -dr [IP]Bỏ chặn IP đã bị cấm trong /etc/csf/csf.deny[root@sv ~]#csf -dr 45.252.249.102
csf -drLệnh này không có option sẽ xóa chặn tất cả các IP trong /etc/csf/csf.deny[root@sv ~]#csf -dr
csf -gSearch the iptables and ip6tables rules for a match (e.g. IP, CIDR, Port Number)[root@sv ~]#csf -g 45.252.249.102
csf -tHiển thị danh sách hiện tại các IP tạm thời cho phép và từ chối TTL và nhận xét.[root@sv ~]#csf -t

Các thông số cấu hình trong CSF cần nắm.

Sau khi làm theo với các lệnh sử dụng, mình sẽ giới thiệu và giải thích các thông số bên trong file cấu hình để bạn có thể thiết lập một file config hoàn chỉnh, an toàn với nhu cầu sử dụng riêng.

Thông số cơ bản về CSF.

CSF sau khi cài đặt xong file cấu hình sẽ nằm trong /etc/csf/csf.conf. Các file cấu hình khác như csf.allow, csf.deny, csf.logfiles… sẽ nằm tại /etc/csf/

Trong đó các tham số khi cấu hình có dạng ARGS = “VALUE” bạn cần nằm như sau:

  • VALUE = “0” : Disable (Không kích hoạt)
  • VALUE = “1” : Enable (Kích hoạt)
  • VALUE > 1 (VALUE = “20” , VALUE = “30” … ): Giới hạn tối đa (Ví dụ: Giới hạn tối đa 30 kết nối)
  • VALUE >1 (VALUE = “1800” , VALUE = “3600”… ): Thời gian tối đa (Ví dụ: Giới hạn 1800s)

Cấu hình cơ bản bên trong file /etc/csf/csf.conf

  • TESTING = “0”

Mặc định khi vừa cài TESTING = “1”, với TESTING = “1” thì LFD daemon (Login Fail Detect daemon) sẽ không hoạt động, do đó nếu có gì sai sót thì server cũng sẽ không block IP của bạn. Nếu cấu hình đã ổn thì bạn tắt TESTING để LFD bắt đầu hoạt động và chặn các IP tấn công.

CleanShot 2020 10 10 at 20.41.58@2x
  • TESTING_INTERVAL = “5”

Thời gian chạy cronjob để clear iptables nếu như TESTING=1, tính bằng phút.

CleanShot 2020 10 10 at 20.44.13@2x
  • AUTO_UPDATES = “0”

0 = Disable có nghĩa tắt cập nhật tự động. Nếu bạn muốn tự động cập nhật hãy chuyển sang 1

CleanShot 2020 10 10 at 20.45.28@2x
  • TCP_IN = “22,25,53,80,443

Allow incoming TCP ports: Cho phép người dùng kết nối đến các dịch vụ với port tương ứng cho phép, SSH, Mail, DNS.. Nếu bạn cần mở thêm port hãy thêm Port vào đây.

  • TCP_OUT = “25,80

Allow outgoing TCP port: Cho phép server kết nối ra với các port tương ứng.

CleanShot 2020 10 10 at 20.48.03@2x
  • UDP_IN = “20,21,53,443”

Allow incoming UDP ports: Cho phép người dùng sử dụng dịch vụ với port tương ứng.

  • UDP_OUT = “20,21,53,113,123,443”

Allow outgoing UDP ports: Cho phép server truy vấn kết nối với port tương ứng ra bên ngoài.

CleanShot 2020 10 10 at 20.51.56@2x
  • ICMP_IN = “1”

Cho phép người dùng PING đến server. Nếu bạn không muốn người dùng PING bạn hãy chuyển về là 0 tương ứng với Disable.

CleanShot 2020 10 10 at 20.52.59@2x
  • ICMP_IN_RATE = “1/s

Thông số này sẽ giới hạn tần số ping đến server là 1/s. Nếu ping nhanh hơn tốc độ này sẽ nhận được “Request timeout”. Trong trường hợp nếu nhiều người cùng ping đến server cùng lúc, thì phần lớn sẽ nhận được các phản hồi “Request timeout” do server chỉ nhận 1 request/s, điều này làm chúng ta lầm tưởng kết nối mạng có vấn đề, mạng bị chập chờn nhưng thật ra không phải như vậy. Chỉ cần nâng thông số này lên cao một chút hoặc bỏ luôn ( set giá trị = 0 ) sẽ khắc phục được tình trạng trên. Ảnh dưới mình đã nâng lên 30 request/s

CleanShot 2020 10 10 at 21.15.13@2x
  • ETH_DEVICE = “eth0

Mặc định csf sẽ cấu hình iptables để filter traffic trên toàn bộ các card mạng, ngoại trừ card loopback. Nếu như bạn muốn rules iptables chỉ applied vào card mạng “eth0” thì khai báo ở đây.

CleanShot 2020 10 10 at 21.18.51@2x
  • ETH_DEVICE_SKIP = “eth1, eth2

Nếu bạn không muốn rules iptables không applied vào card mạng nào thì khai báo ở đây. Ví dụ card “eth1,eth2” là card local, bạn không muốn filter trên card này thì cấu hình như trên.

CleanShot 2020 10 10 at 21.20.08@2x
  • DENY_IP_LIMIT = “200”

Giới hạn số lượng IP bị block “vĩnh viễn” bởi CSF (các IP này sẽ được lưu trong file /etc/csf/csf.deny). Con số này tùy thuộc vào resource của mỗi server, nếu dùng VPS thì con số này vào khoảng “200” là hợp lý, còn dedicated server thì khoảng “500”. Khi số lượng IP bị block vượt qua con số này, csf sẽ tự động unblock IP cũ nhất (IP ở dòng 1 của file /etc/csf/csf.deny).

CleanShot 2020 10 10 at 21.21.24@2x
  • LF_DAEMON = “1”

Tham số 1 kích hoạt tính năng Login fail detection

CleanShot 2020 10 10 at 21.25.49@2x
  • LF_CSF = “1”

Tham số 1 kích hoạt tính năng Auto start khi CSF bị stop

CleanShot 2020 10 10 at 21.26.43@2x
  • PACKET_FILTER = “1”

Filter các gói tin TCP không hợp lệ (INVALID state như : sequence number không đúng , kết nối ko được thực hiện đủ qua 3 bước bắt tay…)

CleanShot 2020 10 10 at 21.27.47@2x
  • SYNFLOOD = “1”
  • SYNFLOOD_RATE = “75/s”
  • SYNFLOOD_BURST = “25”

Enable synflood protection: Nếu 1 IP gửi 75 cú SYN trong vòng 1s và số lượng SYN connection tồn tại trên server đạt trên 25 thì block IP đó (temp block).

  • CONNLIMIT = “80;20

Giới hạn số lượng new concurrent connection đến server trên mỗi IP. Ví dụ trên có nghĩa: mỗi IP được phép mở 20 concurrent new connection đến port 80 trên server.

CleanShot 2020 10 10 at 21.31.28@2x
  • PORTFLOOD = “80;tcp;20;5

Tham số này sẽ giới hạn số lượng connection đến một port cụ thể trong một khoảng thời gian nhất định. Ví dụ như trên có nghĩa, nếu nhiều hơn 20 kết nối TCP đến port 80 trong vòng 5s thì block IP đó tối thiểu 5s tính từ packet cuối cùng của IP đó. Sau 5s IP đó sẽ tự động được unlock và truy cập bình thường.

CleanShot 2020 10 10 at 21.35.15@2x
  • LF_ALERT_TO = “email@domain”

Mặc định email thông báo sẽ được gửi về root của server. Nếu bạn muốn gửi đến email khác nảy nhập email vào đây.

CleanShot 2020 10 10 at 21.38.08@2x
  • LF_SELECT = “1”

Tham số này có nghĩa khi một IP vi phạm các rule của LFD thay vì block toàn bộ traffic từ IP này đến server thì chỉ block traffic đến dịch vụ mà IP này login fail (ví dụ như Login FTP, Mail sai nhiều lần thì block truy cập đến FTP,Mail nhưng vẫn cho phép truy cập vào website bình thường).

CleanShot 2020 10 10 at 21.40.56@2x
  • LF_SSHD = “5”
  • LF_SSHD_PERM = “1800

khi cấu hình tham số này thì SSH sai 5 lần sẽ bị khóa IP.

CleanShot 2020 10 10 at 21.43.12@2x
  • LF_DISTATTACK = “0”

Khi phát hiện tấn công brute force từ mạng botnet. Nếu như một account bị login sai quá giới hạn cho phép từ nhiều IP khác nhau thì sẽ block toàn bộ IP đã login sai.

CleanShot 2020 10 10 at 21.46.19@2x
  • LF_DISTATTACK_UNIQ = “2”

Số lượng IP tối thiểu để nhận biết đây là tấn công phân tán.

CleanShot 2020 10 10 at 21.47.09@2x
  • CT_LIMIT = “150”

Giới hạn số lượng connection từ một IP đến server. Nếu số lượng đó vượt quá 150 như cấu hình thì temp block IP đó.

  • CT_INTERVAL = “30”

Các lần scan kiểm tra cách ngay 30s.

CleanShot 2020 10 10 at 21.49.13@2x

Ngoài ra còn một vài tham số khác ít sử dụng mình sẽ không để cập trong đây. Hi vọng với bài viết này sẽ giúp cho bạn thiết lập cấu hình bảo mật thật tốt cho máy chủ server của mình khỏi các cuộc tấn công từ bên ngoài vào.

Nếu bạn có thắc mắc hoặc cần hỗ trợ hãy mở khung chat đến Phòng kỹ thuật. Hoặc gửi thông tin về Phòng kỹ thuật theo thông tin bên dưới nhé.

  • Hotline 247: 028 888 24768 (Ext 0)
  • Ticket/Email: Bạn dùng email đăng ký dịch vụ gửi trực tiếp về: support@azdigi.com
5/5 - (3 votes)

Tham gia nhóm hỗ trợ Server - Hosting

Tham gia nhóm Hỗ trợ Server - Hosting & WordPress để cùng nhau hỏi đáp và hỗ trợ các vấn đề về WordPress, tối ưu máy chủ/server.

Tham gia ngay

Bài viết cùng chuyên mục

AZDIGI – Không chỉ là đơn vị hàng đầu trong lĩnh vực Web Hosting và Máy chủ, chúng tôi mong muốn mang lại những kiến thức bổ ích nhất và luôn cập nhật thường xuyên cho cộng đồng người đam mê thiết kế website, công nghệ,…

Vui lòng không sao chép nội dung nếu chưa xin phép. Designed and Developed by PenciDesign