Đăng ký Đăng nhập
Trang chủ Công nghệ thông tin Quản trị mạng Huong dan cai dat firewall csf tren linux...

Tài liệu Huong dan cai dat firewall csf tren linux

.PDF
11
780
143

Mô tả:

Config Server Firewall (CSF) là một bộ phần mềm/script cung cấp một Firewall cho Linux theo kiểu Stateful Packet Inspection và Login Intrusion Detection. CSF cung cấp giao diện đồ hoạ (GUI) cho các hosting panel phổ biết như cPanel, Directadmin và Webmin. Những người không quen với việc sử dụng SSH và thao tác lệnh thì có thể sử dụng giao diện đồ hoạ, với các quản trị viên, bạn có thể thực hiện bằng dòng lệnh để chặn / mở IP, đóng / mở port trên giao diện dòng lệnh của Linux.
Config Server Firewall Hướng Dẫn Cài Đặt Config Server Firewall (CSF) Mục lục 1. 2. 3. 4. 5. Giới Thiệu Tính Năng Thực Hiện Cài Đặt Một Số Cấu Hình Tham Khảo Lời Kết Lê Quang Tiên 1 Config Server Firewall 1. Giới thiệu CSF Config Server Firewall (CSF) là một bộ phần mềm/script cung cấp một Firewall cho Linux theo kiểu Stateful Packet Inspection và Login Intrusion Detection. CSF cung cấp giao diện đồ hoạ (GUI) cho các hosting panel phổ biết như cPanel, Directadmin và Webmin. Những người không quen với việc sử dụng SSH và thao tác lệnh thì có thể sử dụng giao diện đồ hoạ, với các quản trị viên, bạn có thể thực hiện bằng dòng lệnh để chặn / mở IP, đóng / mở port trên giao diện dòng lệnh của Linux. CSF Firewall được cung cấp miễn phí, hoạt động dựa trên iptables và tiến trình lfd (Login Fail Detect) để quyét các file log phát hiện các dấu hiệu tấn công nên hầu như không tiêu tốn tài nguyên của Server. Vì vậy cài đặt CSF Firewall vừa giúp bạn bảo vệ Server chống lại các cuộc tấn công nhưng vẫn đảm bảo hiệu suất hoạt động tối đa cho Server. Địa chỉ trang chủ ứng dụng: www.configserver.com 2. Tính năng Config Server Firewall       Bảo vệ Server khỏi DoS, DDOS Block IP đang Scan Port Server Chống BruteForce Attack vào ftp server, web server, mail server, directadmin, cPanel… Block IP Syn Flood Block IP Ping Flood Cho phép chúng ta không cho truy cập từ 1 quốc gia nào đó rất đơn giản bằng cách chỉ định Country Code chuẫn ISO  Hỗ trợ IPv6 và IPv4  Khi phát hiện tấn công từ một IP cụ thể, sẽ khóa IP tạm thời hoặc vĩnh viễn ở tầng mạng (An toàn hơn ở tầng ứng dụng) nên webserver ko phải xử lý các yêu cầu từ các IP bị cấm, không ảnh hưởng tới hiệu suất phục vụ.  Cho phép bạn chuyến hướng yêu cầu từ các IP bị khóa sang 1 file html định sẵn để thông báo cho người dùng biết IP của họ bị chặn truy cập (block) tạm thời hoặc vĩnh viễn Lê Quang Tiên 2 Config Server Firewall Bạn có thể cài đặt CSF trên Server hoặc VPS (sử dụng các công nghệ ảo hoá như KVM, XEN, VMware, Openvz) đều được. Hiện tại CSF hỗ trợ các hệ điều hành sau: 3. Thực hiện cài đặt như sau: Trước khi cài đặt CSF thì chúng ta nên cài các modules sàu vào để tránh bị lỗi lúc cài. # yum install perl-libwww-perl net-tools perl-LWP-Protocol-https # yum install perl-G* # yum install perl-Sys-Syslog Tiến hành cài đặt CSF từ trang chủ của ứng dụng # # # # # cd /usr/src wget https://download.configserver.com/csf.tgz tar xzf csf.tgz cd csf sh install.sh CSF hoạt động yêu cầu một số iptables module, script sau sẽ kiểm tra các module đầy đủ để đáp ứng CSF hoạt động hay chưa, nếu bạn chạy mà kết quả như hình bên dưới tức là đã cài đặt CSF thành công rồi. # /etc/csf/csftest.pl Nếu bạn đang sử dụng APF và BFD firewal cho Server của mình thì bạn hãy remove nó bằng lệnh bên dưới sau khi cài xong CSF nhé. Việc chạy lệnh này dù có cai hay không có cài APF và BFD cũng không ảnh hưởng đến server nên tốt nhất chứ chạy. # sh /usr/local/csf/bin/remove_apf_bfd.sh Lê Quang Tiên 3 Config Server Firewall 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.      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 bị chặn qua firewall. csf.ignore: Danh sách địa chỉ IP cho phép qua firewall và không bị block. csf.*ignore: Danh sách user, IP được ignore. csf.conf:  Các tham số khi cấu hình có dạng ARGS = “VALUE” , trong đó   VALUE = “0″ => Disable (Tắt) VALUE = “1″ => Enable (Bật)   VALUE > 1 (VALUE = “10″, VALUE = “60″ … ): giới hạn tối đa. VALUE >1 (VALUE = “3600″, VALUE = “7200″ … ): thời gian tối đa. Các thao tác cấu hình cần thiết cho Linux CSF, nếu cài CSF mà không cấu hình thì cũng như không cài. Tắt chế độ testing chuyển sang chế độ production Mặc định khi cài xong thì CSF sẽ bật chế độ testing TESTING = “1″, với TESTING = “1″ thì LFD daemon (Login Fail Detect daemon) sẽ không hoạt động, do đó nếu Server bị tấn công thì CSF cũng sẽ không block IP tấn công. Thực hiện sửa file /etc/csf/csf.conf, tìm dòng TESTING = "1" và sửa lại TESTING = "0" # vim /etc/csf/csf.conf Tìm TESTING = "1" sửa lại thành TESTING = "0" Cho phép update khi có version mới AUTO_UPDATES="1" Mở đóng port TCP và UDP cho inbound và outbound traffic Mở file /etc/csf/csf.conf, tìm dòng TCP_IN = , dòng này chỉ định các port TCP inbound cho phép. Tương tự với TCP_OUT (port TCP outbound cho phép), UDP_IN (port UDP inbound cho phép), UDP_OUT (port UDP outbound cho phép) ############################################### SECTION:IPv4 Port Settings ############################################### Lists of ports in the following comma separated lists can be added using a # colon (e.g. 30000:35000). # Allow incoming TCP ports Cho phép kết nối đi vào TCP ports TCP_IN = "20,21,22,25,53,80,110,143,443,465,587,993,995,2077" # Allow outgoing TCP ports TCP_OUT = "20,21,22,25,37,43,53,80,110,113,443,465" # Allow incoming UDP ports Lê Quang Tiên 4 Config Server Firewall 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" ################################################ SECTION:IPv4 Port Settings ################################################ Lists of ports in the following comma separated lists can be added using a # colon (e.g. 30000:35000). # Allow incoming TCP ports TCP_IN = "20,21,22,25,53,80,110,143,443,465,587,993,995,2077" # Allow outgoing TCP ports TCP_OUT = "20,21,22,25,37,43,53,80,110,113,443,465" # 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" Whilelist IP Nếu gặp khó khăn hoặc lỗi trong quá trình thực hiện SCP,FTP đến một server nào đó vì chưa mở port hoặc chúng ta không muốn mở port, có thể thực hiện whilelist IP server đó. CSF cho phép thực hiện whilelist IP bằng lệnh, cú pháp là csf -d IP. Ví dụ: # csf -d 123.30.111.222 CSF sẽ thêm rule iptables để whilelist IP trên và thực hiện thêm vào file /etc/csf/csf.allow một dòng chứa IP trên. Tất cả các ip được whilelist sẽ nằm trong file /etc/csf/csf.allow này. Có thể thêm chú thích cho IP được whilelist bằng cú pháp csf -d IP COMMENT. Ví dụ: # csf -d 123.30.111.222 cho phép ip vao thẳng Nếu không dùng lệnh, chúng ta có thể thêm một dòng vào file /etc/csf/csf.allow sau đó restart CSF, cụ thể: # vim /etc/csf/csf.allow Thêm vào ở cuối file (có thể thêm subnet dạng CIDR nếu muốn allow cả một range IP) ############################################### # Copyright 2006-2013, Way to the Web Limited # URL: # http://www.configserver.com # Email: [email protected] ############################################### # The following IP addresses will be allowed through iptables. # One IP address per line. # CIDR addressing allowed with a quaded IP (e.g. 192.168.254.0/24). # Only list IP addresses, not domain names (they will be ignored) # Lê Quang Tiên 5 Config Server Firewall # Advanced port+ip filtering allowed with the following format # tcp/udp|in/out|s/d=port|s/d=ip # See readme.txt for more information # # Note: IP addressess listed in this file will NOT be ignored by lfd, so they # can still be blocked. If you do not want lfd to block an IP address you must # add it to csf.ignore 103.31.4.0/22 141.101.64.0/18 108.162.192.0/18 ############################################################################# ## # Copyright 2006-2013, Way to the Web Limited # URL: http://www.configserver.com # Email: [email protected] ############################################################################# ## # The following IP addresses will be allowed through iptables. # One IP address per line. # CIDR addressing allowed with a quaded IP (e.g. 192.168.254.0/24). # Only list IP addresses, not domain names (they will be ignored) # # Advanced port+ip filtering allowed with the following format # tcp/udp|in/out|s/d=port|s/d=ip # See readme.txt for more information # # Note: IP addressess listed in this file will NOT be ignored by lfd, so they # can still be blocked. If you do not want lfd to block an IP address you must # add it to csf.ignore 103.31.4.0/22 141.101.64.0/18 108.162.192.0/18 Thực hiện restart CSF bằng lệnh # csf -r Khoá một IP (deny / lock IP) Cú pháp thực hiện csf -d IPADDRESS . Ví dụ: # csf -d 123.30.111.222 Khi thực hiện lệnh trên, CSF sẽ thêm iptables và thêm vào một dòng chứa IP bị khoá trên tại file /etc/csf/csf.deny, tương tự như whilelist ip Các lệnh thông dụng của CSF Khoá một IP: # csf -d 123.30.111.222 Gỡ khoá một IP (unlock IP) # csf -dr 123.30.111.222 Whilelist một IP # csf -a 123.30.111.222 Lê Quang Tiên 6 Config Server Firewall Restart CSF # csf -r Tắt CSF (disable csf) # csf -x Bật lại CSF # csf -e Update phiên bản CSF # csf –u Checkup version but do not update # csf –c xem thông tin trợ giúp của CFS # csf -h Với firewall CSF bạn không cần phải am hiểu về iptable vẫn có thể xây dựng được một firewall tương đối hoàn chỉnh cho Linux VPS Server. Chúc các bạn thành công. Nếu trong quá trình sử dụng nhận được email cảnh báo có process chạy đáng nghi ngờ thì chúng ta vào log xem, nếu nó không đúng thì ta thêm vào trong file /etc/csf/csf.pignore những thông tin không muốn nhân email cảnh báo là xong. Ví dụ nhận được email với thông báo: lfd on CentOS7.lvs: Suspicious process running under user mysql Thì cần tìm đường dẫn file thực thi MySQL thêm vào trong file /etc/csf/csf.pignore là sẽ hết nhận thông báo. 4. Một số thiết lập tham khảo cho CSF TCP_IN = "22,25,53,80,443" Allow incoming TCP ports: cho ngừoi dùng kết nối đến các dịch vụ SSH, sendmail, DNS, Web trên server. TCP_OUT = "25,80" Allow outgoing TCP port: cho phép server kết nối đến web server, sendmail server khác. UDP_IN = "53" Allow incoming UDP ports: cho phép người dùng sử dụng dịch vụ DNS trên server. UDP_OUT = "53" Allow outgoing UDP ports: cho phép server truy vấn DNS bên ngoài. ICMP_IN = "1" Cho phép ping đến server. ICMP_IN_RATE = "1/s" Lê Quang Tiên 7 Config Server Firewall Giới hạn tần số ping đến server là 1/s. Nếu ping nhanh hơn tốc độ này sẽ nhận được "Request timeout". Trong trường hợp nếu nhiều người cùng ping đến server cùng lúc, thì phần lớn sẽ nhận được các phản hồi "Request timeout" do server chỉ nhận 1 request/s, điều này làm chúng ta lầm tưởng kết nối mạng có vấn đề, mạng bị chập chờn nhưng thật ra không phải như vậy. Chỉ cần nâng thông số này lên cao một chút hoặc bỏ luôn (set giá trị = 0) sẽ khắc phục được tình trạng trên. ETH_DEVICE = "eth0" Mặc định csf sẽ cấu hình iptables để filter traffic trên toàn bộ các card mạng, ngoại trừ card loopback. Nếu như bạn muốn rules iptables chỉ applied vào card mạng "eth0" thì khai báo ở đây. ETH_DEVICE_SKIP = "eth1" Nếu bạn không muốn rules iptables không applied vào card mạng nào thì khai báo ở đây. Ví dụ card "eth1" là card local, bạn không muốn filter trên card này thì cấu hình như trên. DENY_IP_LIMIT = "500" Giới hạn số lượng IP bị block "vĩnh viễn" bởi CSF (các IP này được lưu trong file /etc/csf/csf.deny). Con số này tùy thuộc vào resource của mỗi server, nếu dùng VPS thì con số này vào khoảng "200" là hợp lý, còn dedicated server thì khoảng "500". Khi số lượng IP bị block vượt qua con số này, csf sẽ tự động unblock IP cũ nhất (IP ở dòng 1 của file /etc/csf/csf.deny) LF_DAEMON = "1" Enable tính năng Login fail detection. LF_CSF = "1" Tự động restart CSF khi csf bị stop. PACKET_FILTER = "1" Filter các gói tin TCP không hợp lệ (INVALID state như: sequence number không đúng, kết nối ko được thực hiện đủ qua 3 bước bắt tay...) Disable IPV6 support SYNFLOOD = "1"SYNFLOOD_RATE = "30/s"SYNFLOOD_BURST = "40" Enable synflood protection: Nếu 1 IP gửi 30 cú SYN trong vòng 1s và số lượng SYN connection tồn tại trên server đạt trên 40 thì block IP đó (temp block) CONNLIMIT = "80;20" Giới hạn số lượng new concurrent connection đến server trên mỗi IP. Ví dụ trên có nghĩa: mỗi IP được phép mở 20 concurrent new connection đến port 80 trên server. 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. Ví dụ như trên có nghĩa: nếu nhiều hơn 20 kết nối tcp đến port 80 trong vòng 5s thì block IP đó tối thiểu 5s tính từ packet cuối cùng của IP đó. Sau 5s IP đó sẽ tự động được unlock và truy cập bình thường. DROP_NOLOG = "10050,10051" Danh sách các port khi bị drop sẽ không cần phải ghi vào log Lê Quang Tiên 8 Config Server Firewall CONNLIMIT_LOGGING = "1" Ghi log các IP vượt quá giới hạn CONNLIMIT cấu hình ở bước trên. LF_ALERT_TO = "your_email@your_domain.com" Mặc định toàn bộ email thông báo sẽ được gửi về root của server. Nếu bạn muốn gửi đến địa chỉ email khác thì khai báo ở đây. LF_PERMBLOCK = "1"LF_PERMBLOCK_INTERVAL = "86400"LF_PERMBLOCK_COUNT = "6"LF_PERMBLOCK_ALERT = "1" Enable tính năng block vĩnh viễn một IP. Nếu một IP bị temp ban (ban tạm) 6 lần khi vi phạm các rule sẽ block ip này 86400s ( 1 ngày) đồng thời gửi email về cho người quản trị biết. LF_TRIGGER = "1" Enable tính năng Login Fail Detect cho từng dịch vụ cụ thể (được khai báo bên dưới) LF_TRIGGER_PERM = "1" Khi LF_TRIGGER = "1" thì có thể enable LF_TRIGGER_PERM để kích hoạt block IP permanent + LF_TRIGGER_PERM = "1" => IP sẽ bị block permanent + LF_TRIGGER_PERM = "86400" => IP sẽ bị block 1 ngày LF_SELECT = "1" Khi một IP vi phạm các rule của LFD thay vì block toàn bộ traffic từ IP này đến server thì chỉ block traffic đến dịch vụ mà IP này login fail (ví dụ login ftp sai nhiều lần thì block truy cập đến FTP nhưng vẫn cho phép truy cập vào website) LF_EMAIL_ALERT = "1" Gửi email thông báo nếu một IP bị block bởi các trigger bên dưới LF_SSHD = "5"LF_SSHD_PERM = "1" Nếu login SSH sai 5 lần thì sẽ bị block IP (temp block) Nếu bị temp block lớn hơn số lần quy định ở LF_PERMBLOCK_COUNT (cấu hình bước trên) thì sẽ block permanent. LF_FTPD = "0"LF_FTPD_PERM = "1" Không kích hoạt login fail detect cho dịch vụ FTP. Tương tự cho các dịch vụ còn lại bên dưới (SMTP, POP3, IMAP, .htpasswd, mod_security...) LF_SSH_EMAIL_ALERT = "0" Không gửi email thông báo khi có một ai đó login thành công thông qua SSH LF_SU_EMAIL_ALERT = "0" Không gửi email thông báo khi có một người dùng "su" (switch user) qua người dùng khác. Không gửi email khi họ dùng lệnh "su", bất kể "su" thành công hoặc thất bại. LF_DIRWATCH = "3600" Lê Quang Tiên 9 Config Server Firewall LFD sẽ check thư mục /tmp và /dev/shm định kỳ sau mỗi 3600s, nếu phát hiện ra các file nghi vấn là file độc hại sẽ gửi email thông báo đến cho chúng ta. Thường thì trên server thư mục, /temp và /dev/shm phân quyền cho phép mọi người dùng có quyền ghi trên thư mục này, do đó các attacker lợi dụng điều này để ghi mã độc vào đây (các file để back connect, local root exploit...) LF_DIRWATCH_DISABLE = "1" Khi phát hiện ra các file nghi vấn ở thư mục /tmp và /dev/shm sẽ mv chúng khỏi 2 thư mục trên và append vào file /etc/csf/suspicious.tar, thuận tiện cho chúng ta theo dõi, phân tích về sau và phần nào vô hiệu hóa cuộc tấn công của attacker. LF_DIRWATCH_FILE = "60" Theo dõi sự thay đổi của các file và thư mục, nếu có thay đổi gửi email thông báo về cho chúng ta. Để theo dõi file/ thư mục nào thì add chúng vào file csf.dirwatch. Cấu hình như trên thì 60s chạy 1 lần. LF_INTEGRITY = "0" Kiểm tra tính toàn vẹn của hệ điều hành bằng cách so sánh MD5 của các file binary khi LFD start với MD5 của các file đó lúc kiểm tra. Nếu khác nhau thì sẽ gửi email thông báo. Tính năng này có thể sẽ hoạt động không chính xác khi hệ thống update và sẽ tăng I/O, load của server do phải tính toán MD5 rất nhiều lần. LF_DISTATTACK = "0" Phát hiện tấn công brute force từ mạng botnet. Nếu như một account bị login sai quá giới hạn cho phép từ nhiều IP khác nhau thì sẽ block toàn bộ IP đã login sai. 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. LT_POP3D = "30" Block login POP3 nếu một account được login nhiều hơn 30 lần trong 1 giờ từ 1 IP. Tương tự cho LT_IMAPD. LT_EMAIL_ALERT = "0" Send email khi một account vượt quá giới hạn cho phép của LT_IMAPD và LT_POP3D LT_SKIPPERMBLOCK = "0" Không áp dụng permanent block cho LT_POP3D/LT_IMAPD CT_LIMIT = "300" Giới hạn số lượng connection từ một IP đến server. Nếu số lượng đó vượt quá 300 thì temp block IP đó. CT_INTERVAL = "30" Các lần scan để kiểm tra cách nhau 30s. CT_EMAIL_ALERT = "1" Gửi email thông báo nếu một IP bị block bởi connection tracking. Lê Quang Tiên 10 Config Server Firewall CT_PERMANENT = "0" Disable block permanent cho connection tracking. CT_BLOCK_TIME = "1800" Thời gian block một IP nếu như vi phạm Connection tracking limit. CT_SKIP_TIME_WAIT = "0" Khi đếm số lượng connection từ 1 IP đến server thì bỏ qua trạng thái TIME_WAIT của connection, không đếm trạng thái này. CT_STATES = "SYN_RECV" Chỉ đếm các kết nối ở trạng thái SYN_RECV CT_PORTS = "80,443" Chỉ áp dụng connection tracking cho các kết nối đến port 80 và 443. PS_INTERVAL = "300"PS_LIMIT = "15" Trong 500s nếu kết nối đến nhiều hơn 15 port không có trên server sẽ block IP đó. PS_PORTS = "0:65535,ICMP" Giới hạn range port sẽ được theo dõi. PS_PERMANENT = "0" IP bị block bởi Port Scan Tracking sẽ là temp block hoặc là permanent: PS_PERMANENT = "0": IP bị temp block PS_PERMANENT = "1": IP bị block permanent. PS_BLOCK_TIME = "3600" Nếu PS_PERMANENT = "0" thì đây là thời gian temp block của một IP. PS_EMAIL_ALERT = "1" Gửi email thông báo khi có một IP bị block. Mặc định thì CSF gửi toàn bộ email về địa chỉ đã cấu hình ở phần "LF_ALERT_TO" , nếu trường hợp đặc biệt bạn muốn vài thông báo nào đó gửi về email khác thì có thể chạy một trong các lệnh sau: (nhớ chọn đúng phần alert muốn gửi để chạy lệnh) 5. Lời Kết Config Server Firewall mang đến một lá chắn khá an toàn và ổn định cho bạn trong lúc vận hành, sử dụng server Linux. Ngoài ra các cơ chế tự động block các IP khi vi phạm các luật do bạn đặt ra cũng góp phần đàm bảo an toàn hơn cho bạn. Chúc các bạn thành công Lê Quang Tiên 11
- Xem thêm -

Tài liệu liên quan