Help - Search - Members - Calendar
Full Version: PASAR el directorio /tmp a noexect
The Planet Forums > General > Foro en Español / Spanish Forum > COMO-HACERLOs / HOWTOs en Español
T3MpaN0
Buenas como todos sabreis hay un colectivo de gente que se dedica a explotar exploits de scripts estilo php-nuke pos bla bla que lo que hace es colarte en tu directorio /tmp del server un script muy chulo que o se te logea como root o te hace mil putadas bien la mejor manera de ebitar esto es hacer que nada se pueda ejecutar desde ese directorio aparte de configurar bien tu firewall y tener una vigilancia constante como es logico.

como pasar el /tmp a no exect es simple yo he recogido este post del foro que lo explica todo paso a paso y perfectamente gracias a jaume bandido ideasmultiples & conpany x)

Como ROOT haceis estos pasos:

cd /dev

dd if=/dev/zero of=tmpMnt bs=1024 count=100000

/sbin/mke2fs /dev/tmpMnt
(Contestad y a la pregunta que os hace)

cp -R /tmp/ /tmp_backup

mount -o loop,rw,nosuid,noexec /dev/tmpMnt /tmp

chmod 0777 /tmp

cp -R /tmp_backup/* /tmp/

rm -rf /tmp_backup

Ahora hay que modificar el /etc/fstab para hacer que el /dev/tmpMnt se monte al reiniciar el server. Es añadir esta linea:

/dev/tmpMnt /tmp ext2 loop,rw,nosuid,noexec 0 0
(OJO: los espacios de esta linea son tabuladores).

Reiniciad los servicios como por ejemplo postgresql , mysql, el clamantivirus, etc... para que se recreen bien los sockets y locks en el dir tmp si es ahi donde los creaban.

Para probarlo cread un shell en el /tmp e intentad ejecurtarlo. Ejemplo:

pegad esto dentro:

#!/bin/sh
echo prueba

lo guardais como en /tmp/test.sh y le haceis un chmod 0755 e intentad ejecutarlo desde dentro del /tmp, y os ha de dar esto:

[root@server tmp]# ./test.sh
bash: ./test.sh: bad interpreter: Permission denied


chapucillas que tb funciona y es bueno tenerlas.
Una formna rápida si no te quieres liar mucho con el asunto es anulando el acceso a wget linx y derivados, si no los usas y al compilador de C.

Para lo primero tienes una forma facil de hacerlo, cambiales el nombre wget ->wlee pr ejemplo y no lo encontrarán.

O chmod -ax cuando no lo utilizes con lo que anulas el acceso a ejecutar.

Es mas facil, mas rápido y menos dolores de cabeza que el poner tmp en noexec.

o bien:

Te creas un archivo de texto pones esto

chmod 000 /usr/bin/wget
chmod 000 /usr/bin/lynx
chmod 000 /usr/bin/*cc*
chmod 000 /usr/sbin/*cc*


Y luego le das permisos de ejecucion, nadie podra utilizar el wget ni el lynx ni compilar, puedes añadir todos los que quieras.

Despues creas el mismo (con otro nombre, por ejemplo abrir)

y le pones

chmod 755 /usr/bin/wget
chmod 755 /usr/bin/lynx
chmod 755 /usr/bin/*cc*
chmod 755 /usr/sbin/*cc

Tambien le das permisos de ejecucion, asi cuando quieras compilar o descargar algo solo tu podras dar esos permisos.


saludos icon_smile.gif
pueblosnet
lo he probado y funciona todo bien,

ya tenemos un poco más de seguridad
Urbenalia
T3MpaN0 funciona perfectamente.

Gracias por el How To.

Un Saludo
bandido
Los que utilizeis cpanel, teneis que "abrir" (chmod 755 /usr/bin/wget) siempre que querais actualizar el cpanel, si no dara error.
SuperX
segui todos los pasos tal cual, pero al ejecutar el script de prueba me dio esto:

[root@server1 tmp]# ./test.sh
-bash: ./test.sh: /bin/sh: bad interpreter: Permission denied
[root@server1 tmp]# sh test.sh
prueba
[root@server1 tmp]#

como se ve aca, lo ejecute de dos maneras......y de la segunta el script funciono
esta bien que sea así ???

Gracias...
T3MpaN0
Si asi esta correcto lo tienes bien un saludo
IRCdPR
Saludos,
Lo del TMP Trabaja a las mil maravillas, pero, al ir al control panel del Cpanel me aparece que hay 2:

Disk tmpMnt (/tmp)

que sera que tengo 2 y si es asi diganme como puedo borrar uno, ademas me aparecen ambos como que estan 100% llenos PQ?

Creo que devo crear la particion mas Grande si es asi diganme como lo puedo hacer.
Alguien que me pueda ayudar :confused:
IRCdPR
Ya pude resolver lo ue aparecian 2 ahora mi pregunta es como puedo darle mas espacio a la nueva particion ya que aparece que esta llena completamenteya que los temp cojen mas espacio, o como se cuales son los files que no se usan para borrarlos del tmp???
IRCdPR
Saludos Nuevamente,
Amigos ya pude resolver todo lo que avia en el TMP era basura, eran unos Bots que avian colado al Servidor pero ya esta Seguro y Todo Trabaja Fine, Gracias Muchachos...icon_wink.gif
el-brujo
No puedes ejecutar un ejecutable desde esa shell, es decir no puedes hacer:

./ejecutable

exec ejecutable

Pero si que se puede ejecutar un ejecutable en modo iterativo desde otra shell:

sh -i ejecutable

bash -i ejecutable

csh -i ejecutable

ash -i ejecutable

...
Lo peor de todo es que por defecto sino pones la opcion -i se ejecuta en modo iterativo si le pasas como argumento un ejecutable o un guion ( script ). Cualquier persona que sepa un poquito de GNU/Linux podra ejecutar un ejecutable en /tmp aunque este con noexec. De todas formas es bueno ponerlo porque le "complicas" un poco la vida.
Otra opcion que añadiria al fstab es:

nosuid --> no ejecuta archivos con el suid y sgid activos.
Esta opcion es imprescindible ponerla en los dispositivos extraibles para tener un minimo de seguridad.


¡Sr. Adikto Dixit!
IRCdPR
Saludos el Brujo, pero como ponemos esa funcion a trabajar??:confused:
Aldo
No se olviden de poner NOEXEC el /VAR/TMP y el /DEV/SHM yo lo saque de un post en ingles

Aquí

pego aqui la partesita

CODE
...

...

... If it does you can add this line to the bottom of the /etc/fstab to automatically have it mounted:

/dev/tmpMnt /tmp ext2 loop,noexec,nosuid,rw 0 0



While we are at it we are going to secure /dev/shm. Look for the mount line for /dev/shm and change it to the following:

none /dev/shm tmpfs noexec,nosuid 0 0



Umount and remount /dev/shm for the changes to take effect.

-----command-----

umount /dev/shm

mount /dev/shm

-----command-----



Next delete the old /var/tmp and create a link to /tmp

-----command-----

rm -rf /var/tmp/

ln -s /tmp/ /var/

-----command-----


Siempre recuerden que los espacio en el archivo /etc/fstab deben ser TABs!!

un abrazo
Aldo
kali
Esto me sale al dar el comando: mount -o loop,rw,nosuid,noexec /dev/tmpMnt /tmp

mount: Could not find any loop device, and, according to /proc/devices,
this kernel does not know about the loop device.
(If so, then recompile or `insmod loop.o'.)

Que se puede hacer ahi? uso c panel

gracias
omegaz
He llevado a cabo el proceso pero ahora me es totalmnte imposible el eviar un archivo con qmail.

¿Alguien podría hacerme el favor de decir como puedo invertir el proceso para permitir ejecutar archivos en /tmp. ?

gracias.

no puedo enviar ningún fichero.

gracias
Emilio
QUOTE (omegaz)
He llevado a cabo el proceso pero ahora me es totalmnte imposible el eviar un archivo con qmail.

¿Alguien podría hacerme el favor de decir como puedo invertir el proceso para permitir ejecutar archivos en /tmp. ?

no puedo enviar ningún fichero.


Seguramente tu problema es que tienes llena la nueva partición, borra toda la basura que tengas en /tmp, si haces un df -h verás el espacio disponible en tus particiones, asegúrate que no la tienes al 100%
chabon
Hice todo esto y funciona OK! pero si reinicio ya no funciona.

Que puede ser?
Nocturno
Hola amigos, muy buen tuto, pero tengo un problema, que cuando voy a pico /usr/sbin/sendmail me aparece todo como encryptado, con un monton de arrobas @@@ y no sé como insertar el código, alguna sugerencia?

Desde ya muchísimas Gracias

Nocturno
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2009 Invision Power Services, Inc.