How-To Alpine Wall: Difference between revisions
(→Structure: Highlighting code sections) |
(Highlighting code sections) |
||
Line 71: | Line 71: | ||
Now we will configure AWall to do the same thing as we just did with the above Shorewall example. | Now we will configure AWall to do the same thing as we just did with the above Shorewall example. | ||
Create a new file called | Create a new file called <code>/usr/share/awall/optional/test-policy.json</code> and add the following content to the file.<BR> | ||
{{Tip|You could call it something else as long as you save it in | {{Tip|You could call it something else as long as you save it in <code>/usr/share/awall/optional/</code> and name it <code>???'''.json'''</code>)}} | ||
<pre> | <pre> | ||
{ | { | ||
Line 110: | Line 110: | ||
= Advanced Firewall settings = | = Advanced Firewall settings = | ||
Assuming you have your | Assuming you have your <code>/usr/share/awall/optional/test-policy.json</code> with your "Basic home firewall" settings, you could choose to modify that file to test the below examples. | ||
{{tip|You could create new files in | {{tip|You could create new files in <code>/usr/share/awall/optional/</code> for testing some of the below examples}} | ||
== Logging == | == Logging == | ||
Line 122: | Line 122: | ||
== Port-Forwarding == | == Port-Forwarding == | ||
Let's suppose you have a local web server (192.168.1.10) that you want to make accessible from the "inet".<BR> | Let's suppose you have a local web server (192.168.1.10) that you want to make accessible from the "inet".<BR> | ||
With Shorewall you would have a rule like this in your | With Shorewall you would have a rule like this in your <code>/etc/shorewall/rules</code>: | ||
<pre> | <pre> | ||
#ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL | #ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL | ||
Line 149: | Line 149: | ||
* "filter" section where we do the actual port-forwarding (using the variables we just created and using some preexisting "services" definitions) | * "filter" section where we do the actual port-forwarding (using the variables we just created and using some preexisting "services" definitions) | ||
{{Note|If you are adding the above content to a already existing file, then make sure you add "," signs where they are needed!}} | {{Note|If you are adding the above content to a already existing file, then make sure you add "," signs where they are needed!}} | ||
{{Tip|AWall already has a "service" definition list for several services like HTTP, FTP, SNMP, etc. ''(see | {{Tip|AWall already has a "service" definition list for several services like HTTP, FTP, SNMP, etc. ''(see <code>/usr/share/awall/mandatory/services.json</code>)''}} | ||
== Create own service definitions == | == Create own service definitions == | ||
Line 160: | Line 160: | ||
</pre> | </pre> | ||
{{Note|If you are adding the above content to a already existing file, then make sure you add "," signs where they are needed!}} | {{Note|If you are adding the above content to a already existing file, then make sure you add "," signs where they are needed!}} | ||
{{todo|Does the 'home made' definitions override the | {{todo|Does the 'home made' definitions override the <code>/usr/share/awall/mandatory/services.json</code> if they are named likewise}} | ||
== Inherit services or variables == | == Inherit services or variables == |
Revision as of 11:20, 12 October 2012
This material is work-in-progress ... Do not follow instructions here until this notice is removed. |
General
Purpose of this doc is to illustrate Alpine Wall (AWall) by examples.
We will explain AWall from the viewpoint of a Shorewall user.
AWall is available since Alpine v2.4.
Please see Alpine_Wall_User's_Guide for details about the syntax.
Structure
Your AWall firewall configuration file(s) goes to /usr/share/awall/optional
.
You may have multiple configuration files (it is useful to have separate files for eg. HTTP,FTP and other roles).
Each such file is called Policy.
The Policy(s) can be enabled or disabled on the fly by using the "awall [enable|disable]" command.
/etc/shorewall/policy
file.An AWall Policy can contain definitions of:
- variables (like
/etc/shorewall/params
) - zones (like
/etc/shorewall/zones
) - interfaces (like
/etc/shorewall/interfaces
) - policies (like
/etc/shorewall/policy
) - filters and NAT rules (like
/etc/shorewall/rules
) - services (like
/usr/share/shorewall/macro.HTTP
)
Will it actually touch iptables when enabling/disabling a Policy?
Prerequisites
After installing awall package, you need to load the following iptables modules:
modprobe ip_tables modprobe iptable_nat #if NAT is used
Make the firewall autostart at boot and autoload the needed modules:
rc-update add iptables
A Basic Home Firewall
We will give a example on how you can create a "Basic home firewall" using Shorewall and AWall.
Example firewall using Shorewall
Let's suppose you have the following Shorewall configuration:
/etc/shorewall/zones
inet ipv4 loc ipv4
/etc/shorewall/interfaces
inet eth0 loc eth1
/etc/shorewall/policy
fw all ACCEPT loc inet ACCEPT all all DROP
/etc/shorewall/masq
eth0 0.0.0.0/0
Example firewall using AWall
Now we will configure AWall to do the same thing as we just did with the above Shorewall example.
Create a new file called /usr/share/awall/optional/test-policy.json
and add the following content to the file.
/usr/share/awall/optional/
and name it ???.json
){ "description": "Home firewall" "zone": { "inet": { "iface": "eth0" }, "loc": { "iface": "eth1" } }, "policy": [ { "in": "_fw", "action": "accept" }, { "in": "loc", "out": "inet", "action": "accept" } ], "snat": [ { "out": "inet", "action": "masquerade" } ] }
The above configuration will:
- Create a description of your Policy
- Define zones
- Define policy
- Define snat (to masqurade the outgoing traffic)
This needs some research and/or modify the above example
Activating/Applying a Policy
After saving the Policy you can run the following commands to activate your firewall settings:
awall list # Listing available 'Policy(s)' (This step is optional) awall enable test-policy # This enables the 'Policy' awall activate # This command genereates firewall configuration from the 'Policy' files and enables it (starts the firewall)
Advanced Firewall settings
Assuming you have your /usr/share/awall/optional/test-policy.json
with your "Basic home firewall" settings, you could choose to modify that file to test the below examples.
/usr/share/awall/optional/
for testing some of the below examplesLogging
AWall will (since v.0.2.7) automatically log dropped packets.
You could add the following row to the "policy" section in your Policy file in order to see the dropped packets.
{ "in": "inet", "out": "loc", "action": "drop" }
Port-Forwarding
Let's suppose you have a local web server (192.168.1.10) that you want to make accessible from the "inet".
With Shorewall you would have a rule like this in your /etc/shorewall/rules
:
#ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL # PORT(S) PORT(S) DEST DNAT inet loc:192.168.1.10 tcp 80
Lets configure our AWall Policy file likewise by adding the following content.
"variable": { "APACHE": "192.168.1.10", "STATIC_IP": "1.2.3.4" }, "filter": [ { "in": "inet", "dest": "$STATIC_IP", "service": "http", "action": "accept", "dnat": "$APACHE" } ]
As you can see in the above example, we create a
- "variable" section where we specify some IP-addresses
- "filter" section where we do the actual port-forwarding (using the variables we just created and using some preexisting "services" definitions)
/usr/share/awall/mandatory/services.json
)Create own service definitions
You can add your own service definitions into your Policy files:
"service": { "openvpn": { "proto": "udp", "port": 1194 } }
/usr/share/awall/mandatory/services.json
if they are named likewise
Inherit services or variables
You can import a Policy into other Policy files for inheriting services or variables definitions:
"import": "myfirewall"
Specify load order
By default policies are loaded on alphabetical order.
You can change the load order with the keywords "before" and "after":
"before": "myfirewall" "after": "someotherpolicy"