Sobre las etiquetas PHP

23 enero, 2016 Deja un comentario

Sintaxis de PHP:

La sintaxis de PHP es derivada de muchos lenguajes, aunque predomina la influencia de C en la sintaxis de este lenguaje, sin embargo Perl ha influenciado en buena parte la sintaxis. Con las últimas funcionalidades de Programación Orientada a Objetos, tenemos muchas similitudes a Java, Sin embargo a pesar de la incorporación de elementos de muchos otros lenguajes, la sintaxis de PHP sigue siendo simple y fácil de entender.

PHP Tags

A pesar de que se recomienda utilizar PHP como código puro, PHP está diseñado principalmente como un procesador de texto (de ahí su nombre). Para facilitar esta función, el código PHP se puede insertar directamente en un archivo de texto con un conjunto especial de etiquetas; el intérprete entonces procesara lo que este dentro de estas etiquetas, omitiendo lo que este fuera de estas.

Hay cinco tipos de etiquetas disponibles:

Standard Tags

<?php echo 'if you want to serve PHP code in XHTML or XML documents, use these tags'; ?>

Son estas las etiquetas de apertura y cierre de facto; son la mejor solución para la portabilidad y compatibilidad hacia atrás, ya que están garantizados para estar disponible y no se pueden desactivar cambiando el archivo de configuración de PHP.

Echo Tags

<?= 'print this string' ?>

Desde la introducción de etiquetas cortas, también conocidas como “etiquetas de eco”, permiten imprimir el resultado de una expresión directamente a la salida de la secuencia de comandos. Con el lanzamiento de PHP 5.4, las etiquetas cortas y etiquetas de eco se dividieron, y las etiquetas de eco están siempre habilitados.

Comúnmente estas etiquetas son utilizadas para una primera aproximación al uso de templates.

Short Tags

<? echo "Hello World!!" ?>

Etiquetas cortas, fueron por mucho tiempo el estándar en el mundo de PHP; Sin embargo, tienen el inconveniente principal en el conflicto con instrucciones de procesamiento XML (por ejemplo, <? xml) y por tanto, ya no se recomiendan y se han reducido un poco en el camino, hoy son consideradas una mala práctica.

Script Tags

<script language="php">
    echo 'some editors (like FrontPage) don\'t like processing instructions within these tags';
</script>

Etiquetas de script se introdujeron para que los editores de HTML que fueran capaces de hacer caso omiso de JavaScript, pero no pudieron hacer frente a las etiquetas PHP estándar también podría ignorar el código PHP.

ASP Tags

<% echo 'You may optionally use ASP-style tags'; %>

Nadie entiende el por qué se introdujeron estas etiquetas; y más aún porque “pueden ser utilizadas” hoy en día, sin embargo, si usted está tan inclinado, puede activar esta opción de configuración opcional y usted es libre de hacer uso de ellos.

Short Tags , Script Tags y ASP Tags Son considerados obsoleto y incluso han sido eliminados en PHP 7.0.0

Categorías:PHP, Programación Etiquetas: , , ,

Lynis: Found one or more vulnerable packages. [PKGS-7392]

21 agosto, 2015 Deja un comentario

El primer problema que debemos resolver es actualizar todo nuestro sistema, debemos recordar que un sistema operativo no es mas que un conjunto de aplicaciones que hacen un todo, así cada aplicación puede presentar problemas de seguridad o de estabilidad, por lo tanto lo primero que siempre debemos resolver es este pequeño inconveniente.

Normalmente al ejecutar por primera vez lynis, tendrás advertencias de 2 tipos

  • Warnings.
  • Suggestions.

Los Warnings son acciones que debemos realizar lo mas pronto posible, las Suggestionsson solo sugerencias que nos ayudaran a mejorar nuestra seguridad y estabilidad de nuestro sistema integralmente, ojo, no todas las sugerencias son aplicables en todos los casos donde tendremos un servidor instalado, por ejemplo, casos como:


To decrease the impact of a full /tmp file system, place /tmp on a separated partition [FILE-6310]

No son aplicables a nuestro caso de estudio, por que estaremos trabajando sobre una VM estándar de Ubuntu sobre ec2, asi  al momento de crear la imagen, no controlamos estas opciones, sin embargo, mas adelante explicaremos como realizar este proceso, aunque es algo que debe realizarse al momento de la instalación del Sistema Operativo, normalmente esto es útil para quien tiene servidores dedicados o físicos.

Siguiendo entonces con la vulnerabilidad que debemos atacar, hoy:


Fix: Found one or more vulnerable packages. [PKGS-7392]

Los repositorios de Ubuntu están separados en 4 áreas o componentes, estas de acuerdo al nivel de soporte ofrecido por Ubuntu y si este paquete en cuestión cumple con la filosofía de Software de Ubuntu.

Estos 4 componentes son:

  • Main – Soporte Oficial de ubuntu.
  • Restricted – Soporte oficial, pero no necesariamente este software esta bajo una licencia libre.
  • Universe – Paquetes mantenidos por la comunidad. No tienen soporte oficial.
  • Multiverse – Este software no es libre.

Cada componente tiende a ofrecernos 2 rutas, una de los paquetes listos para instalación y otros para descargar las fuentes, sin embargo en nuestro servidor muy rara vez necesitaremos descargar las fuentes de algún paquete, así que en este caso solo dejaremos los repositorios de paquetes no los de sources.

Ademas, es una muy buena practica tener el servidor de repositorios que nos ofrezca una conexión realmente rápida, por lo que en muchos casos recomiendo que usen:

mirror://mirrors.ubuntu.com/mirrors.txt

Con este repositorio tendran siempre el servidor mas cercano o de mejor ping a la ubicacion de su equipo, ya con todo esto
nuestro source.list debe verse algo asi:

deb mirror://mirrors.ubuntu.com/mirrors.txt trusty main universe multiverse
deb mirror://mirrors.ubuntu.com/mirrors.txt trusty-updates main universe multiverse
deb mirror://mirrors.ubuntu.com/mirrors.txt trusty-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu trusty-security main universe multiverse
deb http://archive.canonical.com/ubuntu trusty partner

Luego de esto, realizamos una actualizacion de todo nuestro sistema, podria tardar esto unos minutos.

Ya con esto tendremos solucionado el item: PKGS-7392 de lynis, sin embargo no debemos quedarnos solo con esto, hay un par de cosas que podremos hacer para mejorar el rendimiento de nuestro equipo.

#Actualizaciones automáticas de seguridad

Quizás quieras tener actualizaciones seguridad automáticas de sistema, En la mayoría de las distribuciones de Linux esto es posible.

Atención: Actualizaciones automáticas pueden ser una pesadilla si no se saben manejar bien, sin embargo no hablo de actualizar todo
el sistema operativo, solo las actualizaciones de seguridad, en ciertos casos donde manejas un numero alto de servidores, el mantenerlos
actualizados puede ser un gran dolor de cabeza, así dejamos pasar muchas actualizaciones de seguridad importantes. Al menos en mi
experiencia, tener SOLO las actualizaciones de seguridad de manera automática, puede ser una opción muy validad e importante.

Si deseas habilitar las actualizaciones automáticas, lo primero es asegurarte que tienes instalado unattended-upgrades:

sudo apt-get install -y unattended-upgrades

Luego Actualizar /etc/apt/apt.conf.d/50unattended-upgrades . El numero que esta delante de “unattended-upgrades” puede variar.
Justo aqui asegurate que ${distro_id}:${distro_codename}-security”; este habilitado. Debemos tener algo como esto:

Unattended-Upgrade::Allowed-Origins {
&quot;${distro_id}:${distro_codename}-security&quot;;
// &quot;${distro_id}:${distro_codename}-updates&quot;;
// &quot;${distro_id}:${distro_codename}-proposed&quot;;
// &quot;${distro_id}:${distro_codename}-backports&quot;;
};

En este archivo existen muchas opciones de configuración, desde enviar un correo de notificación cada al ejecutar una actualización, realizar reinicios
automáticos si la actualización así lo requiere. Tras realizar esto, debemos reiniciar nuestro servidor ya que nos aparece un nuevo warning

- Reboot of system is most likely needed [KRNL-5830]

Tras realizar un reboot tenemos ya un indice de linys de 66

[ Lynis 2.1.1 ]

################################################################################
 Lynis comes with ABSOLUTELY NO WARRANTY. This is free software, and you are
 welcome to redistribute it under the terms of the GNU General Public License.
 See the LICENSE file for details about using this software.

 Copyright 2007-2015 - CISOfy, https://cisofy.com
 Enterprise support and plugins available via CISOfy
################################################################################

[+] Initializing program
------------------------------------
  - Detecting OS...                                           [ DONE ]

  ---------------------------------------------------
  Program version:           2.1.1
  Operating system:          Linux
  Operating system name:     Ubuntu
  Operating system version:  14.04
  Kernel version:            3.13.0
  Hardware platform:         x86_64
  Hostname:                  ip-172-31-51-20
  Auditor:                   [Unknown]
  Profile:                   ./default.prf
  Log file:                  /var/log/lynis.log
  Report file:               /var/log/lynis-report.dat
  Report version:            1.0
  Plugin directory:          ./plugins
  ---------------------------------------------------
  - Checking profile file (./default.prf)...
  - Program update status...                                  [ NO UPDATE ]

[+] System Tools
------------------------------------
  - Scanning available tools...
  - Checking system binaries...

[+] Plugins (phase 1)
------------------------------------
 Note: plugins have more extensive tests, which may take a few minutes to complete

  - Plugins enabled                                           [ NONE ]

[+] Boot and services
------------------------------------
  - Service Manager                                           [ UNKNOWN ]
    - Checking presence GRUB                                  [ OK ]
    - Checking presence GRUB2                                 [ FOUND ]
    - Checking for password protection                        [ WARNING ]
  - Check services at startup (rc2.d)                         [ DONE ]
    Result: found 9 services
  - Check startup files (permissions)                         [ OK ]

[+] Kernel
------------------------------------
  - Checking default run level                                [ RUNLEVEL 2 ]
  - Checking CPU support (NX/PAE)
    CPU support: PAE and/or NoeXecute supported               [ FOUND ]
  - Checking kernel version and release                       [ DONE ]
  - Checking kernel type                                      [ DONE ]
  - Checking loaded kernel modules                            [ DONE ]
      Found 19 active modules
  - Checking Linux kernel configuration file                  [ FOUND ]
  - Checking default I/O kernel scheduler                     [ FOUND ]
  - Checking for available kernel update                      [ OK ]
  - Checking core dumps configuration                         [ DISABLED ]
    - Checking setuid core dumps configuration                [ PROTECTED ]
  - Check if reboot is needed                                 [ NO ]

[+] Memory and processes
------------------------------------
  - Checking /proc/meminfo                                    [ FOUND ]
  - Searching for dead/zombie processes                       [ OK ]
  - Searching for IO waiting processes                        [ OK ]

[+] Users, Groups and Authentication
------------------------------------
  - Search administrator accounts                             [ OK ]
  - Checking for non-unique UIDs                              [ OK ]
  - Checking consistency of group files (grpck)               [ OK ]
  - Checking non unique group ID's                            [ OK ]
  - Checking non unique group names                           [ OK ]
  - Checking password file consistency                        [ OK ]
  - Query system users (non daemons)                          [ DONE ]
  - Checking NIS+ authentication support                      [ NOT ENABLED ]
  - Checking NIS authentication support                       [ NOT ENABLED ]
  - Checking sudoers file                                     [ FOUND ]
    - Check sudoers file permissions                          [ OK ]
  - Checking PAM password strength tools                      [ SUGGESTION ]
  - Checking PAM configuration files (pam.conf)               [ FOUND ]
  - Checking PAM configuration files (pam.d)                  [ FOUND ]
  - Checking PAM modules                                      [ FOUND ]
  - Checking LDAP module in PAM                               [ NOT FOUND ]
  - Checking accounts without expire date                     [ OK ]
  - Checking accounts without password                        [ OK ]
  - Checking user password aging                              [ DISABLED ]
  - Determining default umask
    - Checking umask (/etc/profile)                           [ OK ]
    - Checking umask (/etc/login.defs)                        [ SUGGESTION ]
    - Checking umask (/etc/init.d/rc)                         [ SUGGESTION ]
  - Checking LDAP authentication support                      [ NOT ENABLED ]

[+] Shells
------------------------------------
  - Checking shells from /etc/shells
    Result: found 6 shells (valid shells: 6).
    - Session timeout settings/tools                          [ NONE ]

[+] File systems
------------------------------------
  - Checking mount points
    - Checking /home mount point                              [ SUGGESTION ]
    - Checking /tmp mount point                               [ SUGGESTION ]
    - Checking /var mount point                               [ SUGGESTION ]
  - Querying FFS/UFS mount points (fstab)                     [ NONE ]
  - Query swap partitions (fstab)                             [ NONE ]
  - Testing swap partitions                                   [ CHECK NEEDED ]
  - Checking for old files in /tmp                            [ OK ]
  - Checking /tmp sticky bit                                  [ OK ]
  - ACL support root file system                              [ ENABLED ]
  - Checking Locate database                                  [ NOT FOUND ]

[+] Storage
------------------------------------
  - Checking usb-storage driver (modprobe config)             [ NOT DISABLED ]
  - Checking firewire ohci driver (modprobe config)           [ DISABLED ]

[+] NFS
------------------------------------
  - Check running NFS daemon                                  [ NOT FOUND ]

[+] Name services
------------------------------------
  - Checking default DNS search domain                        [ NONE ]
  - Checking search domains                                   [ FOUND ]
  - Checking /etc/resolv.conf options                         [ NONE ]
  - Searching DNS domain name                                 [ FOUND ]
      Domain name: ec2.internal
  - Checking nscd status                                      [ NOT FOUND ]
  - Checking BIND status                                      [ NOT FOUND ]
  - Checking PowerDNS status                                  [ NOT FOUND ]
  - Checking ypbind status                                    [ NOT FOUND ]
  - Checking /etc/hosts
    - Checking /etc/hosts (duplicates)                        [ OK ]
    - Checking /etc/hosts (hostname)                          [ SUGGESTION ]
    - Checking /etc/hosts (localhost)                         [ OK ]

[+] Ports and packages
------------------------------------
  - Searching package managers
    - Searching dpkg package manager                          [ FOUND ]
      - Querying package manager
    - Query unpurged packages                                 [ NONE ]
  - Checking security repository in sources.list file         [ OK ]
  - Checking APT package database                             [ OK ]
  - Checking vulnerable packages                              [ OK ]
  - Checking upgradeable packages                             [ SKIPPED ]
  - Checking package audit tool                               [ INSTALLED ]
    Found: apt-check

[+] Networking
------------------------------------
  - Checking configured nameservers
    - Testing nameservers
        Nameserver: 172.31.0.2                                [ OK ]
    - Minimal of 2 responsive nameservers                     [ WARNING ]
  - Checking default gateway                                  [ DONE ]
  - Getting listening ports (TCP/UDP)                         [ DONE ]
      * Found 5 ports
  - Checking promiscuous interfaces                           [ OK ]
  - Checking waiting connections                              [ OK ]
  - Checking status DHCP client                               [ RUNNING ]

[+] Printers and Spools
------------------------------------
  - Checking cups daemon                                      [ NOT FOUND ]
  - Checking lp daemon                                        [ NOT RUNNING ]

[+] Software: e-mail and messaging
------------------------------------
  - Checking Exim status                                      [ NOT FOUND ]
  - Checking Postfix status                                   [ NOT FOUND ]
  - Checking Qmail status                                     [ NOT FOUND ]
  - Checking Sendmail status                                  [ NOT FOUND ]

[+] Software: firewalls
------------------------------------
  - Checking iptables kernel module                           [ NOT FOUND ]
    - Checking pflogd status                                  [ NOT FOUND ]
  - Checking pf                                               [ NOT FOUND ]
  - Checking host based firewall                              [ NOT ACTIVE ]

[+] Software: webserver
------------------------------------
  - Checking Apache                                           [ NOT FOUND ]
  - Checking nginx                                            [ NOT FOUND ]

[+] SSH Support
------------------------------------
  - Checking running SSH daemon                               [ FOUND ]
    - Searching SSH configuration                             [ FOUND ]
    - Checking defined SSH options                            [ DONE ]
    - SSH option: PermitRootLogin (without-password)          [ OK ]
    - SSH option: Protocol                                    [ OK ]
    - SSH option: StrictModes                                 [ OK ]
    - SSH option: AllowUsers                                  [ NOT FOUND ]
    - SSH option: AllowGroups                                 [ NOT FOUND ]

[+] SNMP Support
------------------------------------
  - Checking running SNMP daemon                              [ NOT FOUND ]

[+] Databases
------------------------------------
  - MySQL process status                                      [ NOT FOUND ]
  - PostgreSQL processes status                               [ NOT FOUND ]
  - Oracle processes status                                   [ NOT FOUND ]

[+] LDAP Services
------------------------------------
  - Checking OpenLDAP instance                                [ NOT FOUND ]

[+] PHP
------------------------------------
  - Checking PHP                                              [ NOT FOUND ]

[+] Squid Support
------------------------------------
  - Checking running Squid daemon                             [ NOT FOUND ]

[+] Logging and files
------------------------------------
  - Checking for a running log daemon                         [ OK ]
    - Checking Syslog-NG status                               [ NOT FOUND ]
    - Checking systemd journal status                         [ NOT FOUND ]
    - Checking Metalog status                                 [ NOT FOUND ]
    - Checking RSyslog status                                 [ FOUND ]
    - Checking RFC 3195 daemon status                         [ NOT FOUND ]
    - Checking minilogd instances                             [ NOT FOUND ]
  - Checking logrotate presence                               [ OK ]
  - Checking log directories (static list)                    [ DONE ]
  - Checking open log files                                   [ DONE ]
  - Checking deleted files in use                             [ DONE ]

[+] Insecure services
------------------------------------
  - Checking inetd status                                     [ NOT ACTIVE ]

[+] Banners and identification
------------------------------------
  - /etc/motd                                                 [ NOT FOUND ]
  - /etc/issue                                                [ FOUND ]
    - /etc/issue contents                                     [ WEAK ]
  - /etc/issue.net                                            [ FOUND ]
    - /etc/issue.net contents                                 [ WEAK ]

[+] Scheduled tasks
------------------------------------
  - Checking crontab/cronjob                                  [ DONE ]
  - Checking atd status                                       [ NOT RUNNING ]

[+] Accounting
------------------------------------
  - Checking accounting information                           [ NOT FOUND ]
  - Checking sysstat accounting data                          [ NOT FOUND ]
  - Checking auditd                                           [ NOT FOUND ]

[+] Time and Synchronization
------------------------------------

[+] Cryptography
------------------------------------
  - Checking SSL certificate expiration                       [ WARNING ]

[+] Virtualization
------------------------------------

[+] Containers
------------------------------------

[+] Security frameworks
------------------------------------
  - Checking presence AppArmor                                [ FOUND ]
    - Checking AppArmor status                                [ ENABLED ]
  - Checking presence SELinux                                 [ NOT FOUND ]
  - Checking presence grsecurity                              [ NOT FOUND ]
  - Checking for implemented MAC framework                    [ OK ]

[+] Software: file integrity
------------------------------------
  - Checking file integrity tools
  - Checking presence integrity tool                          [ NOT FOUND ]

[+] Software: System tooling
------------------------------------
  - Checking automation tooling
  - Automation tooling                                        [ NOT FOUND ]

[+] Software: Malware scanners
------------------------------------

[+] File Permissions
------------------------------------
  - Starting file permissions check
    /etc/lilo.conf                                            [ NOT FOUND ]
    /root/.ssh                                                [ OK ]

[+] Home directories
------------------------------------
  - Checking shell history files                              [ OK ]

[+] Kernel Hardening
------------------------------------
  - Comparing sysctl key pairs with scan profile
    - kernel.core_uses_pid (exp: 1)                           [ DIFFERENT ]
    - kernel.ctrl-alt-del (exp: 0)                            [ OK ]
    - kernel.kptr_restrict (exp: 1)                           [ OK ]
    - kernel.sysrq (exp: 0)                                   [ DIFFERENT ]
    - net.ipv4.conf.all.accept_redirects (exp: 0)             [ DIFFERENT ]
    - net.ipv4.conf.all.accept_source_route (exp: 0)          [ OK ]
    - net.ipv4.conf.all.bootp_relay (exp: 0)                  [ OK ]
    - net.ipv4.conf.all.forwarding (exp: 0)                   [ OK ]
    - net.ipv4.conf.all.log_martians (exp: 1)                 [ DIFFERENT ]
    - net.ipv4.conf.all.mc_forwarding (exp: 0)                [ OK ]
    - net.ipv4.conf.all.proxy_arp (exp: 0)                    [ OK ]
    - net.ipv4.conf.all.rp_filter (exp: 1)                    [ OK ]
    - net.ipv4.conf.all.send_redirects (exp: 0)               [ DIFFERENT ]
    - net.ipv4.conf.default.accept_redirects (exp: 0)         [ DIFFERENT ]
    - net.ipv4.conf.default.accept_source_route (exp: 0)      [ DIFFERENT ]
    - net.ipv4.conf.default.log_martians (exp: 1)             [ DIFFERENT ]
    - net.ipv4.icmp_echo_ignore_broadcasts (exp: 1)           [ OK ]
    - net.ipv4.icmp_ignore_bogus_error_responses (exp: 1)     [ OK ]
    - net.ipv4.tcp_syncookies (exp: 1)                        [ OK ]
    - net.ipv4.tcp_timestamps (exp: 0)                        [ DIFFERENT ]
    - net.ipv6.conf.all.accept_redirects (exp: 0)             [ DIFFERENT ]
    - net.ipv6.conf.all.accept_source_route (exp: 0)          [ OK ]
    - net.ipv6.conf.default.accept_redirects (exp: 0)         [ DIFFERENT ]
    - net.ipv6.conf.default.accept_source_route (exp: 0)      [ OK ]

[+] Hardening
------------------------------------
    - Installed compiler(s)                                   [ NOT FOUND ]
    - Installed malware scanner                               [ NOT FOUND ]

[+] Custom Tests
------------------------------------
  - Running custom tests...                                   [ NONE ]

================================================================================

  -[ Lynis 2.1.1 Results ]-

  Warnings:
  ----------------------------
  - Couldn't find 2 responsive nameservers [NETW-2705]
      https://cisofy.com/controls/NETW-2705/

  Suggestions:
  ----------------------------
  - Set a password on GRUB bootloader to prevent altering boot configuration (e.g. boot in single user mode without password) [BOOT-5122]
      https://cisofy.com/controls/BOOT-5122/
  - Install a PAM module for password strength testing like pam_cracklib or pam_passwdqc [AUTH-9262]
      https://cisofy.com/controls/AUTH-9262/
  - Configure password aging limits to enforce password changing on a regular base [AUTH-9286]
      https://cisofy.com/controls/AUTH-9286/
  - Default umask in /etc/login.defs could be more strict like 027 [AUTH-9328]
      https://cisofy.com/controls/AUTH-9328/
  - Default umask in /etc/init.d/rc could be more strict like 027 [AUTH-9328]
      https://cisofy.com/controls/AUTH-9328/
  - To decrease the impact of a full /home file system, place /home on a separated partition [FILE-6310]
      https://cisofy.com/controls/FILE-6310/
  - To decrease the impact of a full /tmp file system, place /tmp on a separated partition [FILE-6310]
      https://cisofy.com/controls/FILE-6310/
  - To decrease the impact of a full /var file system, place /var on a separated partition [FILE-6310]
      https://cisofy.com/controls/FILE-6310/
  - Check your /etc/fstab file for swap partition mount options [FILE-6336]
      https://cisofy.com/controls/FILE-6336/
  - The database required for 'locate' could not be found. Run 'updatedb' or 'locate.updatedb' to create this file. [FILE-6410]
      https://cisofy.com/controls/FILE-6410/
  - Disable drivers like USB storage when not used, to prevent unauthorized storage or data theft [STRG-1840]
      https://cisofy.com/controls/STRG-1840/
  - Add the IP name and FQDN to /etc/hosts for proper name resolving [NAME-4404]
      https://cisofy.com/controls/NAME-4404/
  - Install debsums utility for the verification of packages with known good database. [PKGS-7370]
      https://cisofy.com/controls/PKGS-7370/
  - Install package apt-show-versions for patch management purposes [PKGS-7394]
      https://cisofy.com/controls/PKGS-7394/
  - Check your resolv.conf file and fill in a backup nameserver if possible [NETW-2705]
      https://cisofy.com/controls/NETW-2705/
  - Configure a firewall/packet filter to filter incoming and outgoing traffic [FIRE-4590]
      https://cisofy.com/controls/FIRE-4590/
  - Add a legal banner to /etc/issue, to warn unauthorized users [BANN-7126]
      https://cisofy.com/controls/BANN-7126/
  - Add legal banner to /etc/issue.net, to warn unauthorized users [BANN-7130]
      https://cisofy.com/controls/BANN-7130/
  - Enable process accounting [ACCT-9622]
      https://cisofy.com/controls/ACCT-9622/
  - Enable sysstat to collect accounting (no results) [ACCT-9626]
      https://cisofy.com/controls/ACCT-9626/
  - Enable auditd to collect audit information [ACCT-9628]
      https://cisofy.com/controls/ACCT-9628/
  - Check available certificates for expiration [CRYP-7902]
      https://cisofy.com/controls/CRYP-7902/
  - Install a file integrity tool to monitor changes to critical and sensitive files [FINT-4350]
      https://cisofy.com/controls/FINT-4350/
  - Determine if automation tools are present for system management [TOOL-5002]
      https://cisofy.com/controls/TOOL-5002/
  - One or more sysctl values differ from the scan profile and could be tweaked [KRNL-6000]
      https://cisofy.com/controls/KRNL-6000/
  - Harden the system by installing at least one malware scanner, to perform periodic file system scans [HRDN-7230]
      https://cisofy.com/controls/HRDN-7230/

  Follow-up:
  ----------------------------
  - Check the logfile for more details (less /var/log/lynis.log)
  - Read security controls texts (https://cisofy.com)
  - Use --upload to upload data (Lynis Enterprise users)

================================================================================

  Lynis security scan details:

  Hardening index : 66 [#############       ]
  Tests performed : 175
  Plugins enabled : 0

  Quick overview:
  - Firewall [X] - Malware scanner [X]

  Lynis Modules:
  - Heuristics Check [NA] - Security Audit [V]
  - Compliance Tests [X] - Vulnerability Scan [V]

  Files:
  - Test and debug information      : /var/log/lynis.log
  - Report data                     : /var/log/lynis-report.dat

================================================================================
  Tip: Disable all tests which are not relevant or are too strict for the
       purpose of this particular machine. This will remove unwanted suggestions
       and also boost the hardening index. Each test should be properly analyzed
       to see if the related risks can be accepted, before disabling the test.
================================================================================

  Lynis 2.1.1
  Auditing, hardening and compliance for BSD, Linux, Mac OS and Unix
  Copyright 2007-2015 - CISOfy, https://cisofy.com
  Enterprise support and plugins available via CISOfy
================================================================================

Auditando nuestros servidores con Linux

12 agosto, 2015 1 comentario

Desde hace un tiempo, me ha tocado convertirme en sysadmin, no es el tipo de trabajo que normalmente me gusta hacer, considero que los conocimientos de un sysadmin van mucho mas allá de los que yo poseo, sin embargo hago mi mejor esfuerzo y no he resultado tan malo.

En la búsqueda de herramientas que ayuden a mejorar el mantenimiento, seguridad y administración de los servidores que tengo bajo mi responsabilidad, me he encontrado con Lynis, es una herramienta de auditoria de Seguridad de Código Libre desarrollada y mantenida por CISOfy, su principal objetivo es ayudar a los Administradores de Sistemas, Auditores y profesionales de Seguridad auditar y asegurar sus sistemas basados en Linux o Unix, Es bastante flexible y corre en casi todas las distribuciones.

Instalación:

La instalación es realmente simple, solo hay que descargar el archivo que esta en el sitio web, descomprimirlo y ejecutarlo.


$ curl https://cisofy.com/files/lynis-2.1.1.tar.gz -o lynis.tar.gz
# tar xvfz lynis.tar.gz -C /opt/

No hay mucho mas que hacer, para tener lynis instalado en nuestro equipo.

Ejecución:

#./lynis -c -Q

Resultado:

[ Lynis 2.1.1 ]

################################################################################
Lynis comes with ABSOLUTELY NO WARRANTY. This is free software, and you are
welcome to redistribute it under the terms of the GNU General Public License.
See the LICENSE file for details about using this software.

Copyright 2007-2015 - CISOfy, https://cisofy.com
Enterprise support and plugins available via CISOfy
################################################################################

[+] Initializing program
------------------------------------
- Detecting OS... [ DONE ]

---------------------------------------------------
Program version: 2.1.1
Operating system: Linux
Operating system name: Ubuntu
Operating system version: 14.04
Kernel version: 3.13.0
Hardware platform: x86_64
Hostname: ip-172-31-54-190
Auditor: [Unknown]
Profile: ./default.prf
Log file: /var/log/lynis.log
Report file: /var/log/lynis-report.dat
Report version: 1.0
Plugin directory: ./plugins
---------------------------------------------------
- Checking profile file (./default.prf)...
- Program update status... [ NO UPDATE ]

[+] System Tools
------------------------------------
- Scanning available tools...
- Checking system binaries...

[+] Plugins (phase 1)
------------------------------------
Note: plugins have more extensive tests, which may take a few minutes to complete

- Plugins enabled [ NONE ]

[+] Boot and services
------------------------------------
- Service Manager [ UNKNOWN ]
- Checking presence GRUB [ OK ]
- Checking presence GRUB2 [ FOUND ]
- Checking for password protection [ WARNING ]
- Check services at startup (rc2.d) [ DONE ]
Result: found 9 services
- Check startup files (permissions) [ OK ]

[+] Kernel
------------------------------------
- Checking default run level [ RUNLEVEL 2 ]
- Checking CPU support (NX/PAE)
CPU support: PAE and/or NoeXecute supported [ FOUND ]
- Checking kernel version and release [ DONE ]
- Checking kernel type [ DONE ]
- Checking loaded kernel modules [ DONE ]
Found 19 active modules
- Checking Linux kernel configuration file [ FOUND ]
- Checking default I/O kernel scheduler [ FOUND ]
- Checking for available kernel update [ OK ]
- Checking core dumps configuration [ DISABLED ]
- Checking setuid core dumps configuration [ PROTECTED ]
- Check if reboot is needed [ NO ]

[+] Memory and processes
------------------------------------
- Checking /proc/meminfo [ FOUND ]
- Searching for dead/zombie processes [ OK ]
- Searching for IO waiting processes [ OK ]

[+] Users, Groups and Authentication
------------------------------------
- Search administrator accounts [ OK ]
- Checking for non-unique UIDs [ OK ]
- Checking consistency of group files (grpck) [ OK ]
- Checking non unique group ID's [ OK ]
- Checking non unique group names [ OK ]
- Checking password file consistency [ OK ]
- Query system users (non daemons) [ DONE ]
- Checking NIS+ authentication support [ NOT ENABLED ]
- Checking NIS authentication support [ NOT ENABLED ]
- Checking sudoers file [ FOUND ]
- Check sudoers file permissions [ OK ]
- Checking PAM password strength tools [ SUGGESTION ]
- Checking PAM configuration files (pam.conf) [ FOUND ]
- Checking PAM configuration files (pam.d) [ FOUND ]
- Checking PAM modules [ FOUND ]
- Checking LDAP module in PAM [ NOT FOUND ]
- Checking accounts without expire date [ OK ]
- Checking accounts without password [ OK ]
- Checking user password aging [ DISABLED ]
- Determining default umask
- Checking umask (/etc/profile) [ OK ]
- Checking umask (/etc/login.defs) [ SUGGESTION ]
- Checking umask (/etc/init.d/rc) [ SUGGESTION ]
- Checking LDAP authentication support [ NOT ENABLED ]

[+] Shells
------------------------------------
- Checking shells from /etc/shells
Result: found 6 shells (valid shells: 6).
- Session timeout settings/tools [ NONE ]

[+] File systems
------------------------------------
- Checking mount points
- Checking /home mount point [ SUGGESTION ]
- Checking /tmp mount point [ SUGGESTION ]
- Checking /var mount point [ SUGGESTION ]
- Querying FFS/UFS mount points (fstab) [ NONE ]
- Query swap partitions (fstab) [ NONE ]
- Testing swap partitions [ CHECK NEEDED ]
- Checking for old files in /tmp [ OK ]
- Checking /tmp sticky bit [ OK ]
- ACL support root file system [ ENABLED ]
- Checking Locate database [ NOT FOUND ]

[+] Storage
------------------------------------
- Checking usb-storage driver (modprobe config) [ NOT DISABLED ]
- Checking firewire ohci driver (modprobe config) [ DISABLED ]

[+] NFS
------------------------------------
- Check running NFS daemon [ NOT FOUND ]

[+] Name services
------------------------------------
- Checking default DNS search domain [ NONE ]
- Checking search domains [ FOUND ]
- Checking /etc/resolv.conf options [ NONE ]
- Searching DNS domain name [ FOUND ]
Domain name: ec2.internal
- Checking nscd status [ NOT FOUND ]
- Checking BIND status [ NOT FOUND ]
- Checking PowerDNS status [ NOT FOUND ]
- Checking ypbind status [ NOT FOUND ]
- Checking /etc/hosts
- Checking /etc/hosts (duplicates) [ OK ]
- Checking /etc/hosts (hostname) [ SUGGESTION ]
- Checking /etc/hosts (localhost) [ OK ]

[+] Ports and packages
------------------------------------
- Searching package managers
- Searching dpkg package manager [ FOUND ]
- Querying package manager
- Query unpurged packages [ NONE ]
- Checking security repository in sources.list file [ OK ]
- Checking APT package database [ OK ]
- Checking vulnerable packages [ WARNING ]
- Checking upgradeable packages [ SKIPPED ]
- Checking package audit tool [ INSTALLED ]
Found: apt-check

[+] Networking
------------------------------------
- Checking configured nameservers
- Testing nameservers
Nameserver: 172.31.0.2 [ OK ]
- Minimal of 2 responsive nameservers [ WARNING ]
- Checking default gateway [ DONE ]
- Getting listening ports (TCP/UDP) [ DONE ]
* Found 5 ports
- Checking promiscuous interfaces [ OK ]
- Checking waiting connections [ OK ]
- Checking status DHCP client [ RUNNING ]

[+] Printers and Spools
------------------------------------
- Checking cups daemon [ NOT FOUND ]
- Checking lp daemon [ NOT RUNNING ]

[+] Software: e-mail and messaging
------------------------------------
- Checking Exim status [ NOT FOUND ]
- Checking Postfix status [ NOT FOUND ]
- Checking Qmail status [ NOT FOUND ]
- Checking Sendmail status [ NOT FOUND ]

[+] Software: firewalls
------------------------------------
- Checking iptables kernel module [ NOT FOUND ]
- Checking pflogd status [ NOT FOUND ]
- Checking pf [ NOT FOUND ]
- Checking host based firewall [ NOT ACTIVE ]

[+] Software: webserver
------------------------------------
- Checking Apache [ NOT FOUND ]
- Checking nginx [ NOT FOUND ]

[+] SSH Support
------------------------------------
- Checking running SSH daemon [ FOUND ]
- Searching SSH configuration [ FOUND ]
- Checking defined SSH options [ DONE ]
- SSH option: PermitRootLogin (without-password) [ OK ]
- SSH option: Protocol [ OK ]
- SSH option: StrictModes [ OK ]
- SSH option: AllowUsers [ NOT FOUND ]
- SSH option: AllowGroups [ NOT FOUND ]

[+] SNMP Support
------------------------------------
- Checking running SNMP daemon [ NOT FOUND ]

[+] Databases
------------------------------------
- MySQL process status [ NOT FOUND ]
- PostgreSQL processes status [ NOT FOUND ]
- Oracle processes status [ NOT FOUND ]

[+] LDAP Services
------------------------------------
- Checking OpenLDAP instance [ NOT FOUND ]

[+] PHP
------------------------------------
- Checking PHP [ NOT FOUND ]

[+] Squid Support
------------------------------------
- Checking running Squid daemon [ NOT FOUND ]

[+] Logging and files
------------------------------------
- Checking for a running log daemon [ OK ]
- Checking Syslog-NG status [ NOT FOUND ]
- Checking systemd journal status [ NOT FOUND ]
- Checking Metalog status [ NOT FOUND ]
- Checking RSyslog status [ FOUND ]
- Checking RFC 3195 daemon status [ NOT FOUND ]
- Checking minilogd instances [ NOT FOUND ]
- Checking logrotate presence [ OK ]
- Checking log directories (static list) [ DONE ]
- Checking open log files [ DONE ]
- Checking deleted files in use [ DONE ]

[+] Insecure services
------------------------------------
- Checking inetd status [ NOT ACTIVE ]

[+] Banners and identification
------------------------------------
- /etc/motd [ NOT FOUND ]
- /etc/issue [ FOUND ]
- /etc/issue contents [ WEAK ]
- /etc/issue.net [ FOUND ]
- /etc/issue.net contents [ WEAK ]

[+] Scheduled tasks
------------------------------------
- Checking crontab/cronjob [ DONE ]
- Checking atd status [ NOT RUNNING ]

[+] Accounting
------------------------------------
- Checking accounting information [ NOT FOUND ]
- Checking sysstat accounting data [ NOT FOUND ]
- Checking auditd [ NOT FOUND ]

[+] Time and Synchronization
------------------------------------

[+] Cryptography
------------------------------------
- Checking SSL certificate expiration [ OK ]

[+] Virtualization
------------------------------------

[+] Containers
------------------------------------

[+] Security frameworks
------------------------------------
- Checking presence AppArmor [ FOUND ]
- Checking AppArmor status [ ENABLED ]
- Checking presence SELinux [ NOT FOUND ]
- Checking presence grsecurity [ NOT FOUND ]
- Checking for implemented MAC framework [ OK ]

[+] Software: file integrity
------------------------------------
- Checking file integrity tools
- Checking presence integrity tool [ NOT FOUND ]

[+] Software: System tooling
------------------------------------
- Checking automation tooling
- Automation tooling [ NOT FOUND ]

[+] Software: Malware scanners
------------------------------------

[+] File Permissions
------------------------------------
- Starting file permissions check
/etc/lilo.conf [ NOT FOUND ]
/root/.ssh [ OK ]

[+] Home directories
------------------------------------
- Checking shell history files [ OK ]

[+] Kernel Hardening
------------------------------------
- Comparing sysctl key pairs with scan profile
- kernel.core_uses_pid (exp: 1) [ DIFFERENT ]
- kernel.ctrl-alt-del (exp: 0) [ OK ]
- kernel.kptr_restrict (exp: 1) [ OK ]
- kernel.sysrq (exp: 0) [ DIFFERENT ]
- net.ipv4.conf.all.accept_redirects (exp: 0) [ DIFFERENT ]
- net.ipv4.conf.all.accept_source_route (exp: 0) [ OK ]
- net.ipv4.conf.all.bootp_relay (exp: 0) [ OK ]
- net.ipv4.conf.all.forwarding (exp: 0) [ OK ]
- net.ipv4.conf.all.log_martians (exp: 1) [ DIFFERENT ]
- net.ipv4.conf.all.mc_forwarding (exp: 0) [ OK ]
- net.ipv4.conf.all.proxy_arp (exp: 0) [ OK ]
- net.ipv4.conf.all.rp_filter (exp: 1) [ OK ]
- net.ipv4.conf.all.send_redirects (exp: 0) [ DIFFERENT ]
- net.ipv4.conf.default.accept_redirects (exp: 0) [ DIFFERENT ]
- net.ipv4.conf.default.accept_source_route (exp: 0) [ DIFFERENT ]
- net.ipv4.conf.default.log_martians (exp: 1) [ DIFFERENT ]
- net.ipv4.icmp_echo_ignore_broadcasts (exp: 1) [ OK ]
- net.ipv4.icmp_ignore_bogus_error_responses (exp: 1) [ OK ]
- net.ipv4.tcp_syncookies (exp: 1) [ OK ]
- net.ipv4.tcp_timestamps (exp: 0) [ DIFFERENT ]
- net.ipv6.conf.all.accept_redirects (exp: 0) [ DIFFERENT ]
- net.ipv6.conf.all.accept_source_route (exp: 0) [ OK ]
- net.ipv6.conf.default.accept_redirects (exp: 0) [ DIFFERENT ]
- net.ipv6.conf.default.accept_source_route (exp: 0) [ OK ]

[+] Hardening
------------------------------------
- Installed compiler(s) [ NOT FOUND ]
- Installed malware scanner [ NOT FOUND ]

[+] Custom Tests
------------------------------------
- Running custom tests... [ NONE ]

================================================================================

-[ Lynis 2.1.1 Results ]-

Warnings:
----------------------------
- Found one or more vulnerable packages. [PKGS-7392]
https://cisofy.com/controls/PKGS-7392/

- Couldn't find 2 responsive nameservers [NETW-2705]
https://cisofy.com/controls/NETW-2705/

Suggestions:
----------------------------
- Set a password on GRUB bootloader to prevent altering boot configuration (e.g. boot in single user mode without password) [BOOT-5122]
https://cisofy.com/controls/BOOT-5122/
- Install a PAM module for password strength testing like pam_cracklib or pam_passwdqc [AUTH-9262]
https://cisofy.com/controls/AUTH-9262/
- Configure password aging limits to enforce password changing on a regular base [AUTH-9286]
https://cisofy.com/controls/AUTH-9286/
- Default umask in /etc/login.defs could be more strict like 027 [AUTH-9328]
https://cisofy.com/controls/AUTH-9328/
- Default umask in /etc/init.d/rc could be more strict like 027 [AUTH-9328]
https://cisofy.com/controls/AUTH-9328/
- To decrease the impact of a full /home file system, place /home on a separated partition [FILE-6310]
https://cisofy.com/controls/FILE-6310/
- To decrease the impact of a full /tmp file system, place /tmp on a separated partition [FILE-6310]
https://cisofy.com/controls/FILE-6310/
- To decrease the impact of a full /var file system, place /var on a separated partition [FILE-6310]
https://cisofy.com/controls/FILE-6310/
- Check your /etc/fstab file for swap partition mount options [FILE-6336]
https://cisofy.com/controls/FILE-6336/
- The database required for 'locate' could not be found. Run 'updatedb' or 'locate.updatedb' to create this file. [FILE-6410]
https://cisofy.com/controls/FILE-6410/
- Disable drivers like USB storage when not used, to prevent unauthorized storage or data theft [STRG-1840]
https://cisofy.com/controls/STRG-1840/
- Add the IP name and FQDN to /etc/hosts for proper name resolving [NAME-4404]
https://cisofy.com/controls/NAME-4404/
- Install debsums utility for the verification of packages with known good database. [PKGS-7370]
https://cisofy.com/controls/PKGS-7370/
- Update your system with apt-get update, apt-get upgrade, apt-get dist-upgrade and/or unattended-upgrades [PKGS-7392]
https://cisofy.com/controls/PKGS-7392/
- Install package apt-show-versions for patch management purposes [PKGS-7394]
https://cisofy.com/controls/PKGS-7394/
- Check your resolv.conf file and fill in a backup nameserver if possible [NETW-2705]
https://cisofy.com/controls/NETW-2705/
- Configure a firewall/packet filter to filter incoming and outgoing traffic [FIRE-4590]
https://cisofy.com/controls/FIRE-4590/
- Add a legal banner to /etc/issue, to warn unauthorized users [BANN-7126]
https://cisofy.com/controls/BANN-7126/
- Add legal banner to /etc/issue.net, to warn unauthorized users [BANN-7130]
https://cisofy.com/controls/BANN-7130/
- Enable process accounting [ACCT-9622]
https://cisofy.com/controls/ACCT-9622/
- Enable sysstat to collect accounting (no results) [ACCT-9626]
https://cisofy.com/controls/ACCT-9626/
- Enable auditd to collect audit information [ACCT-9628]
https://cisofy.com/controls/ACCT-9628/
- Install a file integrity tool to monitor changes to critical and sensitive files [FINT-4350]
https://cisofy.com/controls/FINT-4350/
- Determine if automation tools are present for system management [TOOL-5002]
https://cisofy.com/controls/TOOL-5002/
- One or more sysctl values differ from the scan profile and could be tweaked [KRNL-6000]
https://cisofy.com/controls/KRNL-6000/
- Harden the system by installing at least one malware scanner, to perform periodic file system scans [HRDN-7230]
https://cisofy.com/controls/HRDN-7230/

Follow-up:
----------------------------
- Check the logfile for more details (less /var/log/lynis.log)
- Read security controls texts (https://cisofy.com)
- Use --upload to upload data (Lynis Enterprise users)

================================================================================

Lynis security scan details:

Hardening index : 57 [########### ]
Tests performed : 175
Plugins enabled : 0

Quick overview:
- Firewall [X] - Malware scanner [X]

Lynis Modules:
- Heuristics Check [NA] - Security Audit [V]
- Compliance Tests [X] - Vulnerability Scan [V]

Files:
- Test and debug information : /var/log/lynis.log
- Report data : /var/log/lynis-report.dat

================================================================================
Tip: Disable all tests which are not relevant or are too strict for the
purpose of this particular machine. This will remove unwanted suggestions
and also boost the hardening index. Each test should be properly analyzed
to see if the related risks can be accepted, before disabling the test.
================================================================================

Lynis 2.1.1
Auditing, hardening and compliance for BSD, Linux, Mac OS and Unix
Copyright 2007-2015 - CISOfy, https://cisofy.com
Enterprise support and plugins available via CISOfy
================================================================================

Esta es la ejecución tras la inmediata iniciación de una instancia de AWS Ubuntu 14.04, vemos que tenemos un indice de seguridad de 57/100, lo que es realmente bajo, sin embargo el mismo reporte nos realiza las sugerencias para mejorar nuestra seguridad, cada uno de estos items los iremos abordando poco a poco a lo largo de una serie de artículos.

Auditen sus sistemas y comencemos a mejorar la seguridad.

Instalar Virtualbox en Ubuntu de manera rapida

Simplemente ejecutar esta linea en tu terminal, te permitira instalar virtualbox en su version mas reciente de manera rapida, segura sencilla:


sudo sh -c "echo 'deb http://download.virtualbox.org/virtualbox/debian \
'$(lsb_release -cs)' contrib non-free' > /etc/apt/sources.list.d/virtualbox.list" \
&& wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | \
sudo apt-key add - && sudo apt-get update && sudo apt-get install virtualbox-4.3 dkms

Categorías:Algoritmos, Bash

Git Pull usando cronjobs

24 abril, 2015 Deja un comentario

Hoy en mi lugar de trabajo, necesitaba dar una solución rápida y TEMPORAL, al método de actualizacion del código de un sitio web que administramos, ciertamente todo el código se lleva en git, y la versión en el servidor de producción es resultado de un “git clone repo”, pero como en un punto de desarrollo, se hacen commits a producción cada 20 minutos, es algo fastidioso ingresar por ssh, buscar la carpeta y generar un git pull, por lo que se decidió crear un cronjob con esta configuración.

*/1 * * * * cd /var/www/site && /usr/bin/git pull origin master

esto posicionara el script en el directorio de proyecto y realizara un git pull a la rama master, claro esta solución es MUY temporal, no es la mas óptima, lo mejor es crear un repositorio con git –bare, y a travez de hooks actualizar el servidor, sin embargo esa es una opción que te tomaría unos 10 minutos hacerla y esta solo unos 10 segundos…

Vagrant, Primeros Pasos

27 noviembre, 2014 Deja un comentario

vagrant

Desde hace años, nos hemos acostumbrado a entornos *AMP (lamp, wamp, mamp, xampp), lo que no es mas que una serie de herramientas que en general nos proveen de Apache + PHP + Mysql, y algo mas, para hacer pruebas de nuestras aplicaciones son de gran ayuda, sin embargo hoy en día nuestros desarrollos muchas veces van mas allá de estas 3 tecnologías, tenemos elementos como nginx, varnish, memcached, redis, postgresql, node.js, y mucho mas, son elementos para los cuales nuestro servidor *AMP, se nos ha quedado corto, ¿Que pasa cuando trabajas en equipo y quieres que todos tus desarrolladores tengan un entorno de desarrollo especifico, o simplemente quieres replicar por completo tu servidor de producción para garantizar el correcto funcionamiento de tu aplicación, y es que tu servidor probablemente no este en Windows, menos en MacOSX, o como en mi caso, que todos mis servidores esta sobre Centos, y mi OS para desarrollo esta basado en Ubuntu, y hay cosas que simplemente son distintas, y se vuelve cada día mas necesario acabar con eso de “En mi computador funciona”, hoy en día no hay escusas para eso.

Para todo esto y mucho mas tenemos Vagrant, lo cual son contenedores de maquina virtuales, que de manera muy amigable puede ser diseñadas para crear nuestros entornos personalizados o aprovechar algunos ya existentes.

Vagrant es un proyecto de código abierto, cuya meta es la generación de ambientes virtuales de desarrollo de manera practica, rápida, eficiente, portátil y sobre todas las cosas, fáciles de modificar y distribuir, permitiendo basarnos en entornos de virtualización como VirtualBox, VMWare, y AWS, pudiendo extenderse a otros proveedores.
El centro de toda BOX (Maquina virtual de Vagrant), es un VagrantFile, es cual es un archivo que describe la configuración de la maquina, este archivo contiene todos los parámetros de configuración de nuestra maquina virtual, incluso las configuraciones de red y puertos.

¿Como Instalarlo?

VirtualBox

Como ya hemos dicho, Vagrant se aprovecha de los métodos de virtualización de algunos proveedores, para efectos de este tutorial, trabajaremos con virutalbox, por su universalidad y fácil instalación, así que lo primero que debes hacer es instalar VirtualBox. Para lo cual te recomendamos entres en el portal oficial de VirtualBox. y revises el método de instalación mas adecuado a tu Sistema Operativo, aunque esto tiende a ser una instalación muy sencilla.

Vagrant

Solo debemos entra aquí y descargar el paquete adecuado a nuestro sistema operativo, y seguir los pasos básicos de una instalación típica de cualquier software.

¿Como usarlo?

Lo primero que debemos hacer es descargarnos alguna box, adecuada a nuestras necesidades, existen boxes que ya vienen con gran cantidad de paquetes instalados, existen otras que vienen solo con el Sistema Operativo en su forma mas básica, solo esperando a que nosotros instalemos en esta todo lo que deseamos instalar, en nuestro caso usaremos una instalación básica

Para conseguir boxes, hay gran cantidad de sitios por toda la web, sin embargo, recomiendo visitar http://vagrantcloud.com/, tienen gran variedad y mejor soporte.

Con esto, en mente, solo debemos escribir:

vagrant init nfq/wheezy

Esto generara un archivo llamado VagrantFile, el cual contiene toda la información necesaria para gestionar nuestro nuevo box,

Solo nos resta iniciar nuestro box, ejecutando

vagrant up

Este comando intentara buscar en nuestro listado de boxes descargadas en nuestro equipo la imagen indicada en el comando vagrant init, y en caso de no encontrarla, ira hasta vagrantcloud y buscara descargarla,
Algunos otros comandos que debemos aprender son:

  • Vagrant ssh: Debido a que este tipo de implementación no ofrece interfaz gráfica, para acceder a la instancia como tal debemos entrar en ella vía SSH.
  • Vagrant suspend: Si no queremos trabajar con el ambiente en un tiempo nos permite suspenderlo.
  • Vagrant resume: Lo cual nos permitirá levantarla en cuestión de pocos segundos cuando la queramos volver a usarla luego de una suspensión.
  • Vagrant halt: Podremos apagar nuestra implementación.
  • Vagrant destroy: Destruye la maquina virtual, pero deja la base disponible para nuevos proyectos, tampoco destruye el archivo VagrantFile.

Configuración

Vagrant es como el poker, “se aprende en 5 minutos, y se perfecciona en toda una vida“, básicamente debemos iniciar con 2 o 3 configuraciones básicas, y tendremos un entorno de desarrollo muy profesional en solo unos pocos minutos. y realmente no necesitaremos saber absolutamente nada de Linux para esto.

Recordemos que tenemos un archivo llamado Vagrantfile, este contiene todas las configuraciones de nuestro entorno, para comenzar comenzar solo editaremos 3 items, 2 de la red y otro de lo que se llama “aprovisionamiento”…

El primer ítem es FORWARDED PORTS, esta configuración nos permite mapear por un puerto de un valor a otro, así evitar colisiones. Ejemplo:

config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.network "forwarded_port", guest: 3306, host: 33060

Estas lineas específicamente nos mapearan el puerto 80, tradicionalmente usado por nuestro apache al 8080, y el 3306, usado por mysql a 33060, esto útil si en nuestro equipo esos puertos están ocupados por alguna otra aplicación.
Y PROVISIONING, esta la habilidad de poder almacenar en un script las configuraciones configuraciones que consideremos necesarias, luego del la primera ejecución de nuestra maquina virtual

config.vm.provision :shell, :path =&gt; "bootstrap.sh"

En este caso, hemos llamado a script bootstrap.sh y tiene el siguiente código:

#!/usr/bin/env bash
DBPASSWD=1234
apt-get install -y debconf-utils
apt-get install -y apache2
echo "mysql-server mysql-server/root_password password $DBPASSWD" | debconf-set-selections
echo "mysql-server mysql-server/root_password_again password $DBPASSWD" | debconf-set-selections
apt-get install -y mysql-server
apt-get install -y php5 libapache2-mod-php5
sed -e '/bind-address/ s/^#*/# /' -i /etc/mysql/my.cnf
service apache2 restart
rm -rf /var/www
ln -fs /Vagrant /var/www

Con este código básico tendremos un entorno Apache + Mysql + Php muy básico, pero funcional, y todo lo que este en la carpeta donde estamos alojando nuestros archivos Vagrant, sera la que veremos al ingresar desde nuestro navegador favorito:
http://127.0.0.1:8080
luego de esto, solo nos resta ejecutar por primera vez nuestra VM, y esperar mientras el entorno de establece y estamos listo para crear cosas realmente interesantes.

Mi primer VPS – 001

20 agosto, 2014 6 comentarios

Network servers in a data center. Swallow depth of Field

Quien desee hoy ingresar al mundo del desarrollo web se enfrenta con un gran problema, los grandes frameworks que existen hoy en día prácticamente todos requieren de un VPS, ya que no es posible tener en un share host, una aplicación de Django o Ruby on Rails, y no todos los frameworks de PHP te permiten trabajar en un sharehost o no son tan fáciles instalar, muchas veces perdiendo algunas de sus propiedades, por lo que cuando comienzas a desarrollar para la web, como alguien que pretende tener éxito, un VPS será tu mejor aliado.

El primer paso es adquirir un VPS, para un Venezolano es algo complejo, por que hay 2 opciones o utilizas tu cupo cadivi, elemento altamente preciado, o buscas alguno que se pueda pagar en Bolivares (VEF), el problema es que su costo mensual es algo elevado si sera nuestro primer VPS y probablemente sea para pruebas por un largo tiempo.

En Venezuela tristemente son MUY POCOS los proveedores serios de VPS, personalmente he pasado por 3 empresas venezolanas que son de las que hablaré en este artículo, la PEOR de todas fue iguanahosting empresa que hoy no existe, la cual fue un desastre al momento de su desaparición, ya dejaron a muchos clientes al aire, sin respuesta alguna sobre el futuro de sus servicios, simplemente un día cerraron todo y se fueron bajo una fuerte polémica, otra que use alguna vez fue caracashosting pero su atención realmente da mucho que hablar… y hoy en dia estoy con venehosting, donde actualmente tengo un plan VPS de pruebas, aun no salen al público, pero esta muy bien hasta los momentos, la verdad sin ninguna queja, y otra empresa con la que no tengo experiencia pero he escuchado buenos comentarios es wnetve, no tengo experiencia personal con ellos, pero tienen planes muy economicos y tengo amigos que les ha ido bien con ellos…

Esta es la primera decisión que deben tomar al momento de adquirir un vps, ahhh y si les ofrecen un plan extra con cpanel, y cosas de esas, simplemente digan que NO, con una consola pueden cambiar el mundo😀

Categorías:Desarrollo Web, VPS
Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 900 seguidores