Cách cài đặt và cấu hình Config Server Firewall (CSF) trên Rocky Linux 9

theanh

Administrator
Nhân viên
Config Server Security and Firewall (CSF) là tường lửa dựa trên iptables cung cấp bảo mật cấp cao cho hệ thống Linux. Nó thực hiện điều này bằng cách thực hiện kiểm tra gói tin có trạng thái (SPI).

Nó đi kèm với nhiều tính năng, chẳng hạn như chặn IP, chặn cổng và bảo vệ DDoS. Nó cũng hỗ trợ giới hạn tốc độ, theo dõi kết nối và phát hiện đăng nhập SSH. Nó cũng bao gồm các công cụ để kiểm tra tính toàn vẹn của hệ thống và tệp. Nó đi kèm với bảng điều khiển GUI, có thể được sử dụng để quản lý các cài đặt của nó. Bạn cũng có thể tích hợp CSF với các bảng điều khiển như DirectAdmin, cPanel, Cyberpanel, Vesta và Webmin.

Hướng dẫn này hướng dẫn bạn cách cài đặt và quản lý CSF trên máy chủ Rocky Linux 9.

Điều kiện tiên quyết​


  • Máy chủ chạy Rocky Linux 9 với RAM tối thiểu 1 GB.

  • Người dùng không phải root có quyền sudo.

  • Tên miền đủ điều kiện (FQDN) như csf.example.com trỏ đến máy chủ của bạn.

  • Mọi thứ đều đã cập nhật.
Mã:
$ sudo dnf update
[*]
Một số gói thiết yếu là cần thiết để chạy hướng dẫn và Craft CMS. Một số trong số này sẽ có sẵn trên máy chủ của bạn.
Mã:
$ sudo dnf install wget curl nano unzip yum-utils policycoreutils-python-utils -y

Bước 1 - Tắt tường lửa Firewalld​

Rocky Linux sử dụng Tường lửa Firewalld theo mặc định. Trước tiên, chúng ta cần vô hiệu hóa nó để nó không can thiệp vào CSF.

Trước tiên, hãy kiểm tra trạng thái của tường lửa Firewalld.
Mã:
$ sudo systemctl status firewalld
? firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; preset: enabled) Active: active (running) since Tue 2023-12-05 07:00:53 UTC; 40s ago Docs: man:firewalld(1) Main PID: 58756 (firewalld) Tasks: 2 (limit: 4424) Memory: 25.9M CPU: 496ms CGroup: /system.slice/firewalld.service ??58756 /usr/bin/python3 -s /usr/sbin/firewalld --nofork --nopid
Dec 05 07:00:52 csf.example.com systemd[1]: Starting firewalld - dynamic firewall daemon...
Dec 05 07:00:53 csf.example.com systemd[1]: Started firewalld - dynamic firewall daemon.
Dừng và vô hiệu hóa dịch vụ Firewalld.
Mã:
$ sudo systemctl stop firewalld
$ sudo systemctl disable firewalld

Bước 2 - Cài đặt các mô-đun Perl bắt buộc​

CSF yêu cầu một số mô-đun Perl nhất định để chạy. Nhưng trước tiên, chúng ta cần kho lưu trữ EPEL. Cài đặt nó.
Mã:
$ sudo dnf install epel-release
Cài đặt chúng bằng lệnh sau.
Mã:
$ sudo dnf install perl-core perl-libwww-perl.noarch perl-LWP-Protocol-https.noarch perl-GDGraph -y

Bước 3 - Tải xuống và cài đặt CSF​

CSF không có trong kho lưu trữ Rocky Linux. Do đó, chúng ta cần cài đặt thủ công.

Tải xuống phiên bản mới nhất của kho lưu trữ CSF từ trang web của họ.
Mã:
$ wget https://download.configserver.com/csf.tgz
Giải nén kho lưu trữ.
Mã:
$ tar xzf csf.tgz
Chuyển sang thư mục.
Mã:
$ cd csf
Cài đặt CSF bằng cách gọi tập lệnh cài đặt.
Mã:
$ sudo ./install.sh
Bạn sẽ nhận được kết quả sau.
Mã:
...............
Don't forget to:
1. Configure the following options in the csf configuration to suite your server: TCP_*, UDP_*
2. Restart csf and lfd
3. Set TESTING to 0 once you're happy with the firewall, lfd will not run until you do so
'lfd.service' -> '/usr/lib/systemd/system/lfd.service'
'csf.service' -> '/usr/lib/systemd/system/csf.service'
Created symlink /etc/systemd/system/multi-user.target.wants/csf.service → /usr/lib/systemd/system/csf.service.
Created symlink /etc/systemd/system/multi-user.target.wants/lfd.service → /usr/lib/systemd/system/lfd.service.
Unit /etc/systemd/system/firewalld.service is masked, ignoring.
The unit files have no installation config (WantedBy=, RequiredBy=, Also=,
Alias= settings in the [Install] section, and DefaultInstance= for template
units). This means they are not meant to be enabled or disabled using systemctl.
Possible reasons for having this kind of units are:
• A unit may be statically enabled by being symlinked from another unit's .wants/ or .requires/ directory.
• A unit's purpose may be to act as a helper for some other unit which has a requirement dependency on it.
• A unit may be started when needed via activation (socket, path, timer, D-Bus, udev, scripted systemctl call, ...).
• In case of template units, the unit is meant to be enabled with some instance name specified.
'/etc/csf/csfwebmin.tgz' -> '/usr/local/csf/csfwebmin.tgz'
Installation Completed
Kiểm tra xem các mô-đun iptables cần thiết có sẵn không.
Mã:
$ sudo perl /usr/local/csf/bin/csftest.pl
Bạn sẽ thấy thông báo sau đầu ra.
Mã:
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
RESULT: csf should function on this server
Xác minh phiên bản CSF.
Mã:
$ sudo csf -v
csf: v14.20 (generic)
*WARNING* TESTING mode is enabled - do not forget to disable it in the configuration

Bước 4 - Cấu hình CSF​

CSF lưu trữ cấu hình của nó trong /etc/csf/csf.conf tệp. Mở tệp để chỉnh sửa.
Mã:
$ sudo nano /etc/csf/csf.conf
Bước đầu tiên là tắt chế độ kiểm tra. Thay đổi giá trị của biến TESTING từ 1 thành 0.
Mã:
TESTING = "0"
Tìm đường thẳng RESTRICT_SYSLOG = "0" và thay đổi giá trị của nó thành 3. Điều này có nghĩa là chỉ các thành viên của RESTRICT_SYSLOG_GROUP mới có thể truy cập syslog/rsyslog tệp. Theo mặc định, RESTRICT_SYSLOG_GROUP chứa root, , , daemon, dbus và một số người dùng cPanel và DirectAdmin. Bạn có thể thêm nhiều người dùng hơn bằng cách chỉnh sửa tệp /etc/csf/csf.syslogusers.

Bước 5 - Cấu hình Cổng​

Theo mặc định, CSF giữ các cổng sau mở.
Mã:
# Allow incoming TCP ports
TCP_IN = "20,21,22,25,53,853,80,110,143,443,465,587,993,995"
# Allow outgoing TCP ports
TCP_OUT = "20,21,22,25,53,853,80,110,113,443,587,993,995"
# Allow incoming UDP ports
UDP_IN = "20,21,53,853,80,443"
# Allow outgoing UDP ports
# To allow outgoing traceroute add 33434:33523 to this list
UDP_OUT = "20,21,53,853,113,123"
Các dịch vụ sử dụng các cổng này là:
  • Cổng 20: Dữ liệu FTP chuyển
  • Cổng 21: Kiểm soát FTP
  • Cổng 22: Vỏ bảo mật (SSH)
  • Cổng 25: Giao thức truyền thư đơn giản (SMTP)
  • Cổng 53: Hệ thống tên miền (DNS)
  • Cổng 80: Giao thức truyền siêu văn bản (HTTP)
  • Cổng 110: Giao thức bưu điện v3 (POP3)
  • Cổng 113: Dịch vụ xác thực/giao thức nhận dạng
  • Cổng 123: Giao thức thời gian mạng (NTP)
  • Cổng 143: Giao thức truy cập tin nhắn Internet (IMAP)
  • Cổng 443: Giao thức truyền siêu văn bản qua SSL/TLS (HTTPS)
  • Cổng 465: Thư mục Rendezvous URL cho SSM (Cisco)
  • Cổng 587: Gửi tin nhắn email (SMTP)
  • Cổng 993: Giao thức truy cập tin nhắn Internet qua SSL (IMAPS)
  • Cổng 995: Giao thức bưu điện 3 qua TLS/SSL (POP3S)
Nếu bạn không cần mở tất cả các cổng này, bạn có thể xóa một số cổng để cải thiện bảo mật. Nếu bạn đang sử dụng IPv6 cho các dịch vụ của mình, bạn sẽ cần cấu hình TCP6_IN, TCP6_OUT, UDP6_INUDP6_OUT cổng như hình minh họa.
Mã:
# Allow incoming IPv6 TCP ports
TCP6_IN = "20,21,22,25,53,853,80,110,143,443,465,587,993,995"
# Allow outgoing IPv6 TCP ports
TCP6_OUT = "20,21,22,25,53,853,80,110,113,443,587,993,995"
# Allow incoming IPv6 UDP ports
UDP6_IN = "20,21,53,853,80,443"
# Allow outgoing IPv6 UDP ports
# To allow outgoing traceroute add 33434:33523 to this list
UDP6_OUT = "20,21,53,853,113,123"
Thay đổi các cổng theo yêu cầu của bạn.

Bước 6 - Cài đặt CSF bổ sung​

Có rất nhiều cài đặt để cấu hình. Chúng ta hãy xem qua một số cài đặt thường dùng.

ICMP_IN - đặt biến này thành 1 cho phép ping đến máy chủ của bạn và 0 từ chối các yêu cầu như vậy. Bạn nên cho phép các yêu cầu ICMP nếu bạn đang lưu trữ các dịch vụ công cộng để có thể xác định xem dịch vụ của bạn có khả dụng hay không.

ICMP_IN_LIMIT - đặt số lượng yêu cầu được phép từ một địa chỉ IP duy nhất trong một khoảng thời gian nhất định. Khuyến nghị giữ nguyên giá trị.

DENY_IP_LIMIT - hạn chế số lượng địa chỉ IP bị CSF chặn. Nếu số lượng IP bị chặn vượt quá con số này, CSF sẽ bỏ chặn IP cũ nhất, đây sẽ là mục đầu tiên trong tệp /etc/csf/csf.deny.Đặt con số này quá cao có thể làm chậm máy chủ. Chọn số theo tài nguyên máy chủ của bạn.

DENY_TEMP_IP_LIMIT - tương tự như trên nhưng dành cho các khối địa chỉ IP tạm thời.

PACKET_FILTER - lọc các gói lưu lượng không hợp lệ, không mong muốn và bất hợp pháp.

CONNLIMIT - giới hạn số lượng kết nối hoạt động đồng thời được phép trên một cổng duy nhất. Bạn có thể thiết lập như sau.
Mã:
CONNLIMIT = "22;5;443;20"
Giá trị trên có nghĩa là chỉ có 5 kết nối đồng thời được phép trên cổng 22 cho mỗi địa chỉ IP và chỉ có 20 kết nối đồng thời được phép trên cổng 443 cho mỗi địa chỉ IP.

PORTFLOOD - giới hạn số lượng kết nối trên mỗi khoảng thời gian mà các kết nối mới có thể được thực hiện tới các cổng cụ thể. Bạn có thể thiết lập như sau.
Mã:
PORTFLOOD = "22;tcp;5;250"
Giá trị trên sẽ chặn địa chỉ IP nếu có hơn 5 kết nối được thiết lập trên cổng 22 bằng giao thức TCP trong vòng 250 giây. Khối sẽ được đặt lại sau 250 giây. Bạn có thể thêm nhiều cổng hơn bằng cách thêm dấu phẩy.
Mã:
PORTFLOOD = "22;tcp;5;250,80;tcp;10;300"
Sau khi hoàn tất, hãy lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Khởi động và bật dịch vụ CSF và LFD.
Mã:
$ sudo systemctl start csf lfd
$ sudo systemctl enable csf lfd
Kiểm tra trạng thái của CSF dịch vụ.
Mã:
$ sudo systemctl status csf
? csf.service - ConfigServer Firewall & Security - csf Loaded: loaded (/usr/lib/systemd/system/csf.service; enabled; preset: disabled) Active: active (exited) since Tue 2023-12-05 13:57:59 UTC; 2min 7s ago Main PID: 11050 (code=exited, status=0/SUCCESS) CPU: 1.192s
Dec 05 13:57:59 csf.example.com csf[11050]: ACCEPT all opt in * out lo ::/0 -> ::/0
Dec 05 13:57:59 csf.example.com csf[11050]: LOGDROPOUT all opt in * out !lo ::/0 -> ::/0
Dec 05 13:57:59 csf.example.com csf[11050]: LOGDROPIN all opt in !lo out * ::/0 -> ::/0
Dec 05 13:57:59 csf.example.com csf[11050]: csf: FASTSTART loading DNS (IPv4)
Dec 05 13:57:59 csf.example.com csf[11050]: csf: FASTSTART loading DNS (IPv6)
Dec 05 13:57:59 csf.example.com csf[11050]: LOCALOUTPUT all opt -- in * out !lo 0.0.0.0/0 -> 0.0.0.0/0
Dec 05 13:57:59 csf.example.com csf[11050]: LOCALINPUT all opt -- in !lo out * 0.0.0.0/0 -> 0.0.0.0/0
Dec 05 13:57:59 csf.example.com csf[11050]: LOCALOUTPUT all opt in * out !lo ::/0 -> ::/0
Dec 05 13:57:59 csf.example.com csf[11050]: LOCALINPUT all opt in !lo out * ::/0 -> ::/0
Dec 05 13:57:59 csf.example.com systemd[1]: Finished ConfigServer Firewall & Security - csf.
Kiểm tra các cổng mở khi CSF đang chạy.
Mã:
$ sudo csf -p
Ports listening for external connections and the executables running behind them:
Port/Proto Open Conn PID/User Command Line Executable
22/tcp 4/6 2 (863/root) sshd: /usr/sbin/sshd -D [listener] 0... /usr/sbin/sshd
111/tcp -/- - (1/root) /usr/lib/systemd/systemd --switched-... /usr/lib/systemd/systemd
111/tcp -/- - (642/rpc) /usr/bin/rpcbind -w -f /usr/bin/rpcbind
111/udp -/- - (1/root) /usr/lib/systemd/systemd --switched-... /usr/lib/systemd/systemd
111/udp -/- - (642/rpc) /usr/bin/rpcbind -w -f /usr/bin/rpcbind
323/udp -/- - (679/chrony) /usr/sbin/chronyd -F 2 /usr/sbin/chronyd
AUTO_UPDATES - Giá trị 0 vô hiệu hóa các bản cập nhật tự động. Đổi thành 1 nếu bạn muốn các bản cập nhật tự động. Thao tác này sẽ tạo một tác vụ cron chạy một lần mỗi ngày để thực hiện các bản cập nhật tự động và sẽ khởi động lại các dịch vụ csflfd.

ETH_DEVICE - Theo mặc định, CSF lọc lưu lượng trên tất cả các card mạng, ngoại trừ card vòng lặp. Nếu bạn muốn các quy tắc chỉ áp dụng cho thẻ eth0, hãy đặt giá trị của thẻ thành eth0.

LF_DAEMON - đặt giá trị của thẻ thành 1 để kích hoạt tính năng phát hiện lỗi đăng nhập của CSF.

LF_CSF - đặt giá trị của thẻ thành 1 để kích hoạt Tính năng tự động khởi động lại của CSF. Nó sẽ đợi sau mỗi 300 giây để thực hiện kiểm tra.

LF_SELECT - đặt giá trị của nó thành 1 có nghĩa là khi địa chỉ IP vi phạm các quy tắc LFD, nó sẽ chỉ chặn lưu lượng truy cập đến dịch vụ mà lần đăng nhập IP này không thành công thay vì chặn tất cả lưu lượng truy cập.

LF_SSHD - đặt số lần sau đó kết nối SSH sai bị chặn.

CT_LIMIT - giới hạn số lượng kết nối từ một địa chỉ IP duy nhất đến máy chủ. Nếu số lượng kết nối vượt quá giá trị đã đặt, thì IP sẽ bị chặn tạm thời.

Bước 7 - Cho phép và chặn địa chỉ IP​

Chặn và cho phép địa chỉ IP là một trong những khả năng cơ bản nhất của tường lửa. CSF cho phép bạn từ chối (danh sách đen), cho phép (danh sách trắng) hoặc bỏ qua các địa chỉ IP bằng cách sử dụng các tệp cấu hình csf.deny, csf.allowcsf.ignore.

Mở tệp csf.deny để chỉnh sửa.
Mã:
$ sudo nano /etc/csf/csf.deny
Cần chặn các địa chỉ IP hoặc phạm vi được thêm vào một dòng. Ví dụ, nếu bạn muốn chặn địa chỉ IP 1.2.3.4 cũng như phạm vi 2.3.*.*, hãy thêm chúng dưới dạng sau.
Mã:
1.2.3.4 2.3.0.0/16
Sau khi hoàn tất, hãy lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Các địa chỉ IP được phép cần được định cấu hình bằng tệp csf.allow. Các địa chỉ IP được phép vẫn được phép ngay cả khi chúng bị chặn trong tệp csf.deny nên bạn cần phải xử lý vấn đề đó.

Mở tệp csf.allow để biết chỉnh sửa.
Mã:
$ sudo nano /etc/csf/csf.allow
Các địa chỉ IP cần được thêm vào theo cùng cách như đã thêm vào tệp chặn.

Các địa chỉ IP bị bỏ qua sẽ bị loại khỏi bộ lọc tường lửa. Chúng chỉ có thể bị chặn nếu được liệt kê trong tệp csf.deny. Mở tệp csf.ignore để chỉnh sửa.
Mã:
$ sudo nano /etc/csf/csf.ignore
Sau khi thực hiện tất cả các thay đổi cần thiết, bạn cần khởi động lại tường lửa. Sử dụng lệnh sau để thực hiện.
Mã:
$ sudo csf -r

Bước 8 - Bảo vệ chống lại các cuộc tấn công DDoS​

Chúng ta hãy cùng tìm hiểu cách CSF có thể giúp bảo vệ chống lại các cuộc tấn công Từ chối dịch vụ phân tán (DDoS) bằng cách triển khai các cấu hình sau.

Bảo vệ chống ngập SYN​

Đây là một loại Tấn công DDoS trong đó kẻ tấn công gửi một số lượng lớn các gói SYN đến một máy chủ. Để bật chế độ bảo vệ chống lại các cuộc tấn công như vậy, hãy bật các thiết lập sau trong tệp /etc/csf/csf.conf.
Mã:
SYNFLOOD = "1"
SYNFLOOD_RATE = "100/s"
SYNFLOOD_BURST = "150"
Điều này sẽ bật chế độ bảo vệ chống tràn SYN và cấu hình tốc độ cũng như giới hạn bùng nổ cho các cuộc tấn công đến. Các tùy chọn này chỉ nên được bật nếu bạn đang bị tấn công SYN vì nó sẽ làm chậm tất cả các kết nối mới từ bất kỳ địa chỉ IP nào.

Danh sách chặn​

CSF tích hợp với nhiều danh sách chặn dựa trên IP khác nhau để ngăn các địa chỉ IP độc hại kết nối đến máy chủ. CSF đã lưu trữ cấu hình cho các danh sách chặn phổ biến như Spamhaus, Project Honey Pot, BruteForceBlocker, Blocklist.de, Stop Forum Spam, v.v. trong tệp /etc/csf/csf.blocklists. Mở tệp để chỉnh sửa.
Mã:
$ sudo nano /etc/csf/csf.blocklists
Bỏ chú thích các phần sau để bật Danh sách chặn Spamhaus.
Mã:
# Spamhaus Don't Route Or Peer List (DROP)
# Details: http://www.spamhaus.org/drop/
SPAMDROP|86400|0|http://www.spamhaus.org/drop/drop.txt
# Spamhaus IPv6 Don't Route Or Peer List (DROPv6)
# Details: http://www.spamhaus.org/drop/
SPAMDROPV6|86400|0|https://www.spamhaus.org/drop/dropv6.txt
# Spamhaus Extended DROP List (EDROP)
# Details: http://www.spamhaus.org/drop/
SPAMEDROP|86400|0|http://www.spamhaus.org/drop/edrop.txt
Sau khi hoàn tất, hãy lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc. Bạn cũng có thể thêm danh sách chặn của mình. Định dạng để bao gồm một danh sách mới là như sau.
Mã:
NAME|INTERVAL|MAX|URL
NAME - là tên danh sách với tất cả các ký tự viết hoa không có khoảng trắng và tối đa 25 ký tự.

INTERVAL - khoảng thời gian làm mới để tải xuống danh sách. Tối thiểu phải là 3600 giây.

MAX - số lượng địa chỉ IP tối đa để sử dụng từ danh sách. Giá trị 0 có nghĩa là tất cả các địa chỉ IP.

URL - URL để tải xuống danh sách từ đó.

Chặn cấp quốc gia​

CSF cho phép bạn chặn quyền truy cập từ các quốc gia cụ thể. Tính năng này có thể hữu ích khi bạn muốn hạn chế quyền truy cập từ các quốc gia được biết đến là nơi phát động các cuộc tấn công DDoS. Có hai phương pháp để CSF khớp địa chỉ IP với các quốc gia. Phương pháp mặc định sử dụng DB-IP, ipdeny.com và iptoasn.com làm nguồn. Các phương pháp này miễn phí và không yêu cầu khóa cấp phép nhưng có thể không đáng tin cậy. Nếu bạn muốn chặn chính xác, bạn cần khóa cấp phép MaxMind. MaxMind cũng cung cấp giấy phép miễn phí. Bạn có thể sử dụng chúng. Sau khi có khóa cấp phép, hãy định cấu hình hai cài đặt sau trong tệp /etc/csf/csf.conf.
Mã:
MM_LICENSE_KEY = "XXXXXXXXXXX"
CC_SRC = "1"
Sau khi định cấu hình xong, hãy sử dụng cấu hình sau để chặn địa chỉ IP khỏi Nga.
Mã:
CC_DENY = "RU"
Bạn có thể sử dụng cài đặt sau để chỉ cho phép kết nối từ các quốc gia cụ thể.
Mã:
CC_ALLOW_FILTER = "IN,GB"
Cài đặt này chỉ định cấu hình kết nối từ Ấn Độ và Vương quốc Anh (UK). Lưu và đóng tệp khi hoàn tất.

Khởi động lại tường lửa sau khi bạn hoàn tất cấu hình.
Mã:
$ sudo csf -r
Có những cách khác để ngăn chặn các cuộc tấn công DDoS như làm ngập cổng và giới hạn kết nối mà chúng tôi đã thảo luận ở bước 6.

Bước 9 - Các lệnh CSF thường dùng​

Bật và khởi động CSF.
Mã:
$ sudo csf -e
Vô hiệu hóa CSF.
Mã:
$ sudo csf -x
Khởi động tường lửa quy tắc.
Mã:
$ sudo csf -s
Xóa/dừng các quy tắc tường lửa.
Mã:
$ sudo csf -f
Khởi động lại tường lửa.
Mã:
$ sudo csf -r
Thêm địa chỉ IP vào danh sách cấm tạm thời. (/var/lib/csf/csf.tempban)
Mã:
$ sudo csf -td 1.2.3.4
Xóa địa chỉ IP khỏi lệnh cấm tạm thời danh sách.
Mã:
$ sudo csf -tr 1.2.3.4
Xóa tất cả các địa chỉ IP khỏi các mục nhập tạm thời.
Mã:
$ sudo csf -tf
Thêm địa chỉ IP vào mục từ chối danh sách.
Mã:
$ sudo csf -d 1.2.3.4
Xóa địa chỉ IP khỏi danh sách từ chối.
Mã:
$ sudo csf -dr 1.2.3.4
Xóa tất cả các địa chỉ IP khỏi danh sách từ chối danh sách.
Mã:
$ sudo csf -dr
Cho phép một địa chỉ IP.
Mã:
$ sudo csf -a 1.2.3.4
Xóa một địa chỉ IP khỏi danh sách cho phép danh sách.
Mã:
$ sudo csf -ar 1.2.3.4
Tìm kiếm các quy tắc iptables và ip6tables để tìm địa chỉ IP, CIDR và số cổng.
Mã:
$ sudo csf -g 1.2.3.4
$ sudo csf -g 80

Bước 10 - Kích hoạt CSF GUI​

CSF đi kèm với giao diện dựa trên web để quản lý tường lửa. Theo mặc định, nó bị vô hiệu hóa. Trước khi bật GUI, chúng ta cần cài đặt thêm một vài mô-đun Perl.
Mã:
$ sudo dnf install perl-IO-Socket-SSL.noarch perl-Net-SSLeay perl-IO-Socket-INET6 perl-Socket6 -y
Mở tệp cấu hình CSF.
Mã:
$ sudo nano /etc/csf/csf.conf
Tìm dòng UI = "0" và thay đổi giá trị của nó như bên dưới.
Mã:
UI = "1"
Thay đổi cổng mà bảng điều khiển web có thể truy cập được. CSF sử dụng cổng 6666 theo mặc định nhưng bị trình duyệt Chrome chặn vì nó coi đây là cổng không an toàn. Do đó, chúng ta cần thay đổi giá trị của nó thành giá trị khác. Chọn bất kỳ cổng nào lớn hơn 1024. Đối với hướng dẫn của chúng tôi, chúng tôi sẽ sử dụng cổng 1037.
Mã:
UI_PORT = "1037"
Sử dụng biến sau để chỉ cho phép các địa chỉ IP được chọn liên kết với bảng điều khiển web. Để trống để liên kết với tất cả các địa chỉ IP trên máy chủ.
Mã:
UI_IP = "1.2.3.4"
Cấu hình thông tin xác thực cho bảng điều khiển web.
Mã:
UI_USER = "username"
UI_PASS = "password"
Theo mặc định, CSF chỉ cho phép truy cập bảng điều khiển web từ các địa chỉ IP được liệt kê trong tệp /etc/csf/ui/ui.allow tệp. Nếu bạn muốn có thể truy cập tệp từ tất cả các địa chỉ IP, hãy đặt biến UI_ALLOW thành 0.
Mã:
UI_ALLOW = "0"
Sau khi hoàn tất, hãy lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Tương tự như vậy, các địa chỉ IP bị cấm cần được thêm vào /etc/csf/ui/ui.ban tệp.

Bảng điều khiển web CSF sử dụng chứng chỉ tự ký. Bạn cũng có thể sử dụng chứng chỉ SSL Let's Encrypt cho nó.

Bước 11 - Cài đặt và cấu hình Let's Encrypt SSL​

Chúng ta cần cài đặt Certbot để tạo chứng chỉ SSL. Chúng ta sẽ sử dụng trình cài đặt gói Snapd cho việc đó. Vì Rocky Linux không đi kèm với nó, hãy cài đặt trình cài đặt Snapd. Nó yêu cầu kho lưu trữ EPEL (Gói bổ sung cho Enterprise Linux) để hoạt động. Nhưng vì chúng ta đã cài đặt nó ở bước 2, nên chúng ta có thể trực tiếp tiến hành.

Cài đặt Snapd.
Mã:
$ sudo dnf install -y snapd
Bật và khởi động dịch vụ Snap.
Mã:
$ sudo systemctl enable snapd --now
Cài đặt gói lõi Snap và đảm bảo rằng phiên bản Snapd của bạn là ngày.
Mã:
$ sudo snap install core && sudo snap refresh core
Tạo các liên kết cần thiết để Snapd hoạt động.
Mã:
$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh
Cài đặt Certbot.
Mã:
$ sudo snap install --classic certbot
Sử dụng lệnh sau để đảm bảo lệnh Certbot có thể chạy được bằng cách tạo liên kết tượng trưng đến /usr/bin thư mục.
Mã:
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Kiểm tra xem Certbot có hoạt động bình thường không.
Mã:
$ certbot --version
certbot 2.7.4
Chạy lệnh sau để tạo SSL Chứng chỉ.
Mã:
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -d csf.example.com
Lệnh trên sẽ tải chứng chỉ xuống thư mục /etc/letsencrypt/live/csf.example.com trên máy chủ của bạn.

Đổi tên chứng chỉ tự ký cũ chứng chỉ.
Mã:
$ sudo mv /etc/csf/ui/server.crt /etc/csf/ui/server.crt.old
$ sudo mv /etc/csf/ui/server.key /etc/csf/ui/server.key.old
Sao chép các chứng chỉ SSL đã tạo vào /etc/csf/ui thư mục.
Mã:
$ sudo cp /etc/letsencrypt/live/csf.example.com/fullchain.pem /etc/csf/ui/server.crt
$ sudo cp /etc/letsencrypt/live/csf.example.com/privkey.pem /etc/csf/ui/server.key
Khởi động lại dịch vụ CSF và LFD.
Mã:
$ sudo systemctl restart csf lfd
Chúng ta cần cấu hình thêm một điều nữa. Chứng chỉ SSL sẽ tự động gia hạn sau mỗi 90 ngày, nghĩa là bạn sẽ cần sao chép chứng chỉ theo cách thủ công. Tuy nhiên, chúng ta có thể tự động hóa việc đó.

Tạo tệp /etc/csf/certcopy.sh để sao chép chứng chỉ sau mỗi lần gia hạn và mở tệp đó để chỉnh sửa.
Mã:
$ sudo nano /etc/csf/certcopy.sh
Dán mã sau vào nó.
Mã:
#!/bin/sh
cp -f /etc/letsencrypt/live/csf.example.com/fullchain.pem /etc/csf/ui/server.crt
cp -f /etc/letsencrypt/live/csf.example.com/privkey.pem /etc/csf/ui/server.key
Sau khi hoàn tất, hãy lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc. Làm cho tệp có thể thực thi.
Mã:
$ sudo chmod +x /etc/csf/certcopy.sh
Mở tệp /etc/letsencrypt/renewal/csf.example.com.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/letsencrypt/renewal/csf.example.com.conf
Thêm dòng sau vào cuối.
Mã:
post_hook = /etc/csf/certcopy.sh
Sau khi hoàn tất, hãy lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc. Tùy chọn post_hook chạy tập lệnh certcopy.sh sau mỗi lần gia hạn, loại bỏ nhu cầu sao chép chứng chỉ theo cách thủ công.

Kiểm tra trình lập lịch gia hạn Certbot dịch vụ.
Mã:
$ sudo systemctl list-timers
Bạn sẽ thấy snap.certbot.renew.service là một trong những dịch vụ được lên lịch chạy.
Mã:
NEXT LEFT LAST PASSED UNIT ACTIVATES
---------------------------------------------------------------------------------------------------------------------------
Wed 2023-12-06 07:23:57 UTC 18min left Wed 2023-12-06 06:04:46 UTC 1h 0min ago dnf-makecache.timer dnf-makecache.service
Wed 2023-12-06 07:24:15 UTC 40min left Wed 2023-12-06 00:00:01 UTC 6h ago logrotate.timer logrotate.service
Wed 2023-12-06 18:39:00 UTC 10h left Wed 2023-12-06 03:25:07 UTC 2h 4min ago snap.certbot.renew.timer snap.certbot.renew.service
Thực hiện chạy thử quy trình để kiểm tra xem việc gia hạn SSL có hoạt động không tốt.
Mã:
$ sudo certbot renew --dry-run
Nếu bạn không thấy lỗi nào, bạn đã hoàn tất. Chứng chỉ của bạn sẽ tự động gia hạn. Chứng chỉ sẽ được sao chép và bạn có thể kiểm tra chúng bằng cách xác minh danh sách của thư mục /etc/csf/ui.
Mã:
$ sudo ls /etc/csf/ui -al
drw-------. 3 root root 130 Dec 6 05:57 .
drw-------. 4 root root 4096 Dec 6 06:09 ..
drw-------. 3 root root 4096 Dec 6 00:06 images
-rw-r--r--. 1 root root 5242 Dec 6 06:09 server.crt
-rw-------. 1 root root 1220 Jun 17 2020 server.crt.old
-rw-------. 1 root root 241 Dec 6 06:09 server.key
-rw-------. 1 root root 1704 Jun 17 2020 server.key.old
-rw-------. 1 root root 15 Dec 5 23:34 ui.allow
-rw-------. 1 root root 0 Feb 1 2013 ui.ban

Bước 12 - Truy cập Bảng điều khiển web CSF​

Truy cập URL https://csf.example.com:1037 và bạn sẽ được chào đón bằng trang đăng nhập sau.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22450%22%20height=%22184%22%3E%3C/svg%3E


Nhập thông tin đăng nhập của bạn và nhấp vào phím Enter để đăng nhập và bạn sẽ nhận được trang sau.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22244%22%20height=%22750%22%3E%3C/svg%3E


Thậm chí còn có chế độ xem dành cho thiết bị di động mà bạn có thể chuyển sang bằng cách sử dụng nút Chế độ xem dành cho thiết bị di động.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22668%22%20height=%22750%22%3E%3C/svg%3E


Bảng điều khiển web cho phép bạn định cấu hình tất cả các cài đặt tường lửa. Bảng điều khiển web này tích hợp tốt với các bảng điều khiển khác.

Bước 13 - Gỡ cài đặt CSF​

Nếu vì lý do nào đó bạn muốn gỡ bỏ CSF, bạn có thể chạy lệnh sau để chạy tập lệnh gỡ cài đặt.
Mã:
$ sudo sh /etc/csf/uninstall.sh
Bật và khởi động Tường lửa tường lửa.
Mã:
$ sudo systemctl enable firewalld --now

Kết luận​

Bài hướng dẫn về cài đặt và cấu hình Tường lửa máy chủ cấu hình (CSF) trên máy chủ Rocky Linux 9 kết thúc tại đây. Nếu bạn có bất kỳ câu hỏi nào, hãy đăng chúng trong phần bình luận bên dưới.
 
Back
Bên trên