„Ubuntu bástyagép tűzfal (Fossa)” változatai közötti eltérés

Innen: AdminWiki
Ugrás a navigációhoz Ugrás a kereséshez
46. sor: 46. sor:
iptables -n -L      # A létrehozott iptables beállítások</pre>
iptables -n -L      # A létrehozott iptables beállítások</pre>
===A kimenő forgalom szigorítása===
===A kimenő forgalom szigorítása===
Alapértelmezetten a kimenő forgalomra az ''ACCEPT'' policy van beállítva, azaz a kimenő forgalmat nem szűrjük. ''Opcionálisan'' de javasoltan érdemes lehet kifelé csak a DNS lekérés, a traceroute, a levélküldés SMTP-vel (+SMTPs, [https://en.wikipedia.org/wiki/Message_submission_agent MSA]), az időszinkron NTP protokollal, PGP kulcsszerverek elérése ([https://en.wikipedia.org/wiki/Key_server_(cryptographic) HKP]), a web és az FTP forgalmakat engedélyezni. Opcionálisan az SSH is engedélyezett lehet.
Alapértelmezetten a kimenő forgalomra az ''ACCEPT'' policy van beállítva, azaz a kimenő forgalmat nem szűrjük. ''Opcionálisan'' de javasoltan érdemes lehet kifelé csak a ping és traceroute, a DNS lekérés, a levélküldés SMTP-vel (+SMTPs, [https://en.wikipedia.org/wiki/Message_submission_agent MSA]), az időszinkron NTP protokollal, PGP kulcsszerverek elérése ([https://en.wikipedia.org/wiki/Key_server_(cryptographic) HKP]), a web és az FTP forgalmakat engedélyezni. Opcionálisan az SSH is engedélyezett lehet.  
 
Az ICMP forgalom megtartására szúrjuk be az alábbi parancssort a ''/etc/ufw/before.rules'' állományba:
<pre>-rw-r----- root root /etc/ufw/before.rules
 
[...]
# ok all icmp for output
-A ufw-before-output -p icmp -j ACCEPT
 
# allow dhcp client to work
[...]</pre>
A többi korlátozást az alábbi parancsok egyszeri kiadásával írhatjuk elő:
<pre>ufw allow out domain
ufw allow out smtp
ufw allow out smtps
ufw allow out submission
ufw allow out ntp
ufw allow out hkp
ufw allow out http
ufw allow out https
ufw allow out ftp
ufw default reject outgoing  # Minden mást visszadobunk
</pre>
Ellenőrzésképpen kérjünk egy státuszt:
<pre>ufw status numbered</pre>
<pre>Status: active
 
    To                        Action      From
    --                        ------      ----
[ 1] OpenSSH                    ALLOW IN    Anywhere                 
[ 2] 53                        ALLOW OUT  Anywhere                  (out)
[ 3] 25/tcp                    ALLOW OUT  Anywhere                  (out)
[ 4] 465/tcp                    ALLOW OUT  Anywhere                  (out)
[ 5] 587/tcp                    ALLOW OUT  Anywhere                  (out)
[ 6] 123/udp                    ALLOW OUT  Anywhere                  (out)
[ 7] 11371/tcp                  ALLOW OUT  Anywhere                  (out)
[ 8] 80/tcp                    ALLOW OUT  Anywhere                  (out)
[ 9] 443/tcp                    ALLOW OUT  Anywhere                  (out)
[10] 21/tcp                    ALLOW OUT  Anywhere                  (out)
</pre>


==Tűzfalnapló átirányítása==
==Tűzfalnapló átirányítása==

A lap 2020. május 2., 22:19-kori változata

A Hálózati házirend szerint valamennyi szervert bastion host-ként kell kialakítani, azaz saját (csomagszűrő) tűzfallal kell rendelkezzen. A gyakorlatban ez a Linux kernel netfilter (iptables) konfigurálását jelenti, amelyet ebben a leírásban az Ubuntu terjesztésben alapértelmezetten telepített UFW (Uncomplicated Firewall) parancssori frontend segítségével valósítunk meg.

  • Ez a leírás a majdani publikus eléréshez szükséges, alapvető csomagszűrést valósít meg, egy darab hálózati interface-szel rendelkező szervergépen.
  • Ez a leírás csak IPv4-re vonatkozik - IPv6 TODO!

A beállításokat rendszergazda konzolon (sudo -i) célszerű elvégezni.

Hálózati segédeszközök

Elsősorban az ifconfig használatához szokott rendszergazdáknak opcionálisan célszerű a net-tools csomag telepítése:

apt install net-tools

Az IPv6 tiltása

Tisztán IPv4 környezetben opcionálisan érdemes teljesen letiltani az IPv6 forgalmat. Ehhez készítsünk egy overlay kernel paraméter beállító állományt:

-rw-r--r-- root root /etc/sysctl.d/local.conf

# Disable IPv6 entirely
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.lo.disable_ipv6=1

Érvényesítsük a beállításokat:

systemctl restart systemd-sysctl

Ellenőrzés: az ifconfig vagy ip a parancsok kimenete már nem mutat IPv6 címeket. Ez a beállítás a rendszer újraindítása után is megmarad.

UFW alapbeállítások

Amennyiben az IPv6-ot fentebb letiltottuk, ezt a beállítást vezessük át a /etc/default/ufw állományban is:

-rw-r--r-- /etc/default/ufw

[...]
# Set to yes to apply rules to support IPv6 (no means only IPv6 on loopback
# accepted). You will need to 'disable' and then 'enable' the firewall for
# the changes to take affect.
IPV6=no
[...]

A bejövő forgalom engedélyezése

Alapértelmezésben az ufw inaktív, és az iptables nem tartalmaz szabályokat:

ufw status      # inactive
iptables -n -L  # mindhárom chain üres

Mivel a /etc/default/ufw állományban előírt ufw policy a bejövő forgalom tiltása, mielőtt aktiválnánk a csomagszűrést, mindenképpen engedélyezzük a kívülről csatlakozást legalább az OpenSSH szolgáltatáshoz:

ufw app info OpenSSH   # case-sensitive! - ellenőrizzük a portszámot
ufw allow OpenSSH      # állítsuk be a szabályt

A fenti parancsban az alkalmazással együtt települő alkalmazásleírásra (/etc/ufw/application.d alatti állomány) hivatkoztunk, így nem kellett közvetlenül portszámokat megadni. A létrehozott tűzfal szabályok megtekinthetőek a /etc/ufw/user.rules állományban.

Ezután bekapcsolhatjuk a csomagszűrést:

ufw enable
ufw status verbose  # Status: active
iptables -n -L      # A létrehozott iptables beállítások

A kimenő forgalom szigorítása

Alapértelmezetten a kimenő forgalomra az ACCEPT policy van beállítva, azaz a kimenő forgalmat nem szűrjük. Opcionálisan de javasoltan érdemes lehet kifelé csak a ping és traceroute, a DNS lekérés, a levélküldés SMTP-vel (+SMTPs, MSA), az időszinkron NTP protokollal, PGP kulcsszerverek elérése (HKP), a web és az FTP forgalmakat engedélyezni. Opcionálisan az SSH is engedélyezett lehet.

Az ICMP forgalom megtartására szúrjuk be az alábbi parancssort a /etc/ufw/before.rules állományba:

-rw-r----- root root /etc/ufw/before.rules

[...]
# ok all icmp for output
-A ufw-before-output -p icmp -j ACCEPT

# allow dhcp client to work
[...]

A többi korlátozást az alábbi parancsok egyszeri kiadásával írhatjuk elő:

ufw allow out domain
ufw allow out smtp
ufw allow out smtps
ufw allow out submission
ufw allow out ntp
ufw allow out hkp
ufw allow out http
ufw allow out https
ufw allow out ftp
ufw default reject outgoing  # Minden mást visszadobunk

Ellenőrzésképpen kérjünk egy státuszt:

ufw status numbered
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] OpenSSH                    ALLOW IN    Anywhere                  
[ 2] 53                         ALLOW OUT   Anywhere                   (out)
[ 3] 25/tcp                     ALLOW OUT   Anywhere                   (out)
[ 4] 465/tcp                    ALLOW OUT   Anywhere                   (out)
[ 5] 587/tcp                    ALLOW OUT   Anywhere                   (out)
[ 6] 123/udp                    ALLOW OUT   Anywhere                   (out)
[ 7] 11371/tcp                  ALLOW OUT   Anywhere                   (out)
[ 8] 80/tcp                     ALLOW OUT   Anywhere                   (out)
[ 9] 443/tcp                    ALLOW OUT   Anywhere                   (out)
[10] 21/tcp                     ALLOW OUT   Anywhere                   (out)

Tűzfalnapló átirányítása

Érdemes elkülöníteni a terjedelmes tűzfal naplót a kernel naplójától. Ehhez készítsünk egy overlay állományt a syslog-ng konfigurációjához:

-rw-r--r-- /etc/syslog-ng/conf.d/ufw.conf

# Separate UFW logging

destination d_ufw
    { file ("/var/log/ufw.log" owner(root) group(adm)); };

filter f_ufw
    { match ("[UFW " value ("MESSAGE")); };
                                        
log { source (s_src); filter (f_ufw); destination (d_ufw); flags(final); };

A beállítás érvényesítéséhet indítsuk újra a syslog-ng-t:

systemctl restart syslog-ng

Mivel a /etc/logrotate.d már tartalmazza a vonatkozó konfigurációs állományt, az új log rotálásáról külön gondoskodni nem kell.