Cargando...
 

Servidor en Dimensis 2015

Empezamos la puesta a punto y configuración más sencilla del servidor (menos compleja, sin ponerle ISPConfig).

Máquina Virtual

Nueva IP: 37.247.124.72
Dominio temporal: 2015.precarios.org
Dominio definitivo: precarios.org Xavier de Pedro
S.O. base: Ubuntu 14.04 (64bits).
RAM: 4 Gb
Swap: 500Mb
HD: 24Gb
Usuario: root (la contraseña la saben Xavi, Pablo y Lorena. Si te hace falta, pideles un usuario de sistema con derechos de sudo)

1.1.1. Instalacion/actualización inicial

[+]

1.1.2. Postfix como servidor de correo

sudo apt-get install postfix


Recordarse de esto:

Postfix is now set up with the changes above.  If you need to make changes, edit
/etc/postfix/main.cf (and others) as needed.  To view Postfix configuration
values, see postconf(1).

After modifying main.cf, be sure to run '/etc/init.d/postfix reload'.


1.2. Pasos siguientes

1.2.1. Poner a punto un Tiki12 en 2015.precarios.org

Info general:
http://doc.tiki.org/Installation
http://doc.tiki.org/Ubuntu+Install?structure=Tiki+Installation+Guide

Actualizamos el servidor:

sudo apt-get update
sudo apt-get upgrade


Instalamos el servidor web y mysql con

sudo apt-get install tasksel
sudo tasksel lamp-server


y luego, por acaso falta algun paquete, como phpmyadmin, etc:

sudo apt-get install mysql-server mysql-client apache2 php5 php5-tidy php-pear memcached php5-xcache php5-gd php5-xmlrpc php-xml-parser phpmyadmin sendmail


Habilitar también el módulo mcrypt de php_

sudo php5enmod mcrypt

1.2.2. Documentacion de qué retocar del Apache

Sacado de la Base de Conocimiento de Xavi:
http://semillaspec.org/Coprinus+with+Ubuntu+14.04?structure=Sitemap#Enable_rewrite_rules_for_Apache_web_server

1.2.2.1. Habilitar reglas de rescritura del servidor web Apache

Command on a console
sudo  a2enmod rewrite
sudo  service apache2 restart


Añadir esta sección entre las marcas de VirtualHost a este archivo /etc/apache2/sites-enabled/000-default.conf (o equivalente en tu configuración; en este caso, la raiz de directorios donde se instalan las aplicaciones web (Tiki por ahora) es /var/www/html/ ):

<Directory /var/www/html/>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride All
		Order allow,deny
		allow from all
	</Directory>


Después del cambio, debería quedar algo como:

Contenido de /etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:80>
	# The ServerName directive sets the request scheme, hostname and port that
	# the server uses to identify itself. This is used when creating
	# redirection URLs. In the context of virtual hosts, the ServerName
	# specifies what hostname must appear in the request's Host: header to
	# match this virtual host. For the default virtual host (this file) this
	# value is not decisive as it is used as a last resort host regardless.
	# However, you must set it for any further virtual host explicitly.
	#ServerName www.example.com

	ServerAdmin webmaster@localhost
	DocumentRoot /var/www/html

<Directory /var/www/html/>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride All
		Order allow,deny
		allow from all
	</Directory>

	# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
	# error, crit, alert, emerg.
	# It is also possible to configure the loglevel for particular
	# modules, e.g.
	#LogLevel info ssl:warn

	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined

	# For most configuration files from conf-available/, which are
	# enabled or disabled at a global level, it is possible to
	# include a line for only one particular virtual host. For example the
	# following line enables the CGI configuration for this host only
	# after it has been globally disabled with "a2disconf".
	#Include conf-available/serve-cgi-bin.conf
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

1.2.2.2. Habilitar phpmyadmin si hace falta

(hizo falta, aunque años atrás no solía ser neceario Xavier de Pedro )

sudo cp /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
sudo ln -s /etc/apache2/conf-available/phpmyadmin.conf /etc/apache2/conf-enabled/phpmyadmin.conf
service apache2 restart


Ahora ya podemos acceder a configurar bases de datos mysql por PhpMyAdmin en:
http://2015.precarios.org/phpmyadmin/

1.2.3. Crear para el tiki una base de datos mysql y un usuario mysql con permisos locales a esa bdd

En http://2015.precarios.org/phpmyadmin/

  • Entramos en usuarios: Quitamos debian-sys-maint (eliminamos ese usuario)
    Al refrescar la pagina desaparece ese usuario.
  • El usuario root aparece 4 veces, lo dejamos asi y añadimos nuevos usuarios:
    • pmorenogarcia, xavidp y lorena.
      No marcamos base de datos pero si marcamos todos los permisos.
  • Creamos un nuevo usuario para mysql que NO tenga todos los permisos
    • Asi, en caso de intrusos, podrian tocar la bbdd de tiki12 pero nada más.
    • El nuevo usuario es tikiuser, no marcamos ni base de datos para usuario ni permisos generales.
  • Vamos a la pantalla de inicio del PhpMyadmin de nuevo
    • Creamos bbdd tiki12svn y en cotejamiento ponemos UTF8_unicode serviria, cogemos UTF8_unicode_ci.
  • En la pestaña de usuario vamos a base de datos
    • Seleccionamos la bdd tiki12svn, y damos todos los permisos menos grant a ese usuario para esa bdd.


Ya está. Luego necesitaremos decirle a Tiki lo que hemos creado:

  • bdd mysql: tiki12svn
  • usuario mysql: tikiuser
  • contraseña mysql: xxxxxxx (la que hemos puesto)

1.2.4. Instalar tiki 12 por subversion (url's sacadas de http://dev.tiki.org/Get+code )

Se ha de crear una carpeta nueva.

Se podria hacer por "mc"

sudo mc


mc (Midnight Commander) es el equivalente por conola de krusader (de escritorio KDE en GNU/Linux), o Total Commander (en Windows).


Creamos la carpeta /var/www/html/tiki12svn

sudo mkdir /var/www/html/tiki12svn


Nos movemos a esa carpeta

cd /var/www/html/tiki12svn


Bajamos tiki12 por subversion a esa carpeta:

svn checkout https://svn.code.sf.net/p/tikiwiki/code/branches/12.x .


Ejecutar el script instalador de Tiki por consola:

sh setup.sh


Para ver que hace setup.sh, ver:
http://doc.tiki.org/setup.sh

Esto gestiona "Composer" (un programa para gestionar las librerías externas que usa tiki: las baja y actualiza cuando hace falta, etc)

Luego ya podemos acceder a la instalación de Tiki estándard:
http://2015.precarios.org/tiki12svn/

que nos lleva a tiki-install.php:
http://2015.precarios.org/tiki12svn/tiki-install.php

Ver vídeo del curso de Tiki de Xavi:


En la pagina de Configurar la Conexión con la Base de Datos ponemos el nombre de la bbdd que hemos creado y continuamos.
En la nueva instalacion el usuario inicial es admin, ponemos un usuario y continuamos.
Ya está instalada la tiki pero sin nada.

1.2.5. Instalar postfix y probar la redirección de correo

Instalado hace tiempo ya, por lo visto Xavier de Pedro

1.2.6. Hacer un clon de la "bbdd y archivos custom" de precarios.org en 2015.precarios.org

Lo siguiente seria cambiar la bbdd que tiki ha creado por la anterior que estaba en los servidores locales de dimensis. Es como una prueba de migración.

1.2.7. Volver a programar otro clon nuevo antes del 12 de Agosto para la migración definitiva

Pendiente Xavier de Pedro

1.2.8. Recuperar galerias de archivos y imagenes

  • Subir backup (Pablo) 5 Mayo 2014 de archivos de galerías de archivos e imágenes Jabi subio otra copia (2013)
  • jugar Xavi y/o Pablo con ello.


Acabado el clon de archivos_tikiwiki a partir del bavkup de Jabi de 2013 Xavier de Pedro

1.2.9. Redirecciones de correo

Usando Postfix, y retocando los archivos a mano.

1.2.9.1. Configuración del servidor postifx a mano

Para el correo electrónico, usamos postfix con una configuración mínima y simple. Con respecto a la configuración por defecto en Ubuntu, podemos modificar dos ficheros:

  • /etc/postfix/main.cf, al que se han añadido las líneas:
    virtual_alias_domains = precarios.org
    virtual_alias_maps = hash:/etc/postfix/virtual
  • /etc/postfix/virtual, en el que se indican las nuevas direcciones de correo (p.e., presidente(at)precarios.org) y el correo al que se redirigen los mensajes que llegan a él (en ese caso, quiensea(at)gmail.com).
  • El archivo virtual está en formato legible por humanos, pero hace falta convertirlo en un formato adecuado para que lo use postfix. Eso se hace ejecutando sudo postmap /etc/postfix/virtual
    No es necesario arrancar de nuevo el servicio postfix.


1.2.9.2. Arreglar problema postfix (hacía falta)

De: http://www.zenbien.com/helo-command-rejected-needfully-qualified-hostname-avec-postfix
Hecho Xavier de Pedro

Buscar el archivo

locate main.cf


Que suele estar por ejemplo en:

/etc/postfix/main.cf


Editarlo

sudo nano /etc/postfix/main.cf


Añadir este valor:

myhostname = mail.precarios.org


Al poner este nombre de dominio válido desaparece el error de envio de correo en algunos servidores.

1.2.10. Poner el servidor en hora

Ejecutar en terminal en el servidor:

sudo dpkg-reconfigure tzdata


y seguir instrucciones en pantalla para ponerlo en zona horaria de "Europa > Madrid".

Hecho Xavier de Pedro

1.2.11. SOBRE LOS ARCHIVOS QUE FALTAN

Este es uno de los archivos que faltan: http://precarios.org/dl1673
No lo encuentro en ninguna de las galerías, debería estar en Carrera Investigadora (http://precarios.org/tiki-list_file_gallery.php?view=list&sort_mode=id_desc&galleryId=6 ) o en Informes de la FJI (http://precarios.org/tiki-list_file_gallery.php?view=list&sort_mode=id_desc&galleryId=7 ), pero no. Y sí esta en el servidor, es el archivo de tamaño "730208", se puede buscar con el 'mc'

Xavi: Archivo perdido del todo por lo visto. Tiki dice que el archivo ha sido borrado (404 error) incluso una vez restaurada la copia de seguridad de archivos 2013 que tenía Jabi. Damos el archjivo por perdido (que lo suba de nuevo quien lo tenga), y esperemos que no haya mas archivos como este (¿alguien sabe de alguno más?)

1.2.12. Algunos programillos más útiles

sudo apt-get install rsync fail2ban logwatch


Y configurarlos (googlear o Xavi)

1.2.12.1. Logwatch

File:/usr/share/logwatch/default.conf/logwatch.conf
Output = mail
Format = html
MailTo = web@precarios.org
MailFrom = logwatch


Prueba la instalación con:

logwatch


1.2.13. Actualizar el dominio para usar la nueva instalacion

  • Y cuando todo este listo, cambiaremos el dominio para que precarios.org apunte al nuevo servidor virtual, y no al antiguo. Ahora estamos usando 2015.precarios.org domo dominio para acceder al nuevo servidor virtual.
  • Cuando se decida pasaremos esto a precarios.org pero no habra ninguna diferencia en cuanto a lo que vean los usuarios de la web una vez propagados lo cambios en los servidiores de nombres de dominio (DNS): cuestión de pocas horas, habitualmente (puede llegar hasta 5 días máximo, en algunos casos rarísimos).



1.2.14. Retoques de configuración de Tiki en el servidor (trabajos periódicos o 'cron jobs')

Programa php para tareas de gestión de Tiki por consola: console.php
Ver: http://doc.tiki.org/Console

Poner en el cron:

+ (ver http://doc.tiki.org/Cron )
    • la actualizacióñ del índice de búsqueda
    • el envió por correo-e de resumenes diarios de cambios

1.2.15. Control de spam y demas

1.2.15.1. Apache mod_spamhaus

Hay un monton de visitas de robots y demás bichos raros produciendo urls falsas intentando conectarse al servidor.

Using apache mod_spamhaus to block known bad IPs Xavier de Pedro

mod_spamhaus is an Apache module that use DNSBL in order to block spam relay via web forms, preventing URL injection, block http DDoS attacks from bots and generally protecting your web service denying access to a known bad IP address. It queries sbl-xbl.spamhaus.org, taking advantage of the Spamhaus Block List (SBL) and the Exploits Block List (XBL).

See:

1.2.15.2. How to install

1.2.15.2.1. apt-get
sudo apt-get install libapache2-mod-spamhaus

1.2.15.3. How to configure

Before we are able to write our configuration, we should known what directives are supported by this module.

MS_Methods - If the httpd’s method used by the visitor match, module verify user’s ip address
MS_WhiteList - A simple whitelist file where you can put ip address to bypass
MS_DNS - DNSBL to use. Usefull if you want make a local rbldnsd instance
MS_CacheSize - Number of cached addresses

Now we open config file of our web server in order to write the configuration:

command in a console
sudo nano /etc/apache2/apache2.conf

contents to add
[...]
<IfModule mod_spamhaus.c>
MS_METHODS POST,PUT,OPTIONS,CONNECT
MS_WhiteList /etc/spamhaus.wl
MS_CacheSize 256
</IfModule>
[...]


Finally we restart Apache:

sudo service apache2 restart

1.2.15.4. How to add an ip range to the white list

You can add some ip or ip ranges to a white list, so that they are skipped from the check at spamhaus.
You can do so editing /etc/spamhaus.wl and adding the ip ranges there, with this type of syntax:

contents to add to /etc/spamhaus.wl
37.14.0.0/16
193.146.115.135


For some reason, since January 2015, the common public IP address that we use at VHIR to reach internet was added to the balck list in spamhaus: 193.146.115.135

Therefore, we had to add that IP to the whilelist for spamhaus in /etc/spamhaus.wl, as shown above.

Finally we restart Apache:

sudo service apache2 restart


1.2.15.5. Banning ip's with too many failures (Fail2ban)


Fail2Ban is an intrusion prevention framework written in the Python programming language. It works by reading SSH, ProFTP, Apache logs etc.. and uses iptables profiles to block brute-force attempts.

1.2.15.5.1. Installation


To install fail2ban, type the following in the terminal:

installation
sudo apt-get install fail2ban

1.2.15.5.2. Configuration


To configure fail2ban, make a 'local' copy the jail.conf file in /etc/fail2ban

configuration
cd /etc/fail2ban
sudo cp jail.conf jail.local


Now edit the file:

sudo nano jail.local


Set the IPs you want fail2ban to ignore, the ban time (in seconds) and maximum number of user attempts to your liking:

[DEFAULT]
# "ignoreip" can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1 161.116.82.31 172.18.19.0/24
bantime  = 3600
maxretry = 5


1.2.15.5.3. Jail Configuration


Jails are the rules which fail2ban apply to a given application/log:

[ssh]

enabled = true
port    = ssh
filter  = sshd
logpath  = /var/log/auth.log
maxretry = 5


To enable the other profiles, such as ssh-ddos, make sure the first line beneath it reads:

enabled = true


For instance:

#
# HTTP servers
#

[apache]

enabled = true
port    = http,https
filter  = apache-auth
logpath = /var/log/apache*/*error.log
maxretry = 6


Some extra section can be added, to ban bad bots:

[apache-badbots]
enabled = true
port    = http,https
filter  = apache-badbots
bantime = 86400
logpath = /var/log/apache*/*access.log
maxretry = 2


Once done, restart fail2ban to put those settings into effect

sudo /etc/init.d/fail2ban restart


There is a log about the banning and unbanning actions kept here:

/var/log/fail2ban.log


which will look like:

2007-01-15 15:38:47,142 fail2ban.actions: WARNING [ssh-iptables] Unban 81.74.87.66
2007-01-15 19:23:41,175 fail2ban.actions: WARNING [ssh-iptables] Ban 88.191.23.27
2007-01-15 19:23:42,373 fail2ban.actions: WARNING [ssh-iptables] 88.191.23.27 already banned
2007-01-15 19:33:41,508 fail2ban.actions: WARNING [ssh-iptables] Unban 88.191.23.27
2007-01-16 12:29:50,496 fail2ban.actions: WARNING [ssh-iptables] Ban 209.126.131.150


See:

1.2.15.6. Block web visitors based on their user agent

El último que he visto hoy (y no conocía!) es izsearch, que es más que un buscador, como dice en su página web, sinó que intenta visitar páginas que no existen, con url de registro raras incluidas, etc.


There are two ways. you can choose one (case A, part 1 and part 2) OR the other (case B-): no need to place the two of them.

A. through .htaccess blacklist (1rst part)


From:

Content to be added to a .htaccess file (merge appropriately with your current .htaccess file, within the mod_rewrite directive)
# Ultimate htaccess Blacklist 2 from Perishable Press
# Deny domain access to spammers and other scumbags
# Those two lines below are not needed again in precarios.org since they are already added somewhere else previously in the .htaccess file
#RewriteEngine on
#RewriteBase /
RewriteCond %{HTTP_USER_AGENT} ADSARobot|ah-ha|almaden|aktuelles|Anarchie|amzn_assoc|ASPSeek|ASSORT|ATHENS|Atomz|attach|attache|autoemailspider|BackWeb|Bandit|BatchFTP|bdfetch|big.brother|BlackWidow|bmclient|Boston\ Project|BravoBrian\ SpiderEngine\ MarcoPolo|Bot\ mailto:craftbot@yahoo.com|Buddy|Bullseye|bumblebee|capture|CherryPicker|ChinaClaw|CICC|clipping|Collector|Copier|Crescent|Crescent\ Internet\ ToolPak|Custo|cyberalert|DA$|Deweb|diagem|Digger|Digimarc|DIIbot|DISCo|DISCo\ Pump|DISCoFinder|Download\ Demon|Download\ Wonder|Downloader|Drip|DSurf15a|DTS.Agent|EasyDL|eCatch|ecollector|efp@gmx\.net|Email\ Extractor|EirGrabber|email|EmailCollector|EmailSiphon|EmailWolf|Express\ WebPictures|ExtractorPro|EyeNetIE|FavOrg|fastlwspider|Favorites\ Sweeper|Fetch|FEZhead|FileHound|FlashGet\ WebWasher|FlickBot|fluffy|FrontPage|GalaxyBot|Generic|Getleft|GetRight|GetSmart|GetWeb!|GetWebPage|gigabaz|Girafabot|Go\!Zilla|Go!Zilla|Go-Ahead-Got-It|GornKer|gotit|Grabber|GrabNet|Grafula|Green\ Research|grub-client|Harvest|hhjhj@yahoo|hloader|HMView|HomePageSearch|http\ generic|HTTrack|httpdown|httrack|ia_archiver|IBM_Planetwide|Image\ Stripper|Image\ Sucker|imagefetch|IncyWincy|Indy*Library|Indy\ Library|informant|Ingelin|InterGET|Internet\ Ninja|InternetLinkagent|Internet\ Ninja|InternetSeer\.com|Iria|Irvine|JBH*agent|JetCar|JOC|JOC\ Web\ Spider|JustView|KWebGet|Lachesis|larbin|LeechFTP|LexiBot|lftp|libwww|likse|Link|Link*Sleuth|LINKS\ ARoMATIZED|LinkWalker|LWP|lwp-trivial|Mag-Net|Magnet|Mac\ Finder|Mag-Net|Mass\ Downloader|MCspider|Memo|Microsoft.URL|MIDown\ tool|Mirror|Missigua\ Locator|Mister\ PiX|MMMtoCrawl\/UrlDispatcherLLL|^Mozilla$|Mozilla.*Indy|Mozilla.*NEWT|Mozilla*MSIECrawler|MS\ FrontPage*|MSFrontPage|MSIECrawler|MSProxy|multithreaddb|nationaldirectory|Navroad|NearSite|NetAnts|NetCarta|NetMechanic|netprospector|NetResearchServer|NetSpider|Net\ Vampire|NetZIP|NetZip\ Downloader|NetZippy|NEWT|NICErsPRO|Ninja|NPBot|Octopus|Offline\ Explorer|Offline\ Navigator|OpaL|Openfind|OpenTextSiteCrawler|OrangeBot|PageGrabber|Papa\ Foto|PackRat|pavuk|pcBrowser|PersonaPilot|Ping|PingALink|Pockey|Proxy|psbot|PSurf|puf|Pump|PushSite|QRVA|RealDownload|Reaper|Recorder|ReGet|replacer|RepoMonkey|Robozilla|Rover|RPT-HTTPClient|Rsync|Scooter|SearchExpress|searchhippo|searchterms\.it|Second\ Street\ Research|Seeker|Shai|Siphon|sitecheck|sitecheck.internetseer.com|SiteSnagger|SlySearch|SmartDownload|snagger|Snake|SpaceBison|Spegla|SpiderBot|sproose|SqWorm|Stripper|Sucker|SuperBot|SuperHTTP|Surfbot|SurfWalker|Szukacz|tAkeOut|tarspider|Teleport\ Pro|Templeton|TrueRobot|TV33_Mercator|UIowaCrawler|UtilMind|URLSpiderPro|URL_Spider_Pro|Vacuum|vagabondo|vayala|visibilitygap|VoidEYE|vspider|Web\ Downloader|w3mir|Web\ Data\ Extractor|Web\ Image\ Collector|Web\ Sucker|Wweb|WebAuto|WebBandit|web\.by\.mail|Webclipping|webcollage|webcollector|WebCopier|webcraft@bea|webdevil|webdownloader|Webdup|WebEMailExtrac|WebFetch|WebGo\ IS|WebHook|Webinator|WebLeacher|WEBMASTERS|WebMiner|WebMirror|webmole|WebReaper|WebSauger|Website|Website\ eXtractor|Website\ Quester|WebSnake|Webster|WebStripper|websucker|webvac|webwalk|webweasel|WebWhacker|WebZIP|Wget|Whacker|whizbang|WhosTalking|Widow|WISEbot|WWWOFFLE|x-Tractor|^Xaldon\ WebSpider|WUMPUS|Xenu|XGET|Zeus.*Webster|Zeus [NC]
RewriteRule ^.* - [F,L]


Some new bots need to be added, according to external webs and our visitors at some other webserver from Xavi Xavier de Pedro :

^Missigua\ Locator|^Java/1.4.1|^Java/1.5.0|^libwww-perl|^Wells\ Search\ II|^psycheclone|^WEP\ Search\ 00|ia_archiver|-$|^ZmEu|^Python-urllib/2.1|^Python-urllib/2.4|-|^libwww-perl/5.834|^Morfeus\ Fucking\ Scanner|^iZSearch


A. through apache SetEnvIf variable (2nd part)

SetEnvIf or SetEnvIfNoCase (case insensitive version of the previous directive) can be used to filter http visitor access based on specific criteria.

Content to be added at the end of your .htaccess file (merge appropriately with your current .htaccess file)
# From our own logs (Added Oct 24th 2011)
SetEnvIfNoCase User-Agent "^ZmEu" bad_bot
SetEnvIfNoCase User-Agent "^Python-urllib/2.1" bad_bot
SetEnvIfNoCase User-Agent "^Python-urllib/2.4" bad_bot
SetEnvIfNoCase User-Agent "^-" bad_bot
SetEnvIfNoCase User-Agent "^libwww-perl/5.834" bad_bot
SetEnvIfNoCase User-Agent "^Morfeus Fucking Scanner" bad_bot

# From  http://glodev.com/bannedips.php  (Added Oct 24th 2011)
SetEnvIfNoCase User-Agent "^Missigua Locator" bad_bot
#SetEnvIfNoCase User-Agent "^PEAR HTTP_Request class" bad_bot
SetEnvIfNoCase User-Agent "^Java/1.4.1" bad_bot
SetEnvIfNoCase User-Agent "^Java/1.5.0" bad_bot
SetEnvIfNoCase User-Agent "^libwww-perl" bad_bot
SetEnvIfNoCase User-Agent "^Wells Search II" bad_bot
SetEnvIfNoCase User-Agent "^psycheclone" bad_bot
SetEnvIfNoCase User-Agent "^WEP Search 00" bad_bot
SetEnvIfNoCase User-Agent "ia_archiver" bad_bot
deny from env=bad_bot
deny from 0ad.net
deny from 108.13.112.79
deny from 108.14.94.160
(...)


and where it says "(...)", place the full list of lines with "deny from ip_or_domain_names".

B. Permanently Blocking apache access via user agent string and fail2ban


You can deny access by BrowserMatch and Deny from SetEnvIf Example:

Contents on the vhost config file
SetEnvIfNoCase User-Agent "^Wget" bad_bot
SetEnvIfNoCase User-Agent "^EmailSiphon" bad_bot
SetEnvIfNoCase User-Agent "^EmailWolf" bad_bot
<Directory "/var/www">
        Order Allow,Deny
        Allow from all
        Deny from env=bad_bot
</Directory>


To permanenly block them you have to write custom log file and use fail2ban for example to ban them with iptables

As a reference for LogFormat and CustomLog see


For example create LogFormat

Line to added... somewhere :-/
LogFormat "%a %{User-agent}i" ipagent


Add logging to your vhost/server-wide

configuration to add to the vhost
CustomLog /var/log/apache2/useragent.log ipagent

/etc/fail2ban/filter.d/baduseragent.conf

Contents of /etc/fail2ban/filter.d/baduseragent.conf
[Definition]
failregex = ^<HOST> Mozilla/4\.0 \(compatible; MSIE 7\.0; Windows NT 5\.1; SV1; \.NET CLR 2\.0\.50727\) Havij$



/etc/fail2ban/jail.conf

Contents to add to /etc/fail2ban/jail.conf
[apache-bad-user-agent]

enabled  = true
port     = 80,443
protocol = tcp
filter   = baduseragent
maxretry = 1
bantime  = 86400
logpath  = /var/log/apache2/useragent.log


1.2.16. Crontab

30 2 * * * cd /var/www/tiki12svn/; php -dmemory_limit=1G console.php index:rebuild --log >/dev/null 2>&1
30 1 * * * cd /var/www/tiki12svn/; php console.php daily-report:send >/dev/null 2>&1
30 23 * * 0 cd /home/xavi/scripts/;sh backup_webs.sh  > /dev/null 2>&1


Recordar que el crontab del usuario root se puede mostrar con:

sudo contrab -l


Y editar, con:

sudo contrab -e


Si se lanza sin sudo, se mostrará o editará el de vuestro usuario de sistema en la máquina.

1.2.17. Aumentar el tamaño maximo de 'file upload'

Por omisión Apache e ISPConfig permiten solo subir archivos de 2Mb a través de apliaciones web en php.
Esto se ha de cambiar, en servidores gestionados por ISPConfig, con estas instrucciones:

sudo pico /etc/php5/cgi/php.ini


Y cambiar las lineas de estos valores para que queden algo así para permitir subir archivos de hasta unos 10Mb:

upload_max_filesize 12M
post_max_size 10M


Lo mismo se ha de hacer en el .htaccess de Tiki, para que no sea Tiki quien limite ahora este mayor tamaó permitido por el servidor:

sudo pico /var/www/tiki12svn/.htaccess


Y cambiar las lineas de estos valores para que queden algo así para permitir subir archivos de hasta unos 10Mb, y de paso le activamos algunas cosas más que nos vendrán bien por si acaso (fundamentalmente des-comentamos las lineas correspondientes para que entren en efecto):

# to activate the error display, uncomment the following line
php_flag display_errors on

# to set the error_reporting level, uncomment the following line. Values are explained here: http://www.php.net/manual/en/errorfunc.constants.php
php_value error_reporting E_ALL

# increase memory (default is 128M). Use this if you are getting blank pages and strange errors
php_value memory_limit 256M

# increase execution time (default value in apache use to be 30, and in some cases of long wiki pages with many plugins it may take longer)
php_value max_execution_time 90

# increase the maximum file size for uploads allowed by php for Tiki (default value in apache use to be 2M which is usually too low for pdf or documents with$
php_value upload_max_filesize 10M
php_value post_max_size 11M

# This sets the maximum time in seconds a script is allowed to parse input data, like POST and GET.
php_value max_input_time 90


Por último, reiniciar el apache:

sudo service apache2 restart

1.3. Pendiente

1.3.1. Monitorización

1.3.1.1. Poner a punto un Piwik

Ver:


lineas a ./config/config.ini.php desde el ./config/glocal.ini.php
; standard email address displayed when sending emails
noreply_email_address = "piwik@precarios.org"

; feedback email address;
; when testing, use your own email address or "nobody"
feedback_email_address = "web@precarios.org"

1.3.1.2. Poner en marcha el OMD instalado

Parece que falta algo en el OMD instalado....
Help! Eliminado Xavier de Pedro

Instalar y mostrar mailgraph:


En su defecto, activar un Munin y un Monit

1.3.1.3. Munin

1.3.1.4. Monit

1.3.2. Habilitar https

Xavi pondrá aquí la documentación necesaria (antes o después de haberlo hecho).

1.3.2.1. Apache: Habilitar SSL (https)

Ver http://betatwits.wordpress.com/2010/07/21/activar-ssl-en-apache2-ubuntu-10-04/

Comando a ejecutar en un terminal
# Instalamos Apache
sudo aptitude install apache2

# Habilitamos el módulo SSL
sudo a2enmod ssl

# Habilitamos la configuración SSL por default

sudo a2ensite default-ssl

# Reiniciamos el servidor
sudo /etc/init.d/apache2 restart

Ya con esto queda habilitado, puedes probarlo entrando al localhost con https://127.0.0.1
Para crear  nuestro certificado, debemos seguir los siguientes pasos

# Creamos las llaves
cd /etc/apache2
sudo openssl genrsa -des3 -out server.key 1024

# Creamos el certificado con la llave
sudo openssl req -new -key server.key -out server.csr



Comando a ejecutar en un terminal
# Y si queremos sacar la contraseña del certificado de seguridad (mmm, recomendado, para que la web no se quede colgada si algun proceso reincia apache y no hay un admin por ahí para poner la contraseña, lo que haría que nadie pudiera acceder a la web, ni por http), pues hacer este paso extra:
sudo mv server.key server.passkey
sudo openssl rsa -in server.passkey -out server.key

# Creamos nuestro certificado, contestando las preguntas que nos indique recordando la contraseña

sudo openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

#Cambiamos de carpeta la llave y certificado

sudo cp server.crt /etc/ssl/certs/
sudo cp server.key /etc/ssl/private/

# Abrimos el archivo de configuracion default-ssl

cd /etc/apache2/sites-available
sudo vim default-ssl

# reemplazamos y habilitamos la siguiente configuracion
SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
SSLCertificateFile /etc/ssl/certs/server.crt
SSLCertificateKeyFile /etc/ssl/private/server.key

# habilitamos el archivo

sudo a2ensite default-ssl

# Reiniciamos apache y listo!!
sudo /etc/init.d/apache2 restart


1.3.2.2. Instalar antivirus y antispam

Classical installation of Postfix + Amavis-new + Spamassassin + Clamav.

Seguir los pasos de:
https://help.ubuntu.com/community/PostfixAmavisNew

1.4. FAQs

1.4.1. ¿Como reiniciar el apache?

sudo service apache2 restart

1.4.2. ¿Como reiniciar el servidor entero?

sudo reboot now

1.4.3. ¿Como gestionar las bbdd mysql por pagina web?

Usando PhpMyAdmin:
http://2015.precarios.org/phpmyadmin/

1.4.4. ¿Cómo conectarnos al servidor?


ssh usuario en 2015.precarios.org

1.4.5. Como cambiar la contraseña

Un usuario de sistema, ejecuta esta instrucción por terminal en su sesión por ssh:

passwd


y un usuario con "sudo" (dentro del grupo que tiene permisos para administrar el sistema), para cambiar la de otra persona:

sudo passwd usuario

1.4.6. ¿Cómo hacer un usuario nuevo por consola?

sudo adduser usuario

1.4.7. ¿Cómo añadir usuarios para tener permisos de "sudo"?

sudo visudo


Añadir un nuevo usuario en esta seccion:

# User privilege specification
root    ALL=(ALL:ALL) ALL
xavi    ALL=(ALL:ALL) ALL


Por ejemplo, si añadimos al usuario "lorena", quedará la sección como:

# User privilege specification
root    ALL=(ALL:ALL) ALL
xavi    ALL=(ALL:ALL) ALL
lorena    ALL=(ALL:ALL) ALL


Para comprobar si funciona el sudo, el otro usuario (lorena, en este ejemplo), ejecuta:

sudo su
exit

1.4.8. ¿Como ver los procesos del servidor a tiempo real?

htop

1.4.9. ¿Como moverse por las carpetas del servidor y gestionar archivos y enlaces simbólicos?

Con "Midnight Commander"

mc


Enlaces simbólicos:

  1. Poner la carpeta de origen en un lado (p.e. izquierdo), y la carpeta de destino en el otro (a la derecha, en este ejemplo)
  2. Seleccionar en el panel dela izquierda (origen) el archivo real que queremos que quede enlazado. Bajamos con las flechas del cursor hasta dejarlo seleccionado (sombreado).
  3. Ir al menú File > Symlink (c+x+s)
  4. Con "Tab" o ratón, ir a escribir el nombre que queremos que quede de ese archivo en la carpeta de destino (Poner la ruta entera)


Por consola:

sudo ln -s /ruta/absoluta/origen/archivoreal /ruta/absoluta/destino/archivoficticio

1.4.10. ¿Como hacer Backups?

No hemos decidio aún como hacerlos en el servidor. Xavier de Pedro

Herramientas útiles para escritorios personales:

Ver: http://semillaspec.org/Backups

  • Backintime - para escritorios personales, por GUI (gnome o kde, etc). Usa "hard links".
  • LuckyBackup - GUI para Rsync


Para servidores: Scripts personalizados.

  • copias locales periódicas (diarias, o semanales): del mysql, archivos de tiki, y archivos clave del servidor (/etc, /root). Xavi puede poner el suyo. Y transferencia por ftp a otro lugar.
  • otras opciones?

1.4.10.1. Script propio para mysql, /etc i tikifiles

[+]

1.4.11. ¿Como añadir subdominios o modificar el (sub)dominio precarios.org?

Gestión del dominio - Servidor DNS: para añadir nuevas zonas y subdominios, etc.
https://ecodim-dns.net/manager/

Pedir usuario y contraseña a Xavi y/o Xabi

1.4.12. ¿Donde hacer la renovación anual del dominio precarios.org o pedir su transferencia?

Extranet de dominios en dimensis: para renovar precarios.org, comprar dominios nuevos, transferirlos, etc.
http://dominios.dimensis.es

Pedir usuario y contraseña a Xavi y/o Xabi

1.4.13. ¿Como copiar arbol de directorios entre dos servidores?

Usando rsync.

(1) copia el árbol de directorios desde /var/www en el servidor remoto servidor1.org hacia el servidor local en el directorio /home/xavi/www :

comando
rsync -zavr root@servidor1.org:/var/www /home/xavi/www


(2) copia las bases de datos mysql desde /var/lib/mysql en el servidor remoto servidor1.org hacia el servidor local en el directorio /home/xavi/mysql :

comando
rsync -zavr root@servidor1.org:/var/lib/mysql /home/xavi/mysql

1.4.14. ¿Como cambiar correos?

Si cambiase el presidente, por ejemplo, habría que:

  1. Editar /etc/postfix/virtual para sustituir el correo antiguo por el nuevo.
  2. Ejecutar sudo postmap /etc/postfix/virtual para que los cambios surtan efecto. No es necesario arrancar de nuevo el servicio postfix.

1.4.15. ¿Cómo enviar correos (como presidente(at)precarios.org, p.e.)?

Es posible hacerlo desde gmail, por ejemplo, desde configuración > Cuentas > Añadir otra dirección de correo tuya. Después hay que seguir las instrucciones. Pero es necesario utilizar el SMTP de Gmail (y no el de precarios.org) porque no lo tenemos instalado en el servidor.
Sólo es posible utilizar este procedimiento desde cuentas que estén dadas de alta en el fichero /etc/postfix/virtual el paso anterior.
Para enviar correo desde otros servicios, hay que seguir las instrucciones anteriores adaptándolas al caso particular.

1.5. Acciones post-aviso envio spam servidor (23 Nov 2016)

Nos han notificado que se estaba enviando correo spam desde el servidor.

He instalado rootkithunter, y comprobado el servidor pero parece que no hay ningún rootkit. Y puesto spamassassin en marcha, en teoria.
He seguido instrucciones de:
https://help.ubuntu.com/lts/serverguide/mail-filtering.html

Registro de Comandos

488 sudo apt-get install check-mk-agent
  489  sudo mc
  490  nano /etc/xinetd.d/check_mk
  491  service xinetd restart
  492  mailq
  494  apt-get install rkhunter
  495  sudo rkhunter --versioncheck
  496  sudo rkhunter --update
  497  sudo rkhunter --propupd
  498  rkhunter -c --enable all --disable none
  499  less /var/log/rkhunter.log
  500  sudo apt install amavisd-new spamassassin clamav-daemon
  501  apt install opendkim postfix-policyd-spf-python
  502  apt install pyzor razor
  503  apt install arj cabextract cpio lha nomarch pax rar unrar unzip zip
  504  adduser clamav amavis
  505  adduser amavis clamav
  506  nano /etc/default/spamassassin
  508  service spamassassin start
  509  nano /etc/amavis/conf.d/15-content_filter_mode
  510  nano /etc/amavis/conf.d/21-ubuntu_defaults
  511  service amavis restart
  512  mailq
  513  sudo postconf -e 'content_filter = smtp-amavis:[127.0.0.1]:10024'
  514  nano /etc/postfix/master.cf
  515  service postfix restart

Añadir restricciones postfix

He añadido nuevas condiciones para permitir el envio de correos con postfix, para ver si así eliminamos en envío de spam:
(de https://www.howtoforge.com/block_spam_at_mta_level_postfix )

sudo nano /etc/postfix/main.cf

settings in /etc/postfix/main.cf
# Extra section added by Xavier de Pedro on 20161205 ini
# from www.howtoforge.com/block_spam_at_mta_level_postfix
smtpd_helo_required = yes
disable_vrfy_command = yes
strict_rfc821_envelopes = yes
invalid_hostname_reject_code = 554
multi_recipient_bounce_reject_code = 554
non_fqdn_reject_code = 554
relay_domains_reject_code = 554
unknown_address_reject_code = 554
unknown_client_reject_code = 554
unknown_hostname_reject_code = 554
unknown_local_recipient_reject_code = 554
unknown_relay_recipient_reject_code = 554
#unknown_sender_reject_code = 554
unknown_virtual_alias_reject_code = 554
unknown_virtual_mailbox_reject_code = 554
unverified_recipient_reject_code = 554
unverified_sender_reject_code = 554

smtpd_recipient_restrictions = reject_invalid_hostname,
  reject_unknown_recipient_domain,
  reject_unauth_pipelining,
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_unauth_destination,
#  reject_rbl_client multi.uribl.com,
  reject_rbl_client dsn.rfc-ignorant.org,
  reject_rbl_client dul.dnsbl.sorbs.net,
#  reject_rbl_client list.dsbl.org,
  reject_rbl_client sbl-xbl.spamhaus.org,
  reject_rbl_client bl.spamcop.net,
  reject_rbl_client dnsbl.sorbs.net,
  reject_rbl_client cbl.abuseat.org,
  reject_rbl_client ix.dnsbl.manitu.net,
  reject_rbl_client combined.rbl.msrbl.net,
  reject_rbl_client rabl.nuclearelephant.com,
  permit
# Extra section added by Xavier de Pedro on 20161205 end


Y reiniciamos postfix

sudo service postfix restart


Ver también como referencia (aunque la configuración indicada en esta página de documentación de postfix no funcionaba tal cual en precarios.org sino que tuve que editarla a mano, quitando tabulaciones y los smtp_data restriccions que no entendía):
http://www.postfix.org/SMTPD_ACCESS_README.html#lists

Un comando muy útil para ver qué estaba fallando en el postfix ha sido:

sudo su
egrep '(warning|fatal|panic):' /var/log/mail.log | tail -20
exit

Habilitar sólo auth smtp (puerto 587)

Ver: https://help.ubuntu.com/community/Postfix#Using_Port_587_for_Secure_Submission

sudo nano /etc/postfix/master.cf

lineas habilitadas en /etc/postfix/master.cf
submission inet n       -       -       -       -       smtpd
  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject

sudo service postfix restart


Mucho del correo spam se enviaba como munin en precarios.org, así qhe he configurado postfix para rechazar los envíos como munin en precarios.org
Pasos seguidos a partir de este tutorial:
https://www.cyberciti.biz/faq/howto-blacklist-reject-sender-email-address/

Nombres alias de esta página

Servidor2015

Página última modificacion en Miércoles 07 de Diciembre, 2016 13:11:37

Apúntate a la lista precarios-info

 

Colabora

  • Donar con tarjeta o PayPal: