Ufw

De Banane Atomic
Aller à la navigationAller à la recherche

Liens

Configuration

Bash.svg
# allow any protocol from inside 192.168.0.0/24 LAN
ufw allow from 192.168.0.0/24
# allow incoming rate limited SSH traffic from anywhere
ufw limit ssh

Applications

Bash.svg
# lister les configurations pour les applications (/etc/ufw/applications.d/*)
ufw app list

# appliquer la configuration d'une application
ufw allow MyApp comment 'tcp xx'

# ne plus appliquer la configuration d'une application
ufw delete allow MyApp

Démarrage / status

Bash.svg
# démarre/stoppe ufw et l'ajoute/le retire des programmes à lancer au démarrage
ufw enable
ufw disable

# démarre ufw
ufw reload

# lister les régles
ufw status verbose

ufw doesn't start at startup

/lib/systemd/system/ufw.service
#Before=network.target
After=network-pre.target  # doesn't work
After=netfilter-persistent.service  # doesn't work

Manipulation

Bash.svg
# lister les règles ajoutées
ufw show added

# autoriser les connections tcp sur le port 53
ufw allow 53/tcp comment 'DNS tcp port 53'
# interdire les connections udp sur le port 53
ufw deny 53/udp

# autoriser une ip à accéder au port 22 en tcp quelle que soit la destination (any)
ufw allow from 192.168.0.1 to any port 22 proto tcp

# supprimer le règle qui autorise les connections tcp sur le port 53
ufw deny 53/tcp

# lister les régles avec leur numéro
ufw status numbered

# supprimer la règle numéro 2
ufw delete 2

# insérer une règle en position 1
ufw insert 1 allow 53/tcp
Once a rule is matched the others will not be evaluated so you must put the specific rules first.

default rules

/etc/ufw/user.rules
*filter
:ufw-user-input - [0:0]
:ufw-user-output - [0:0]
:ufw-user-forward - [0:0]
:ufw-before-logging-input - [0:0]
:ufw-before-logging-output - [0:0]
:ufw-before-logging-forward - [0:0]
:ufw-user-logging-input - [0:0]
:ufw-user-logging-output - [0:0]
:ufw-user-logging-forward - [0:0]
:ufw-after-logging-input - [0:0]
:ufw-after-logging-output - [0:0]
:ufw-after-logging-forward - [0:0]
:ufw-logging-deny - [0:0]
:ufw-logging-allow - [0:0]
:ufw-user-limit - [0:0]
:ufw-user-limit-accept - [0:0]
### RULES ###

### tuple ### allow tcp 22 0.0.0.0/0 any 0.0.0.0/0 in
-A ufw-user-input -p tcp --dport 22 -j ACCEPT

### END RULES ###

### LOGGING ###
-A ufw-after-logging-input -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10
-A ufw-after-logging-forward -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10
-I ufw-logging-deny -m conntrack --ctstate INVALID -j RETURN -m limit --limit 3/min --limit-burst 10
-A ufw-logging-deny -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10
-A ufw-logging-allow -j LOG --log-prefix "[UFW ALLOW] " -m limit --limit 3/min --limit-burst 10
### END LOGGING ###

### RATE LIMITING ###
-A ufw-user-limit -m limit --limit 3/minute -j LOG --log-prefix "[UFW LIMIT BLOCK] "
-A ufw-user-limit -j REJECT
-A ufw-user-limit-accept -j ACCEPT
### END RATE LIMITING ###
COMMIT

Commandes

Bash.svg
# liste des règles
sudo ufw status verbose

# redémarrer le firewall
sudo service ufw restart
sudo ufw reload

Règles

/etc/ufw/before.rules
-A ufw-before-input -p 2 -d 224.0.0.1 -j ACCEPT
/etc/ufw/before6.rules
# règle pour autoriser le multicast
-A ufw6-before-input -p icmpv6 --icmpv6-type 130 -s fe80::/10 -j ACCEPT
Bash.svg
ufw deny from 0.0.0.0

Log

Multicast

/var/log/ufw.log
[UFW BLOCK] IN=eth0 OUT= MAC=01:00:5e:00:00:01:e8:b7:48:bb:29:94:08:00 
                         SRC=0.0.0.0
                         DST=224.0.0.1
    LEN=32 TOS=0x00 PREC=0xC0 TTL=1 ID=0 DF PROTO=2 

# depuis le serveur lui-même
SRC=0.0.0.0
# NDP (neighbor discovery protocol) uses 224.0.0.1 to send a packet in multicast
# 224.0.0.0/8 adresses multicast
DST=224.0.0.1

[UFW BLOCK] IN=eth0 OUT= MAC=33:33:00:00:00:01:00:30:18:54:28:2a:86:dd 
                         SRC=fe80:0000:0000:0000:0230:18ff:fe54:282a 
                         DST=ff02:0000:0000:0000:0000:0000:0000:0001 
    LEN=72 TC=0 HOPLIMIT=1 FLOWLBL=0 PROTO=ICMPv6 TYPE=130 CODE=0 

# depuis le serveur lui-même (ipv6 du serveur)
SRC=fe80:0000:0000:0000:0230:18ff:fe54:282a
# NDP (neighbor discovery protocol) uses ff02::1 to send a packet in multicast
DST=ff02:0000:0000:0000:0000:0000:0000:0001
Bash.svg
# ufw ne log plus s'il trouve une règle qui correspond
# il suffit donc d'autoriser ou d'interdire ces flux
sudo ufw deny from 0.0.0.0 to 224.0.0.1
sudo ufw deny from fe80::0230:18ff:fe54:282a to ff02::1

Erreurs

UFW ne se lance pas au démarrage

En l'absence de solution, cron peut lancer UFW après un reboot.

crontab
@reboot root ufw enable