3.5. Rode o mínimo de serviços necessários
Serviços são programas como servidores ftp e servidores web. Uma vez que eles tem que estar escutando por conexões que requisitem o serviço, computadores externos podem conectar-se a eles. Serviços algumas vezes são vulneráveis (i.e. podem estar comprometidos sobre um certo ataque) e oferecem risco a segurança.
Você não deve instalar serviços que não são necessários em sua máquina. Todo serviço instalado pode introduzir novos, talvez não óbvios ou conhecidos, buracos de segurança em seu computador.
As you may already know, when you install a given service the default behavior is to activate it. In a default Debian installation, with no services installed, the number of running services is quite low and the number of network-oriented services is even lower. In a default Debian 3.1 standard installation you will end up with OpenSSH, Exim (depending on how you configured it) and the RPC portmapper available as network services
. If you did not go through a standard installation but selected an expert installation you can end up with no active network services. The RPC portmapper is installed by default because it is needed for many services, for example NFS, to run on a given system. However, it can be easily removed, see
Seção 5.13, “Tornando serviços RPC mais seguros” for more information on how to secure or disable RPC services.
Quando você instala um novo serviço de rede (daemon) em seu sistema Debian GNU/Linux ele pode ser habilitado de duas maneiras: através do superdaemon inetd
(uma linha será adicionada ao /etc/inetd.conf
) ou através de um programa que serve de interface. Estes programas são controlados pelos arquivos /etc/init.d
, que são chamados no momento da inicialização através do mecanismo SysV (ou outro alternativo) pelo uso de symlinks em /etc/rc?.d/*
(para mais informações de como isto é feito leia /usr/share/doc/sysvinit/README.runlevels.gz
).
If you want to keep some services but use them rarely, use the
update-*
commands, e.g.
update-inetd
and
update-rc.d
to remove them from the startup process. For more information on how to disable network services read
Seção 3.5.1, “Desabilitando daemons de serviço”. If you want to change the default behaviour of starting up services on installation of their associated packages
use
policy-rc.d
, please read
/usr/share/doc/sysv-rc/README.policy-rc.d.gz
for more information.
invoke-rc.d
support is mandatory in Debian, which means that for Debian 4.0 etch and later releases you can write a policy-rc.d file that forbids starting new daemons before you configure them. Although no such scripts are packaged yet, they are quite simple to write. See policyrcd-script-zg2.
3.5.1. Desabilitando daemons de serviço
Disabling a daemon service is quite simple. You either remove the package providing the program for that service or you remove or rename the startup links under
/etc/rc${runlevel}.d/
. If you rename them make sure they do not begin with 'S' so that they don't get started by
/etc/init.d/rc
. Do not remove all the available links or the package management system will regenerate them on package upgrades, make sure you leave at least one link (typically a 'K', i.e. kill, link). For more information read
http://iwawocd.cewmufwd.tk/doc/manuals/reference/ch-system.en.html#s-custombootscripts section of the Debian Reference (Chapter 2 - Debian fundamentals).
You can remove these links manually or using
update-rc.d
(see
update-rc.d(8)). For example, you can disable a service from executing in the multi-user runlevels by doing:
# update-rc.d name
stop XX
2 3 4 5 .
Observe que, se você
não está usando
file-rc,
update-rc.d -f _service_ remove
não trabalhará apropriadamente, pois embora
todos links sejam removidos, após reinstalação ou upgrade do pacote estes links serão regenerados (provavelmente não é o que você quer). Se pensa que isto não é intuitivo você provavelmente está certo (veja
http://bugs.debian.org/67095). Texto da manpage:
Se qualquer arquivo /etc/rcrunlevel.d/[SK]??name já existe então
update-rc.d não faz nada. É desta maneira que o administrador do sistema pode
reorgananizar os links, contanto que eles deixem pelo menos um link remanescente,
sem ter sua configuração reescrita.
Se você está usando file-rc, toda informação sobre serviços é manipulada por um arquivo de configuração comum e é mantida mesmo se os pacotes forem removidos do sistema.
You can use the TUI (Text User Interface) provided by
sysv-rc-conf to do all these changes easily (
sysv-rc-conf
works both for
file-rc and normal System V runlevels). You will also find similar GUIs for desktop systems. You can also use the command line interface of
sysv-rc-conf:
# sysv-rc-conf foobar off
The advantage of using this utility is that the rc.d links are returned to the status they had before the 'off' call if you re-enable the service with:
# sysv-rc-conf foobar on
Other (less recommended) methods of disabling services are:
Removing the
/etc/init.d/service_name
script and removing the startup links using:
# update-rc.d name
remove
Move the script file (/etc/init.d/service_name
) to another name (for example /etc/init.d/OFF.service_name
). This will leave dangling symlinks under /etc/rc${runlevel}.d/
and will generate error messages when booting up the system.
Remove the execute permission from the /etc/init.d/service_name
file. That will also generate error messages when booting.
Edit the /etc/init.d/service_name
script to have it stop immediately once it is executed (by adding an exit 0
line at the beginning or commenting out the start-stop-daemon
part in it). If you do this, you will not be able to use the script to startup the service manually later on.
Nevertheless, the files under /etc/init.d
are configuration files and should not get overwritten due to package upgrades if you have made local changes to them.
Infelizmente, diferente de outros sistemas operacionanais tipo UNIX, os serviços no Debian não podem ser desabilitados pela modificação dos arquivos em /etc/default/_servicename_
.
FIXME: Adicione mais informação sobre manipulação de daemons usando file-rc
3.5.2. Desabilitando o inetd
ou seus serviços
Você deve checar se realmente precisa do daemon inetd
. Inetd sempre foi uma maneira de compensar deficiências do kernel, mas estas deficiências foram corrigidas. Existe possibilidade de ataques DoS (Denial of Service) contra o inetd
, então é preferível usar daemons individuais do que rodar um serviço do inetd
. Se você ainda quer rodar algum serviço do inetd
, então no mínimo alterne para um daemon mais configurável como xinetd
, rlinetd
ou openbsd-inetd
.
You should stop all unneeded Inetd services on your system, like echo
, chargen
, discard
, daytime
, time
, talk
, ntalk
and r-services (rsh
, rlogin
and rcp
) which are considered HIGHLY insecure (use ssh
instead).
Você pode desabilitar os serviços editando o arquivo
/etc/inetd.conf
diretamente, mas o Debian fornece uma alternativa melhor:
update-inetd
(o qual comenta os serviços de modo que eles possam facilmente ser reativados). Você pode remover o daemon
telnet
para alterar o arquivo de configuração e reiniciar o daemon (neste caso o serviço
telnet
é desabilitado):
/usr/sbin/update-inetd --disable telnet
Se você quer um serviço, mas não o quer disponível para todos os IP do seu host, você deve usar um recurso não documentado no inetd
(substitua o nome do serviço por serviço@ip) ou use um daemon alternativo como xinetd
.