lundi 29 novembre 2010

Faire du port forwarding à l'aide de SSH


En ligne de commande
 
Avec cette ligne de commande, la connexion sur le port local 10999 est équivalent à une connection sur le port 10389 de la machine distante. Cela permet de contourner les firewall. 

 
ssh -L 10999:targetmachine:10389 factory@targetmachine
 
 
Par putty
On peut faire la même chose par putty. 

Dans les fichier de conf
Pour faire du port forwarding, éditer le fichier .ssh/config et lui donne le contenu suivant
(Ici le port 80 de la machine est forwardée sur la machine 55.6.110.96 sur le port 1521)

Host 127.0.0.1
        LocalForward 80 55.6.110.96:1521
        GatewayPorts yes

Pour que la connexion fonctionne, il est nécessaire que le programme ssh soit actif (C'est à dire qu'il soit démarré et figure dans les process de la machine locale). Il est également possible de procéder à l'opération inverse en se servant de la commande RemotePort

To set a specific user to connect a remot host
Host myhost
        User myuser
        ForwardX11 yes    

Externaliser la configuration de ses webapp

Dans les webapps utilisant spring il est possible d'externaliser sa configuration à l'aide de variables d'environnement pour log4j :

<bean id="log4jConfigurer"
class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetClass">
<value>org.springframework.util.Log4jConfigurer</value>
</property>
<property name="targetMethod">
<value>initLogging</value>
</property>
<property name="arguments">
<list>
<value>${MYREP_CONF}/log4j.xml</value>
<!-- or you could use an absolute path: <value>file:D:\\etc\\myapp\\log4j.properties</value> -->
</list>
</property>
</bean>

jeudi 25 novembre 2010

Port forwarding à l'aide de iptable

Ip/Port rewriting


Ces commandes se passent en root

Ip table permet de forwarder des ports d'une machine vers une autre.

Les instructions sont à renouveler à chaque démarrage de la machine




#Réécriture du port d'un paquet
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 1521 -j DNAT --to 55.6.110.96:1521

iptables -A INPUT -p tcp -m state --state NEW --dport 1521 -i eth0 -j ACCEPT
#Sécurité par défaut autorise l'accès à la chaine forward
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv6/ip_forward

# Pour intercepter les paquets à destination d'une ip différente de celle de l'interface

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE



Pour lister les chaines principales



iptable -L



Pour lister toutes les de nat (ip/port rewriting)



iptables -L -t nat



Pour supprimer les règles



iptables -F -t nat

jeudi 4 novembre 2010

Utiliser apache en frontal et forwarder les ports sur un Jetty

Je veux mettre en place un apache frontal lequel délègue sa requête à un serveur archiva ouvert sur le port 8081. Seul le port 80 est ouvert sur le réseau. Je ne souhaite pas de connecteur complexe, car il ne s'agit pas d'une question de performance.
Pour ce faire, j'ai utilisé le mod_proxy de apache et les virtualHost.

<IfModule mod_proxy.c>
ProxyRequests Off

<Proxy *>
Order deny,allow
Allow from all
</Proxy>

<VirtualHost archiva:80>
ServerAdmin webmaster@dummy-host.example.com
ProxyPass / http://archiva:8081/
ProxyPassReverse / http://archiva:8081/
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>