Advertisement
fenix15100

OPGG

Dec 20th, 2017
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.49 KB | None | 0 0
  1. Comandos Linux basicos/////////////////////////////////////////////
  2.  
  3. ##########################Crear usuarios UNIX:
  4.  
  5. sudo useradd -m -s /bin/bash [nombre user]
  6. //-m crea y monta un home directory con el mismo nombre que el user
  7. //-s le asigna el interprete de comandos bash (le permite usar la terminal y autentificarse)
  8.  
  9. //Despues hay que generar la password
  10. sudo passwd [nombre user]
  11.  
  12. #############################################
  13.  
  14.  
  15.  
  16. #############################Permisos
  17.  
  18. Cambiar set de permisos
  19.  
  20. []=opcional
  21.  
  22. sudo chmod [-R] 755 <ruta del archvio o directorio>
  23.  
  24. //-R si la ruta apunta a un directorio todo su contenido pasara recursivamente a
  25. //775 (Permisos muy relajados lectura/escritura)
  26.  
  27.  
  28. Cambiar propietario del archivo
  29.  
  30. sudo chown [-R] <user>:<group> <ruta archivo o directorio>
  31. //-R igual que chmod
  32. //<group> normalmente el mismo que el user, ya que unix al crear un user crea un grupo con su
  33. //mismo nombre y lo mete hay.
  34. //Si tienes problemas con los Documents roots de los sitios web dale de forma recursiva la carpeta /var/www/html
  35. al user www-data (usuario de apache),
  36.  
  37. #####################################
  38. ///////////////////////////////////////////////////////////////////////
  39.  
  40.  
  41. APACHE///////////////////////////////////////////////////////////////
  42.  
  43. #Comandos: sudo service apache2 <start,reload,stop,restart>
  44. #Archivos:/etc/apache2/sites-enabled/loquesea.conf
  45.  
  46. #Config tipos de VirtualHost:
  47.  
  48. Listen <Puerto de escuha> uno por cada puerto que levantes
  49.  
  50. //Vhost basado en puertos(Cualquier IP a un puerto especifico)
  51.  
  52.  
  53. <VirtualHost *:[puerto]> (Si se quiere por varios puertos a la vez dejar un espacio y volver a poner *:[puerto adcional])
  54.  
  55. //Raiz del servidor web
  56. DocumentRoot /var/www/html/site1
  57.  
  58. </VirtualHost>
  59.  
  60.  
  61.  
  62.  
  63. //Vhost basado en IP(Ip determinada a un puerto especifico)
  64.  
  65.  
  66. <VirtualHost [IP]:[puerto]>
  67.  
  68. //Raiz del servidor web
  69. DocumentRoot /var/www/html/site1
  70.  
  71. </VirtualHost>
  72.  
  73. //Vhost basado en dominio (Cualquier IP hacia con un dominio determinado)
  74.  
  75. <VirtualHost *:8085>
  76. DocumentRoot /var/www/html/site3
  77. ServerName fran3.local //Dominio por el cual se accedera
  78. ServerAlias fran4.local //Dominio adicional por el cual acceder a este document root
  79. </VirtualHost>
  80.  
  81. nota: meter entrada en el archivo host del cliente
  82. <IP (cualquiera del servidor (si utilizas el propio server como cliente [localhost]))> <dominio>
  83. Windows: C:\Windows\System32\drivers\etc (Abre el archivo desde un notepad con privilegios)
  84. Linux: /etc/hosts
  85. ##############################################################################################
  86.  
  87. #Config AUTHbasic y AUTHDIGEST
  88.  
  89. //Proteje un directorio de apache con user y password va dentro de un viertualhost de apache
  90.  
  91. BASIC:
  92.  
  93.  
  94. <VirtualHost [IP]||*:[puerto]>
  95.  
  96. DocumentRoot /var/www/html/site1
  97.  
  98. //Imaginamos que dentro de site1 hay una carpeta llamada secret
  99.  
  100. <Directory /var/www/html/secret>
  101. AuthType Basic
  102. AuthName "Putos nabos" //Pon lo que quieras
  103. AuthUserFile <ruta de archivo de USER> //ahora lo genero (Te recomiendo crear el directorio /etc/apache/passwords/<nombreFichero>)
  104. requiere valid-user //Todos los user del archivo tienen acceso
  105. //si pide un user determinado require <user>
  106. </Directory>
  107.  
  108. </VirtualHost>
  109.  
  110. Activar modulo auth_basic:
  111.  
  112. sudo a2enmod auth_basic (deberia estar activo)
  113.  
  114. Generacion de archivo de contraseñas:
  115.  
  116. //Colocate en el directorio que contiene el archvio especificado en el AuthUserFile
  117.  
  118. //Genera las credenciales de BASIC
  119.  
  120. htpasswd [-c] <nombrefichero> (lo creara el comando) <username>
  121.  
  122. //[-c] solo usalo la primera vez, si añades mas user con este parametro machacaras
  123. //Los anteriores
  124.  
  125. //Reinicia apache y deberia ir tanto por navegador como por terminal
  126.  
  127. //Ver el contenido del fichero (comprobar que todo esta guay)
  128. cat <nombrefichero>
  129.  
  130. Terminal: wget http://<ip>||<dominio>:<puerto> --http-user=<user> --http-password=<password>
  131.  
  132.  
  133. Digest:
  134.  
  135.  
  136. <VirtualHost [IP]||*:[puerto]>
  137.  
  138. DocumentRoot /var/www/html/site1
  139.  
  140. //Imaginamos que dentro de site1 hay una carpeta llamada secret
  141.  
  142. <Directory /var/www/html/secret>
  143. AuthType Digest
  144. AuthName "Putos_nabos" //Ahora si es importante recuerdalo
  145. AuthDigestProvider file
  146. AuthUserFile <ruta de archivo de USER> //no machaques el de Basic (Te recomiendo crear el directorio /etc/apache/passwords/<nombreFichero2>)
  147. requiere valid-user //Todos los user del archivo tienen acceso
  148. //si pide un user determinado require <user>
  149. </Directory>
  150.  
  151. </VirtualHost>
  152.  
  153. Activar modulo auth_digest:
  154.  
  155. sudo a2enmod auth_digest (deberia estar activo)
  156.  
  157. Generacion de archivo de contraseñas:
  158.  
  159. //Colocate en el directorio que contiene el archvio especificado en el AuthUserFile
  160.  
  161. //Genera las credenciales de Digest
  162.  
  163. htdigest [-c] <nombrefichero> (lo creara el comando) Putos_nabos <username>
  164.  
  165. //[-c] solo usalo la primera vez, si añades mas user con este parametro machacaras
  166. //Los anteriores
  167. //Es igual que BAsic pero hay que añadir antes del user lo que hayas puesto
  168. //En AuthName
  169.  
  170. //Ver el contenido del fichero (comprobar que todo esta guay)
  171.  
  172. cat <nombrefichero>
  173.  
  174. //Reinicia apache y deberia ir tanto por navegador como por terminal
  175.  
  176. Terminal: wget http://<ip>||<dominio>:<puerto> --http-user=<user> --http-password=<password>
  177. ###################################################################################################
  178.  
  179. #Config APACHE SSL (Certificado para que un virtualhost vaya por HTTPS)
  180.  
  181.  
  182. //PASOS:
  183.  
  184. apt-get install apache2 openssl
  185.  
  186. mkdir -p /etc/ssl/localcerts //Diretorio donde generaremos el certificado
  187.  
  188. openssl req -new -x509 -days 365 -nodes -out /etc/ssl/localcerts/apache.crt -keyout /etc/ssl/localcerts/apache.key
  189.  
  190. //Esto genera un certificado asimetrico (clave publica apache.crt)/(clave privada apache.key) //Puedes cambiar los nombres la extension no
  191.  
  192. chmod 600 /etc/ssl/localcerts/apache* //Opcional pero hazlo (Proteje los certificados desde el exterior)
  193.  
  194.  
  195. //Crear un virtualHOST SSL
  196.  
  197.  
  198. Listen 443
  199.  
  200. <VirtualHost <ip>||*:443>
  201.  
  202. DocumentRoot /var/www/html/sslite (Por ejemplo)
  203. SSLEngine On
  204. SSLCertificateFile /etc/ssl/localcerts/apache.crt
  205. SSLCertificateKeyFile /etc/ssl/localcerts/apache.key
  206. </VirtualHost>
  207.  
  208.  
  209. //Activar modulo SSL
  210.  
  211. sudo a2enmod ssl (deberia estar activado)
  212.  
  213. //Reinicia apache y deberia funcionar
  214.  
  215. #Config Alias en un Virtualhost
  216.  
  217.  
  218.  
  219. Un alias es un directorio alternativo al DocumentRoot de un virtualhost, es un enlace hacia un directorio
  220. que no este en el ambito del servidor web (var/www/html)
  221.  
  222. Ejemplo Virtualhost con ALIAS
  223.  
  224. <VirtualHost <ip>||*:<puerto>>
  225.  
  226. DocumentRoot /var/www/html/site1
  227.  
  228. <Directory /home>
  229. Require all granted //Necesario para mapear Alias del diretorio /home(Seguridad de Debian)
  230. </Directory>
  231.  
  232. Alias /fulano /home/fulano/ftp
  233.  
  234. //Al acceder a http://<ip>:puerto/fulano Accedemos al contenido de ftp
  235. //en esta carpeta debe de haber algo like index.html o dara un forbidden, acuerdate de que la carpeta
  236. //Pertenezca al user
  237.  
  238. </VirtualHost>
  239.  
  240.  
  241.  
  242. //Con esto el tema APACHE CERRADO
  243.  
  244. ////////////////////////////////////////////////////////////////////////////////////////////////////
  245.  
  246.  
  247. FTP////////////////////////////////////////////////////////////////////////////////////////////////
  248.  
  249. #Comandos: sudo service proftpd <start,reload,stop,restart>
  250. #Archivos:/etc/proftpd/proftpd.conf
  251.  
  252. proftpd utiliza como usuarios los usuarios de UNIX <ver Crear usuarios UNIX>
  253.  
  254. Utiliza el Puerto 21 para enviar los metodos (GET PUT..) y el 20 Para trasmitir los archivos
  255.  
  256. //Nos hara hacer cositas con usuarios que creemos asegurate de que la home de cada usuario le pertenezca recursivamente
  257. a ese usuario sudo chown -R user:user /home/user (hazlo al final cuando hayas creado las carpetas de trabajo pertinentes)
  258. like a /home/fulano/ftp (cosas asi)
  259.  
  260. #Config proftpd.conf
  261.  
  262. //Enjaular usuarios en su home/ftp
  263.  
  264. DefaultRoot /home/%u/ftp
  265.  
  266. //Los user de UNIX en filezilla no podran salir de su carpeta ftp
  267.  
  268.  
  269. //Si creas los usuarios de UNIX con una shell falsa
  270. sudo useradd -m -s /bin/false [nombre user]
  271. //Es necesario Setear la propiedad
  272. RequireValidShell off
  273.  
  274. //Recuerda reiniciar el servidor
  275.  
  276. service proftpd restart
  277.  
  278. #Metodos de acceso a un servidor FTP:
  279.  
  280. -Filezilla
  281.  
  282. - Inicia un navegador web.
  283.  
  284. anònim ftp://<ip> //Si esta activado en proftp.conf
  285.  
  286. ftp://user@<ip> //Pedira password
  287.  
  288. ftp://user:contrasenya@<ip>
  289.  
  290.  
  291. -terminal
  292.  
  293. wget ftp://<ip>/<archivo> //Anonimo
  294.  
  295. wget ftp://user:contraseña@<ip>/<archivo> //AUtentificado
  296.  
  297.  
  298. /////////////////////////////Con esto FTP finiquitao
  299.  
  300.  
  301. //////////JAVA Bajar archivo por HTTP y subirlo por FTP a la home de uno de nuestros user (/home/mengano/ftp)
  302.  
  303. EL programa se baja por HTTP el archivo http://<ip>/mengano/index.html (Recuerda Alias a /home/mengano/ftp)
  304. y lo sube renombrado like fran_index.html por FTP al mismo lugar ftp://mengano:password@<ip> = /home/mengano/ftp
  305.  
  306. Es un esquema faltan los IMPORTS y los TRHOWs esto no compila ni flipando, necesitaras la libreria de ftp4java y añadirla al proyecto
  307. http://www.sauronsoftware.it/projects/ftp4j/download.php
  308.  
  309.  
  310. public class ClienteFTP {
  311.  
  312.  
  313. //Inicializo el stream de entrada y salida de mi programa JAVA anull
  314. private static InputStream reader=null;
  315. private static OutputStream writer=null;
  316.  
  317.  
  318.  
  319. public static void main(String[] args) {
  320.  
  321.  
  322. String Path="http://<ip>/mengano/index.html";
  323. byte[] b=new byte[100]; //Lo utilizare de buffer
  324.  
  325. //Creo el fichero que contendra el recurso pedido por HTTP
  326. File fichero= new File("index.html");
  327.  
  328. if(!fichero.exists()) {
  329. fichero.createNewFile();
  330. }
  331.  
  332.  
  333. //Abrimos una conexion HTTP hacia el archivo deseado
  334. URLConnection conexion = new URL(Path).openConnection();
  335. conexion.connect();
  336.  
  337. //Vinculamos nuestra entrada a la conexion HTTP
  338. reader = conexion.getInputStream();
  339.  
  340. //Vinculamos la salida a nuestro fichero index.html
  341. writer = new FileOutputStream("index.html");
  342.  
  343. //Mientras haya datos en el exterior escribe en el buffer y lo escribe en el fichero
  344. while(reader.read(b)!=-1){
  345. writer.write(b);
  346. }
  347.  
  348. //Cerramos los streams
  349. writer.close();
  350. reader.close();
  351.  
  352. //Renombramos el fichero si no esta renombrado ya
  353.  
  354. File fichero_nuevo=new File("nombre_user_index.html");
  355. if(fichero.exists() && !fichero.getName().contains("nombreuser_")) {
  356. fichero.renameTo(fichero_nuevo);
  357. }
  358.  
  359. //Creo un objeto FTPclient
  360. cliente=new FTPClient();
  361.  
  362. //abro un socket FTP hacia el server
  363. cliente.connect("<ip servidor ftp>");
  364.  
  365. //Me logueo en el server FTP
  366. cliente.login("mengano","mengano" );
  367.  
  368. cliente.upload(new File("nombreuser_index.html"));
  369.  
  370.  
  371.  
  372.  
  373.  
  374. }
  375.  
  376. }
  377.  
  378. ///////////////////////////////////////////////////////////////////////////
  379.  
  380. //////////////PHP CRUD
  381.  
  382. Un CRUD es un servicio que acepta peticiones las procesa y duevelve algo en este caso crea modifica y muestra y borra archivos a merced del cliente
  383.  
  384.  
  385. <?php
  386.  
  387. $archivo=$_REQUEST['id'];
  388. $body=file_get_contents( 'php://input'); //Cuerpo de las peticiones (PUT,POST)
  389. $log="log.txt"; //Log donde guardo las peticiones hechas
  390.  
  391. //Trabajo sobre el Directorio DATA/
  392.  
  393. //Obetener archivo
  394.  
  395. if ($_SERVER['REQUEST_METHOD'] == 'GET' ){
  396. if(file_exists("DATA/".$archivo)){
  397. $contenido=file_get_contents("DATA/".$archivo);
  398. echo $contenido;
  399. file_put_contents($log,' METHOD: GET FILE: '.$archivo." OK\n",FILE_APPEND);
  400.  
  401. }else{
  402. echo 'Fichero no encontrado';
  403. file_put_contents($log,' METHOD: GET FILE: '.$archivo." ERROR\n",FILE_APPEND);
  404.  
  405. }
  406.  
  407.  
  408.  
  409.  
  410.  
  411. //Actualizar archivo
  412.  
  413. } else if ($_SERVER['REQUEST_METHOD'] == 'POST' ){
  414. if(file_exists("DATA/".$archivo)){
  415.  
  416. file_put_contents("DATA/".$archivo,$body);
  417. echo 'OK fichero actualidado';
  418. file_put_contents($log,' METHOD: POST FILE: '.$archivo." OK\n",FILE_APPEND);
  419.  
  420.  
  421. }else{
  422. echo 'El fichero no existe, crealo antes';
  423. file_put_contents($log,' METHOD: POST FILE: '.$archivo." ERROR\n",FILE_APPEND);
  424.  
  425.  
  426. }
  427.  
  428.  
  429.  
  430.  
  431.  
  432. //Crear archivo
  433. } else if ($_SERVER['REQUEST_METHOD'] == 'PUT' ){
  434.  
  435. if(file_exists("DATA/".$archivo)){
  436. echo 'El fichero ya existe';
  437. file_put_contents($log,' METHOD: PUT FILE: '.$archivo." ERROR\n",FILE_APPEND);
  438.  
  439. }
  440. else{
  441. file_put_contents("DATA/".$archivo,$body);
  442. echo 'OK fichero creado';
  443. file_put_contents($log,' METHOD: PUT FILE: '.$archivo." OK\n",FILE_APPEND);
  444.  
  445.  
  446. }
  447.  
  448.  
  449.  
  450. //Borrar archivo
  451. } else if ($_SERVER['REQUEST_METHOD'] == 'DELETE' ){
  452. if(file_exists("DATA/".$archivo)){
  453. unlink("DATA/".$archivo);
  454. echo 'Archivo Borrado corectamente';
  455. file_put_contents($log,' METHOD: DELETE FILE: '.$archivo." OK\n",FILE_APPEND);
  456.  
  457.  
  458.  
  459. }else{
  460.  
  461. echo 'El fichero no existe o no es accesible';
  462. file_put_contents($log,' METHOD: DELETE FILE: '.$archivo." ERROR\n",FILE_APPEND);
  463.  
  464. }
  465.  
  466.  
  467.  
  468.  
  469.  
  470. }
  471.  
  472.  
  473. ?>
  474.  
  475.  
  476.  
  477. ////////////////////////////////////////////////////////////////////////////////////////////////
  478.  
  479. /////////////////////////////////////JAVA CLIENTE CRUD
  480.  
  481. Cliente JAVA que hara peticiones HTTP (REST) a nuestro PHP CRUD(Lo que hariamos con SoapUI)
  482.  
  483. import java.io.DataInputStream;
  484. import java.io.DataOutputStream;
  485. import java.io.IOException;
  486. import java.net.HttpURLConnection;
  487. import java.net.MalformedURLException;
  488. import java.net.ProtocolException;
  489. import java.net.URL;
  490.  
  491. //Esta Practica depende de los parametros pasados al programa (args[]) (Run Configuration en eclipse, en netbeans es parecido)
  492.  
  493. public class PR9 {
  494.  
  495. public static void main(String[] args) {
  496.  
  497. URL url=null;
  498. HttpURLConnection conexion=null;
  499. DataInputStream reader=null;
  500. DataOutputStream writer=null;
  501.  
  502. switch(args[0]) {
  503.  
  504. case "GET":
  505.  
  506.  
  507. try {
  508. url = new URL(args[1]);
  509. conexion = (HttpURLConnection)url.openConnection();
  510. conexion.setRequestMethod("GET");
  511. conexion.setDoInput(true);
  512. reader=new DataInputStream(conexion.getInputStream());
  513.  
  514. byte[] buffer=new byte[1024];
  515.  
  516. int tamaño=-1;
  517.  
  518. while((tamaño=reader.read(buffer))>-1) {
  519.  
  520. System.out.write(buffer,0,tamaño);
  521.  
  522.  
  523. }
  524.  
  525. conexion.disconnect();
  526.  
  527.  
  528. } catch (MalformedURLException e) {
  529.  
  530. System.out.println(e.getMessage());
  531. } catch (ProtocolException e) {
  532.  
  533. System.out.println(e.getMessage());
  534. } catch (IOException e) {
  535.  
  536. System.out.println(e.getMessage());
  537.  
  538. } finally {
  539. if(reader!=null) {
  540. try {
  541. reader.close();
  542. } catch (IOException e) {
  543. System.out.println(e.getMessage());
  544. }
  545. }
  546.  
  547. }
  548.  
  549.  
  550. break;
  551.  
  552. case "PUT":
  553.  
  554.  
  555. try {
  556. url = new URL(args[2]);
  557. conexion = (HttpURLConnection)url.openConnection();
  558. conexion.setRequestMethod("PUT");
  559.  
  560. conexion.setDoInput(true);
  561. conexion.setDoOutput(true);
  562. writer=new DataOutputStream(conexion.getOutputStream());
  563.  
  564. writer.writeBytes(args[1]);
  565. reader=new DataInputStream(conexion.getInputStream());
  566. byte[] buffer=new byte[1024];
  567. int tamaño=-1;
  568.  
  569. while((tamaño=reader.read(buffer))>-1) {
  570.  
  571. System.out.write(buffer,0,tamaño);
  572.  
  573.  
  574. }
  575.  
  576.  
  577.  
  578.  
  579. conexion.disconnect();
  580.  
  581.  
  582. } catch (MalformedURLException e) {
  583. System.out.println(e.getMessage());
  584. } catch (ProtocolException e) {
  585. System.out.println(e.getMessage());
  586. } catch (IOException e) {
  587.  
  588. System.out.println(e.getMessage());
  589. System.out.println("Fichero ya existente");
  590. }finally {
  591. if(reader!=null) {
  592. try {
  593. reader.close();
  594. } catch (IOException e) {
  595. System.out.println(e.getMessage());
  596. }
  597. }
  598. if(writer!=null) {
  599. try {
  600. writer.close();
  601. } catch (IOException e) {
  602. System.out.println(e.getMessage());
  603. }
  604. }
  605.  
  606.  
  607. }
  608.  
  609.  
  610. break;
  611.  
  612. case "POST":
  613. try {
  614. url = new URL(args[2]);
  615. conexion = (HttpURLConnection)url.openConnection();
  616. conexion.setRequestMethod("POST");
  617. conexion.setRequestProperty("Content-Type", "text/plain; charset=utf-8" );
  618. conexion.setDoInput(true);
  619. conexion.setDoOutput(true);
  620. writer=new DataOutputStream(conexion.getOutputStream());
  621. writer.writeBytes(args[1]);
  622. reader=new DataInputStream(conexion.getInputStream());
  623.  
  624. byte[] buffer=new byte[1024];
  625.  
  626. int tamaño=-1;
  627.  
  628. while((tamaño=reader.read(buffer))>-1) {
  629.  
  630. System.out.write(buffer,0,tamaño);
  631.  
  632.  
  633. }
  634.  
  635. conexion.disconnect();
  636.  
  637. } catch (MalformedURLException e) {
  638. System.out.println(e.getMessage());
  639. } catch (ProtocolException e) {
  640. System.out.println(e.getMessage());
  641. } catch (IOException e) {
  642. System.out.println(e.getMessage());
  643. }finally {
  644. if(reader!=null) {
  645. try {
  646. reader.close();
  647. } catch (IOException e) {
  648. System.out.println(e.getMessage());
  649. }
  650. }
  651. if(writer!=null) {
  652. try {
  653. writer.close();
  654. } catch (IOException e) {
  655. System.out.println(e.getMessage());
  656. }
  657. }
  658.  
  659.  
  660. }
  661.  
  662.  
  663. break;
  664.  
  665. case "DELETE":
  666.  
  667. try {
  668. url = new URL(args[1]);
  669. conexion = (HttpURLConnection)url.openConnection();
  670. conexion.setRequestMethod("DELETE");
  671. conexion.setDoInput(true);
  672. reader=new DataInputStream(conexion.getInputStream());
  673.  
  674. byte[] buffer=new byte[1024];
  675.  
  676. int tamaño=-1;
  677.  
  678. while((tamaño=reader.read(buffer))>-1) {
  679.  
  680. System.out.write(buffer,0,tamaño);
  681.  
  682.  
  683. }
  684.  
  685. conexion.disconnect();
  686.  
  687.  
  688. } catch (MalformedURLException e) {
  689.  
  690. System.out.println(e.getMessage());
  691. } catch (ProtocolException e) {
  692.  
  693. System.out.println(e.getMessage());
  694. } catch (IOException e) {
  695.  
  696. System.out.println(e.getMessage());
  697.  
  698. } finally {
  699. if(reader!=null) {
  700. try {
  701. reader.close();
  702. } catch (IOException e) {
  703. System.out.println(e.getMessage());
  704. }
  705. }
  706.  
  707. }
  708.  
  709.  
  710.  
  711. }//Fin Swicht
  712.  
  713. }//Fin main
  714.  
  715. }//
  716.  
  717.  
  718. ///////Aparcao
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement