Thứ năm, 14/05/2015 | 00:00 GMT+7

Cách thiết lập cài đặt OSSEC cục bộ trên Debian 8

OSSEC là một hệ thống phát hiện xâm nhập dựa trên server (HIDS) open-souce , thực hiện phân tích log , kiểm tra tính toàn vẹn, giám sát register Windows, phát hiện rootkit, cảnh báo dựa trên thời gian và phản hồi tích cực. Đây là ứng dụng để cài đặt trên server của bạn nếu bạn muốn theo dõi những gì đang xảy ra bên trong nó.

OSSEC có thể được cài đặt để chỉ giám sát server mà nó được cài đặt, đây là một cài đặt cục bộ theo cách nói của OSSEC hoặc được cài đặt như một server để giám sát một hoặc nhiều tác nhân . Trong hướng dẫn này, bạn sẽ học cách cài đặt OSSEC để giám sát server Debian 8 mà nó được cài đặt, tức là cài đặt OSSEC cục bộ .

Yêu cầu

Để làm theo hướng dẫn này, bạn cần :

  • Một Debian 8 Server với một user không phải root có quyền sudo và các SSH key , bạn có thể cài đặt khóa này theo hướng dẫn này .

Bước 1 - Cài đặt các gói bắt buộc

Trong bước này, ta sẽ cài đặt các gói cần thiết cho OSSEC. Đầu tiên, cập nhật database gói.

  • sudo apt-get update

Sau đó cài đặt các bản cập nhật có sẵn.

  • sudo apt-get -y upgrade

Cuối cùng, cài đặt các phụ thuộc của OSSEC ( build-essentialinotify-toops ) và ntp , là một dịch vụ Network Time Protocol.

  • sudo apt-get install build-essential inotify-tools ntp

Cuối cùng, kích hoạt dịch vụ NTP. Điều này giúp server giữ thời gian chính xác tự động.

  • sudo systemctl start ntp

Bước 2 - Bật firewall

Bản cài đặt mới của server Debian 8 không có ứng dụng firewall đang hoạt động. Trong bước này, ta sẽ tìm hiểu cách bật ứng dụng firewall IPTables và đảm bảo các luật thời gian chạy vẫn tồn tại sau khi khởi động lại.

Phương pháp đơn giản nhất để hoàn thành đó là cài đặt gói iptables-persistent bằng cách sử dụng:

  • sudo apt-get install -y iptables-persistent

Sau khi xác thực, bạn sẽ được yêu cầu lưu các luật firewall IPv4 và IPv6 để tách các file . Nhấn ENTER ở cả hai dấu nhắc để chấp nhận các vị trí mặc định, là /etc/iptables/rules.v4/etc/iptables/rules.v6 .

Theo mặc định, không có luật nào trong các file đó, vì vậy ta sẽ phải tạo chúng để giữ cho server được bảo vệ và kết nối SSH đang mở. Ta chỉ quan tâm đến các luật IPv4, vì vậy ta sẽ chỉ sửa đổi file luật rules.v4 .

Mở file luật rules.v4 bằng nano hoặc editor yêu thích của bạn.

  • sudo nano /etc/iptables/rules.v4

Nội dung đầy đủ của file đó trông giống như sau:

Bản root /etc/iptables/rules.v4
# Generated by iptables-save v1.4.21 on Sat May  9 01:27:00 2015 *filter :INPUT ACCEPT [5722:416593] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [4372:503060] COMMIT # Completed on Sat May  9 01:27:00 2015 

Bộ luật mặc định sau sẽ đủ để giữ cho server được bảo vệ và kết nối SSH, vì vậy hãy copy paste bộ luật đó chỉ giữa các dòng : OUTPUT ACCEPT [4372: 503060]COMMIT . Các luật này được lấy từ tài liệu Debian chính thức ; bạn có thể thấy những gì mỗi luật thực hiện bằng các comment nội tuyến.

#  Allow all loopback traffic. Drop all traffic to 127/8 that doesn't use lo0 -A INPUT -i lo -j ACCEPT -A INPUT -d 127.0.0.0/8 -j REJECT  #  Accept all established inbound connections -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT  #  Allow all outbound traffic -A OUTPUT -j ACCEPT  #  Uncomment the next two lines to allow HTTP and HTTPS connections #-A INPUT -p tcp --dport 80 -j ACCEPT #-A INPUT -p tcp --dport 443 -j ACCEPT  #  Allow SSH connections. If you changed your SSH port, do same here. -A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT  #  Allow ping -A INPUT -p icmp --icmp-type echo-request -j ACCEPT  #  Log iptables denied calls -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7  #  Drop all other inbound - default deny unless explicitly allowed policy -A INPUT -j DROP -A FORWARD -j DROP 

Lưu và đóng file . Sau đó, để áp dụng bộ luật mới, hãy khởi động lại iptables-persistent .

  • sudo systemctl restart netfilter-persistent

Đến đây bạn có thể xác minh các luật được áp dụng bằng lệnh này.

  • sudo iptables -L

Đầu ra của bạn sẽ giống như sau:

iptables -L kết quả
Chain INPUT (policy ACCEPT) target     prot opt source               destination          ACCEPT     all  --  anywhere             anywhere      REJECT     all  --  anywhere             loopback/8           reject-with icmp-port-unreachable  . . .           Chain OUTPUT (policy ACCEPT) target     prot opt source               destination          ACCEPT     all  --  anywhere             anywhere     

Bước 3 - Download và xác minh OSSEC

OSSEC được phân phối dưới dạng tarball nén. Trong bước này, bạn sẽ download nó và file tổng kiểm tra của nó, được sử dụng để xác minh tarball không bị giả mạo. Bạn có thể kiểm tra trang web của dự án để biết version mới nhất. Tại thời điểm viết bài này, OSSEC 2.8.1 là bản phát hành ổn định mới nhất.

Để download tarball, hãy nhập:

  • wget -U ossec http://www.ossec.net/files/ossec-hids-2.8.1.tar.gz

Sau đó, download file tổng kiểm tra bằng cách sử dụng

  • wget -U ossec http://www.ossec.net/files/ossec-hids-2.8.1-checksum.txt

Sau khi download cả hai file , hãy xác minh md5sum rball đã nén.

  • md5sum -c ossec-hids-2.8.1-checksum.txt

Đầu ra phải là:

kết quả md5sum
ossec-hids-2.8.1.tar.gz: OK md5sum: WARNING: 1 line is improperly formatted 

Thực hiện theo điều đó bằng cách xác minh tổng kiểm tra SHA1.

  • sha1sum -c ossec-hids-2.8.1-checksum.txt

Đầu ra của nó phải là:

kết quả sha1sum
ossec-hids-2.8.1.tar.gz: OK sha1sum: WARNING: 1 line is improperly formatted 

Trong mỗi trường hợp, hãy bỏ qua dòng CẢNH BÁO . Dòng OK là dòng xác nhận file tốt.

Bước 4 - Cài đặt OSSEC

Trong bước này, ta sẽ cài đặt OSSEC. Để bắt đầu, trước tiên hãy mở nó ra.

  • tar xf ossec-hids-2.8.1.tar.gz

Nó sẽ được extract vào một folder có tên ossec-hids-2.8.1 . Thay đổi vào folder đó.

  • cd ossec-hids-2.8.1

Lưu ý: Có một lỗi trong OSSEC đã được giới thiệu trong version 2.8.1. Lỗi khiến nó overrides lên nội dung của file /etc/hosts.deny . Đã có một bản sửa lỗi vĩnh viễn trong version 2.9, sẽ sớm được phát hành.

Để sửa lỗi /etc/hosts.deny , hãy mở file host-deny.sh trong folder /var/ossec/active-response sau khi extract OSSEC từ tarball đã download .

  • nano active-response/host-deny.sh

Ở cuối file , hãy tìm hai dòng trong mã như bên dưới bắt đầu bằng TMP_FILE = , bên dưới comment # Deleting from hosts.deny . Chỉnh sửa cả hai dòng để loại bỏ khoảng trắng ở hai bên của dấu = để khối mã trông như thế này.

Khối mã host-deny.sh đã sửa đổi
# Deleting from hosts.deny elif [ "x${ACTION}" = "xdelete" ]; then    lock;    TMP_FILE=`mktemp /var/ossec/ossec-hosts.XXXXXXXXXX`    if [ "X${TMP_FILE}" = "X" ]; then      # Cheap fake tmpfile, but should be harder then no random data      TMP_FILE="/var/ossec/ossec-hosts.`cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -1 `"    fi 

Lưu và đóng file . Điều này kết thúc việc sửa lỗi.

Tiếp theo, bắt đầu cài đặt.

  • sudo ./install.sh

Trong suốt quá trình cài đặt, bạn sẽ được yêu cầu cung cấp một số đầu vào. Trước tiên, bạn sẽ được yêu cầu chọn ngôn ngữ cài đặt, theo mặc định, là tiếng Anh (vi). Nhấn ENTER nếu đó là ngôn ngữ bạn muốn . Nếu không, hãy nhập 2 chữ cái từ danh sách các ngôn ngữ được hỗ trợ trước. Sau đó, nhấn ENTER lần nữa để bắt đầu cài đặt.

Câu hỏi 1 sẽ hỏi Bạn muốn loại cài đặt nào ( server , đại lý, local , kết hợp hoặc trợ giúp)? . Nhập cục bộ và nhấn ENTER .

Đối với tất cả các câu hỏi sau, nhấn ENTER để chấp nhận giá trị mặc định, nhưng lưu ý câu hỏi 3.1 sẽ nhắc bạn nhập địa chỉ email của bạn. Nhập nó và trình cài đặt sẽ sử dụng nó để tự động tìm server SMTP tương ứng.

Nếu cài đặt thành công, một vài dòng cuối cùng của kết quả sau cài đặt sẽ đọc:

Kết quả cài đặt thành công OSSEC
- Configuration finished properly.   - To start OSSEC HIDS:                 /var/ossec/bin/ossec-control start   - To stop OSSEC HIDS:                 /var/ossec/bin/ossec-control stop   - The configuration can be viewed or modified at /var/ossec/etc/ossec.conf  . . . 

Bước 4 - Tùy chỉnh cài đặt email của OSSEC

Ở đây ta sẽ xác minh thông tin đăng nhập email được chỉ định trong bước trước và thông tin đăng nhập mà OSSEC tự động cấu hình là chính xác.

Cài đặt email nằm trong file cấu hình chính của OSSEC - ossec.conf , nằm trong folder ` /var/ossec/etc Để truy cập và sửa đổi các file OSSEC nào, trước tiên bạn cần chuyển sang user root .

  • sudo su

Đến đây bạn đã root, hãy chuyển sang folder chứa file cấu hình của OSSEC.

  • cd /var/ossec/etc

Sau đó tạo một bản backup của file cấu hình.

  • cp ossec.conf ossec.conf.00

Mở file root bằng editor nano hoặc editor bạn muốn .

  • nano ossec.conf

Cài đặt email ở trên cùng của file , trông giống như thế này.

/var/ossec/etc/ossec.conf
<global>     <email_notification>yes</email_notification>     <email_to>sammy@example.com</email_to>     <smtp_server>mail.example.com.</smtp_server>     <email_from>sammy@example.com</email_from> </global> 

<email_to> là email bạn đã cung cấp trong quá trình cài đặt. Cảnh báo sẽ được gửi đến địa chỉ email đó và <smtp_server> là server SMTP được lệnh cài đặt tự động phát hiện. Bạn không cần phải thay đổi các giá trị này.

<email_from> là địa chỉ email mà các cảnh báo của OSSEC sẽ đến từ đó. Theo mặc định, nó được tạo dựa trên account user thư của OSSEC và tên server của server . Bạn nên thay đổi địa chỉ này thành địa chỉ email hợp lệ để giảm tỷ lệ email của bạn bị server SMTP của nhà cung cấp dịch vụ email của bạn gắn thẻ là spam. Lưu ý <email_to><email_from> có thể giống nhau nếu server SMTP nhận không có policy spam nghiêm ngặt.

Sau khi sửa đổi cài đặt email, hãy lưu file . Sau đó khởi động OSSEC.

  • /var/ossec/bin/ossec-control start

Kiểm tra hộp thư đến của bạn để tìm email thông báo rằng OSSEC đã bắt đầu. Nếu bạn nhận được email từ cài đặt OSSEC của bạn , thì bạn biết rằng các cảnh báo trong tương lai cũng sẽ đến hộp thư đến của bạn. Nếu không, hãy kiểm tra folder thư rác của bạn.

Bước 6 - Thêm cảnh báo

Theo mặc định, OSSEC sẽ đưa ra cảnh báo về việc sửa đổi file và các hoạt động khác trên server , nhưng nó sẽ không cảnh báo về việc bổ sung file mới và cũng sẽ không cảnh báo trong thời gian thực - chỉ sau khi quét hệ thống theo lịch trình, là 79200 giây (hoặc 22 giờ) theo mặc định. Trong phần này, ta sẽ sửa đổi OSSEC để nó có thể cảnh báo về việc bổ sung file và trong thời gian thực.

Đầu tiên, mở ossec.conf .

  • nano ossec.conf

Cuộn xuống phần <syscheck> . Ngay dưới <frequency> , thêm < alert\_new\_files>yes< /alert\_new\_files > .

<syscheck>      <frequency>79200</frequency>     <alert_new_files>yes</alert_new_files> 

Trong khi bạn vẫn mở ossec.conf , hãy xem danh sách các folder hệ thống mà OSSEC giám sát, nằm ngay dưới dòng cuối cùng bạn đã sửa đổi. Thêm report_changes="yes" realtime="yes" vào cả hai thẻ folder .

 <directories report_changes="yes" realtime="yes" check_all="yes">/etc,/usr/bin,/usr/sbin</directories> <directories report_changes="yes" realtime="yes" check_all="yes">/bin,/sbin</directories> 

Ngoài danh sách mặc định của các folder mà OSSEC đã được cấu hình để theo dõi, bạn cũng có thể thêm bất kỳ folder nào mà bạn muốn theo dõi. Ví dụ, bạn có thể thêm folder chính của bạn . Để làm điều đó, hãy thêm dòng mới này ngay dưới các dòng folder khác, thay thế bằng tên user của bạn.

 <directories report_changes="yes" realtime="yes" check_all="yes">/etc,/usr/bin,/usr/sbin</directories> <directories report_changes="yes" realtime="yes" check_all="yes">/bin,/sbin</directories> <directories report_changes="yes" realtime="yes" check_all="yes">/home/<^sammy</directories><^> 

Bây giờ hãy lưu và đóng ossec.conf .

Tệp tiếp theo cần sửa đổi nằm trong folder /var/ossec/rules , vì vậy hãy thay đổi thành folder đó.

  • cd /var/ossec/rules

Thư mục /var/ossec/rules chứa nhiều file XML, bao gồm ossec_rules.xml , chứa các định nghĩa luật mặc định của OSSEC và local_rules.xml , là nơi bạn có thể thêm các luật tùy chỉnh.

Trong ossec_rules.xml , luật kích hoạt khi file được thêm vào folder được giám sát là luật 554. Theo mặc định, OSSEC không gửi cảnh báo khi luật đó được kích hoạt, vì vậy nhiệm vụ ở đây là thay đổi hành vi đó. Đây là luật 554 theo mặc định:

Luật 554 từ /var/ossec/rules/ossec_rules.xml
<rule id="554" level="0"> <category>ossec</category> <decoded_as>syscheck_new_entry</decoded_as> <description>File added to the system.</description> <group>syscheck,</group> </rule> 

OSSEC không gửi cảnh báo nếu luật được đặt thành cấp 0, vì vậy ta sẽ sao chép luật đó vào local rules.xml và sửa đổi nó để kích hoạt cảnh báo. Để làm điều đó, hãy mở `local rules.xml`.

  • nano local_rules.xml

Thêm phần sau vào cuối file , trước dòng có thẻ </group>.

<rule id="554" level="7" overwrite="yes"> <category>ossec</category> <decoded_as>syscheck_new_entry</decoded_as> <description>File added to the system.</description> <group>syscheck,</group> </rule>  </group>     

Lưu file , sau đó khởi động lại OSSEC để áp dụng các thay đổi.

  • /var/ossec/bin/ossec-control restart

Đến đây bạn sẽ nhận được cảnh báo khi nào một file hoặc được thêm, sửa đổi hoặc xóa. Lưu ý OSSEC không cảnh báo về việc bổ sung file trong thời gian thực, chỉ sau khi quét toàn bộ hệ thống.

Bước 6 (Tùy chọn) - Ngừng cảnh báo IPTables bị từ chối

Trong bước này, là tùy chọn nhưng rất được khuyến khích, ta sẽ cấu hình OSSEC để không cảnh báo về các thông báo bị từ chối IPTables.

Ở phần đầu của hướng dẫn này, ta đã bật firewall IPTables. Sau khi cài đặt OSSEC, nó sẽ cảnh báo về luật 1002, được kích hoạt khi IPTables từ chối kẻ tấn công và ghi tỷ lệ vào log hệ thống. Mặc dù rất tốt để biết khi nào kẻ tấn công đã bị theo dõi, nhưng những cảnh báo như vậy có thể lên đến hàng trăm mỗi ngày và làm tắc nghẽn hộp thư đến của bạn.

Để xóa các cảnh báo này, ta cần tùy chỉnh luật 1002. Luật đó được tìm thấy trong /var/ossec/rules/syslog_rules.xml và trông giống như sau:

Luật 1002 trong /var/ossec/rules/syslog_rules.xml
<rule id="1002" level="2">     <match>$BAD_WORDS</match>     <options>alert_by_email</options>     <description>Unknown problem somewhere in the system.</description> </rule> 

Mở syslog_rules.xml để chỉnh sửa.

  • nano /var/ossec/rules/syslog_rules.xml

Tìm biến BAD_WORDS , được xác định ở đầu file đó và chứa một số từ khóa. Nó trông như thế này:

Định nghĩa BAD_WORDS trong /var/ossec/rules/syslog_rules.xml
<var name="BAD_WORDS">core_dumped|failure|error|attack|bad |illegal |denied|refused|unauthorized|fatal|failed|Segmentation Fault|Corrupted</var> 

Bên dưới định nghĩa BAD_WORDS , hãy copy paste biến mới này, IGNORED_WORD . Biến chỉ chứa một từ khóa.

<var name="BAD_WORDS">core_dumped|failure|error|attack|bad |illegal |denied|refused|unauthorized|fatal|failed|Segmentation Fault|Corrupted</var> <var name="IGNORED_WORD">denied</var> 

Sau đó, ta sẽ sử dụng biến IGNORED_WORD mới trong version tùy chỉnh của luật 1002, mà ta sẽ gọi là luật 100031. Luật hoàn chỉnh được hiển thị bên dưới. Copy paste nó vào cuối file , trước dòng có thẻ group .

<rule id="100031" level="0">      <if_sid>1002</if_sid>      <match>$IGNORED_WORD</match>      <description>Ignored IPTables deny messages.</description> </rule>  </group>    

Lưu và đóng file . Với biến và luật tùy chỉnh tại chỗ, hãy khởi động lại OSSEC.

  • /var/ossec/bin/ossec-control restart

Cùng với đó, OSSEC sẽ ngừng gửi cảnh báo về các tin nhắn bị từ chối IPTables.

Kết luận

Đó là tất cả những gì cần thiết để cài đặt và cấu hình OSSEC local trên server Debian 8. Có rất nhiều tùy chỉnh có sẵn, bạn có thể khám phá trong tài liệu chính thức của dự án.


Tags:

Các tin liên quan