ConfigServer Security & Firewall (CSF) hiện tại là một trong những firewall rất được ưa chuộng trên các hệ thống Server/VPS hoạt động đơn lẻ. Với bài viết này trên “Cuongquach.com“, ta sẽ được hướng dẫn cài đặt CSF trên CentOS.
Vì các tính năng nâng cao lẫn cơ bản cùng hiệu suất hoạt động trong việc kiểm tra các luồng traffic vào server cực kì linh hoạt mà CSF rất nổi tiếng. ConfigServer Security & Firewall (CSF firewall) hiện đã được tích hợp GUI mode (giao diện) trên các Hosting Controller phổ biến hiện nay như cPanel, DirectAdmin. Bên cạnh việc việc dễ cài đặt, dễ cấu hình, dễ quản lý,… thì còn một số tính năng cao khác mà bạn có thể tham khảo như:
- SYN Flood protection.
- Theo dõi các hoạt động scan port và block ip scan port.
- Theo dõi các hoạt động login email server POP3/IMAP.
- Thông báo đăng nhập SSH/Khoá truy cập IP nào đang scan port ssh.
- Khoá các port không sử dụng trên server.
- Theo dõi các sự thay đổi của file và thư mục trên hệ thống.
- …
Giờ thì chúng ta cùng tìm hiểu cách cài đặt dịch vụ tường lửa CSF trên CentOS nhé.
Contents
1. Cài đặt các chương trình/thư viện hỗ trợ CSF
– Chúng ta sẽ cần cài đặt các gói chương trình thư viện hỗ trợ cho dịch vụ tường lửa CSF.
# yum -y install epel-release # yum -y install iptables-services unzip bind-utils perl-libwww-perl e2fsprogs perl-LWP-Protocol-https ipset perl-Time-HiRes vim vi wget
2. Tiến hành cài đặt CSF
– Bạn sẽ download gói chương trình cài đặt bằng lệnh “wget“.
# cd /usr/local/src # wget https://download.configserver.com/csf.tgz
– Giải nén bộ source chương trình CSF, chạy file script để tự động cài đặt.
# tar -xzf csf.tgz # cd csf
# sh install.sh Selecting installer... Running csf generic installer Installing generic csf and lfd Check we're running as root Checking Perl modules... Using configuration defaults ...Perl modules OK mkdir: created directory `/etc/csf' mkdir: created directory `/var/lib/csf' mkdir: created directory `/var/lib/csf/backup' mkdir: created directory `/var/lib/csf/Geo' mkdir: created directory `/var/lib/csf/ui' mkdir: created directory `/var/lib/csf/stats' mkdir: created directory `/var/lib/csf/lock' mkdir: created directory `/var/lib/csf/webmin' mkdir: created directory `/var/lib/csf/zone' mkdir: created directory `/usr/local/csf' mkdir: created directory `/usr/local/csf/bin' mkdir: created directory `/usr/local/csf/lib' mkdir: created directory `/usr/local/csf/tpl' `csf.generic.conf' -> `/etc/csf/csf.conf' `csf.generic.allow' -> `/etc/csf/csf.allow' ... ... `csf/csf.svg' -> `webmin/csf/images/csf.svg' `csf/jquery.min.js' -> `webmin/csf/images/jquery.min.js' `csf/LICENSE.txt' -> `webmin/csf/images/LICENSE.txt' `csf/loader.gif' -> `webmin/csf/images/loader.gif' `/etc/csf/csfwebmin.tgz' -> `/usr/local/csf/csfwebmin.tgz' Installation Completed
3. Cấu hình dịch vụ CSF trên CentOS
3.1 Tắt dịch vụ “firewalld” hoặc dịch vụ firewall khác
Thông thường CentOS 7 có một ứng dụng tường lửa Linux mặc định tên là “firewalld“, còn nếu hệ thống CentOS 7 của VPS/Cloud Server bạn đang sử dụng không có thì có thể bạn đã cài bản CentOS 7 minimal. Vậy ta cần tắt dịch vụ tường lửa “firewalld” đi trước khi sử dụng dịch vụ tường lửa “CSF“, nhằm tránh xung đột giữa 2 dịch vụ quản lý rule iptable..
– Để tắt dịch vụ “firewalld“
# systemctl stop firewalld
– Tắt hoạt động startup dịch vụ “firewalld”.
# systemctl disable firewalld
Còn nếu OS của server/vps bạn là CentOS 6 thì sẽ ít có firewall dịch vụ khác cài đặt sẵn, nên các bạn chỉ cần tự quản lý kiểm tra nếu có các dịch vụ tường lửa nào trên server Linux.
3.2 Khởi động dịch vụ CSF
Bây giờ ta sẽ cấu hình dịch vụ CSF để kích hoạt tính năng hoạt động của tường lửa CSF. Bạn sẽ chỉnh sửa file ‘csf.conf‘ trong thư mục ‘/etc/csf/‘ với chương trình editor ‘vi‘ hoặc ‘vim‘.
# cd /etc/csf/ # vi csf.conf
Tìm dòng có bắt đầu là chữ “TESTING“, thường có thể là dòng thứ 11, thay đổi giá trị sang “0” đồng nghĩa với việc tắt chức năng “TESTING” của firewall. Ở chức năng này, cứ một khoảng thời gian thì firewall sẽ reset lại cấu hình mặc định giúp bạn khôi phục lại các cấu chuẩn không bị sai (trường hợp bạn cấu hình sai khi đang tìm hiểu CSF).
TESTING = "0"
– Bây giờ ta sẽ khởi động dịch vụ CSF. Đồng thời kích hoạt khởi động dịch vụ khi hệ thống boot lên.
+ CentOS 6
# service csf start # service lfd start # chkconfig csf on # chkconfig lfd on
+ CentOS 7
# systemctl start csf # systemctl start lfd # systemctl enable csf # systemctl enable lfd
– Giờ bạn có thể liệt kê danh sách các rule mặc định của CSF với lệnh sau :
# csf -l Chain INPUT (policy DROP 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 0 0 ACCEPT tcp -- !lo * 8.8.8.8 0.0.0.0/0 tcp dpt:53 2 0 0 ACCEPT udp -- !lo * 8.8.8.8 0.0.0.0/0 udp dpt:53 3 0 0 ACCEPT tcp -- !lo * 8.8.8.8 0.0.0.0/0 tcp spt:53 4 36 4752 ACCEPT udp -- !lo * 8.8.8.8 0.0.0.0/0 udp spt:53 5 1136 3073K LOCALINPUT all -- !lo * 0.0.0.0/0 0.0.0.0/0 6 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 7 1211 3076K INVALID tcp -- !lo * 0.0.0.0/0 0.0.0.0/0 8 2820K 9991M LOG all -- eth0 * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 7 prefix `BANDWIDTH_IN:' 9 406 26191 f2b-SSH tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:2222 10 406 26191 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:2222 11 33 1543 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:2233 12 81 3643 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:587 ... ...
3.3 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.
Nội dung cấu hình tìm hiểu dịch vụ CSF tường lửa trên CentOS sẽ được tìm hiểu ở bài kế tiếp.
4. Các lệnh csf cần biết
Sau đây bạn sẽ tìm hiểu danh sách các câu lệnh mà chương trình “csf” hỗ trợ.
– Khởi động “csf” và “lfd” nếu 2 dịch vụ này chưa khởi động.
# csf -e # csf --enable
– Tắt dịch vụ “csf” và “lfd“
# csf -x # csf --disable
– Khởi động lại các rule tường lửa do CSF quản lý.
# csf -r # csf --restart
– Khởi động rule tường lửa.
# csf -s # csf --start
– Xoá toàn bộ rule tường lửa.
# csf -f # csf --stop
– Cho phép (allow) 1 IP và thêm IP đó vào file /etc/csf/csf.allow .
# csf -a ip [comment] # csf --add ip [comment]
Ví dụ :
# csf -d 192.168.1.110 DDOS IP Adding 192.168.1.110 to csf.deny and iptables DROP...
– Gỡ bỏ IP khỏi danh sách cho phép, xoá IP đó khỏi file /etc/csf/csf.allow .
# csf -ar ip # csf --addrm ip
– Chặn (deny) 1 IP và thêm IP đó vào file /etc/csf/csf.deny .
# csf -d ip [comment] # csf --deny ip [comment]
Ví dụ :
# csf -d 192.168.1.110 DDOS IP Adding 192.168.1.110 to csf.deny and iptables DROP...
– Chặn 1 IP vĩnh viễn không bị xoá khỏi danh sách IP trong /etc/csf/csf.deny .
# csf -d ip do not delete # csf --deny ip do not delete
– Gỡ bỏ IP khỏi danh sách bị chặn, bỏ IP đó khỏi file /etc/csf/csf.deny .
# csf -dr ip # csf --denyrm ip
– Xoá toàn bộ các IP bị chặn cũng như là xoá bộ IP thông tin trong file /etc/csf/csf.deny .
# csf -df # csf --denyf
– Tìm thông tin về IP trong danh sách rule tường lửa chặn.
# csf -g ip
Ví dụ :
# csf -g 192.168.1.100 Chain num pkts bytes target prot opt in out source destination DENYIN 2 0 0 DROP all -- !lo * 192.168.1.100 0.0.0.0/0 ip6tables: Chain num pkts bytes target prot opt in out source destination No matches found for 192.168.1.100 in ip6tables Temporary Blocks: IP:192.168.1.100 Port: Dir:in TTL:3600 (Manually added: 192.168.1.100 (-/-/-))
– Thêm IP vào danh sách IP tạm thời được cho phép .
# csf -ta ip ttl [-p port] [-d direction] [comment] # csf --tempallow ip ttl [-p port] [-d direction] [comment]
Ví dụ :
# csf -ta 192.168.1.100 ACCEPT all opt -- in !lo out * 192.168.1.100 -> 0.0.0.0/0 ACCEPT all opt -- in * out !lo 0.0.0.0/0 -> 192.168.1.100 csf: 192.168.1.100 allowed on port * for 3600 seconds in and outbound
– Thêm IP vào danh sách IP tạm thời bị chặn .
# csf -td ip ttl [-p port] [-d direction] [comment] # csf --tempdeny ip ttl [-p port] [-d direction] [comment]
Ví dụ :
# csf -td 192.168.1.100 DROP all opt -- in !lo out * 192.168.1.100 -> 0.0.0.0/0 csf: 192.168.1.100 blocked on port * for 3600 seconds inbound
– Liệt kê các IP đang nằm trong danh sách IP tạm thời bị chặn hoặc tạm thời cho phép .
# csf -t # csf --temp
Ví dụ :
# csf -t A/D IP address Port Dir Time To Live Comment DENY 192.168.1.100 * in 59m 48s Manually added: 192.168.1.100 (-/-/-) ALLOW 192.168.1.110 * inout 59m 56s Manually added: 192.168.1.110 (-/-/-)
– Gỡ bỏ IP khỏi danh sách IP tạm thời bị chặn hoặc tạm thời cho phép .
# csf -tr ip # csf -temprm ip
– Xoá toàn bộ danh sách IP đang nằm trong danh sách tạm thời .
# csf -tf # csf --tempf
5. Gỡ cài đặt CSF trên CentOS
Khi bạn cài đặt CSF thì rất là đơn giản, chỉ cần script tự động của nhà cung cấp chương trình. Thì bây giờ để gỡ bỏ chương trình dịch vụ CSF khỏi hệ thống CentOS cũng đơn giản không kém. Đó chính là chạy script uninstall được để sẵn trên thư mục hoạt động của chương trình. Script đó có tên “uninstall.sh“.
Giờ thì bạn chỉ cần login vào hệ thống bằng SSH. Và thực hiện các thao tác tuần tự sau.
# cd /etc/csf/ # ll | grep uninstall 0 lrwxrwxrwx 1 root root 31 Sep 16 12:32 uninstall.sh -> /usr/local/csf/bin/uninstall.sh
Bạn sẽ tìm thấy file script gỡ cài đặt dịch vụ CSF. Giờ thì ta chạy file này nhé.
# sh uninstall.sh # sh uninstall.sh Uninstalling csf and lfd... Flushing chain `INPUT' Flushing chain `FORWARD' Flushing chain `OUTPUT' Flushing chain `ALLOWIN' Flushing chain `ALLOWOUT' Flushing chain `CC_DENY' Flushing chain `CONNLIMIT' Flushing chain `DENYIN' Flushing chain `DENYOUT' Flushing chain `INVALID' Flushing chain `INVDROP' Flushing chain `LOCALINPUT' Flushing chain `LOCALOUTPUT' Flushing chain `LOGDROPIN' Flushing chain `LOGDROPOUT' Flushing chain `PREROUTING' Flushing chain `POSTROUTING' Flushing chain `OUTPUT' Deleting chain `ALLOWIN' ... ... removed `/var/lib/csf/backup/1494739932_pre_v10_07_upgrade' removed `/var/lib/csf/backup/1495344731_pre_v10_08_upgrade' removed `/var/lib/csf/backup/1497504738_pre_v10_12_upgrade' removed `/var/lib/csf/backup/1505539933_pre_v10_25_upgrade' removed `/var/lib/csf/backup/1498800802_pre_v10_14_upgrade' removed `/var/lib/csf/backup/1505021533_pre_v10_24_upgrade' removed directory: `/var/lib/csf/backup' removed `/var/lib/csf/csf.dnscache' removed `/var/lib/csf/lock/command.lock' removed `/var/lib/csf/lock/list.lock' removed `/var/lib/csf/lock/ST_IPTABLES.lock' removed `/var/lib/csf/lock/CC_LOOKUPS.lock' removed `/var/lib/csf/lock/COUNTRYCODE.lock' removed `/var/lib/csf/lock/PT_LOAD.lock' removed `/var/lib/csf/lock/AT_INTERVAL.lock' removed `/var/lib/csf/lock/PT_INTERVAL.lock' removed `/var/lib/csf/lock/LF_EXPLOIT.lock' removed `/var/lib/csf/lock/LF_DIRWATCH.lock' removed `/var/lib/csf/lock/LF_INTEGRITY.lock' removed directory: `/var/lib/csf/lock' removed `/var/lib/csf/csf.temppids' removed directory: `/var/lib/csf' ...Done
Chương trình sẽ tự động xoá toàn bộ rule iptables mà CSF đang quản lý, xoá các file và thư mục vận hành của dịch vụ CSF. Cực kì đơn giản phải không nào.
Qua bài viết này, bạn đã biết cách cài đặt CSF trên CentOS rồi phải không nào ?! Ở bài khác kế tiếp, bạn sẽ được tìm hiểu về nội dung cấu hình dịch vụ CSF cơ bản và nâng cao nhằm sử dụng dịch vụ CSF một cách hiệu quả nhất. Nếu bạn có thắc mắc gì thì đừng ngại comment bên dưới nhé.
Quách Chí Cường (Theo VINADATA.VN)