TCP wrappery jsou schopny více než jen povolit a zakázat přístup ke službám. Pomocí volitelného argumentu příkazu mohou odesílat bannery připojení, varovat před útoky konkrétních hostitelů a vylepšovat protokolování.
Banner obálky TCP pro službu
Chcete-li implementovat banner wrapper TCP pro službu, použijte volbu banner. Tento příklad implementuje banner pro vsftpd. Potřebujete vytvořit soubor banneru kdekoli v systému a dát mu stejný název jako démon. V tomto příkladu se soubor nazývá /etc/banners/vsftpd a obsahuje následující řádky:
220-Hello, %c 220-All activity on ftp.example.com is logged. 220-Inappropriate use results in access privileges being removed.
%c token poskytuje řadu klientských informací. Token %d (nezobrazeno) se rozšíří na název démona, ke kterému se klient pokusil připojit. Aby se tento banner zobrazoval příchozím připojením, přidejte do souboru /etc/hosts.allow následující řádek:
# vi /etc/hosts.allow vsftpd : ALL : banners /etc/banners/
TCP wrappery pro varování před potenciálními útoky
TCP wrappery vás mohou varovat před potenciálními útoky z hostitele nebo sítě pomocí příkazu spawn. Příkaz spawn provede jakýkoli příkaz shellu. V tomto příkladu probíhá pokus o přístup ze sítě 200.182.68.0/24. Umístěním následujícího řádku do souboru /etc/hosts.deny odepřete veškeré pokusy o připojení z této sítě a zaznamenáte pokusy do speciálního souboru:
# vi /etc/hosts.deny ALL : 200.182.68.0 : spawn /bin/echo `date` %c %d >> /var/log/intruder_alert
Chcete-li připojení povolit a zaprotokolovat, umístěte direktivu spawn do souboru /etc/hosts.allow.
Odmítnout přístup a protokolovat pokus o připojení
Následující záznam v /etc/hosts.deny odepře všem klientům přístup ke všem službám (pokud to není výslovně povoleno v /etc/hosts.allow) a zaznamenává pokus o připojení:
# vi /etc/hosts.deny ALL : ALL : spawn /bin/echo “%c tried to connect to %d and was blocked” >> /var/log/tcpwrappers.log
Úroveň protokolu lze zvýšit pomocí možnosti závažnosti. Předpokládejme, že kdokoli, kdo se pokouší o ssh na FTP server, je vetřelec. Chcete-li to označit, umístěte do souborů protokolu místo výchozího příznaku info a odepřete připojení. Chcete-li to provést, umístěte do /etc/hosts.deny následující řádek:
# vi /etc/hosts.deny sshd : ALL : severity emerg
Toto používá výchozí protokolovací zařízení authpriv, ale zvyšuje prioritu z výchozí hodnoty info na emerg, který odesílá zprávy protokolu přímo do konzole.
Odmítnout přístup z konkrétní domény
Následující příklad uvádí, že pokud dojde k pokusu o připojení k démonu SSH (sshd) z hostitele v doméně example.com, spusťte příkaz echo, abyste tento pokus připojili ke speciálnímu souboru protokolu, a připojení odmítněte. Protože je použita volitelná direktiva deny, tento řádek odepře přístup, i když se objeví v souboru /etc/hosts.allow:
# vi /etc/hosts.allow sshd : .example.com \ : spawn /bin/echo `/bin/date` access denied >> /var/log/sshd.log \ : deny
Každému poli možností (vytvoření a odmítnutí) předchází zpětné lomítko (\), aby se zabránilo selhání pravidla kvůli délce.
Vysvětlení TCP Wrappers (/etc/hosts.allow &/etc/hosts.deny) v Linuxu