Thursday, December 29, 2016

Java Telnet example : testing remote service state



In most of the cases in daily job, you must have get into some situation where you needed to telnet to a machine. Although telnet is not a secure way to access remote machine, but still it can be useful if all we want to know if the particular service port on particular machine is running or not(for example you want to check say on local ip address 192.168.110 on port 3389 the RDP service is running or not and there may be other cases)

Below, we will be showing up sample code in java which you can use the automate the process. This can also be used anywhere like if you are writing a service to report health of the multiple services, just a case.

import org.apache.commons.net.telnet.TelnetClient;

import java.io.IOException;
import java.net.ConnectException;

public class JavaTelnetExample {

    private static final String RDP_SERVER = "10.66.6.62.1";
    private static final int RDP_SERVER_PORT = 3389;
    private static final String HTTP_SERVER = "10.66.62.2";
    private static final int HTTP_SERVER_PORT = 80;
    // Similar to above you can test state for number of other services on number of other machines
    public static void main(String[] args) {
        System.out.println("Rdp service status on server ip : " + RDP_SERVER + " , port : " + RDP_SERVER_PORT + " = " + isServiceRunning(RDP_SERVER, RDP_SERVER_PORT));
        System.out.println("Ssh service status on server ip : " + HTTP_SERVER + " , port : " + HTTP_SERVER_PORT + " = " + isServiceRunning(HTTP_SERVER, HTTP_SERVER_PORT));

    }

    // If able to connect successfully, return true for service state else return false.        
    private static boolean isServiceRunning(String ip, int port) {
        try {
            TelnetClient telnetClient = new TelnetClient();
            telnetClient.connect(ip, port);
            return true;
        } catch (ConnectException e) {
            return false;
        } catch (IOException e) {
            return false;
        }
    }
}

Note:
To run this code, you can download the dependencies 'Apache Commons Net' from the https://mvnrepository.com/artifact/commons-net/commons-net depending upon build tool you are using maven/gradle or jar file

Feel free to leave comment if you get any issue or any suggestion.

Sunday, June 19, 2016

2 Steps to restrict Jenkins access by IP address or Host Name



Steps to fresh jenkins installtion on on Apache Tomcat Server : http://www.automatethebox.com/2016/06/installing-jenkins-on-apache-tomcat.html

If Jenkins is installed on Tomcat Server 

  1.  Add any of the below entry in the conf\context.xml file :
    • <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127.0.0.1"/><!--Allow from Ip Address-->
    • <Valve className="org.apache.catalina.valves.RemoteAddrValve" deny="127.0.0.1"/><!--Deny from Ip Address-->
    • <Valve className="org.apache.catalina.valves.RemoteHostValve" allow="yahoo.com"/><!--Allow from a Domain-->
    • <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|202.43.25.244"/><!--Allow from multipl ip's-->
  2.  Restart the Tomcat Server
Now, when you try to access Jenkins url, you should get 403 error

If Jenkins is installed on Apache Server 

  1. Add all of the below entries in the conf\.htaccess file to allow access from ip '45.67.87.67' and '10.66.62.0/24' LAN only
    • Order Deny,Allow
    • Deny from all
    • Allow from 45.67.87.67
    • Allow from 10.66.62.0/24
  2. Restart the Apache Server

Now, when you try to access Jenkins url, you should get 403 error




Back to Top