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 OSSEC và osquery 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ư bro và broctl 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 , OpenSSL và BIND8 . 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.dat và GeoLiteCityv6.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.
# 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ó.
[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.
# 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 ở:
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ỉ đó.
. . . # 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:
OutputWelcome 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:
Outputbro 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ư :
. . . # 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 .
OutputName         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 restart và broctl 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ó.
*/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.
OutputName         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
 bro và bro-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.
 Vì 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.
Outputtotal 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 .
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.042017-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 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 với Drone 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
 

