ConfigServer Security & Firewall (hay CSF) là một firewall rất phổ biến và hiệu quả được sử dụng trên các server Linux hiện nay. Bên cạnh những tính năng cơ bản như một firewall, CSF còn có những chức năng bảo mật nâng cao khác như ngăn chặn flood login, port scans, SYN floods…

Chi tiết các tính năng của CSF các bạn có thể xem ở đây.

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

Installing CSF Firewall

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.

Trên đây là hướng dẫn căn bản cài đặt ConfigServer Security & Firewall (CSF), xem thêm bài viết hướng dẫn cài đặt nâng cao bảo mật hơn cho VPS/server.

Comment của bạn

Lưu ý: tất cả comment đều được kiểm duyệt cẩn thận! Nếu có code bạn hãy up lên pastebin.com rồi để lại link trong comment.

87 Comments

  1. tinhtiennet 23 comment

    Mình hay nhận cảnh báo phiền toái từ CSF:
    Time: Tue Jun 18 18:39:14 2019 +0700
    Account: postfix
    Resource: Process Time
    Exceeded: 1819 > 1800 (seconds)
    Executable: /usr/libexec/postfix/smtpd
    Command Line: smtpd -n submission -t inet -u -o stress= -s 2 -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject
    PID: 14107 (Parent PID:587)
    Killed: No

    Ad cho mình hỏi làm cách nào mình thêm user postfix vào danh sách không cảnh báo?

    1. Việt Phương Moderator

      Bạn gỡ cũng được, nhưng cần cấu hình cẩn thận tránh block chính mình

    1. Việt Phương Moderator

      CSF sẽ xung đột với Fail2Ban sẵn có của HocVPS nhé. Bạn muốn sử dụng thì gỡ ra rồi cài

  2. Quang Tuấn 21 comment

    Khi cài Xong CSF chỉ có IP cài đặt kết nối được với SSH. Còn các IP khác thì không. cho mình hỏi để thêm IP đăng nhập dc vào SSH.

    1 ip khác đăng nhập vào SSH thì báo lỗi

    16:57:46.713 Current date: 2017-11-25
    16:57:46.713 Bitvise SSH Client 7.35, a fully featured SSH client for Windows.
    Copyright (C) 2000-2017 by Bitvise Limited.
    16:57:46.713 Visit http://www.bitvise.com for latest information about our SSH software.
    16:57:46.713 Run ‘BvSsh -help’ to learn about supported command-line parameters.
    16:57:46.713 Cryptographic provider: Windows CNG (x86) with additions
    16:57:46.885 Loading default profile.
    16:57:50.136 Started a new SSH2 session.
    16:57:50.136 Connecting to SSH2 server 10.25.336.4:2222.
    16:58:11.156 Connection failed. FlowSocketConnector: Failed to connect to target address. Windows error 10060: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
    16:58:11.171 The SSH2 session has been terminated.
    16:58:37.023 Started a new SSH2 session.
    16:58:37.039 Connecting to SSH2 server 10.25.336.4:2222.
    16:58:58.041 Connection failed. FlowSocketConnector: Failed to connect to target address. Windows error 10060: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
    16:58:58.073 The SSH2 session has been terminated.
    17:02:55.552 Started a new SSH2 session.
    17:02:55.552 Connecting to SSH2 server 10.25.336.4:2222.
    17:03:16.568 Connection failed. FlowSocketConnector: Failed to connect to target address. Windows error 10060: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
    17:03:16.584 The SSH2 session has been terminated.
    17:03:25.478 Copying log to clipboard succeeded.
    17:06:10.154 Started a new SSH2 session.
    17:06:10.170 Connecting to SSH2 server 10.25.336.4:2222.
    17:06:10.170 Connection established.
    17:06:10.186 Server version: SSH-2.0-OpenSSH_7.4
    17:06:10.186 First key exchange started. Cryptographic provider: Windows CNG (x86) with additions
    17:06:10.494 Received host key from the server. Algorithm: RSA, size: 2048 bits, MD5 fingerprint: 26:16:60:5a:2f:88:63:72:46:41:72:72:ae:4f:d8:00, Bubble-Babble: xogas-bizos-gicip-monap-naban-nusyt-bumap-kymid-cupid-cykin-mexox, SHA-256 fingerprint: pOIx+pwblvyh9pie9afp6coa3u5VI/my0a4nfgjun1w.
    17:06:10.759 First key exchange completed using diffie-hellman-group16-sha512. Session encryption and integrity: aes256-gcm, compression: none.
    17:06:10.759 Attempting none authentication.
    17:06:10.775 Remaining authentication methods: ‘publickey,gssapi-keyex,gssapi-with-mic,password’.
    17:06:27.933 Authentication aborted on user’s request.
    17:06:27.949 The SSH2 session has been terminated.
    17:06:45.480 Started a new SSH2 session.
    17:06:45.495 Connecting to SSH2 server 10.25.336.4:2222.
    17:07:06.499 Connection failed. FlowSocketConnector: Failed to connect to target address. Windows error 10060: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
    17:07:06.644 The SSH2 session has been terminated.

    1. Việt Phương Moderator

      1. Bạn dùng SSH Keys hay user-password?
      2. Bạn kiểm tra các file cấu hình CSF (trong bài viết có đề cập)

  3. Quang Trung 12 comment

    Cho em hỏi em có cài CSF nhưng lúc cài xong truy cập myphpasmin không dược nữa hix
    Em dùng hocvps

    1. Việt Phương Moderator

      Rule bạn chắc xung đột với Fail2Ban rồi. Nếu bạn không truy cập được tất cả HocVPS Admin thì bạn disable CSF đi nhé. Chỉ Fail2Ban/CSF tích hợp Iptables
      Mình đoán bạn chưa allow port HocVPS Admin trong CSF rồi

  4. minh nguyễn 2 comment

    bạn cho mình hỏi chút mình muốn giới hạn các ip được phép kết nối tới port trên server thì cấu hình như thế nào. ví dụ mình chỉ cho phép ip 192.168.100.234,235,236 kết nối tới port 443 còn các ip khác bị block hoàn toàn thì cấu hình ntn vậy.????

    1. Việt Phương Moderator

      Bạn chặn all bằng csf -dr 0.0.0.0/0. Trước đó, phải đảm bảo đã thêm IP của mình vào whitelist với csf -a IP

  5. sinhle 71 comment

    chào Ad và mn,
    VPS mình có vẻ đang chặn IP google. làm robot không index được link tự động.
    Mình có tìm hiểu có thể vps chặn ip google.
    Nhờ ae chỉ các đưa ip google vào danh sách loại trừ để google tự index bài.
    cảm ơn

    1. Việt Phương Moderator

      Bạn kiểm tra các tường lửa của VPS như csf, firewalld, iptables. Ngoài ra còn cấu hình của Virtual Host như Nginx/Apache conf, .htaccess cũng có thể chặn bot

  6. Nguyễn Văn Chiến 1 comment

    Mình cài xong thì ko kết nối đc ssh luôn, giờ phải làm sao đây bạn. Mình xài vps của Vultr , centos 7. Help me!

    1. Việt Phương Moderator

      Có thể bạn cài xung đột rồi, nhất là khi iptables là cổng SSH 2222 còn CSF bạn không allow cổng 2222. Bạn login VPS trên trang quản lý để disable CSF

    1. Việt Phương Moderator

      csf -dr IPADDRESS //Xóa địa chỉ IP đã bị block
      csf -g IPADDRESS //Kiểm tra địa chỉ IP có bị block không
      Trong bài viết phần 7. có đề cập đó bạn.

        1. Việt Phương Moderator

          -df nhé bạn. Tương tự với việc bạn xóa thủ công trong /etc/csf/csf.deny

  7. Tee 4 comment

    Luân viết bài chính xác quá. Cài cái là được luôn. Chân thành cảm ơn nhé. Hi vọng luôn tiếp tục viết chia sẻ kiến thức về VPS.
    Chia sẻ: Hiện tại mình đang sử dụng VPS centos 7 x64 Vultr đã cài đặt thành công, Bạn nào đang xài giống mình thì cứ thoải mái mà cài nhé.

  8. Giang 1 comment

    Sau khi caì xong, em thử chặn 1 ip thì nó báo thế này :

    csf -d 116.100.217.200
    deny failed: 116.100.217.200 is in already in the deny file /etc/csf/csf.deny 1 times
    root@ubuntu:~# csf -d 116.100.217.199
    Adding 116.100.217.199 to csf.deny and iptables DROP…
    iptables: No chain/target/match by that name.
    DROP all opt — in !lo out * 116.100.217.199 -> 0.0.0.0/0
    iptables v1.4.12: Couldn’t load target `LOGDROPOUT’:No such file or directory

    Try `iptables -h’ or ‘iptables –help’ for more information.
    ————————————————-

    Em test perl thì nó báo thế này :

    Testing ip_tables/iptable_filter…OK
    Testing ipt_LOG…OK
    Testing ipt_multiport/xt_multiport…OK
    Testing ipt_REJECT…OK
    Testing ipt_state/xt_state…OK
    Testing ipt_limit/xt_limit…OK
    Testing ipt_recent…OK
    Testing xt_connlimit…OK
    Testing ipt_owner/xt_owner…OK
    Testing iptable_nat/ipt_REDIRECT…OK
    Testing iptable_nat/ipt_DNAT…OK

    . Mong anh giúp 🙁

    1. Luân Trần Admin

      Lỗi này mình không giúp được rồi, bạn phải tự tìm thông tin trên mạng thôi

  9. gà mờ 2 comment

    Những lệnh đó ( ví dụ: nano /etc/csf/csf.conf ) làm trên run cmd hả bạn

  10. Nguyễn Hồng Kỳ 27 comment

    Mình muốn chặn 1 số quốc gia và chỉ cho phép 1 số quốc gia có thể truy cập vào website thì chỉnh như nào Luân nhỉ?

    1. Nguyễn Hồng Kỳ 27 comment

      Mình search google thì họ bảo là dùng thông số này: CC_DENY = “VN”
      CC_ALLOW = “US” theo đường dẫn /etc/csf/csf.conf
      Cách này ổn không nhỉ?

      1. Nguyễn Hồng Kỳ 27 comment

        Bạn có biết lỗi này là sao không nhỉ? Mình không log được SSH hoặc Filezilla:

        http://imgur.com/1e35rB7

        Trước mình cài CSF rồi sau đó cài thêm plugin Wordfence Security rồi dùng plugin này chặn một số quốc gia trong đó có VN. Ngay sau đó mình gỡ nó ra luôn vì không chặn được ip gì cả.

  11. phong 3 comment

    Luân cho mình hỏi mình đang dùng vps centos của vultr. Mình cài đặt CSF rồi, mà mình không biết chặn các ip từ Việt Nam. Mình làm site tiếng anh, ở Việt Nam hay bị soi quá nên mình muốn chặn luôn Việt Nam cho nhàn. Nếu mình chặn deny=”VN” thì mình có bị chặn luôn không ? Có thể hướng dẫn mình cách làm này được không ? Cảm ơn!

    1. Luân Trần Admin

      Nếu muốn chặn bạn dùng CloudFlare, có phần chặn quốc gia ấy. Dùng CSF không ổn lắm.

  12. Ngọc Vinh 1 comment

    Cái csf này có phải thông qua iptables để thực hiện các Rule không anh Luân? hay là nó hoạt động độc lập, không liên quan gi?

    1. Luân Trần Admin

      Nó tự tương tác với iptables rồi, mình không phải động vào cái đó nữa

  13. Tung 1 comment

    E mở file nano /etc/csf/csf.conf ra rồi. Nhấn “I” để sửa “1” thành “0” nhưng sửa xong ấn gì để lưu ạ :((

  14. Du 22 comment

    Em có cài csf nhưng khi remove đi thì ko thể vào được myphpadmin toàn bị lỗi This webpage is not available
    Thanks for help me ~!

  15. Đức Hải 13 comment

    Bạn vui lòng có thể chỉ cách nào để lưu nội dung file đã chỉnh sửa trong ZOC khi chuyển TESTING = “1” thành TESTING = “0”?

    Mình thay đổi thông số theo chỉ dẫn của bạn nhưng khi mở lại nó vẫn là giá trị trước đó!

    Thanks!

    1. Luân Trần Admin

      Vấn đề là bạn edit bằng tool gì vậy? Cách đơn giản nhất là down file đó xuống, edit rồi up đè lên là xong

  16. Alehap 14 comment

    Luân ơi mình cài cái này vào thì ko dùng SMTP được, toàn báo lỗi
    Error: Please check your configuration
    The SMTP connection failed to start [ssl://smtp.yandex.com:465]: fsockopen returned Error Number 110 and Error String ‘Connection timed out’

    Nhưng stop CSF là gửi bt@@
    (Mình đã thêm port 465 vào TCP_IN TCP_OUT r

    1. Luân Trần Admin

      Chắc chắn là do port rồi, bạn kiểm tra kĩ lại xem. Ngoài ra check lại xem nhà cung cấp VPS có chặn gửi mail ko (ví dụ Vultr có chặn)

  17. Lão Còi 6 comment

    Chào bác, bác có thể cho em hỏi là cài plugin này vào có ảnh hưởng gì xấu gì tới tốc độ vps cũng như trải nghiệm người dùng website không? Đại loại là nhược điểm của em nó.

    Cảm ơn bác!

  18. leo1in88 1 comment

    Luân ơi sau khi cài CSF 1 thời gian thì mình thấy nó lỗi kinh khủng lắm.
    Nếu nhiều khi bị lỗi connect với ssh không được, mình phải vào console trong trang quản lý server để disable CSF thì mới connect được.
    Nặng hơn là đăng nhập vào website không được luôn. CŨng phải vào console để disable CSF đi.
    Mình kiểm tra file csf config cũng không thấy nó block port nào cả mà cứ bị hiện tượng đó nên mình đã remove CSF luôn rồi/ 🙁

    1. Luân Trần Admin

      Trường hợp này hơi khó, trước hình như mình cũng bị thì phải, không nhớ chính xác nữa. Cũng phải restart CSF mới ổn.

  19. Du 22 comment

    Sau khi cài cái này thì em vào phpMyadmin thì bị lỗi này dù đã tắt hoặc remove
    Các bác có cao kiến gì ko ạ ? Thanks bác Luân Trần
    Error during session start; please check your PHP and/or webserver log file and configure your PHP installation properly. Also ensure that cookies are enabled in your browser.

    1. Luân Trần Admin

      Bạn chạy thử lệnh này để chown cho thư mục session thử coi: chown -R nginx:nginx /var/lib/php/session

  20. Công Điện Lạnh 3 comment

    Khi mình cài đặt xong, bật csf lên như bình thường. Tất nhiên là cài đặt trên máy chủ có website, có dịch vụ email.

    Nếu máy tính nào đó sử dụng Windows XP để vào website đặt trên VPS có cài CSF thì bị máy đó vào blacklist của CSF luôn.

  21. Công Điện Lạnh 3 comment

    Chào bạn,

    Mình sau khi cài đặt xong, có 1 máy tính chạy Windows XP cứ bị suspend luôn, ko biết cấu hình thế nào để hết hiện tượng này.

    thanks

    1. Luân Trần Admin

      WinXP thì đúng là dễ bị suspend lắm, bạn nên sử dụng Windows Server với bản quyền tránh bị suspend

  22. hoang 2 comment

    Admin cho mình hỏi cài firewall và antivirus, antispam có ảnh hưởng gì đến việc con google bot nó vào để index sitemap không?

  23. Thien Nhan 2 comment

    Admin cho mình hỏi là cái CSF này có khác với cái IPtables không vậy ? Admin có thể giúp thệm 1 tut vè IPtables không, vì mình đang rất thích phong cách viết tut rất rõ và chi tiết của admin. Cám ơn nhiều

  24. son 1 comment

    Luân cho hỏi chút vps của mình tự động dùng mysql mà mình không biết. Lúc sờ đến thì thấy đã bị dừng rồi
    Vậy có cách nào giải quyết ko? (vps cài Hocvps)

    tks!

    1. Luân Trần Admin

      VPS của bạn khả năng cao là thiếu RAM nên mysql mới bị tắt, nâng RAM lên nhé

  25. AskSock 18 comment

    Hay quá, rất mong chờ bài viết tiếp theo của cậu! 🙂
    Ah mà cho mình hỏi cái này có tốn nhiều tài nguyên của sever không hả cậu? Tầm khoảng bao nhiêu MB Ram dành ra để chạy nó thế?