Rahul Sah with help from Anidya Roy & Shumpy Saini.
Smartphones are becoming more powerful day by day. There are even dual core processor based phones available now. Also, 3G is on the way to becoming all pervasive in due course. Imagine a micro entrepreneur (such as an ice cream vendor) running a web server on his Android phone, so that he can do online business from wherever he is and can also update the site information. Take another scenario where a user has set up a surveillance system at his home using his 3G-enabled camera phone and can get live video feeds of what's happening at his home in his absence. Take up a third scenario of an organization having its employees accessing corporate information on their smartphones. Now, they can centrally track all devices irrespective of their location but connected over 3G networks, and can push regular security updates to those devices and can also monitor any infringements.
Now all this looks possible with 3G. My colleague Shumpy Saini and I were contemplating on doing a story about running a web server on Android phone and accessing it over WiFi or 3G, when my ex-colleague Anindya Roy brought forward a point that few of his paid apps on Android phone do not work on 3G. The reason he suspects is that incoming ports are being blocked by 3G providers. This prompted Shumpy and me to test if the 3G providers are really blocking the ports for inward facing applications, like a web server, or not. If that's the case, then we should forget about the rosy scenarios we had discussed earlier.
We talk about building an eco-system of applications around 3G and when the 3G providers are limiting us from doing that, then what's the point.
Since we had already bought SIMs from various operators, namely Airtel, Vodafone, BSNL, MTNL and Reliance that provide 3G services, we could check which operators have provided access to their incoming ports on which we could run a web server. We used Shumpy's Sony Ericsson Xperia X10i Android phone to run a web server. But here comes an issue--on a 3G network, IP addressed assigned to you will always be different and not static. The way around this is to use 3rd party services like DynDNS that tracks IP changes accordingly. Therefore, you can have a domain name pointed to your web server through DynDNS, and whenever the IP changes, you do not have to worry about that. For that we installed DynDNS client for Android and mapped it to our account, so as to know that the IP changes on 3G are reflected in realtime or not.
Also, for web server, we chose PAW Server from the Android market, which is a free app and installed it on the phone. The port for PAW Server was set by default at 8080. We could not use ports below 1024, since access is not given on Android phones unless they are rooted devices. So common ports like 80 for HTTP, 21 for FTP, 22 for SSH or 25 for SMTP were not tested. We cannot know if they are available or not unless the service provider informs us, and we are still awaiting a response from them. We also used Zenmap, a GUI based Nmap tool for Windows through which we can explore a given address and check for any open ports.
Now, when all this setup is done, we went through one SIM at a time for each operator. First we started the PAW Server and the DynDNS client and tried to access the URL given by the PAW Server from our PC's browser. When we got the login screen of the PAW Server, it implied that the incoming port was open.
Findings, yes, there were quite a few. When we ran the above test process for each 3G operator, whose SIM we had, we found some interesting points. Here's the summary for each one of them.
Reliance: Reliance was the first 3G SIM card that we received. Upon running the PAW Server we found that the port 8080 cannot be accessed from the browser. But the interesting thing was that if you accessed the same URL at port 8080 from another phone having Reliance 3G card, the PAW Server could be accessed, but not from the outside world. Which means, if the request comes from within Reliance's 3G network subnet, the ports are open, but beyond their firewall, they are blocked. Quite obvious though.
We changed the port to some random port number 7070 and still it was accessible from another Reliance 3G connection. This is something wonderful as Reliance themselves or someone else can build application like 3G surveillance for Reliance 3G subscribers, wherein one Reliance 3G connected camera phone would be kept in an office premise or home and that could be remotely observed from another phone having Reliance 3G connection.
MTNL: One of the earliest 3G providers in the country, and to our surprise we found their ports open. PAW Server was accessible at port 8080. So, we quickly changed the port numbers to 8082, 7171, etc. and it was accessible on each. The same was also confirmed on running Nmap on the URL given by PAW Server on MTNL connection. Therefore someone who's is planning to have a web server on their phone over 3G or some other applications, they can readily opt for MTNL and have their application working.
BSNL: Brother in arm with MTNL, we found their ports open as well. But as we were in Gurgaon, where access to BSNL network is actually 'roaming on MTNL's network', we concluded that the open ports could be due to MTNL's infrastructure.
Anindya helped me here. He is based at Chennai and using his BSNL connection we ran the PAW server on his Android phone and then shared the URL at our location. And we found the ports to be open. Also, the DynDNS client was updating the changed IPs, showing that we can actually map a domain name and run a web server on our Android phone.
So, if someone has to make an inward facing application that accesses the incoming ports of the service providers, they can opt for MTNL and BSNL.
Airtel: Upon running the PAW Server and accessing the URL, we found that the ports were not open. We have asked Airtel to tell us which ports are open so that we can use them to run applications like web server. At the time of going to press, we didn't hear from them.
Vodafone: We tested the same process here. Just like in Airtel, all the ports were blocked.
3G can be an enabler for various services and we have given an example of surveillance, for which one can even use PAW Server to enable that. And in this story we tried to have our own web server running on a 3G network. But since the 3G major players are not providing open incoming ports, independent developers cannot build such applications.
If the 3G providers are blocking the ports considering the security aspects, then the question arises why BSNL and MTNL are not doing that? As a user one should have the option to buy open ports or as VAS. That will be helpful for both the service provider and the consumer. If I know the implication of how an open port running a service through my phone can be exploited to gain access over my phone then I'll be deploying necessary security measures. But if a user wants to be completely secured, then he may not opt for open ports for running any service on them. Likewise, why don't landline broadband service providers offer open ports as a VAS option? This would keep the non-geek home subscribers more secure.