GNU/Linux >> Znalost Linux >  >> Linux

Omezte přístup k linuxovým serverům pomocí TCP Wrapperů

TCP Wrapper je open source hostitelský systém ACL (Access Control List), který se používá k omezení síťových služeb TCP na základě názvu hostitele, IP adresy, síťové adresy a tak dále. Rozhoduje, kterému hostiteli by měl být povolen přístup ke konkrétní síťové službě. TCP Wrapper byl vyvinut holandským programátorem a fyzikem Wietse Zweitze Venema v roce 1990 na Eindhoven University of Technology. Udržoval jej do roku 1995 a poté jej vydal pod licencí BSD v roce 2001. V tomto stručném průvodci vysvětlím, jak omezit přístup k linuxovým serverům pomocí TCP Wrappers.

Mějte prosím na paměti, že TCP Wrapper není úplnou náhradou za správně nakonfigurovaný firewall . Je to jen cenný doplněk ke zvýšení zabezpečení vašeho linuxového serveru. Je doporučeno jej používat ve spojení s plně nakonfigurovaným firewallem a dalšími bezpečnostními mechanismy a nástroji.

Instalace TCP Wrappers

TCP Wrappers je k dispozici v oficiálních repozitářích většiny operačních systémů Linux.

V závislosti na distribuci Linuxu, kterou používáte, ji lze nainstalovat, jak je uvedeno níže.

Na systémech založených na Arch:

$ sudo pacman -S tcp_wrappers

V systémech založených na YUM:

$ sudo yum install tcp_wrappers

Na systémech založených na APT:

$ sudo apt-get install tcp_wrappers

Na systémech SUSE/openSUSE:

$ sudo zypper in tcp_wrappers

Omezit přístup k linuxovým serverům pomocí TCP Wrapperů

Konfigurace

TCP Wrappers implementuje řízení přístupu pomocí dvou konfiguračních souborů:/etc/hosts.allow a /etc/hosts.deny . Tyto dva soubory přístupového seznamu rozhodují o tom, zda konkrétní klienti mají nebo nemají povolen přístup k vašemu linuxovému serveru.

Soubor /etc/hosts.allow

Tento soubor obsahuje seznam povolených nebo nepovolených hostitelů nebo sítí. To znamená, že můžeme povolit nebo zakázat připojení k síťovým službám definováním pravidel přístupu v tomto souboru.

Soubor /etc/hosts.deny

Tento soubor obsahuje seznam hostitelů nebo sítí, které nemají povolen přístup k vašemu serveru Linux. Pravidla přístupu v tomto souboru lze také nastavit v /etc/hosts.allow s 'deny' možnost.

Typická syntaxe pro definování pravidla přístupu je:

daemon_list : client_list : option : option ...

Kde,

  • seznam_démonů - Název síťové služby, jako je SSH, FTP, Portmap atd.
  • seznam_klientů – Čárkami oddělený seznam platných názvů hostitelů, IP adres nebo síťových adres.
  • možnosti – Volitelná akce, která určuje, co se má udělat, kdykoli dojde ke shodě pravidla.

Syntaxe je stejná pro oba soubory.

Pravidla k zapamatování

Před použitím TCP Wrapperů musíte znát následující důležitá pravidla. Mějte prosím na paměti, že TCP Wrapper konzultuje pouze tyto dva soubory (hosts.allow a hosts.deny).

  • Nejprve se použijí pravidla přístupu v souboru /etc/hosts.allow. Mají přednost před pravidly v souboru /etc/hosts.deny. Pokud je tedy přístup ke službě povolen v /etc/hosts.allow soubor a pravidlo zakazující přístup ke stejné službě v /etc/hosts.deny je ignorováno.
  • V obou souborech (hosts.allow a hosts.deny) je povoleno pouze jedno pravidlo na službu.
  • Pořadí pravidel je velmi důležité. Zohledněno bude pouze první párovací pravidlo pro danou službu. Totéž platí pro oba soubory.
  • Pokud v žádném ze souborů neexistují žádná odpovídající pravidla pro službu nebo pokud žádný soubor neexistuje, bude přístup ke službě udělen všem vzdáleným hostitelům.
  • Jakékoli změny v obou souborech se projeví okamžitě bez restartování síťových služeb.

Doporučený přístup k zabezpečení serveru

Obecně platí, že nejlepším postupem pro zabezpečení linuxového serveru je zablokovat všechna příchozí připojení a povolit pouze několik konkrétních hostitelů nebo sítí. Chcete-li tak učinit, upravte /etc/hosts.deny soubor:

$ sudo vi /etc/hosts.deny

Přidejte následující řádek. Tato linka odmítá připojení ke VŠEM službám a VŠEM sítím.

ALL: ALL

Poté upravte /etc/hosts.allow soubor:

$ sudo vi /etc/hosts.allow

a povolit konkrétní hostitele nebo sítě podle vašeho výběru.

sshd: 192.168.43.192 192.168.43.193

Můžete také zadat platné názvy hostitelů namísto adresy IP, jak je uvedeno níže.

sshd: server1.ostechnix.lan server2.ostechnx.lan

Případně můžete udělat totéž tak, že definujete všechna pravidla (jak povolit, tak zakázat) v samotném souboru /etc/hosts.allow.

Upravte /etc/hosts.allow soubor a přidejte následující řádky.

sshd: 192.168.43.192 192.168.43.193
sshd: ALL: DENY

V /etc/hosts.deny nemusíte zadávat žádné pravidlo soubor.

Podle výše uvedeného pravidla budou všechna příchozí spojení odepřena všem hostitelům kromě dvou hostitelů 192.168.43.192, 192.168.43.193.

Nyní zkuste SSH na váš linuxový server z libovolného hostitele kromě výše uvedených, zobrazí se následující chyba.

ssh_exchange_identification: read: Connection reset by peer

Můžete to ověřit ze souborů protokolu vašeho serveru Linux, jak je uvedeno níže.

$ cat /var/log/secure

Ukázkový výstup:

Jun 16 19:40:17 server sshd[15782]: refused connect from 192.168.43.150 (192.168.43.150)

Podobně můžete definovat pravidla pro další služby, například vsftpd, v /etc/hosts.allow soubor, jak je uvedeno níže.

vsftpd: 192.168.43.192 
vsftpd: ALL: DENY

Opět nemusíte definovat žádná pravidla v /etc/hosts.deny soubor. Podle výše uvedeného pravidla má vzdálený hostitel s IP adresou 192.168.43.192 povolen přístup k serveru Linux přes FTP. Všichni ostatní hostitelé budou zamítnuti.

Také můžete definovat přístupová pravidla v různých formátech v souboru /etc/hosts.allow, jak je uvedeno níže.

sshd: 192.168.43.192				#Allow a single host for SSH service
sshd: 192.168.43.0/255.255.255.0		#Allow a /24 prefix for SSH
vsftpd: 192.168.43.192				#Allow a single host for FTP
vsftpd: 192.168.43.0/255.255.255.0	        #Allow a /24 prefix for FTP
vsftpd: server1.ostechnix.lan                   #Allow a single host for FTP

Povolit všechny hostitele kromě konkrétního hostitele

Můžete povolit příchozí připojení od všech hostitelů, ale ne od konkrétního hostitele. Řekněme například, že chcete povolit příchozí připojení od všech hostitelů v 192.168.43 podsíť, ale ne od hostitele 192.168.43.192 , přidejte následující řádek do /etc/hosts.allow soubor.

ALL: 192.168.43. EXCEPT 192.168.43.192

Ve výše uvedeném případě nemusíte do souboru /etc/hosts.deny přidávat žádná pravidla.

Nebo můžete místo IP adresy zadat název hostitele, jak je uvedeno níže.

ALL: .ostechnix.lan EXCEPT badhost.ostechnix.lan

Další podrobnosti naleznete na manuálových stránkách.

$ man tcpd

Přečtěte si také: 

  • Povolení nebo odepření přístupu SSH konkrétnímu uživateli nebo skupině v systému Linux
  • Omezit počet přihlášení SSH na uživatele/skupinu/systém

Opět nezapomínejme, že TCP Wrapper není náhradou za firewall. Měl by být používán ve spojení s firewally a dalšími bezpečnostními nástroji.


Linux
  1. Jak Linux zpracovává více po sobě jdoucích oddělovačů cest (/home////username///soubor)?

  2. Linux – Jak omezit přístup k internetu pro konkrétního uživatele v síti LAN pomocí Iptables v Linuxu?

  3. Linux – sloučení /usr/bin A /usr/sbin do /bin (gnu/linux)?

  1. TCP Wrapper (hosts.allow &hosts.deny) Možnosti příkazů v Linuxu

  2. Pochopení TCP Wrappers (/etc/hosts.allow &/etc/hosts.deny) v Linuxu

  3. Pochopení souboru /etc/hosts v Linuxu

  1. Proč jsou < nebo > vyžadovány pro použití /dev/tcp

  2. Rozdíl mezi /etc/hosts a /etc/resolv.conf

  3. Limit velikosti /etc/hosts (Linux)