Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Cisco firepower

    CISCO FIREPOWER

    Firepower là một tường lửa thế hệ tiếp theo (NGFW – Next Generation FireWall). NGFW là một phần của công nghệ tường lửa tiên tiến nhất của Cisco, kết hợp chức năng của tường lửa truyền thống với tường lửa ứng dụng, bằng cách sử dụng hệ thống ngăn chặn xâm nhập (IPS – Intrusion Prevention System) với công nghệ kiểm tra gói tin sâu (DPI – Deep Packet Inspection). Firepower cũng sử dụng các kỹ thuật khác, chẳng hạn như kiểm tra lưu lượng được mã hóa Transport Layer Security/Secure Sockets Layer (TLS / SSL), lọc trang web, chất lượng dịch vụ (QoS – Quality of Service) / quản lý băng thông và kiểm tra phần mềm độc hại. Nó cũng có tích hợp quản lý tích hợp với Lightweight Directory Access Protocol (LDAP), RADIUS và Active Directory.
    Trước đây, tường lửa trạng thái (stateful) với khả năng lọc gói đơn giản đã chặn các ứng dụng không mong muốn một cách hiệu quả vì hầu hết các ứng dụng đều đáp ứng được các mong đợi về cổng / giao thức. NGFWs lọc lưu lượng dựa trên các ứng dụng hoặc loại lưu lượng đi qua các cổng cụ thể. Ví dụ: bạn có thể mở cổng 80 chỉ cho lưu lượng HTTP đã chọn hoặc cho các ứng dụng, trang web hoặc dịch vụ cụ thể mà bạn cho phép. Firepower cung cấp sự kết hợp của các chức năng tường lửa và QoS trong một giải pháp nhận biết ứng dụng duy nhất.
    Click image for larger version

Name:	dataurl951361.png
Views:	13
Size:	55.3 KB
ID:	438273

    Dưới đây là các tính năng đặc trưng của hầu hết các NGFW:
    • Các tính năng tường lửa tiêu chuẩn: Chúng bao gồm các chức năng tường lửa truyền thống (thế hệ đầu tiên) như kiểm tra giao thức / cổng trạng thái, dịch địa chỉ mạng (NAT) và khả năng mạng riêng ảo (VPN).
    • Nhận dạng và lọc ứng dụng: NGFW xác định và lọc lưu lượng dựa trên các ứng dụng cụ thể thay vì chỉ mở các cổng cho tất cả các loại lưu lượng. NGFW ngăn các ứng dụng và hoạt động độc hại sử dụng các cổng không chuẩn để tránh tường lửa.
    • Kiểm tra SSL và SSH: NGFW có thể kiểm tra lưu lượng được mã hóa SSL và SSH. NGFW giải mã lưu lượng, đảm bảo các ứng dụng được phép, kiểm tra các chính sách khác và sau đó mã hóa lại lưu lượng. Điều này cung cấp sự bảo vệ bổ sung chống lại các ứng dụng và hoạt động độc hại cố gắng che giấu bằng cách sử dụng mã hóa để tránh tường lửa.
    • Ngăn chặn xâm nhập: NGFW có các khả năng thông minh để kiểm tra lưu lượng chuyên sâu hơn để thực hiện phát hiện và ngăn chặn xâm nhập.
    • Tích hợp ISE: NGFW có sự hỗ trợ của Cisco ISE. Sự tích hợp này cho phép người dùng và thiết bị được ủy quyền sử dụng các ứng dụng cụ thể.
    • Lọc phần mềm độc hại: NGFW có thể cung cấp khả năng sàng lọc dựa trên chỉ số danh tiếng (reputation) để chặn các ứng dụng có danh tiếng xấu. Chức năng này có thể kiểm tra lừa đảo, vi rút cũng như các trang web và ứng dụng phần mềm độc hại khác.

    Hình bên dưới cho thấy các thành phần của giải pháp Firepower:
    Click image for larger version

Name:	dataurl951369.png
Views:	8
Size:	26.3 KB
ID:	438276
    Hình Các thành phần Firepower

    Trung tâm quản lý Firepower - Firepower Management Center (console quản lý có các API để kiểm soát và quản lý kiểm soát ứng dụng, lọc URL, AMP, v.v.).
    Tóm tắt

    Cisco Firepower NGFW là sản phẩm tường lửa thế hệ kế tiếp của Cisco, cung cấp các dịch vụ như lọc URL, kiểm soát ứng dụng, tăng tính khả kiến (visibility), tính năng chống phần mềm độc hại…Sản phẩm này cũng cung cấp các dịch vụ ngăn ngừa xâm nhập IPS trong một nền tảng duy nhất. NGFW thường dùng hệ điều hành FTD và Cisco ASA để cung cấp tất cả các dịch vụ tường lửa, VPN, NAT…trên ASA.


    Hệ thống phòng thủ Firepower
    Hệ điều hành chạy trên FirePower NGFW là Cisco FTD. Cisco FMC có thể được dùng để quản lý các hệ thống FTD. Hệ thống Firepower sẽ cần cả thiết bị được quản lý (Cisco Firepower NGFW) là thiết bị đang giám sát lưu lượng và Cisco FMC. Cisco FMC là một thiết bị được thiết kế cho mục đích quản lý tập trung, và là nơi lưu trữ cơ sở dữ liệu các thiết bị trong hệ thống FirePower. FMC tổng hợp và rà soát các thông tin lưu lượng mạng, các dữ liệu về hiệu năng, đánh giá ảnh hưởng của các biến cố trên một máy cụ thể. Bạn có thể giám sát các thông tin mà các thiết bị báo cáo, đánh giá và kiểm soát các hoạt động tổng thể diễn ra trên mạng. FMC cũng kiểm soát các tính năng quản trị mạng như switching, routing, NAT, VPN…
    Bạn cần đăng ký FirePower NGFW với FMC. Sau khi kênh truyền thông được thiết lập giữa FMC và NGFE, các thông tin cơ bản được trao đổi giữa hai thiết bị. Nếu bạn thay đổi chính sách trên FMC, chính sách đó sẽ không có tác dụng cho đến khi bạn triển khai chính sách (hay còn gọi là áp dụng). Bạn cũng có thể triển khai các chính sách ngay lập tức hay để lại về sau.


    Tóm tắt: Firepower Management Center (FMC) cung cấp khả năng quản lý hoàn chỉnh và thống nhất cho tường lửa, kiểm soát ứng dụng, ngăn chặn xâm nhập, lọc URL và bảo vệ phần mềm độc hại nâng cao. Nó có thể giúp quản trị viên thực hiện suôn sẻ từ quản lý tường lửa, đến kiểm soát ứng dụng, đến điều tra và khắc phục các cuộc tấn công phần mềm độc hại.


    FMC API
    DevNet có một trung tâm dành riêng cho nhà phát triển cho Firepower tại https://developer.cisco.com/firepower/. Trang web này cung cấp các liên kết đến các công nghệ Firepower khác nhau cũng như các sandbox cho DevNet. Các API REST của Trung tâm quản lý Firepower cho phép bạn lập trình các thiết bị Firepower để tự động kiểm tra thiết bị, phát hiện máy chủ, thực hiện phân tích lỗ hổng, tự động hóa và tập lệnh cho cấu hình tường lửa, triển khai các chính sách và kiểm soát cũng như theo dõi tình trạng của thiết bị.
    Hình bên dưới cung cấp tổng quan về cách FMC kết nối với các thiết bị Firepower khác nhau cũng như cách bạn có thể xây dựng các ứng dụng của riêng mình bằng cách sử dụng các REST API.

    Click image for larger version

Name:	dataurl951370.png
Views:	8
Size:	26.8 KB
ID:	438277
    Hình Firepower cho phép cả Northbound and Southbound APIs

    Như vậy có ba thiết bị Cisco FirePower có cung cấp API:
    Firepower Thread Defense (FTD): REST API tự động hóa quản lý cấu hình và thực thi các tác vụ trên thiết bị FTD.
    FMC: Các API rất đa dạng để trao đổi thông tin về mạng và các dữ liệu bảo mật đầu cuối và các thông tin về host.
    FXOS Firepower Chassis Manager: REST API cho các thiết bị Firepower 9300 Chassis. Nó bao gồm cả API loại cấu hình và API giám sát.
    Hình bên dưới mô tả cách gọi REST đến FTD

    Click image for larger version

Name:	dataurl951365.png
Views:	8
Size:	19.4 KB
ID:	438274

    Các trường hợp ứng dụng của FTD API
    Bạn có thể dùng FTD API để thực thi các tác vụ sau:
    • Cấu hình các chính sách và các cài đặt
      • Quản lý chính sách
      • Quản lý chính sách của tường lửa.
      • Quản lý các cài đặt thiết bị.
    • Cấu hình phần logging và tích hợp cho cloud:
      • Cấu hình phần syslog logging (IPS, file/malware, connection).
      • Cấu hình phần kết nối lên cloud.
      • Cấu hình phần smart license.
    • Tự động hóa cấu hình thiết bị:
      • Ansible Automation
      • Dùng Python hay một ngôn ngữ lập trình khác
      • Chuẩn xác thực công nghiệp OAuth authentication
    9.4.1. Xác thực


    Các API Firepower đã là một phần của phần mềm FMC theo mặc định và điều duy nhất cần thiết là bật chúng qua giao diện người dùng. Các API của Firepower sử dụng xác thực dựa trên mã thông báo cho người dùng API. Hãy xem xét ví dụ đơn giản được hiển thị trong Ví dụ. Nó sử dụng lệnh request Python để gọi REST, phương thức POST và API https://fmcrestapisandbox.cisco.com/api/fmc_platform/v1/auth/generatetoken.

    Ví dụ Code Python để tạo session token cho FMC:


    """ Generate the session token for FMC """
    >>>import requests
    >>>import urllib3
    >>>urllib3.disable_warnings(urllib3.exceptions.I ns ecureRequestWarning)
    >>>url ="https://fmcrestapisandbox.cisco.com/api/fmc_platform/v1/auth/generatetoken"
    >>>headers = {
    'Content-Type': "application/xml",
    'Authorization': "Basic
    YXNodXRvc2g6V0JVdkE5TXk=",
    }
    >>>response = requests.request("POST", url, headers=headers)
    >>>print(response.headers)


    Tiêu đề phản hồi chứa 'X-auth-access-token': "03d91b3f-eeff-4056-a4a7-e121ddcf8910", cần được sử dụng trong tất cả các lệnh gọi API tiếp theo.

    2. Thông tin Hệ thống (System Information)


    Bằng cách sử dụng 'X-auth-access-token', giờ đây bạn có thể thực hiện lệnh gọi API để lấy phiên bản máy chủ. Ví dụ bên dưới sử dụng lệnh của thư viện Python request để thực hiện lệnh gọi REST, phương thức GET và API.
    https://fmcrestapisandbox.cisco.com/api/fmc_platform /v1/info/serverversion.

    Ví dụ mã Python để lấy phiên bản máy chủ qua API của FMC.


    """ Get Server Version """
    >>>import requests
    >>>url ="https://fmcrestapisandbox.cisco.com/api/fmc_platform/v1/info/serverversion"
    >>>headers = {
    'X-auth-access-token': "2abd7bdc-16f8-477f8022-7f193e71c847",
    }
    >>>response = requests.request("GET", url, headers=headers, verify=False)
    >>>print(response.text)


    Bây giờ bạn đã biết những điều cơ bản về cách truy cập API, bạn có thể khám phá tất cả các API mà FMC cung cấp. Cisco DevNet cung cấp một phiên bản của FMC trong sandbox. Cách dễ nhất để tìm ra các hoạt động cụ thể có sẵn với bất kỳ phiên bản nào là tìm kiếm “FMC API Explorer”. Bạn có thể khởi chạy API Explorer bằng cách sử dụng URL https://fmc_url/api/api-explorer/ hoặc nếu bạn đã đặt trước DevNet sandbox, bạn có thể chỉ cần sử dụng ttps://fmcrestapisandbox.cisco.com/api/apiexplorer/#. Hình bên dưới cho thấy API Explorer, cho phép bạn khám phá tất cả các API FMC tồn tại.

    Click image for larger version

Name:	dataurl951367.png
Views:	7
Size:	23.8 KB
ID:	438275
    Hình API Explorer, Firepower Management Center APIs

    3. Các đối tượng trong FMC


    Trong Trung tâm Quản lý Firepower, một đối tượng được đặt tên là một cấu hình có thể sử dụng lại, liên kết tên với một giá trị. Khi bạn muốn sử dụng giá trị đó, bạn có thể sử dụng tên đối tượng để thay thế. FMC cung cấp nhiều đối tượng được xác định trước, đại diện cho các cấu hình được sử dụng thường xuyên. Bạn có thể sử dụng các đối tượng trong các chính sách, quy tắc, tìm kiếm sự kiện, báo cáo và trang tổng quan. Hệ thống cung cấp nhiều đối tượng được xác định trước đại diện cho các cấu hình thường được sử dụng. Một nhóm đối tượng có thể liên kết với nhiều đối tượng chỉ với một cấu hình duy nhất.

    Kiểu đối tượng (Object Types)

    Đây là các đối tượng bạn có thể tạo trong hệ thống FirePower và cho biết loại đối tượng nào có thể được nhóm lại.
    Kiểu đối tượng (Object Types) Có thể được nhóm lại không? (Groupable?)
    Network
    Port
    Security zone Không
    Application filter – Bộ lọc ứng dụng Không
    VLAN tag
    URL
    Geolocation – tọa độ Không
    Variable set – Tập hợp biến Không
    Security intelligence: Network, DNS, and URL lists and feeds Không
    *Sinkhole Không
    File list - Danh sách file Không
    Cipher suite list - Danh sách bộ mật mã Không
    Distinguished name – Tên phân biệt
    Public key infrastructure (PKI): Internal and trusted CA and internal and external certs - CA nội bộ và đáng tin cậy cũng như chứng chỉ nội bộ và bên ngoài
    Route map Không
    Community list Không
    *Sinkhole (Hố sụt): Sinkhole về cơ bản là một cách chuyển hướng lưu lượng truy cập Internet độc hại để nó có thể được các nhà phân tích bảo mật nắm bắt và phân tích. Sinkhole thường được sử dụng để chiếm quyền kiểm soát botnet bằng cách ngắt tên DNS của botnet được phần mềm độc hại sử dụng.

    Tạo một mạng (network)

    Một đối tượng mạng đại diện cho một hoặc nhiều địa chỉ IP. Chúng ta sử dụng các đối tượng và nhóm mạng trong các đối tượng khác, bao gồm chính sách kiểm soát truy cập, biến mạng, quy tắc nhận dạng, quy tắc khám phá mạng, tìm kiếm sự kiện và báo cáo. Ví dụ cho thấy cách tạo token thông báo, gán token đó trong header, sau đó tạo đối tượng mạng. Lưu ý rằng phiên bản FMC trong ví dụ sử dụng phiên bản DevNet Sandbox (https://fmcrestapisandbox.cisco.com/) của FMC, yêu cầu được đặt trước. Nếu bạn sử dụng ví dụ này, hãy đảm bảo rằng bạn sửa đổi định nghĩa của đối tượng mạng; nếu không, việc tạo đối tượng có thể không thành công vì đối tượng đã có sẵn.

    Ví dụ sử dụng phương thức POST và API /api/fmc_config/v1/domain/"+ uuid + "/object/networks.


    """ generate a session token and create a new network object """
    >>>import json
    >>>import requests
    ## Globals used in this file
    >>>url ="https://fmcrestapisandbox.cisco.com/api/fmc_platform/v1/auth/generatetoken"
    >>>server = "https://fmcrestapisandbox.cisco.com"
    >>>username = "johnsmith"
    >>>password = "pwgDvQt3"
    >>>domain = "Global"
    >>>token = ""
    >>>headers = {
    'Content-Type': "application/json",
    }
    ## Definition of Lab Network (10.10.10.0)
    >>>network_lab = {
    "name": "labnetwork-1",
    "value": "10.10.10.0/24",
    "overridable": False,
    "description": "Lab Network Object",
    "type": "Network"
    }
    >>>def networkOject(network, uuid):
    """ Create a new Network object """
    >>> netpath = "/api/fmc_config/v1/domain/" + uuid + "/object/networks"
    >>> url = server + netpath
    >>> print("-------------------")
    >>> print(headers)
    >>> try:
    >>> response = requests.post(url, data=json.dumps(network), headers=headers, verify=False)
    >>> status_code = response.status_code
    >>> resp = response.text
    >>> json_response = json.loads(resp)
    >>> print("status code is: " + str(status_code))
    >>> if status_code == 201 or status_code ==202:
    >>> print("Successfully network created")
    >>> else:
    >>> response.raise_for_status()
    >>> return json_response["name"],json_response["id"]
    >>> except requests.exceptions.HTTPError as err:
    >>> print("Reason Code: " + str(err))
    >>> finally:
    >>> if response:
    >>> response.close()
    >>>def generateSessionToken():
    """ Generate a new session token using the username and password """
    >>> global uuid
    >>> global headers
    >>> tokenurl ="/api/fmc_platform/v1/auth/generatetoken"
    >>> url = server + tokenurl
    >>> response = requests.request("POST", url, headers=headers, auth=requests.auth.HTTPBasicAuth(username,password ), verify=False )
    >>> print(response.headers)
    >>> status_code = response.status_code
    >>> if status_code == 201 or status_code == 202:
    >>> print("Successfully network created")
    >>> else:
    >>> response.raise_for_status()
    >>> auth_headers = response.headers
    >>> token = auth_headers.get('X-auth-accesstoken', default=None)
    >>> headers['X-auth-access-token'] = token
    >>> domains = auth_headers.get('DOMAINS', default=None)
    >>> domains = json.loads("{"domains":" + domains + "}")
    >>> for item in domains["domains"]:
    >>> if item["name"] == domain:
    >>> uuid = item["uuid"]
    >>> else:
    >>> print("no UUID for the domain found!")
    >>> print(domains)
    >>> print(uuid)
    >>> print(headers)
    ## Main - Entry point - Invoke generate token and create network object
    >>>if __name__ == "__main__":
    >>> generateSessionToken()
    >>> networkOject(network_lab, uuid)





Working...
X