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 này, chúng ta 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ệnh
csf -e
: Bật csf (start csf)csf -x
: Tắt csf (stop csf)csf -s
: Bắt đầu các quy tắt tường lửa (Start the firewall rules)csf -f
: Flush/Stop firewall rulescsf -r
: Khởi động lại tường lữacsf -a
: Cho phép 1 IP vào whitelistcsf -td
: Thêm IP vào danh sách từ chối tạm (/var/lib/csf/csf.tempban)csf -tr
: Xóa IP khỏi danh sách cấm tạm hoặc danh sách cho phépcsf -tf
: Xóa tất cả IP từ các mục IP tạmcsf -d
: Lệnh cấm IP. IP sau khi bị cấm sẽ nằm trong /etc/csf/csf.denycsf -dr [IP]
: Bỏ chặn IP đã bị cấm trong /etc/csf/csf.denycsf -dr
: Xóa chặn tất cả các IP trong /etc/csf/csf.denycsf -g
: Tìm kiếm các quy tắc iptables và ip6tables cho một kết quả tương ứng (ví dụ: IP, CIDR, số cổng)csf -t
: Hiể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.
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, chúng ta 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
TESTING = "0"
: Mặc định khi vừa cài đặt TESTING = “1”, với TESTING = “1” thì LFD daemon (Login Fail Detect daemon) sẽ không hoạt động. 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.TESTING_INTERVAL = "5"
: Thời gian chạy cronjob để xóa iptables nếu TESTING = 1, tính bằng phút.AUTO_UPDATES = "0"
: 0 = Disable tự động cập nhật, 1 = Enable tự động cập nhật.
Cấu hình cơ bản bên trong file /etc/csf/csf.conf
TCP_IN = "22,25,53,80,443"
: Cho phép các dịch vụ kết nối đến các port tương ứng.TCP_OUT = "25,80"
: Cho phép server kết nối ra với các port tương ứng.UDP_IN = "20,21,53,443"
: 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"
: Cho phép server truy vấn kết nối với port tương ứng ra bên ngoài.ICMP_IN = "1"
: Cho phép người dùng PING đến server.ICMP_IN_RATE = "1/s"
: Giới hạn tần số ping đến server là 1/s.ETH_DEVICE = "eth0"
: Chỉ áp dụng rules iptables vào card mạng “eth0”.ETH_DEVICE_SKIP = "eth1, eth2"
: Không áp dụng rules iptables vào card mạng “eth1,eth2”.DENY_IP_LIMIT = "200"
: Giới hạn số lượng IP bị block “vĩnh viễn” bởi CSF.LF_DAEMON = "1"
: Kích hoạt tính năng Login fail detection.LF_CSF = "1"
: Kích hoạt tính năng Auto start khi CSF bị stop.PACKET_FILTER = "1"
: Lọc các gói tin TCP không hợp lệ.SYNFLOOD = "1"
: Bật tính năng synflood protection.SYNFLOOD_RATE = "75/s"
: Giới hạn số lượng SYN connection tồn tại trên server.SYNFLOOD_BURST = "25"
: Giới hạn số lượng cú SYN trong vòng 1s.CONNLIMIT = "80;20"
: Giới hạn số lượng new concurrent connection đến server trên mỗi IP.PORTFLOOD = "80;tcp;20;5"
: 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.LF_ALERT_TO = "email@domain"
: Email thông báo sẽ được gửi về root của server.LF_SELECT = "1"
: Chỉ block traffic đến dịch vụ mà IP này login fail.LF_SSHD = "5"
: Khi SSH sai 5 lần sẽ bị khóa IP.LF_DISTATTACK = "0"
: Khi phát hiện tấn công brute force từ mạng botnet.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.CT_LIMIT = "150"
: Giới hạn số lượng connection từ một IP đến server.
Ngoài ra còn một số thông số khác ít sử dụng chúng tôi không đề cập trong bài viết này. Hy vọng với bài viết này, bạn có thể thiết lập cấu hình bảo mậ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.