ConfigServer Firewall (csf)

CSF là một firewall, nó giám sát trạng thái các kết nối đang hoạt động, nó sử dụng trạng thái giám sát được đẻ quyết định cho phép các gói tin đi qua firewall hay không. CSF cũng giám sát việc xác thực Login trên hệ thống (ví dụ login ftp 3 lần sai sẽ bí block IP), cũng như bảo mật các ứng dụng trên Server Linux

Cài đặt CSF (CentOS / RHEL)

# yum install wget bind-utils -y  & update -y
# yum install perl-libwww-perl net-tools perl-LWP-Protocol-https -y
# cd scr_csf & mkdir scr_csf
# wget https://download.configserver.com/csf.tgz
# tar -xzf csf.tgz
# cd csf
# sh install.sh

Sau khi cài xong, cần kiểm tra server đã có đủ các module để CSF làm việc không bằng lệnh: 

# perl /usr/local/csf/bin/csftest.pl

Nếu không có báo lỗi nào thì đã thành công. Trên CentOS 7 có thể tắt firewall mặc định firewalld

# systemctl stop firewalld

#Thậm chí tắt hẳn chế độ chạy tự động
# systemctl disable firewalld

Nếu muốn gỡ bỏ CSF thì dùng lệnh:

# sh /etc/csf/uninstall.sh

Cấu hình và sử dụng

Cấu hình chính lưu tại /etc/csf/csf.conf

Đầu tiên mở csf.conf tìm và thiết lập cấu hình TEST

# vi /etc/csf/csf.conf
TESTING = "1"
RESTRICT_SYSLOG = "3"

Nạp lại CSF

# csf -r
Lệnh Tác dụng
csf -h Trợ giúp lệnh
csf -s Chạy firewall
csf -f Dừng - Flush firewall
csf -r Nạp lại CSF (nhất là sau khi thay đổi cấu hình, thiết lập)
csf -l Hiện thị các luật iptables (IP4)
csf -p Kiểm tra các port đang mở
csf --lfd với tham số [stop|start|restart|status] để điều khiện, chạy, dừng dịch vụ lfd. Dịch vụ này giám sát quá trình đăng nhập (kiểm tra xem nó có đang hoạt động csf --lfd status)
csf --lfd với tham số [stop|start|restart|status] để điều khiện, chạy, dừng dịch vụ lfd. Dịch vụ này giám sát quá trình đăng nhập (kiểm tra xem nó có đang hoạt động csf --lfd status)
csf -a Cho phép một IP truy cập, nó thêm vào danh sách /etc/csf/csf.allow, các IP liệt kê trong danh sách này mặc định được qua Firewall, tuy nhiên nó vẫn bị LFD kiểm tra. Ví dụ thêm IP 123.123.123.123 vào thì gõ csf -a 123.123.123.123
csf -d Cấm một IP truy cập, nó thêm vào danh sách /etc/csf/csf.deny, ví dụ csf -d 123.123.123.123
csf -df Gỡ một IP ra khỏi danh sách chặn csf -df 123.123.123.123
csf -t hiện thị danh sách ip cho phép và bị chặn tạm thời (ip tự ra khỏi danh sách sau một khoảng thời gian)
csf -x Tắt hoàn toàn csf và lfd
csf -e Kích hoạt lại csf và lfd

Một số thiết lập CSF, LFD

Nói chung tất cả cấu hình CSF, các luật firewall đều thiết lập, chỉnh sửa từ các file trong thư mục: /etc/csf. Sau khi chỉnh các thiết lập trong những file này cần khởi động lại để có hiệu lực bằng lệnh

# csf -r && csf --lfd restart

Nếu chưa có nano thì có thể cài vào để mở sửa các file config cho tiện

# yum install nano -y

Mở file config ra để sửa đổi một số tính năng dưới

# nano /etc/csf/csf.conf

1) Bảo vệ khỏi tấn công DOS bằng cách giới hạn số lượng truy cập tới cổng

Cấu hinh tại CONNLIMIT="" với giá trị gán là "port1;limit1,port2,limit2 ..."

Ví dụ:

CONNLIMIT = "22;5,80;20"

Có nghĩa là cổng 80 (http) cho phép 20 kết nối với 1 IP => Như vậy từ một máy tạo ra truy cấn liên tục tới server tạo ra quá 20 kết nối sẽ bị block, cổng 22 (ssh) là 5 kết nối 1 IP

Có thể đặt

CONNLIMIT = "80;75 21;50"

2) Phòng chống Port Flood

Giám sát tổng số lượng kết nối từ một IP tới một cổng trong một khoảng thời gian chỉ ra với thiết lập PORTFLOOD. Giá trị gán vào có dạng

PORTFLOOD = "cổng;giao thức;tổng kết nối;khoảng thời gian, ..."

Ví dụ:

 PORTFLOOD = "80;tcp;100;5"

Có nghĩa là 1 IP nào đó kết nối tới cổng 80 bằng giao thức tcp, trong vòng 5s mà tạo ra tới 100 kết nối thì bị block

3) Phòng chống SYN FLOOD

SYNFLOOD = "1"
SYNFLOOD_RATE = "75/s"
SYNFLOOD_BURST = "25"

Trong đó SYNFLOOD = "1" để kích hoạt SYN FLOOD. SYNFLOOD_RATE thiết lập số gói SYN gửi tới từ 1 IP /1s. Số lần mà một IP có thể chạm tới SYNFLOOD_RATE trước khi bị block.

4) Mở cổng, đóng cổng

#Các công mở cho phép nhận gói tin từ bên ngoài (IP4)
TCP_IN = "20,21,22,25,53,80"
#Các công mở cho phép gửi gói tin ra ngoài (IP4)
TCP_OUT = "443,20,21,22,25,80"
#Tương tự nếu có dùng IP6
TCP6_IN = "20,21,22,25"
TCP6_OUT = "20,21,22,25"

* Các cổng mà các dịch vụ trên server sử dụng:

  • Port 20: FTP data transfer
  • Port 21: FTP
  • Port 22: SSH
  • Port 25: SMTP
  • Port 53: DNS
  • Port 80: HTTP
  • Port 110: POP3
  • Port 113: Authentication service/identification protocol
  • Port 143: IMAP
  • Port 443: SSL/TLS (HTTPS)

5) Server quá tải ?

CSF mặc định có kiểm tra mức độ hoạt động của CPU xem nó có bị quá tải hay không. Nếu có sự kiện đó xảy ra thì một email sẽ được gửi đi, trong nhiều trường hợp quá tải dẫn tới Server bị treo. Bạn có thể thiết lập khi quá tải CPU như vậy sẽ chạy script bạn tạo ra để làm một số việc bạn thiết lập ví dụ như khởi động lại Apache

Giả sử bạn tạo ra một script để khởi động lại Apache, lưu tại /restartapache.sh, nhớ chmod cho nó chạy được chmod +x /restartapache.sh

Nội dung của script đó chỉ là lệnh khởi động lại Apache

#!/bin/sh
service httpd restart >> overload.log

Bây giờ muốn mỗi khi CPU quá tải sẽ chạy script /restartapache.sh thì sửa config:

#!/bin/sh
PT_LOAD_ACTION="/restartapache.sh"

6) Cấm tất cả các IP đến từ một quốc gia nào đó

Tìm đến dòng CC_DENY và điền mã quốc gia cần cấm. Ví dụ chặn IP đến từ Nga và TQ

CC_DENY = "RU,CN"

7)Email thông báo

Các sự kiện do CSF xử lý, bắt được sẽ được gửi tới một email

LF_ALERT_TO = "server@yourdomain.com"

8) Block nếu đăng nhập các dịch vụ thất bại

#KÍCH HOẠT GIÁM SÁT LOGIN
LF_TRIGGER = "1"

#Block nếu đăng nhập ssh sai 3 lần
LF_SSHD = "3"
LF_SSHD_PERM = "1"

#Block nếu đăng nhập ftp sai 3 lần
LF_FTPD = "3"
LF_FTPD_PERM = "1"

Còn một số dịch vụ nữa xem thêm ngay sau các thiết lập này

9) Block danh sách IP SPAM

CSF cung cấp khóa cả danh sách IP, bằng cách đưa URL của danh sách đó vào file /etc/csf/csf.blocklists. Bạn có thể mở file đó ra thêm các danh sách IP mà các dịch vụ phát hiện IP SPAM sau cung cấp:

# Spamhaus Don't Route Or Peer List (DROP)
# Details: http://www.spamhaus.org/drop/
SPAMDROP|86400|0|http://www.spamhaus.org/drop/drop.lasso

# Spamhaus Extended DROP List (EDROP)
# Details: http://www.spamhaus.org/drop/
SPAMEDROP|86400|0|http://www.spamhaus.org/drop/edrop.lasso

# DShield.org Recommended Block List
# Details: http://dshield.org
DSHIELD|86400|0|http://www.dshield.org/block.txt

# TOR Exit Nodes List
# Set URLGET in csf.conf to use LWP as this list uses an SSL connection
# Details: https://trac.torproject.org/projects/tor/wiki/doc/TorDNSExitList
TOR|3600|0|https://check.torproject.org/cgi-bin/TorBulkExitList.py?ip=1.2.3.4

# Alternative TOR Exit Nodes List
# Details: http://torstatus.blutmagie.de/
ALTTOR|86400|0|http://torstatus.blutmagie.de/ip_list_exit.php/Tor_ip_list_EXIT.csv

# BOGON list
# Details: http://www.team-cymru.org/Services/Bogons/
BOGON|86400|0|http://www.cymru.com/Documents/bogon-bn-agg.txt

# Project Honey Pot Directory of Dictionary Attacker IPs
# Details: http://www.projecthoneypot.org
HONEYPOT|86400|0|http://www.projecthoneypot.org/list_of_ips.php?t=d&rss=1

# C.I. Army Malicious IP List
# Details: http://www.ciarmy.com
CIARMY|86400|0|http://www.ciarmy.com/list/ci-badguys.txt

# BruteForceBlocker IP List
# Details: http://danger.rulez.sk/index.php/bruteforceblocker/
BFB|86400|0|http://danger.rulez.sk/projects/bruteforceblocker/blist.php

# OpenBL.org 30 day List
# Set URLGET in csf.conf to use LWP as this list uses an SSL connection
# Details: https://www.openbl.org
OPENBL|86400|0|https://www.openbl.org/lists/base_30days.txt

# Autoshun Shun List
# Details: http://www.autoshun.org/
AUTOSHUN|86400|0|http://www.autoshun.org/files/shunlist.csv

# MaxMind GeoIP Anonymous Proxies
# Set URLGET in csf.conf to use LWP as this list uses an SSL connection
# Details: https://www.maxmind.com/en/anonymous_proxies
MAXMIND|86400|0|https://www.maxmind.com/en/anonymous_proxies

# Blocklist.de
# Set URLGET in csf.conf to use LWP as this list uses an SSL connection
# Details: https://www.blocklist.de
# This first list only retrieves the IP addresses added in the last hour
#BDE|3600|0|https://api.blocklist.de/getlast.php?time=3600
# This second list retrieves all the IP addresses added in the last 48 hours
# and is usually a very large list (over 10000 entries), so be sure that you
# have the resources available to use it
BDEALL|86400|0|http://lists.blocklist.de/lists/all.txt

# Stop Forum Spam
# Details: http://www.stopforumspam.com/downloads/
# Many of the lists available contain a vast number of IP addresses so special
# care needs to be made when selecting from their lists
STOPFORUMSPAM|86400|0|http://www.stopforumspam.com/downloads/listed_ip_1.zip

9) Một số cấu hình khác

Đăng ký theo dõi ủng hộ kênh