Material de Apoyo – Servidor WWW
Realizado por Carlos L. Rivero 13/05/2018
1. Instalación de Debian 9 (Stretch). Calcular filesystem.
/ => 30 GB ext3
/boot => 1 GB ext2
/tmp => 10 GB ext3
/var/log => 10 GB ext3
/var/lib/postgres => depende del tamaño de disco duro y uso btrfs
/var/lib/mysql => depende del tamaño de disco duro y uso btrfs
swap => máximo 4 GB de RAM
/var/www => resto del disco ext4
2. Verificación de configuración de equipo editando /etc/network/interfaces y agregar o
modificar los siguientes parámetros
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
address [Link]
netmask [Link]
network [Link]
broadcast [Link]
gateway [Link]
3. Crear /etc/[Link] y agregar los siguientes datos
nameserver [Link]
search [Link]
4. Verificación de parte de la configuración de red editando /etc/hosts
[Link] localhost
Dir-IP [Link] nombre-equipo
5. Verificar el nombre del equipo en /etc/hostname
6. Modificar el archivo /etc/apt/[Link] según los siguientes datos
Comentar la búsqueda al CD y colocar al final de cada una de las sugerencias de
busqueda main non-free contrib
7. Actualizar Debian => aptitude update y luego de terminado aptitude upgrade
8. Corregir fecha y hora => date - -set=”Día Mes fecha hora militar (hh:mm:ss) VET año”
Día = Sun, Mon, Tue, Wed, Thu, Fri, Sat
Mes = Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec
Ahora si se quiere es sincronizar con los husos horarios mundiales se debe instalar =>
aptitude install ntp ntpdate
y ejecutar manualmente y una sola vez el comando => ntpdate-debian
para verificar utilizaremos => ntpdate [Link]
y => grep ntpd /var/log/syslog para verificación a través de los log.
9. Creación de cuenta de usuario en servidor
useradd –c “nombre apellido” –m –d /home/usuario1 –s /bin/bash usuario1
10. Cambiar clave de usuario creado => passwd usuario1
11. Instalar SSH => aptitude install ssh
12. Bloquear el acceso de root desde el SSH, editando con nano /etc/ssh/sshd_config y setear
la opción PermitRootLogin no
Se puede permitir acceso a usuarios deseados, editar con nano /etc/ssh/sshd_config y
agregar AllowUsers usuario1 usuario2 usuario3.
Reiniciar SSH => /etc/init.d/ssh restart
13. Instalar Apache2, PHP7, Perl, Python y utilitarios
aptitude install apache2 php7.0 php7.0-curl php7.0-intl php7.0-xmlrpc php7.0-gd gcc make
ethtool sysstat alien rsync nmap zip mt-st mtx iptraf discus htop dnstop apachetop ntfs-3g
14. Agregar módulos necesarios para el funcionamiento del apache ubicándose en
/etc/apache2/mods-availables, los cambios se mostrarán en /etc/apache2/mods-enables
- a2enmod rewrite
- a2enmod vhost_alias
- a2enmod ssl
15. Modificar directivas de seguridad del apache con => nano /etc/apache2/conf-
available/[Link] y cambiar a ServerTokens Prod y ServerSignature Off. Reiniciar el
apache.
16. Instalar mysql
aptitude install mysql-server php7.0-mysql
Para que MySQL trabaje en red editar con nano /etc/mysql/[Link].d/[Link]
Comentar #bind-address =[Link] y reiniciar el mysql.
17. Crear usuario administrador. Desde la consola entrar a mysql
mysql -u root –p Luego crear usuario con todos los privilegios
CREATE USER 'newuser'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'%';
FLUSH PRIVILEGES;
18. Instalar phpMyAdmin => aptitude install phpmyadmin
Crear enlace simbólico => ln –s /usr/share/phpmyadmin /var/www/phpmyadmin
19. Instalar postgreSQL
aptitude install postgresql-9.6 libapache2-mod-auth-pgsql php7.0-pgsql libdbd-pg-perl
Para crear nuevo usuario, entrar como usuario postgres (#su postgres)
Por último => createuser -P -s -e usuario_a_crear
Salir del usuario postgres para estar de nuevo como administrador
20. Instalar phppgadmin => aptitude install phppgadmin
Crear enlace simbólico => ln –s /usr/share/phppgadmin /var/www/phppgadmin
Modificar con => nano /etc/apache2/conf-available/[Link]
Comentar #Require local
Editar => nano /etc/postgresql/9.6/main/[Link]
Colocar listen_addresses = '*' para que sean escuchado por todos
Editar => nano /etc/postgresql/9.6/main/pg_hba.conf por si utilizamos pgadmin y accesar
desde una maquina determinada identificada con su dirección IP; al final agregar
host all all [Link]/32 md5
Reiniciar Apache
21. Instalar Oracle Cliente:
aptitude install libaio1
Conseguir los siguientes RPM's de la página de Oracle:
Oracle instantclient basic
Oracle instantclient devel
Oracle instantclient sqlplus
Pasarlos de rpm a deb con alien:
alien oracle-instantclient-basic_11.1.0.1-2_i386.rpm
alien oracle-instantclient-devel_11.1.0.1-2_i386.rpm
alien oracle-instantclient-sqlplus_11.1.0.1-2_i386.rpm
y ya tendremos los deb correspondientes.
Los instalamos:
dpkg -i oracle-instantclient-basic_11.1.0.1-2_i386.deb
dpkg -i oracle-instantclient-devel_11.1.0.1-2_i386.deb
dpkg -i oracle-instantclient-sqlplus_11.1.0.1-2_i386.deb
Ahora creamos la carpeta /etc/oracle:
mkdir /etc/oracle
Y crearemos dentro de esta carpeta el archivo [Link]
nano /etc/oracle/[Link]
Y tendremos que crear un fichero del estilo:
[Link] =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(COMMUNITY = [Link])
(PROTOCOL = TCP)
(Host = [Link])
(Port = 1521)
)
(ADDRESS =
(COMMUNITY = [Link])
(PROTOCOL = TCP)
(Host = [Link])
(Port = 1526)
)
)
(CONNECT_DATA = (SID = PRESU)
)
)
Ahora tendremos que editar el .bashrc del root y le añadiremos las siguientes lineas:
nano /root/.bashrc
export TNS_ADMIN=/etc/oracle
export SQLPATH=/usr/lib/oracle/11.2/client/bin
export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client/lib:$LD_LIBRARY_PATH
export PATH=$PATH:$SQLPATH
Instalacion del oci8 para php:
apt-get install php-pear php5-dev (sino están instalados)
pecl install oci8
Solamente nos quedará añadir las correspondientes líneas en el [Link]:
echo extension=[Link] >> /etc/php5/apache2/[Link]
Reiniciar el apache y servidor:
/etc/init.d/apache2 reload
reboot
22. Creación y eliminación de VirtualHost con a2ensite y a2dissite ubicándose en el directorio
de trabajo /etc/apache2/site-available/
- Desactivar inicio por defecto => a2dissite default
- Prepara el o los nuevos VirtualHost copiando como modelo el sitio por defecto
cp defualt dominio1-intra
- Activar nuevo VirtualHost
a2ensite dominio1-intra (hace un enlace simbólico a /etc/apache2/site-enable/)
- Crear el o los directorios donde se van alojar los nuevos sitios en /var/www/dominio1-
intra y darle los respectivos permisos para el administrador del nuevo sitio.
cd /var/www/
mkdir dominio1-intra
chown –R usuario-dueño dominio1-intra (dueño)
chmod –R 775 domino1-intra (permisología)
- Crear enlace simbólico del directorio del usuario al directorio WWW
ln -s /var/www/domino1 /home/usuario1/nombre-enlace
- Editar el nuevo VirtualHost
cd /etc/apache2/site-available/
nano dominio1-intra
Ejemplo:
#NameVirtualHost [Link]
<VirtualHost [Link]>
ServerAdmin usuario1@[Link]
ServerName [Link]
ServerAlias [Link] *.[Link]
DocumentRoot /var/www/dominio1/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/dominio1>
Options FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
# This directive allows us to have apache2's default start page
# in /apache2-default/, but still have / go to the right place
# RedirectMatch ^/$ /apache2-default/
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/[Link]
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/[Link] combined
ServerSignature Off
#Alias /doc/ "/usr/share/doc/"
#<Directory "/usr/share/doc/">
# Options Indexes MultiViews FollowSymLinks
# AllowOverride None
# Order deny,allow
# Deny from all
# Allow from [Link]/[Link] ::1/128
#</Directory>
</VirtualHost>
23. Reiniciar Apache2 => /etc/init.d/apache2 restart
24. Pasar a UTF-8 (formato de codificación de caracteres), editando el archivo
/etc/apache2/conf.d/charset y descomentar AddDefaultCharset UTF-8
25. Editar => /etc/php/7.0/apache2/[Link]
max_execution_time = 7000
max_input_time = 1200
memory_limit = 1024M
post_max_size = 128M
upload_max_filesize = 128M (depende del tamaño del archivo)
short_open_tag = On
Reiniciar Apache => /etc/init.d/apache2 restart
26. Editar => /etc/apache2/[Link]
Timeout 13
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 3
27. editar => nano /etc/apache2/mod-available/[Link]
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
ServerLimit 250
MaxClients 250
MaxRequestsPerChild 1000
</IfModule>
Reiniciar Apache => /etc/init.d/apache2 restart
28. Acelera tu servidor Apache + PHP con APC (Alternate PHP Cache). Instalamos algunos
paquetes necesarios => aptitude install php-pear php7.0-dev libapache2-mod-perl2
libapache2-mod-python
Instalamos APC => pecl install apc
Ahora que ya tenemos instalado APC, vamos a añadirlo a la configuración de apache. El
siguiente comando => echo "extension=[Link]" > /etc/php/7.0/apache2/conf.d/[Link],
por ultimo reiniciar apache.
29. Comandos a2enmod y a2dismod para instalar y desinstalar módulos; a2enconf y a2disconf
para instalar y desinstalar módulos de configuración para apache2
30. Comando du –h (devuelve el tamaño de la carpeta donde estas ubicado)
31. Para proteger el acceso al servidor instalaremos => aptitude install fail2ban
Copiaremos el archivo de configuración para que sea nuestro archivo de trabajo con =>
cp /etc/fail2ban/[Link] /etc/fail2ban/[Link]
Editamos con => nano /etc/fail2ban/[Link] y modificamos
ignoreip = [Link] 192.168.X.0/24 ó 192.168.X.X (dirección o rango IP a ignorar)
bantime = 86400 (tiempo a ser baneado 24h * 60 * 60 = 86400 segundos)
maxretry = 3 (número de intento fallidos permitidos)
y por últimos las jaulas a configurar agregando en la zona destinada para esto
Agregar SSH=> [ssh]
enabled = true
port = ssh
filter = sshd
action = iptables[name=SSH, port=22, protocol=tcp]
logpath = /var/log/[Link]
maxretry = 3 .Guardar y reiniciar fail2ban
32. Instalar Webmin, descargando de Internet la última versión webmin_version_all.deb e
instalar con el comando dpkg –i webmin_version_all.deb y luego instalar dependencias
sugeridas.
33. Con alguno de los navegadores de Internet entrar a [Link] donde [Link] es el
dominio o la dirección ip según el caso, utilizando como usuario y clave la misma del
servidor.
34. Actualizar el Webmin, configurar el idioma a español y cambiar el tema (MSC Linux
Theme).
35. Instalar Webalizer a través del Webmin y configurarlo para cada uno de los site.
Permisología:
0 => _ _ _ (Sin permisos)
1 => _ _ x (Ejecución sin permiso de escritura ni lectura)
2 => _ w _ (Escritura sin permiso de lectura ni ejecución)
3 => _ w x (Escritura y ejecución sin permiso de lectura)
4 => r _ _ (Lectura sin permiso de escritura ni ejecución)
5 => r _ x (Lectura y ejecución sin permiso de escritura)
6 => r w _ (Lectura y escritura sin permiso de ejecución)
7 => r w x (Lectura, escritura y ejecución)
Aplicaciones a ser instaladas:
1. Creación de cuentas de usuario para B.D. MySQL y PostgreSQL
2. Joomla
3. Foro
4. OCS Inventory
5. GLPI
6. Moodle
7. Wiki
La metodología a seguir para la redacción de los manuales es la siguiente: instalación,
configuración y políticas de respaldo, restauración y seguridad.
Tips: Para instalar un paquete rpm en Debian puedes convertirlo con el comando alien –d
[Link], luego lo puede instalar normalmente, ahora si lo que desea es convertirlo e instalarlo
de una vez puede utilizar alien –i [Link].
Actividad extra para verificación de fecha con PHP:
aptitude install php5-dev php-pear
pecl install timezonedb
nano /etc/php5/apache2/[Link]
Agregar en Dynamic Extensions: extensión = [Link]
Hacer archivo tipo php en /var/www/
nano [Link]
<?
print date("F j, Y, g:i a");
?>
Abrir un explorador de Internet y abrir [Link]
Comandos para monitorización
Monitorear carga del procesador
vmstat 2 (los últimos datos us, sy e id son unos de los más importantes en cuanto a
información para el administrador que corresponden a user, system e idle
respectivamente son usuario, sistema y desocupado.
Monitorear el acceso al disco duro
Si no se encuentra instalar sysstat (conjunto de herramientas para el monitoreo del
rendimiento del sistema)
iostat (utilización del procesador y estadísticas de E/S de los discos)
mpstat (estadísticas globales y por procesador)
pidstat (estadísticas de los procesos de Linux)
Si tenemos configuradas dos tarjetas de red y una de las dos pierde la conexión, revisar route y
si no aparece agregar con:
route add -net [Link] netmask [Link] gw [Link] dev eth0
Mostrar tabla de particiones
fdisk –l /dev/sdx
Revisa sectores dañados
Badblocks –svnf /ruta/deldisco
Muestra el tipo de file system
blkid /ruta/deldisco
Memoria disponible
free –m o con –g
Información de la memoria
cat /proc/meminfo
Purgar el equipo
aptitude purge ~c
Revisar si está instalado un paquete y que versión tiene
dpkg -s paquete
Instalar Media Wiki
aptitude install php5-intl
Netstat (Puertos en escucha)
netstat -tamp | grep LISTEN