# Secure an application

import DocButton from '~/components/webkit/DocButton.vue';
import Tag from '~/components/webkit/Tag.vue'

**Firewall** allows you to secure your [applications](/en/documentation/products/guides/build/build-an-application/) and [domains](/en/documentation/products/guides/configure-a-domain/) against several types of threats and attacks.

Azion provides a range of tools to configure your Firewall:

- [Azion Console](https://console.azion.com): provides a user-friendly interface to configure your Firewall and rule sets.
- [Azion API](https://api.azion.com/#e21929ff-f172-44d0-a3dc-58ecc11b652e): allows you to create, configure, and automate Firewalls and its related modules and features.
- [Azion SDK](/en/documentation/products/secure/automate/sdk/): allows you to improve the development of your Go application.
- [Terraform](/en/documentation/products/secure/automate/terraform/): provides integration for your infrastructure with Azion using Terraform. Configurations available for main settings and functions instances.
- [Azion Runtime](/en/documentation/products/secure/automate/functions/): leverages APIs for networking and data handling.

---

## Step 1: Configure main settings

To create an Firewall, the first step is to provide:

- A unique and easy-to-remember name.
- The domains you want to associate with the firewall.
- The modules you want to use.
    - This is an optional step, but to fully secure your applications, it's recommended to enable all available modules.

Optionally, you can also enable the **Debug Rules** feature.

<DocButton href="/en/documentation/products/guides/secure/firewall-configure-main-settings/" label="go to configure main settings guide" kind="secondary" size="medium" />

---

## Step 2: Choose a function to instantiate

The second step is to instantiate an function.

Requires:

<Tag severity="info">[Functions for Firewall](/en/documentation/products/secure/firewall/functions/)</Tag>

Instantiating an existing function created for security purposes reinforces your security policies and adds another layer of protection for your applications.

The instantiation step also allows you to apply specific and customized logic to your functions.

<DocButton href="/en/documentation/products/guides/secure/instantiate-functions/" label="go to instantiate Functions guide" kind="secondary" size="medium" /> <br></br>

<DocButton href="/en/documentation/products/guides/secure/manage-bots/" label="go to manage bots guide" kind="secondary" size="medium" />

---

## Step 3: Configure rules engine variables

The final step is to configure variables on **Rules Engine**. Through *criteria* and *behaviors*, you configure the variables that are supposed to run to secure your applications and the logic in which they should be executed.

Functions and rules run in parallel. It's recommended to use both tools to further improve and guarantee your application's security.

<DocButton href="/en/documentation/products/guides/secure/work-with-rules-engine/" label="go to work with Rules Engine guide" kind="secondary" size="medium" />
---