Thứ sáu, 14/07/2017 | 00:00 GMT+7

Cách cài đặt Bro trên Ubuntu 16.04

Bro là một khuôn khổ phân tích mạng open-souce và ứng dụng giám sát bảo mật. Nó tập hợp một số tính năng tốt nhất của OSSECosquery thành một gói đẹp.

Bro có thể thực hiện cả phân tích và phát hiện dựa trên chữ ký và hành vi, nhưng phần lớn những gì nó làm là phân tích và phát hiện dựa trên hành vi. Bao gồm trong danh sách dài các tính năng của Bro là khả năng:

  • Phát hiện các cuộc tấn công brute-force chống lại các dịch vụ mạng như SSH và FTP
  • Thực hiện giám sát và phân tích truy cập HTTP
  • Phát hiện các thay đổi trong phần mềm đã cài đặt
  • Thực hiện xác thực certificate SSL / TLS
  • Phát hiện các cuộc tấn công đưa vào SQL
  • Thực hiện giám sát toàn vẹn file của tất cả các file
  • Gửi báo cáo hoạt động, tóm tắt và báo cáo sự cố và cảnh báo qua email
  • Thực hiện định vị địa lý địa chỉ IP đến cấp city
  • Hoạt động ở chế độ độc lập hoặc phân tán

Bro có thể được cài đặt từ nguồn hoặc thông qua trình quản lý gói. Cài đặt từ nguồn được tham gia nhiều hơn, nhưng nó là phương pháp duy nhất hỗ trợ định vị địa lý IP, nếu thư viện định vị được cài đặt trước khi nó được biên dịch.

Cài đặt Bro làm cho các lệnh bổ sung như brobroctl có sẵn cho hệ thống. bro được dùng để phân tích các file theo dõi và cũng để phân tích lưu lượng truy cập trực tiếp; broctl là tiện ích dòng lệnh và shell tương tác được sử dụng để quản lý các cài đặt Bro độc lập hoặc phân tán.

Trong bài viết này, bạn sẽ cài đặt Bro từ nguồn trên Ubuntu 16.04 ở chế độ độc lập.

Yêu cầu

Để hoàn thành bài viết này, bạn cần có những thứ sau:

  • Server Ubuntu 16.04 có firewall và account user không phải root với quyền sudo được cấu hình bằng Hướng dẫn Cài đặt Ban đầu cho Ubuntu 16.04 này . Vì ta sẽ thực hiện một số tác vụ yêu cầu thêm RAM, nên bạn cần tạo một server có bộ nhớ ít nhất 1 GB.
  • Postfix được cài đặt làm tác nhân chuyển thư chỉ để gửi (MTA) trên server bằng cách sử dụng hướng dẫn Postfix này trên Ubuntu 16.04 . Một MTA như Postfix phải được cài đặt để Bro gửi thông báo qua email. Nó sẽ chạy mà không có một, nhưng email sẽ không được gửi.

Bước 1 - Cài đặt phụ thuộc

Trước khi bạn có thể cài đặt Bro từ nguồn, bạn cần cài đặt các phụ thuộc của nó.

Đầu tiên, cập nhật database gói. Không thực hiện việc này trước khi cài đặt các gói có thể dẫn đến lỗi trình quản lý gói.

  • sudo apt-get update

Sự phụ thuộc của Bro bao gồm một số thư viện và công cụ, như Libpcap , OpenSSLBIND8 . BroControl cũng yêu cầu Python 2.6 trở lên. Bởi vì ta đang xây dựng Bro từ nguồn, ta cần một số phụ thuộc bổ sung, như CMake , SWIG , Bison và trình biên dịch C / C ++.

Bạn có thể cài đặt tất cả các phụ thuộc cần thiết cùng một lúc:

  • sudo apt-get install bison cmake flex g++ gdb make libmagic-dev libpcap-dev libgeoip-dev libssl-dev python-dev swig2.0 zlib1g-dev

Sau khi cài đặt xong, bước tiếp theo là tải các database mà Bro sẽ sử dụng để định vị địa lý IP.

Bước 2 - Download Database GeoIP

Tại đây, ta sẽ download database GeoIP mà Bro sẽ phụ thuộc vào để định vị địa chỉ IP. Ta sẽ download hai file nén chứa database IPv4 và IPv6, extract chúng, sau đó chuyển chúng vào folder /usr/share/GeoIP .

Lưu ý : Ta đang download cơ sở dữ liệu GeoIP kế thừa miễn phí từ MaxMind . Một định dạng database IP mới hơn đã được phát hành, nhưng Bro chưa có hỗ trợ cho nó.

Download cả database IPv4 và IPv6.

  • wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
  • wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCityv6-beta/GeoLiteCityv6.dat.gz

Extract cả hai file , sẽ đặt hai file có tên GeoLiteCity.datGeoLiteCityv6.dat trong folder làm việc của bạn.

  • gzip -d GeoLiteCity.dat.gz
  • gzip -d GeoLiteCityv6.dat.gz

Sau đó di chuyển vào folder thích hợp, đổi tên chúng trong quá trình này.

  • sudo mv GeoLiteCity.dat /usr/share/GeoIP/GeoIPCity.dat
  • sudo mv GeoLiteCityv6.dat /usr/share/GeoIP/GeoIPCityv6.dat

Với database GeoIP đã có, ta có thể tự cài đặt Bro trong bước tiếp theo.

Bước 3 - Cài đặt Bro từ Nguồn

Để cài đặt Bro từ nguồn, trước tiên ta sẽ phải sao chép repository từ GitHub.

Git đã được cài đặt theo mặc định trên Ubuntu, vì vậy bạn có thể sao chép repository bằng lệnh sau. Các file sẽ được đưa vào một folder có tên là bro .

  • git clone --recursive git://git.bro.org/bro

Thay đổi folder của dự án.

  • cd bro

Chạy cấu hình của Bro, sẽ mất chưa đầy một phút.

  • ./configure

Sau đó sử dụng make để xây dựng chương trình. Quá trình này có thể mất đến 20 phút, tùy thuộc vào server của bạn.

  • make

Bạn sẽ thấy phần trăm hoàn thành ở đầu hầu hết các dòng kết quả khi nó chạy.

Sau khi hoàn tất, hãy cài đặt Bro, quá trình này sẽ mất chưa đầy một phút.

  • sudo make install

Bro sẽ được cài đặt trong folder /usr/local/bro .

Đến đây bạn cần thêm folder /usr/local/bro/bin vào $PATH . Để đảm bảo nó có sẵn trên phạm vi global , cách tốt nhất để thực hiện điều đó là chỉ định đường dẫn trong file trong folder /etc/profile.d . Ta sẽ gọi file đó là 3rd-party.sh .

Tạo và mở 3rd-party.sh bằng editor yêu thích của bạn.

  • sudo nano /etc/profile.d/3rd-party.sh

Copy paste các dòng sau vào đó. Dòng đầu tiên là một chú thích giải thích, và dòng thứ hai sẽ đảm bảo /usr/local/bro/bin được thêm vào đường dẫn của mọi user trên hệ thống.

/etc/profile.d/3rd-party.sh
# Expand PATH to include the path to Bro's binaries  export PATH=$PATH:/usr/local/bro/bin 

Lưu file , sau đó kích hoạt các thay đổi bằng source .

  • source /etc/profile.d/3rd-party.sh

Tuy nhiên, phần mềm từ cài đặt cũ có xu hướng vẫn tồn tại, vì vậy bạn cũng có thể đăng xuất và đăng nhập lại đảm bảo rằng đường dẫn của bạn tải đúng cách.

Bây giờ Bro đã được cài đặt, ta cần thực hiện một số thay đổi cấu hình để nó chạy bình thường.

Bước 4 - Cấu hình Bro

Trong bước này, ta sẽ tùy chỉnh một vài file đảm bảo Bro hoạt động bình thường. Tất cả các file đều nằm trong folder /usr/local/bro/etc và chúng là:

  • node.cfg , được sử dụng để cấu hình các node cần giám sát.
  • networks.cfg , chứa một danh sách các mạng trong ký hiệu CIDR là local của nút.
  • broctl.cfg , là file cấu hình BroControl chung cho thư, ghi log và các cài đặt khác.

Hãy xem xét những gì cần được sửa đổi trong mỗi file .

Cấu hình các node nào để giám sát

Để cấu hình các node mà Bro sẽ giám sát, ta cần sửa đổi file node.cfg .

Ngoài hộp, Bro được cấu hình để hoạt động ở chế độ độc lập. Vì đây là một cài đặt độc lập, bạn không cần phải sửa đổi file này, nhưng tốt nhất là bạn nên kiểm tra xem các giá trị có chính xác hay không.

Mở file để chỉnh sửa.

  • sudo nano /usr/local/bro/etc/node.cfg

Trong phần bro , hãy tìm tham số interface . Đó là etho0 theo mặc định và điều này phải trùng với giao diện công khai của server Ubuntu 16.04 của bạn. Nếu không, hãy đảm bảo cập nhật nó.

/usr/local/bro/etc/node.cfg
[bro] type=standalone host=localhost interface=eth0 

Lưu file khi bạn hoàn tất. Tiếp theo, ta sẽ cấu hình (các) mạng riêng mà nút thuộc về.

Cấu hình mạng riêng của Node

Tệp networks.cfg là nơi bạn cấu hình nút thuộc về mạng IP nào (tức là mạng IP của bất kỳ giao diện server nào mà bạn muốn giám sát).

Để bắt đầu, hãy mở file .

  • sudo nano /usr/local/bro/etc/networks.cfg

Theo mặc định, file đi kèm với ba khối IP riêng đã được cấu hình như một ví dụ về cách bạn cần được chỉ định.

/usr/local/bro/etc/networks.cfg
# List of local networks in CIDR notation, optionally followed by a # descriptive tag. # For example, "10.0.0.0/8" or "fe80::/64" are valid prefixes.  10.0.0.0/8          Private IP space 172.16.0.0/12       Private IP space 192.168.0.0/16      Private IP space 

Xóa ba mục nhập hiện có, sau đó thêm mục nhập của bạn . Bạn có thể sử dụng ip addr show để kiểm tra địa chỉ mạng cho các giao diện server của bạn . Phiên bản cuối cùng của bạn networks.cfg sẽ trông giống như sau đây, với địa chỉ mạng của bạn thay ở:

Ví dụ /usr/local/bro/etc/networks.cfg
203.0.113.0/24          Public IP space 198.51.100.0/24         Private IP space 

Lưu file khi bạn chỉnh sửa xong. Tiếp theo, ta sẽ cấu hình cài đặt thư và ghi log .

Cấu hình Cài đặt Thư và Ghi log

Tệp broctl.cfg là nơi bạn cấu hình cách BroControl xử lý email và trách nhiệm ghi log của nó. Hầu hết các giá trị mặc định không cần thay đổi. Bạn chỉ cần xác định địa chỉ email mục tiêu.

Mở file để chỉnh sửa.

  • sudo nano /usr/local/bro/etc/broctl.cfg

Trong phần Tùy chọn Thư ở đầu file , hãy tìm tham số MailTo và thay đổi nó thành một địa chỉ email hợp lệ mà bạn kiểm soát. Mọi thông báo qua email của Bro sẽ được gửi đến địa chỉ đó.

/usr/local/bro/etc/broctl.cfg
. . . # Mail Options  # Recipient address for all emails sent out by Bro and BroControl. MailTo = sammy@example.com . . . 

Lưu file khi bạn chỉnh sửa xong.

Đây là tất cả cấu hình Bro cần, vì vậy bây giờ bạn có thể sử dụng BroControl để khởi động và quản lý Bro.

Bước 5 - Quản lý Bro bằng BroControl

BroControl được sử dụng để quản lý cài đặt Bro - bắt đầu và dừng dịch vụ, triển khai Bro và thực hiện các nhiệm vụ quản lý khác. Nó vừa là một công cụ dòng lệnh vừa là một shell tương tác.

Nếu broctl được gọi bằng sudo /usr/local/bro/bin/broctl , nó sẽ chạy shell tương tác:

Output
Welcome to BroControl 1.5-21 Type "help" for help. [BroControl] >

Bạn có thể thoát khỏi shell tương tác bằng lệnh exit .

Từ shell, bạn có thể chạy bất kỳ lệnh Bro hợp lệ nào. Các lệnh tương tự cũng có thể được chạy trực tiếp từ dòng lệnh mà không cần gọi shell. Chạy các lệnh tại dòng lệnh thường là một cách tiếp cận hữu ích hơn vì nó cho phép bạn chuyển kết quả của một lệnh broctl thành một lệnh Linux tiêu chuẩn. Đối với phần còn lại của bước này, ta sẽ gọi các lệnh broctl tại dòng lệnh.

Đầu tiên, sử dụng broctl deploy để khởi động Bro và đảm bảo các file mà BroControl và Bro cần được cập nhật dựa trên các cấu hình ở Bước 4.

  • sudo /usr/local/bro/bin/broctl deploy

Bạn cũng nên chạy lệnh này khi nào thay đổi được thực hiện đối với file cấu hình hoặc tập lệnh.

Lưu ý : Nếu Bro không bắt đầu, kết quả của lệnh sẽ gợi ý nguyên nhân. Ví dụ: bạn có thể thấy thông báo lỗi sau mặc dù bạn đã cài đặt MTA:

Output
bro not running (was crashed) Error: error occurred while trying to send mail: send-mail: SENDMAIL-NOTFOUND not found starting ... starting bro ...

Giải pháp là chỉnh sửa file cấu hình BroControl, /usr/local/bro/etc/broctl.cfg và thêm một mục nhập cho Sendmail ở cuối phần Tùy chọn Thư :

/usr/local/bro/etc/broctl.cfg
. . . # Added for Sendmail SendMail = /usr/sbin/sendmail  ############################################### # Logging Options . . . 

Sau đó triển khai lại Bro bằng triển khai sudo /usr/local/bro/bin/broctl deploy .

Bạn có thể kiểm tra trạng thái của Bro bằng lệnh status .

  • sudo /usr/local/bro/bin/broctl status

Đầu ra sẽ giống như sau. Ngoài việc running , trạng thái cũng có thể crashed hoặc stopped .

Output
Name Type Host Status Pid Started bro standalone localhost running 6807 12 Apr 05:42:50

Nếu bạn cần khởi động lại Bro, bạn có thể sử dụng khởi động lại sudo /usr/local/bro/bin/broctl restart .

Lưu ý : broctl restartbroctl deploy không giống nhau. Gọi cái sau sau khi bạn thay đổi cài đặt cấu hình và / hoặc sửa đổi tập lệnh; gọi trước khi bạn muốn dừng và khởi động lại toàn bộ dịch vụ.

Tiếp theo, hãy làm cho dịch vụ Bro cài đặt một công việc cron mạnh mẽ hơn.

Bước 6 - Cấu hình cron cho Bro

Bro không có file mô tả dịch vụ Systemd, nhưng nó đi kèm với một tập lệnh cron, nếu được bật, sẽ khởi động lại Bro nếu nó bị lỗi và thực hiện các việc khác như kiểm tra dung lượng ổ đĩa thích hợp và xóa các file log đã hết hạn.

Lệnh cron của Bro đã được bật sẵn, nhưng bạn cần cài đặt lệnh cron thực sự kích hoạt tập lệnh. Trước tiên, bạn cần thêm file gói cron cho Bro trong /etc/cron.d . Theo quy ước, ta sẽ gọi file đó là bro , vì vậy hãy tạo và mở nó.

  • sudo nano /etc/cron.d/bro

Mục nhập để sao chép và paste vào file được hiển thị tiếp theo. Nó sẽ chạy cron của Bro sau mỗi năm phút. Nếu nó phát hiện Bro bị crash, nó sẽ khởi động lại nó.

/etc/cron.d/bro
*/5 * * * * root /usr/local/bro/bin/broctl cron 

Bạn có thể thay đổi số 5 trong lệnh trên nếu bạn muốn nó chạy thường xuyên hơn.

Lưu file khi bạn hoàn tất.

Khi cron job được kích hoạt, bạn sẽ nhận được một email thông báo rằng một folder cho file thống kê đã được tạo tại /usr/local/bro/logs/stats . Hãy lưu ý Bro phải thực sự sụp đổ (tức là bị dừng một cách liên tục) để điều này hoạt động. Nó sẽ không hoạt động nếu bạn tự dừng Bro một cách duyên dáng bằng cách sử dụng stop của BroControl.

Để kiểm tra xem nó có hoạt động hay không, bạn sẽ phải khởi động lại server hoặc giết một trong các quy trình Bro. Nếu bạn đi theo lộ trình khởi động lại, Bro sẽ được khởi động lại năm phút sau khi server hoàn tất quá trình khởi động lại. Để sử dụng cách tiếp cận khác, trước tiên hãy lấy một trong các ID quy trình của Bro.

  • ps aux | grep bro

Sau đó, giết một trong các quy trình.

  • sudo kill -9 process_id

Nếu sau đó bạn kiểm tra trạng thái bằng cách sử dụng:

  • sudo /usr/local/bro/bin/broctl status

Kết quả sẽ hiển thị rằng nó đã bị rơi.

Output
Name Type Host Status Pid Started bro standalone localhost crashed

Gọi lệnh tương tự đó vài phút sau đó và kết quả kết quả sẽ hiển thị rằng nó đang chạy lại.

Với Bro làm việc đầy đủ, bạn sẽ nhận được các email tóm tắt về các hoạt động bắt giữ được ghi lại trên giao diện khoảng mỗi giờ. Và nếu nó gặp sự cố và khởi động lại, bạn sẽ nhận được một email thông báo rằng nó đã bắt đầu sau sự cố. Trong bước tiếp theo và cuối cùng, ta hãy xem xét một số tiện ích Bro chính khác.

Bước 7 - Sử dụng tập lệnh policy bro , bro-cut và Bro

brobro-cut là hai lệnh chính khác đi kèm với Bro. Với bro , bạn có thể capture lưu lượng sống và phân tích file trace bắt sử dụng các công cụ khác. bro-cut là một công cụ tùy chỉnh để đọc và lấy dữ liệu từ log Bro.

Lệnh được sử dụng để nắm bắt lưu lượng truy cập trực tiếp với bro có định dạng file sudo /usr/local/bro/bin/bro -i eth0 file... Ở mức tối thiểu, bạn phải chỉ định giao diện mà nó sẽ thu thập lưu lượng truy cập. file... đề cập đến các kịch bản policy xác định những gì Bro xử lý. Bạn không phải chỉ định một tập lệnh hoặc các tập lệnh, vì vậy lệnh cũng có thể giống như sudo /usr/local/bro/bin/bro -i eth0 .

Lưu ý : Các tập lệnh mà Bro sử dụng để hoạt động nằm trong folder /usr/local/bro/share/bro . Các tập lệnh dành riêng cho trang web nằm trong folder /usr/local/bro/share/bro/site/ . Đảm bảo không tùy chỉnh các file trong folder này ngoài /usr/local/bro/share/bro/site/local.bro , vì các thay đổi sẽ bị overrides khi nâng cấp hoặc cài đặt lại Bro.

bro tạo nhiều file từ một phiên chụp duy nhất đến folder làm việc, nên tốt nhất bạn nên gọi lệnh chụp bro trong folder được tạo chỉ cho phiên chụp đó. Ví dụ sau, hiển thị một danh sách dài ( ls -l ) các file được tạo trong một phiên nắm bắt lưu lượng truy cập trực tiếp.

Output
total 152 -rw-r--r-- 1 root root 277 Apr 14 09:20 capture_loss.log -rw-r--r-- 1 root root 4711 Apr 14 09:20 conn.log -rw-r--r-- 1 root root 2614 Apr 14 04:49 dns.log -rw-r--r-- 1 root root 25168 Apr 14 09:20 loaded_scripts.log -rw-r--r-- 1 root root 253 Apr 14 09:20 packet_filter.log -rw-r--r-- 1 root root 686 Apr 14 09:20 reporter.log -rw-r--r-- 1 root root 708 Apr 14 04:49 ssh.log -rw-r--r-- 1 root root 793 Apr 14 09:20 stats.log -rw-r--r-- 1 root root 373 Apr 14 09:20 weird.log

Bạn có thể thử chạy một trong các lệnh chụp ngay bây giờ. Sau khi để nó chạy một chút, hãy sử dụng CTRL+C để kết thúc phiên chụp bro . Bạn có thể đọc từng bro-cut bằng cách sử dụng lệnh như cat ssh.log | /usr/local/bro/bin/bro-cut -C -d .

Kết luận

Bài viết này đã giới thiệu cho các bạn về Bro và cách cài đặt nó theo kiểu độc lập từ nguồn. Bạn cũng đã học cách cài đặt database IPv4 và IPv6 GeoIP từ MaxMind mà Bro sử dụng để định vị địa lý địa chỉ IP đến cấp city . Đối với chế độ cài đặt độc lập này, bạn cũng đã học cách sửa đổi các khía cạnh liên quan của các file cấu hình của nó, quản lý nó bằng broctrl , sử dụng bro để nắm bắt lưu lượng truy cập trực tiếp và bro-cut để xuất và đọc các file log kết quả.

Bạn có thể truy cập thêm thông tin về cách sử dụng Bro từ trang tài liệu của dự án .


Tags:

Các tin liên quan

Cách thiết lập đường ống tích hợp liên tục với Concourse CI trên Ubuntu 16.04
2017-07-11
Cách cài đặt Ruby on Rails với RVM trên Ubuntu 16.04
2017-07-03
Cách thiết lập đường ống tích hợp liên tục với Drone trên Ubuntu 16.04
2017-06-28
Cách thiết lập tích hợp liên tục với Buildbot trên Ubuntu 16.04
2017-06-28
Cách thiết lập đường ống tích hợp liên tục trong Jenkins trên Ubuntu 16.04
2017-06-16
Cách cài đặt và cấu hình Drone trên Ubuntu 16.04
2017-06-14
Cách giám sát cảnh báo Zabbix với Alerta trên Ubuntu 16.04
2017-06-13
Cách cài đặt và cấu hình Zabbix để giám sát an toàn server từ xa trên Ubuntu 16.04
2017-06-08
how-to-config-an-orientdb-cluster-on-ubuntu-16-04
2017-06-02
Cách cài đặt và cấu hình OpenLDAP và phpLDAPadmin trên Ubuntu 16.04
2017-06-01