manejar proyectos con gitlab (subir proyectos y sincronizarlos)
COMPARAR ARCHIVOS DE UN PROYECTO LOCAL CON EL REMOTO EN GIT
DESCARGAR UN REPO ACTUALIZAR UNA RAMA
ten en cuenta que esto es para un directorio sin archivos comenzando con
la idea final de esto es que de repente tienes tu archivos en otra carpeta ya bien modificados pero quieres subirlos sin dañar el trabajo de otros o el tuyo mismo, creas una nueva carpeta te bajas el repo y realizas los pasos para subirlo como se debe.
podemos realizar un git pull general y nos descargara todas las ramas(branchs) del repositorio
ahora si añadimos los archivos modificados y luego procedemos a ejecutar los pasos para la subida empezando por el siguiente
REALIZAR UN MERGE DE UNA RAMA
SI QUIERES RESTAURAR LOS ARCHIVOS DEL REPO SOBRE LOS LOCALES
SI QUIERES RESTAURAR ARCHIVOS ESPECIFICOS
restaurar a un commit especifico
restaurar a un commit especifico
SI QUIERES MIGRAR DE UNA RAMA A OTRA SIN REALIZAR MERGE, de master a develop
REALIZAR UN MERGE CUANDO: “Already up-to-date”
personalmente prefiero borrar la carpeta donde tengo el repo en mi pc y luego realizar el merge
Nota: te recomiendo instalar meld es un excelente gestor para comprar entre los archivos del merge
BORRAR COMMITS REMOTOS
personalmente prefiero borrar la carpeta donde tengo el repo en mi pc y luego realizar el merge
listar los commits
FORZAR UN GIT PULL
Ver los Commits es posible que tu local este desactualizado master
Si el .gitignore no funciona
o
primero chequeamos las ramas locales y remotas que tenemos
luego seleccionamos la rama local o remota a comparar seguido por 2 puntos entre cada una ejemplo
Version Consolax
Version Grafica
para cambiar la herramienta de comparacion
Realizar un Merge
ahora tenemos bien actualizado master, procedemos hacer merge
cambiamos a la rama develop
Sincronizamos con master
Configurar para copiar commits a otro repo
borrar ramas locales
BORRAR RAMAS REMOTAS
IMPORTANTE LO QUE ESTA MARCADO EN AZUL SON LAS RAMAS QUE VA A EXCEPTUAR DE LA ELIMINACION
partiendo de la premisa que ya tenemos modificaciones en rama_cambios_nuevos
Fuente: https://drive.google.com/file/d/0B-2FDrPc5MapN2Y5cU9QX2lhMGs/view?usp=sharing
Fuente: https://www.atlassian.com/git/tutorials/syncing/git-push
Pasos para crear tu cuenta gitlab y subir tu proyecto
- registrarte en https://gitlab.com/users/sign_in
- al llenar tus datos de registro te enviaran un email de confirmación a tu correo electrónico
- al presionar click en el enlace de confirmación te llevara a la siguiente pagina, y presionas el botón de New Proyect
- proyect path: va el nombre de nuestro proyecto no puede tener espacios
- description: una breve explicación de lo que realiza nuestro proyecto
- visibillity level: son los distintos niveles de visibilidad de tu proyecto y acceso a el para descarga
- Inserta todos tus datos y Presionas Create Proyecto
- ok, ya creamos nuestro proyecto en gitlab, ahora hay un detalle, que no tenemos una llave ssh en nuestro gitlab por eso hay un mensaje que nos pide agregar una ssh key, bueno presionamos en add an SSH Key
- ahora es necesario que abran un terminal en su Gnu/linux y ejecuten los siguiente: ssh-keygen
- Terminal:
ssh-keygen
- te preguntara si quieres registrar en la ruta /home/TU_USUARIO/.ssh/
- Te pedirá que introduzca una clave (esta clave la usaras para conectarte)
- te emitirá un mensaje que logro crear la llave y la ruta donde esta creada /home/TU_USUARIO/.ssh/
ahora para obtener la key(llave) esta es la forma mas facil:Terminal:sudo apt-get install xclip
Terminal:xclip -sel clip < ~/.ssh/id_rsa.pub
oTerminal:cat ~/.ssh/id_rsa.pub
y con eso ya tienes en tu portapapeles la información de tu llave solo de pegar en el gitlab
- buscas con el file manager de tu Gnu/linux en /home/TU_USUARIO/.ssh/
- Coloca un titulo de referencia en Title
- ahora copia lo que contiene tu archivo id_rsa.pub en el campo Key
- listo ya agregamos correctamente la key
- ahora es necesario instalar el paquete git y para eso debes abrir una consola y ejecutar los siguienteTerminal:
sudo apt-get install git
te preguntara si deseas continuar la instalación y presiones que S
- luego que finalice la instalación vamos a ejecutar los siguientes comandos de gitlab
- OJO ESTE ES MI GITLAB USTEDES TIENEN OTRO USUARIO Y EMAIL
Terminal:
git config --global user.name "zcqopx"
Terminal:
git config --global user.email "zcqopx@gmail.com"luego
- Create a new repository
Terminal:
git clone git@gitlab.com:zcqopx/pruebaparablogger.git
- el comando anterior nos sincroniza con el proyecto gitlab creado.
- Entras en la carpeta del proyecto
Terminal:
cd pruebaparablogger
- Creas el archivo README.md
Terminal:
touch README.md
- listas los archivos para verificar que se crearon
Terminal:
ls
- ahora aunque no es necesario que lo hagas yo cree 2 archivos estilos.css y jquery.js para que vean como agregar mas archivos aparte del README.md al gitlab
- lista los archivos dentro de la carpeta
Terminal:
ls
- se agregan a la cola de subida o archivos a sincronizar con gitlab
Terminal:
git add README.md
Terminal:
git add estilos.css
Terminal:
git add query.jssi quieres añadirlos todos con un solo comando usa:
Terminal:
git add --all
- aplico los cambios en el README de los archivos a subir o sincronizar
Terminal:
git commit -m "add README"
- Subir Sincronizar los archivos en gitlab pedira la clave ssh que escribiste cuando ejecutaste el ssh-keygen ahora para realizar la acción de subida y sincronización con gitlab ejecutar:
Terminal:
git push -u origin master
- ve a Proyect selecciona tu proyecto y en la opción de file podrás visualizar tus proyectos
CREAR RAMAS
- Hay 2 cosas muy importante que debes tener en cuenta
- Branch (Ramas) ramas de desarrollo
Cada repositorio tendrá al menos 2 branches (Ventajas de usar un branch develop):
• master <- Versiones que fueron testeadas y tienen un tag asignado.
• develop <- Modificaciones en progreso, el contenido de esta rama puede no funcionar.
Luego opcionalmente pueden existir los siguientes branch:
• feature-* <- Características especiales, por ejemplo 'feature-soporte_efi'
• hotfix-* <- Corrección de bugs, por ejemplo 'hotfix-segfaul_al_abrir'
• release-* <- Últimos comits antes de crear un tag
- Crear branch develop y posicionarse en ese branch:
Terminal:
git checkout -b develop
Terminal:
git checkout develop
Terminal:
git add --all
Terminal:
git commit -m "original"
Terminal:
git push -u origin develop # El -u solo es necesario en el primer pushsi quieres eliminar el branch creado usa
Terminal:
git push origin --delete develop
- Con los comandos anteriores ya tendras sincronizados tu archivos en el branch (rama) develop
- ahora para agregar todos los archivos modificados y sincronizarlos al repositorioTerminal:
git add --all
Terminal:git commit -m "prueba blogger"
Terminal:git push origin develop
- de igual forma lo puedes hacer con master pero es mas recomendable subir siempre en develop y a master cuando sepas que ya esta bien testeado
si deseas sincronizar en otra computadora por ssh-key
#creas la ssh-key la agregas como en los pasos anteriores y ejecutas los comandosTerminal:git config --global user.name "zcqopx"
Terminal:git config --global user.email "zcqopx@gmail.com"
Terminal:git clone git@gitlab.com:zcqopx/pruebaparablogger.git
#entramos en la carpeta del proyecto antes creadoTerminal:cd existing_folder
Terminal:git init #inicializamos git
#añadimos el repoTerminal:git remote add origin git@gitlab.com:zcqopx/pruebaparablogger.git
ahora sincronizamos el repo remoto con el localTerminal:git fetch
#o puede seleccionar directamete el branchTerminal:git fetch origin test
#al final nos mostra lo siguiente- * [new branch] develop -> origin/develop
* [new branch] master -> origin/master
* [new branch] test -> origin/test
y seleccionamos el que deseamos sincronizar
ejemplo
Terminal:
git checkout test
- SUBIR ARCHIVOS EN UN PROYECTO YA CREADO
logearnos en la configuracion local de nuestra pcTerminal:git config --global user.name "zcqopx"
Terminal:git config --global user.email "zcqopx@gmail.com"
OJO ESTE ES MI GITLAB USTEDES TIENEN OTRO USUARIO Y EMAIL
#entramos en la carpeta del proyecto antes creado
OJO es importante tener en cuenta que vamos primero a obtener todos los archivos remotos si hay archivos modificados en el folder que crearemos a continuacion se perderarn, añadirlos despues del paso de checkoutTerminal:cd existing_folder
#inicializamos gitTerminal:git init
#añadimos el repoTerminal:git remote add origin git@gitlab.com:zcqopx/pruebaparablogger.git
#hacemos pull repoTerminal:git pull origin
#sincronizamos con nuestros repo en la rama (branch) developTerminal:git fetch origin develop
#sincronizamos con nuestros repo en la rama (branch) developTerminal:git checkout -f develop
AHORA SI PUEDEN AÑADIR LOS ARCHIVOS MODIFICADOS PARA SUBIR AL REPO SINCRONIZADO
#añadimos todos los archivos dentroTerminal:git add --all
#realizamos un commit(explicación de la subida o cambios en el repo)Terminal:git commit -m "desarrollador cirel ramos"
#subir los archivos en el repo con la rama developTerminal:git push origin develop
COMPARAR ARCHIVOS DE UN PROYECTO LOCAL CON EL REMOTO EN GIT
Terminal:
git diff
DESCARGAR UN REPO ACTUALIZAR UNA RAMA
ten en cuenta que esto es para un directorio sin archivos comenzando con
Terminal:
git init
Terminal:
git remote add origin git@gitlab:tuproyecto
la idea final de esto es que de repente tienes tu archivos en otra carpeta ya bien modificados pero quieres subirlos sin dañar el trabajo de otros o el tuyo mismo, creas una nueva carpeta te bajas el repo y realizas los pasos para subirlo como se debe.
podemos realizar un git pull general y nos descargara todas las ramas(branchs) del repositorio
Terminal:
git pullo seleccionar una en particular
Terminal:
git pull developahora realizamos fetch de la rama o general
Terminal:
git fetch origin develop
y con el checkout verificamos los archivos locales y los mostramos
Terminal:
git checkout develop
ahora si añadimos los archivos modificados y luego procedemos a ejecutar los pasos para la subida empezando por el siguiente
Terminal:
git add -uó
Terminal:
git add --all
Terminal:
git commit -m "fetch: inicio subida"
Terminal:
git push origin developlisto con eso deberia tener tu repo actualizado
REALIZAR UN MERGE DE UNA RAMA
Terminal:
git checkout master
Terminal:
git pull origin master
Terminal:
git merge testó para forzar al merge a remplazar todo sin resolver conflictos
Terminal:
git merge -s ours
Terminal:
git push origin master
SI QUIERES RESTAURAR LOS ARCHIVOS DEL REPO SOBRE LOS LOCALES
Terminal:
git fetch origin master
Terminal:
git reset --hard origin/master
SI QUIERES RESTAURAR ARCHIVOS ESPECIFICOS
restaurar a un commit especifico
Terminal:
git checkout 9b059ae routes/web.php
restaurar a un commit especifico
Terminal:
git checkout origin/Feature-T11-add-filter-product routes/web.php
SI QUIERES MIGRAR DE UNA RAMA A OTRA SIN REALIZAR MERGE, de master a develop
Terminal:
git branch -f develop master
Terminal:
git push origin master:develop
REALIZAR UN MERGE CUANDO: “Already up-to-date”
personalmente prefiero borrar la carpeta donde tengo el repo en mi pc y luego realizar el merge
Terminal:
git init
Terminal:
git remote add origin git@gitlab.com:root/tu-repo
Terminal:
git pull origin master
Terminal:
git checkout master
Terminal:
git pull origin el-repo-que-quieres-merge
Terminal:
git mergetool
Nota: te recomiendo instalar meld es un excelente gestor para comprar entre los archivos del merge
Terminal:
find -iname "*.orig*" -delete
Terminal:
git checkout el-repo-que-quieres-merge
Terminal:
git merge master
Terminal:
git commit
Terminal:
git push origin el-repo-que-quieres-merge
BORRAR COMMITS REMOTOS
personalmente prefiero borrar la carpeta donde tengo el repo en mi pc y luego realizar el merge
listar los commits
Terminal:
git log --decorate --pretty=format:"%ad %h by %an, %s" --date=iso | sort -r | lessreiniciar localmente el repo al commit en especifico
Terminal:
git reset --hard HEAD~%number%aplicar los cambios
Terminal:
git push origin %rama% -f
FORZAR UN GIT PULL
Ver los Commits es posible que tu local este desactualizado master
Terminal:
git log --decorate --pretty=format:"%ad %h by %an, %s" --date=iso | sort -r | lessreiniciar localmente el repo al commit en especifico
Terminal:
git reset --hard HEADbajar los cambios a los directorios origin del .git
Terminal:
git pull origin
ahora hacer reset en base al master actualizado remoto que seria origin
para que todo sea de forma original, hacemos el git pull normal
Terminal:
git reset --hard origin/master
Terminal:
git pull origin master
Si el .gitignore no funciona
Terminal:
git rm . -r --cached
Terminal:
git add .
Terminal:
git commit -m "fixed untracked files"
Terminal:
git push origin master
verificar si hay un repositorio
Terminal:
git remote -v
Verificar la rama donde estas o el commit
Terminal:
git show --name-status
Terminal:
git show --name-status <commit>
Mostrar los commit y elementos añadidos en cada commit
Terminal:
git show --stat --oneline
o
Terminal:
git log --stat --oneline
Limpiar archivos basura o sin limpiar
Terminal:
git clean -f
Visualizar archivos a Limpiar
Terminal:
git clean -n -f
Limpiar Archivos
comandos utiles
Terminal:
git commit --amend
reescribir el ultimo comit
Terminal:
git add -p
agregar por pedazos o partes codigo al commit
Terminal:
git rebase -i
ordenar o depurar commits
Mostrar Diferencias entre ramas
primero chequeamos las ramas locales y remotas que tenemos
Terminal:
git branch -a
luego seleccionamos la rama local o remota a comparar seguido por 2 puntos entre cada una ejemplo
Version Consolax
Terminal:
git diff master..develop
Version Grafica
Terminal:
git difftool master..remotes/origin/desarrollo
para cambiar la herramienta de comparacion
Terminal:
git difftool --tool-help
Realizar un Merge
ejemplo quiero hacer merge con master y mi rama modificada es develop
Terminal:
git checkout master
Terminal:
git pull origin master
ahora tenemos bien actualizado master, procedemos hacer mergecambiamos a la rama develop
Terminal:
git checkout develop
Sincronizamos con master
Terminal:
git pull origin master
te pedira que confirmes el commit o que resuelvas los conflictos y luego hacer pust
Terminal:
git push origin develop
Configurar para copiar commits a otro repo
Terminal:
git remote add cirelramos git@gitlab.com:cirelramos/blog-production
Terminal:
git push -u cirelramos --all
Terminal:
git push -u cirelramos --tags
borrar ramas locales
Terminal:
git branch | grep -v "master" | xargs git branch -dBORRAR RAMAS REMOTAS
IMPORTANTE LO QUE ESTA MARCADO EN AZUL SON LAS RAMAS QUE VA A EXCEPTUAR DE LA ELIMINACION
Terminal:
git checkout -f master && git branch -r | grep -v -e master -e stable -e upload-version-laravel-to-7 | cut -d '/' -f2- | xargs git push origin --deleteComparar cambios de una rama en otra.
tendremos 3 ramas presentes: rama_cambios_nuevos, rama_de_comparacion, master.partiendo de la premisa que ya tenemos modificaciones en rama_cambios_nuevos
Terminal:
git checkout master
Terminal:
git checkout -b rama_de_comparacion
Terminal:
git checkout rama_cambios_nuevos ./ -f
Terminal:
git restore --staged ./Terminal:
git status | grep "modified:" | cut -d ":" -f2 | xargs grep -L "string_not_exist_in_files"borrar commits de una rama, supongamos que el commit hasta donde queremos restaurar es c26fbb30
ejecutamos los siguientes comandos en la rama, en este caso seria testTerminal:
git checkout test -f
Terminal:
git pull origin test
Terminal:
git reset --soft c26fbb30Terminal:
git push origin test -flos commits posteriores a estaran eliminados del historico del repositorio.
Fuente: https://drive.google.com/file/d/0B-2FDrPc5MapN2Y5cU9QX2lhMGs/view?usp=sharing
Fuente: https://www.atlassian.com/git/tutorials/syncing/git-push
solucionar problema de autoredimencionar pantalla guest ubuntu - xfce
Solución:
ante todo verificar que tengas instalado correctamente el guest additions
, de lo contrario debes primero instalar el guest additions
puedes seguir esta guia -> http://cirelramos.blogspot.com/2015/05/virtualbox-guest-additions-building.html
crear el archivo o modificarlo /etc/X11/xorg.conf
con el siguiente comando:
nano /etc/X11/xorg.conf
y pegar el siguiente código:
Section "Device"
Identifier "VBoxVideo"
Driver "vboxvideo"
EndSection
Section "Monitor"
Identifier "Monitor[0]"
ModelName "VirtualBox Virtual Output"
VendorName "Sun Microsystems Inc"
EndSection
Section "Device"
BoardName "VirtualBox Graphics"
Driver "vboxvideo"
Identifier "Device[0]"
VendorName "Sun Microsystems Inc"
EndSection
Section "Screen"
SubSection "Display"
Depth 24
EndSubSection
Device "Device[0]"
Identifier "Screen[0]"
Monitor "Monitor[0]"
EndSection
para guardar crtl+O y para salir ctrl+x
reiniciar la maquina virtual y verificar el funcionamiento
fuente: https://forums.virtualbox.org/viewtopic.php?f=3&t=33077
ante todo verificar que tengas instalado correctamente el guest additions
, de lo contrario debes primero instalar el guest additions
puedes seguir esta guia -> http://cirelramos.blogspot.com/2015/05/virtualbox-guest-additions-building.html
crear el archivo o modificarlo /etc/X11/xorg.conf
con el siguiente comando:
nano /etc/X11/xorg.conf
y pegar el siguiente código:
Section "Device"
Identifier "VBoxVideo"
Driver "vboxvideo"
EndSection
Section "Monitor"
Identifier "Monitor[0]"
ModelName "VirtualBox Virtual Output"
VendorName "Sun Microsystems Inc"
EndSection
Section "Device"
BoardName "VirtualBox Graphics"
Driver "vboxvideo"
Identifier "Device[0]"
VendorName "Sun Microsystems Inc"
EndSection
Section "Screen"
SubSection "Display"
Depth 24
EndSubSection
Device "Device[0]"
Identifier "Screen[0]"
Monitor "Monitor[0]"
EndSection
para guardar crtl+O y para salir ctrl+x
reiniciar la maquina virtual y verificar el funcionamiento
fuente: https://forums.virtualbox.org/viewtopic.php?f=3&t=33077
Lan Messenger ubuntu/linux mint
Esperamos a que pasen los segundos para ejecutar la descarga...
guardamos el Archivo
Esperamos que descargar el archivo
y lo ejecutamos con GDebi o el centro de software en ubuntu
Esperamos que finalice la instalación
Abrimos un editor de texto
Nota: la imagen del icono se las coloco mas abajo igual que el texto de contenido
guardar el archivo con el siguiente nombre y extensión: lanmessenger.desktop
en la siguiente ruta /home/TU_USUARIO/.local/share/applications
Nota: si falta la carpeta "applications" la pueden crear y funcionara el icono.
Luego puedes buscar directamente la aplicación en tu menu
en la parte inferior derecha arrancara el LAN Messenger, presionamos click derecho y se despliega una serie de opciones o simplemente damos doble click izquierdo para que se muestre la ventana principal de LAN Messenger
Pasos para instalar LAN Messenger
ir a la pagina oficial de LAN Messenger http://lanmsngr.sourceforge.net/ y Presionar el botón Download
presionar en el boton "Debian Packge" ya que instalaremos en ubuntu/linux mint
guardamos el Archivo
Esperamos que descargar el archivo
y lo ejecutamos con GDebi o el centro de software en ubuntu
Esperamos que finalice la instalación
Abrimos un editor de texto
Nota: la imagen del icono se las coloco mas abajo igual que el texto de contenido
copiar al icono a la siguiente ruta /home/TU_USUARIO/.local/share/applications
Nota: si falta la carpeta "applications" la pueden crear y funcionara el icono.
codigo:
[Desktop Entry] Version=1.0 Type=Application Name=lan Messenger Comment=lan messenger Icon=/home/TU_USUARIO/.local/share/applications/icon.png Exec="lmc" NoDisplay=false Categories=WebBrowser;X-Gnome-Other; StartupNotify=true Terminal=false
guardar el archivo con el siguiente nombre y extensión: lanmessenger.desktop
en la siguiente ruta /home/TU_USUARIO/.local/share/applications
Nota: si falta la carpeta "applications" la pueden crear y funcionara el icono.
Luego puedes buscar directamente la aplicación en tu menu
en la parte inferior derecha arrancara el LAN Messenger, presionamos click derecho y se despliega una serie de opciones o simplemente damos doble click izquierdo para que se muestre la ventana principal de LAN Messenger
El Hacker Search Engine “Shodan” es el motor de búsqueda más terrorífico de Internet
Shodan es un motor de búsqueda que permite al usuario encontrar tipos específicos de equipos (routers, servidores, etc.) conectados a Internet a través de una variedad de filtros. Algunos también lo han descrito como un motor de búsqueda de banners de servicios, que son meta-datos que el servidor envía de vuelta al cliente. Esto puede ser información sobre el software de servidor, ¿qué opciones admite el servicio, un mensaje de bienvenida o cualquier otra cosa que el cliente puede saber antes de interactuar con el servidor.
Shodan recoge datos sobre todo en los servidores web en el momento (HTTP puerto 80), pero también hay algunos datos de FTP (21), SSH (22) Telnet (23), SNMP (161) y SIP (5060) servicios.
Fue lanzado en 2009 por el informático John Matherly, quien, en 2003, concibió la idea de dispositivos conectados a Internet a buscar. El nombre Shodan es una referencia a SHODAN, un personaje del videojuego System Shock.
(CNN) – “Cuando la gente no encuentra algo en Google, se cree que nadie lo puede encontrar. Eso es falso”.
La apreciación corresponde a John Matherly, creador de Shodan, el buscador más terrorífico de Internet.
A diferencia de Google, que se concentra en la búsqueda de sitios web, Shodan es una especie de buscador “oscuro” que detecta servidores, cámaras web, impresoras, routers y todo aquello que se conecta y forma Internet.
Shodan opera permanentemente y obtiene información de unos 500 millones de dispositivos y servicios conectados cada mes. Y los resultados de las búsquedas son sorprendentes: desde semáforos hasta cámaras de seguridad, pasando por sistemas de calefacción y crematorios.
Los usuarios de Shodan también han encontrado sistemas de control para un parque acuático y una estación de servicio. Y los investigadores en seguridad informática han localizado sistemas de comando y de control de plantas nucleares y un acelerador de partículas utilizando Shodan.
Pero lo que llama la atención de Shodan, y lo que lo hace tan escalofriante, es que muy pocos de estos dispositivos tienen restricciones de seguridad para acceder a ellos.
En mayo de 2013, CNN Money publicó un artículo que detalla cómo SHODAN se puede utilizar para encontrar sistemas peligrosas en Internet, incluyendo controles de semáforos. Muestran imágenes de esos sistemas, que proporcionaron la bandera de advertencia “La muerte puede ocurrir !!!” al conectarse.
Cortafuegos iptables
El cortafuegos utilizado para gestionar las conexiones en Linux es iptables. Las posibilidades de iptables son prácticamente infinitas y un administrador que quiera sacarle el máximo provecho, puede realizar configuraciones extremadamente complejas. Para simplificar, diremos que básicamente, iptables permite crear reglas que analizarán los paquetes de datos que entran, salen o pasan por nuestra máquina, y en función de las condiciones que establezcamos, tomaremos una decisión que normalmente será permitir o denegar que dicho paquete siga su curso.
Para crear las reglas, podemos analizar muchos aspectos de los paquetes de datos. Podemos filtrar paquetes en función de:
Tipo de paquete de datos:
Tipo de paquete de datos:
- Tipo INPUT: paquetes que llegan a nuestra máquina
- Tipo OUTPUT: paquetes que salen de nuestra máquina
- Tipo FORWARD: paquetes que pasan por nuestra máquina
Interfaz por la que entran (-i = input) o salen (-o = output) los paquetes
- eth0, eth1, wlan0, ppp0, ...
IP origen de los paquetes (-s = source)
- IP concreta, ej: 10.0.1.3
- Rango de red, ej: 10.0.1.0/8
IP destino de los paquetes (-d = destination)
- IP concreta, ej: 10.0.1.3
- Rango de red, ej: 10.0.1.0/8
Protocolo de los paquetes (-p = protocol)
- Tcp, udp, icmp...
Hacer NAT (modificar IP origen y destino para conectar nuestra red a otra red o a Internet) y...
- Filtrar antes de enrutar: PREROUTING
- Filtrar después de enrutar: POSTROUTING
Una forma sencilla de trabajar con iptables es permitir las comunicaciones que nos interesen y luego denegar el resto de las comunicaciones. Lo que se suele hacer es definir la política por defecto aceptar (ACCEPT), después crear reglas concretas para permitir las comunicaciones que nos interesen y finalmente, denegar el resto de comunicaciones. Lo mejor será crear un script en el que dispondremos la secuencia de reglas que queremos aplicar en nuestro sistema. Un ejemplo típico podría ser el siguiente:
#!/bin/sh
# Script cortafuegos.sh para la configuración de iptables
#
# Primero borramos todas las reglas previas que puedan existir
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
# Después definimos que la politica por defecto sea ACEPTAR
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
# Para evitar errores en el sistema, debemos aceptar
# todas las comunicaciones por la interfaz lo (localhost)
iptables -A INPUT -i lo -j ACCEPT
# Aceptamos las comunicaciones que nos interesan y luego denegamos el resto.
# Ejemplo: Denegamos acceso al aula 1
iptables -A FORWARD -s 10.0.1.0/24 -j DROP
# Aceptamos SMTP, POP3 y FTP (correo electrónico y ftp)
iptables -A FORWARD -s 10.0.0.0/8 -p tcp --dport 25 -j ACCEPT
iptables -A FORWARD -s 10.0.0.0/8 -p tcp --dport 110 -j ACCEPT
iptables -A FORWARD -s 10.0.0.0/8 -p tcp --dport 20 -j ACCEPT
iptables -A FORWARD -s 10.0.0.0/8 -p tcp --dport 21 -j ACCEPT
# HTTP y HTTPS no es necesario porque nuestro servidor será servidor proxy
# Dejamos comentadas las líneas, por si algún día las necesitamos
#iptables -A FORWARD -s 10.0.0.0/8 -p tcp --dport 80 -j ACCEPT
#iptables -A FORWARD -s 10.0.0.0/8 -p tcp --dport 443 -j ACCEPT
# DNS no es necesario porque nuestro servidor será servidor DNS
# Dejamos comentadas las líneas (tcp y udp), por si algún día las necesitamos
#iptables -A FORWARD -s 10.0.0.0/8 -p tcp --dport 53 -j ACCEPT
#iptables -A FORWARD -s 10.0.0.0/8 -p udp --dport 53 -j ACCEPT
# Al PC del Director le damos acceso a todo (cliente VIP)
iptables -A FORWARD -s 10.0.0.7 -j ACCEPT
# Denegamos resto de comunicaciones (no funcionará el p2p)
iptables -A FORWARD -s 10.0.0.0/8 -j DROP
# Hacemos NAT si IP origen 10.0.0.0/8 y salen por eth0
iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth0 -j MASQUERADE
# Activamos el enrutamiento
echo 1 > /proc/sys/net/ipv4/ip_forward
# Comprobamos cómo quedan las reglas
iptables -L -n
En el script anterior vemos una serie de reglas que se van a ir ejecutando secuencialmente conformando la configuración del cortafuegos iptables. Cuando indicamos "-A FORWARD" nos referimos a paquetes que van a pasar por nuestro servidor. Otras opciones son "-A INPUT" y "-A OUTPUT". Acto seguido ponemos las condiciones. Si ponemos "-s 10.0.0.0/8" nos referimos a paquetes cuya IP origen está en el rango 10.0.0.0/8. Cuando ponemos "-p tcp" nos referimos a paquetes que utilizan el protocolo tcp. Cuando indicamos "--dport 25" nos referimos a paquetes cuyo puerto de destino es el 25, es decir, protocolo SMTP (correo saliente). Si en una regla no ponemos la condición -p ni la condición --dport, significa que no nos importa el protocolo (cualquier protocolo) ni nos importa el puerto destino (cualquier puerto destino). Por ejemplo, en la regla donde damos acceso al PC del Director, no hemos indicado ni protocolo ni puerto, por lo que dejará pasar todos los protocolos y todos los puertos.
Navegar desde el Terminal
Debian / Ubuntu:
sudo apt-get install w3m
En caso de que uses RedHat/Fedora:
yum install w3m
---------------------------------------------------------------------------------------------
NOTA: ALGUNAS DISTROS DE LINUX YA VIENEN CON w3m.
Mini Manual ---------------------------------------------------------------------------
* Para abrir una página ejecutas: w3m google.com.uy
* Para editar un campo de texto como puede ser lo que
quiero buscar con google, mueve el cursor hasta "la caja de texto"
que generalmente se ve así:
y pulsa enter.
Ingresa el texto y vuelve a pulsar enter.
* Los botones generalmente se ven así: [Buscar con Google]
muevete hasta arriba de él y pulsa enter.
* Los links generalmente se ven en color azúl o celeste.
* Las Imágenes generalmente aparecen en color verda.
* Si quieres volver a la página anterior presion Shift+B
* Si quieres ver la lista de links de esa página, pulsa Shift+L
luego, vuelves a la página con el tip de arriba. (Shift+B)
* Si quieres especificar una URL presiona Shift+U
* Para recargar una página presiona Shift+R
* Para ver el título de la página presiona Shift+T
* Para Ir a una linea en específico presiona Esc+G
* Si tienes disponible una interfaz gráfica muevete sobre el nombre de
la imágen (en color verde o azúl) y presiona enter. Esto abrirá la imágen con
tu visor de imágenes predeterminado.
* Por último, para salir presiona la letra Q (pregunta antes de salir)
o Shift+Q (sale sin preguntar)
* ¿Pero saben qué es lo mejor? Soporta integración con el mouese!
Proyecto Thoth
Vídeos sobre el Proyecto Thoth
https://www.youtube.com/embed/videoseries?list=PL8bSwVy8_IcNNS5QDLjV7gUg8dIeMFSER
Vídeos sobre el Proyecto Thoth
https://www.youtube.com/embed/videoseries?list=PL8bSwVy8_IcNNS5QDLjV7gUg8dIeMFSER
Suscribirse a:
Entradas
(
Atom
)





































