Manjaro Difference between revisions of "Firewalls"

Difference between revisions of "Firewalls"

From Manjaro
imported>Dalto
(Revamp page and content)
m (untranslated Template inserted)
 
(14 intermediate revisions by 3 users not shown)
Line 1: Line 1:
<languages/>
__TOC__
__TOC__


<translate>
=Overview= <!--T:1-->


=Overview=
<!--T:2-->
 
Running a local firewall is almost always a good practice.  Even when you are behind a network firewall, a local firewall protects you from threats on the inside of your network.
Running a local firewall is almost always a good practice.  Even when you are behind a network firewall, a local firewall protects you from threats on the inside of your network.


=UFW= <!--T:3-->


=UFW=
<!--T:4-->
 
UFW stands for Uncomplicated FireWall, and is a program for managing a netfilter firewall. It provides a command line interface and aims to be uncomplicated and easy to use.  UFW is far simpler than iptables and a good place to start unless you have very specialized needs.
UFW stands for Uncomplicated FireWall, and is a program for managing a netfilter firewall. It provides a command line interface and aims to be uncomplicated and easy to use.  UFW is far simpler than iptables and a good place to start unless you have very specialized needs.


==Installing UFW== <!--T:5-->


==Installing UFW==
<!--T:6-->
 
You can install the {{ic|ufw}} package using you favorite package manager or the command:
You can install the {{ic|ufw}} package using you favorite package manager or the command:
  pamac install ufw
  <tvar|usercmd1>{{UserCmd|command=pamac install ufw}}</>
 


<!--T:7-->
Once UFW is installed you need to start and enable it using the commands:
Once UFW is installed you need to start and enable it using the commands:
  sudo systemctl enable ufw.service
  <tvar|usercmd2>{{UserCmd|command=sudo systemctl enable ufw.service}}</>
  sudo ufw enable
  <tvar|usercmd3>{{UserCmd|command=sudo ufw enable}}</>
 


<!--T:8-->
{{warning|Don't enable both iptables.service and ufw.service}}
{{warning|Don't enable both iptables.service and ufw.service}}


==Adding Rules== <!--T:9-->


==Adding Rules==
<!--T:10-->
To view the current configuration you can use the command {{ic|ufw status}}.  Here is what it looks like in a new install:


To view the current configuration you can use the command {{ic|ufw status}}.  Here is what it looks like in a new install:
<tvar|usercmdoutput1>{{UserCmdOutput|command=sudo ufw status verbose|result=
<pre>
<pre>Status: active
sudo ufw status verbose
Status: active
Logging: on (low)
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
New profiles: skip</pre>
</pre>
}}</>
 


<!--T:11-->
This indicates that it will block all incoming traffic and allow all outgoing traffic.  This is a good starting point for most desktop systems.  However, often we will want to allow some incoming traffic.  This can be done with the command {{ic|ufw allow}}.  For example, if we want to allow incoming ssh traffic so we can connect to the machine from other machines on the network we could use the command:
This indicates that it will block all incoming traffic and allow all outgoing traffic.  This is a good starting point for most desktop systems.  However, often we will want to allow some incoming traffic.  This can be done with the command {{ic|ufw allow}}.  For example, if we want to allow incoming ssh traffic so we can connect to the machine from other machines on the network we could use the command:
  sudo ufw allow ssh
  <tvar|usercmd4>{{UserCmd|command=sudo ufw allow ssh}}</>
 


<!--T:12-->
If we wanted to also tcp connections to a local webserver on a non-standard https port, 8443.  We could use the command:
If we wanted to also tcp connections to a local webserver on a non-standard https port, 8443.  We could use the command:
  sudo ufw allow in 8443/tcp
  <tvar|usercmd5>{{UserCmd|command=sudo ufw allow in 8443/tcp}}</>
 


<!--T:13-->
{{tip|When you don't specify "in" or "out", "in" is assumed}}
{{tip|When you don't specify "in" or "out", "in" is assumed}}


==UFW and Applications== <!--T:14-->


==UFW and Applications==
<!--T:15-->
 
You may notice a difference in the above two commands.  When we built the rules for ssh we used the name and for https we used the port number, 8443.  This is because UFW has a small database of applications it knows the ports for.  You can see the list with the command:
You may notice a difference in the above two commands.  When we built the rules for ssh we used the name and for https we used the port number, 8443.  This is because UFW has a small database of applications it knows the ports for.  You can see the list with the command:
sudo ufw app list
<tvar|usercmd5>{{UserCmd|command=sudo ufw app list}}</>


<!--T:16-->
For applications on the list you can add them by name.  If you want to review the configuration for one of the applications, you can use the command {{ic|ufw app info}}.  For example, to the configuration for ssh:


For applications on the list you can add them by name. If you want to review the configuration for one of the applications, you can use the command {{ic|ufw app info}}.  For example, to the configuration for ssh:
<!--T:17-->
<pre>sudo ufw app info SSH
  <tvar|usercmdoutput2>{{UserCmdOutput|command=sudo ufw app info SSH|result=
Profile: SSH
<pre>Profile: SSH
Title: SSH server
Title: SSH server
Description: SSH server
Description: SSH server
 
Port:
Port:
   22/tcp
   22/tcp</pre>
</pre>
}}</>
 


<!--T:18-->
{{tip|When using ufw app the commands are case sensitive but when adding rules they are not}}
{{tip|When using ufw app the commands are case sensitive but when adding rules they are not}}


 
<!--T:19-->
Some additional preconfigured applications can be added by installing the package {{ic|ufw-extras}} with your favorite package manager or the command:
Some additional preconfigured applications can be added by installing the package {{ic|ufw-extras}} with your favorite package manager or the command:
  pamac install ufw-extras
  <tvar|usercmd7>{{UserCmd|command=pamac install ufw-extras}}</>


==Removing Rules== <!--T:20-->


==Removing Rules==
<!--T:21-->
 
Rules can be removed with the {{ic|ufw delete}} command.  For example, to delete our 8443 rules we could use the command:
Rules can be removed with the {{ic|ufw delete}} command.  For example, to delete our 8443 rules we could use the command:
  sudo ufw delete allow 8443/tcp
  <tvar|usercmd8>{{UserCmd|command=sudo ufw delete allow 8443/tcp}}</>
 


<!--T:22-->
You can also delete them by number.  This is easier if you have a numbered list which you can see with the command:
You can also delete them by number.  This is easier if you have a numbered list which you can see with the command:
<pre>
sudo ufw status numbered
Status: active


     To                        Action      From
<tvar|usercmdoutput3>{{UserCmdOutput|command=sudo ufw status numbered|result=
<pre>Status: active
     <!--T:23-->
To                        Action      From
     --                        ------      ----
     --                        ------      ----
[ 1] 22                        ALLOW IN    Anywhere                
[ 1] 22                        ALLOW IN    Anywhere
[ 2] 22 (v6)                    ALLOW IN    Anywhere (v6)</pre>
[ 2] 22 (v6)                    ALLOW IN    Anywhere (v6)
 
</pre>}}</>


<!--T:24-->
Now if we wanted to stop allowing ssh on ipv6 we could use the command:
Now if we wanted to stop allowing ssh on ipv6 we could use the command:
  sudo ufw delete 2
  <tvar|usercmd9>{{UserCmd|command=sudo ufw delete 2}}</>
 


==GUFW==
==GUFW== <!--T:25-->
[[File:gufw.jpg|thumb|left|240px]]
[[File:gufw.jpg|thumb|left|240px]]


 
<!--T:26-->
Prefer to use GUI applications and still want to manage your firewall? No problem.  GUFW is a GTK front-end for UFW that aims to make managing a Linux firewall as accessible and easy as possible. It features pre-sets for common ports and p2p applications.
Prefer to use GUI applications and still want to manage your firewall? No problem.  GUFW is a GTK front-end for UFW that aims to make managing a Linux firewall as accessible and easy as possible. It features pre-sets for common ports and p2p applications.


 
<!--T:27-->
If it is not installed already gufw can be installed from the repos:
If it is not installed already gufw can be installed from the repos:
  pamac install gufw
  <tvar|usercmdA>{{UserCmd|command=pamac install gufw}}</>
 


<!--T:28-->
It will now be available in the menu as '''Firewall Configuration''' or by running {{ic|gufw}} directly.
It will now be available in the menu as '''Firewall Configuration''' or by running {{ic|gufw}} directly.
<div style="clear: both"></div>
<div style="clear: both"></div>


=iptables= <!--T:29-->


=See Also=
<!--T:30-->
iptables is included as part of the Linux kernel.  iptables is significantly more complicated than using a tool like UFW.  As a result, a full tutorial on iptables is beyond the scope of this wiki.  Using iptables on Manjaro should be the same for every distribution of Linux so there is plenty of available documentation.  Some of this is linked [[Firewalls#See_Also|below]].  Here are some basics to get you started.
 
<!--T:31-->
To enable loading rules on startup you can use the command:
<tvar|usercmdB>{{UserCmd|command=sudo systemctl enable iptables.service}}</>
 
<!--T:32-->
This will load the rules from the file {{ic|/etc/iptables/iptables.rules}}.
 
<!--T:33-->
To display the currently loaded rules:
<tvar|usercmdC>{{UserCmd|command=sudo iptables -L}}</>
 
<!--T:34-->
To save the current rules to a file
<tvar|usercmdD>{{UserCmd|command=sudo sh -c "iptables-save > /etc/iptables/iptables.rules"}}</>
 
<!--T:35-->
To load the rules from a file
<tvar|usercmdE>{{UserCmd|command=sudo sh -c "iptables-restore > /etc/iptables/iptables.rules"}}</>
 
<!--T:36-->
To allow ssh connections
<tvar|usercmdF>{{UserCmd|command=sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT}}</>
<tvar|usercmdG>{{UserCmd|command=sudo iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT}}</>
 
=See Also= <!--T:37-->
* The Arch Wiki on [https://wiki.archlinux.org/index.php/Ufw UFW]
* The Arch Wiki on [https://wiki.archlinux.org/index.php/Ufw UFW]
* The [https://help.ubuntu.com/community/UFW UFW website]
* The [https://help.ubuntu.com/community/UFW UFW website]
* The [http://gufw.org/ GUFW website]
* The [http://gufw.org/ GUFW website]
* The [https://linux.die.net/man/8/iptables iptables man page]
* The Arch Wiki on [https://wiki.archlinux.org/index.php/iptables iptables]
* The Debian Wiki on [https://wiki.debian.org/iptables iptables]
</translate>


 
[[Category:Contents Page{{#translation:}}]]
[[Category:Contents Page]]
[[Category:Security{{#translation:}}]]

Latest revision as of 17:06, 17 September 2021

Other languages:
English

Overview

Running a local firewall is almost always a good practice. Even when you are behind a network firewall, a local firewall protects you from threats on the inside of your network.

UFW

UFW stands for Uncomplicated FireWall, and is a program for managing a netfilter firewall. It provides a command line interface and aims to be uncomplicated and easy to use. UFW is far simpler than iptables and a good place to start unless you have very specialized needs.

Installing UFW

You can install the ufw package using you favorite package manager or the command:

user $ pamac install ufw

Once UFW is installed you need to start and enable it using the commands:

user $ sudo systemctl enable ufw.service
user $ sudo ufw enable


Warning
Don't enable both iptables.service and ufw.service

Adding Rules

To view the current configuration you can use the command ufw status. Here is what it looks like in a new install:

$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip


This indicates that it will block all incoming traffic and allow all outgoing traffic. This is a good starting point for most desktop systems. However, often we will want to allow some incoming traffic. This can be done with the command ufw allow. For example, if we want to allow incoming ssh traffic so we can connect to the machine from other machines on the network we could use the command:

user $ sudo ufw allow ssh

If we wanted to also tcp connections to a local webserver on a non-standard https port, 8443. We could use the command:

user $ sudo ufw allow in 8443/tcp



Tip
When you don't specify "in" or "out", "in" is assumed

UFW and Applications

You may notice a difference in the above two commands. When we built the rules for ssh we used the name and for https we used the port number, 8443. This is because UFW has a small database of applications it knows the ports for. You can see the list with the command:

user $ sudo ufw app list

For applications on the list you can add them by name. If you want to review the configuration for one of the applications, you can use the command ufw app info. For example, to the configuration for ssh:

$ sudo ufw app info SSH
Profile: SSH
Title: SSH server
Description: SSH server
 
 
Port:
  22/tcp



Tip
When using ufw app the commands are case sensitive but when adding rules they are not

Some additional preconfigured applications can be added by installing the package ufw-extras with your favorite package manager or the command:

user $ pamac install ufw-extras

Removing Rules

Rules can be removed with the ufw delete command. For example, to delete our 8443 rules we could use the command:

user $ sudo ufw delete allow 8443/tcp

You can also delete them by number. This is easier if you have a numbered list which you can see with the command:

$ sudo ufw status numbered
Status: active
To                         Action      From
     --                         ------      ----
[ 1] 22                         ALLOW IN    Anywhere
[ 2] 22 (v6)                    ALLOW IN    Anywhere (v6)


Now if we wanted to stop allowing ssh on ipv6 we could use the command:

user $ sudo ufw delete 2

GUFW

Gufw.jpg

Prefer to use GUI applications and still want to manage your firewall? No problem. GUFW is a GTK front-end for UFW that aims to make managing a Linux firewall as accessible and easy as possible. It features pre-sets for common ports and p2p applications.

If it is not installed already gufw can be installed from the repos:

user $ pamac install gufw

It will now be available in the menu as Firewall Configuration or by running gufw directly.

iptables

iptables is included as part of the Linux kernel. iptables is significantly more complicated than using a tool like UFW. As a result, a full tutorial on iptables is beyond the scope of this wiki. Using iptables on Manjaro should be the same for every distribution of Linux so there is plenty of available documentation. Some of this is linked below. Here are some basics to get you started.

To enable loading rules on startup you can use the command:

user $ sudo systemctl enable iptables.service

This will load the rules from the file /etc/iptables/iptables.rules.

To display the currently loaded rules:

user $ sudo iptables -L

To save the current rules to a file

user $ sudo sh -c "iptables-save > /etc/iptables/iptables.rules"

To load the rules from a file

user $ sudo sh -c "iptables-restore > /etc/iptables/iptables.rules"

To allow ssh connections

user $ sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
user $ sudo iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT

See Also

Cookies help us deliver our services. By using our services, you agree to our use of cookies.