Some days back, The Register mentioned cyberstorm.mu (name rebranded due to trademark issues) preparing for IETF100 hackathon. Hooray! Yeah, we did it and the hard work finally paid off thanks to the core team and the whole of cyberstorm.mu team. After registering on the IETF – Internet Engineering Task Force website, the cyberstorm.mu team set itself on the TLS1.3 API source code. We were all focused on the OpenSSL codes.
Once in our office, we set up the network and our equipment. Check out logan’s blog to have an idea how things went on. That’s true we struggled in the beginning, but finally we could see the light at the end of the tunnel. Patience and patience is all what you need and a calm mind to study how things are in the code. The testing was then carried out to confirm the beauty of the TLS 1.3 codes in our chosen projects. You can also view the TLS tutorial which explains the objectives of TLS1.3. For example: Mitigation of pervasive monitoring.
Here are some hints about the security from TLS1.3
RSA key was removed.
Stream ciphers was reviewed.
Removal of compressed data mechanism which was able to influence which data can be sent.
Renegotiation was removed.
SHA1 and Block ciphers were removed.
Use of modern cryptography like A-EAD.
Use of modern key such as PSK.
For more details see this blog from OpenSSL. We were also working together with the TLS team in Singapore which was lead by Nick Sullivan, champion at the IETF TLS hackathon.
After the IETF Hackathon, it was announced publicly about the good job done by the cyberstorm.mu team on the IETF channel.
The team at the beach 🙂
More links :
PS: Any more links related to IETF Hackathon TLS 1.3 let me know, I will add it here!
Stunnel is a program by Michal Trojnara that allows you to encrypt arbitrary TCP connections inside SSL. Stunnel can also allow you to secure non-SSL aware daemons and protocols (like POP, IMAP, LDAP, etc) by having Stunnel provide the encryption, requiring no changes to the daemon’s code. It is a proxy designed to add TLS encryption functionality to existing clients and servers without any changes in the programs’ code. Its architecture is optimized for security, portability, and scalability (including load-balancing), making it suitable for large deployments. – Stunnel.org
The concept that lies behind Stunnel is about the encryption methodology that is used when the client is sending a message to a server using a secure tunnel. In this article, we will focus on using MySQL alongside Stunnel. MariaDB Client will access the MariaDB server database using the Stunnel for more security and robustness.
I will demonstrate the installation and configuration using the CentOS distribution which is on my Virtual Box lab environment. I created two CentOS 7 virtual machines with hostname as stunnelserver and stunnelclient. We will tunnel the MySQL traffic via Stunnel. You can apply the same concept for SSH, Telnet, POP, IMAP or any TCP connection.
The two machines created are as follows:
stunnelserver : 192.168.100.17 – Used as the Server
stunnelclient : 192.168.100.18 – Used as the Client
Basic package installation and configuration on both servers
1. Install the Stunnel and OpenSSL package on both the client and the server.
yum install stunnel openssl -y
2. As we will be using Stunnel over MariaDB, you can use the MariaDB repository tools to get the links to download the repository. Make sure you have the MariaDB-client package installed on the stunnelclient which will be used as client to connect to the server. Also, install both packages on the stunnelserver. The commands to install the MariaDB packages are as follows:
sudo yum install MariaDB-server MariaDB-client
3. For more information about installations of MariaDB, Galera etc, refer to these links:
Configuration to be carried out on the stunnelserver (192.168.100.17)
4. Once you have all the packages installed, it’s time to create your privatekey.pem. Then, use the private key to create the certificate.pem. Whilst creating the certificate.pem, it will prompt you to enter some details. Feel free to fill it.
5. Now comes the most interesting part to configure the stunnel.conf file by tunnelling it to the MySQL port on the stunnelserver. I observed that the package by default does not come with a stunnel.conf or even a Init script after installing it from the repository. So, you can create your own Init script. Here is my /etc/stunnel/stunnel.conf on the server:
14. You can now start the service on the client as follows:
15. A netstat on the client will show the Stunnel listening on port 24.
16. You can now connect on the MySQL database from your client to your server through the tunnel. Example:
mysql -h 127.0.0.1 -u <Name of Database> -p -P 24
When starting Stunnel, the log and the pid file will be created automatically inside the jail environment that is /var/run/stunnel.
You can also change the debug log level. Level is a one of the syslog level names or numbers emerged (0), alert (1), crit (2), err (3), warning (4), notice (5), info (6), or debug (7). All logs for the specified level and all levels numerically less than it will be shown. Use debug = debug or debug = 7 for greatest debugging output. The default is notice (5).
If you compile from source, you will have a free log rotate and Init scripts. Probably on CentOS, it’s not packaged with the script!
You can also verify if SSLv2 and SSLv3 have been disabled using openssl s_client -connect 127.0.0.1:44323 -ssl3 and try with -tls1 to compare.
For the purpose of testing, you might need to check your firewall rules and SELINUX parameters.
You don’t need MariaDB-Server package on the client.
Stunnel is running on a Jail environment. The logs and the PID described in part 5 and 11 will be found in /var/run/stunnel.
You can invoke stunnel from inetd. Inetd is the Unix ‘super server’ that allows you to launch a program (for example the telnet daemon) whenever a connection is established to a specified port. See the “Stunnel how’s to” for more information. The Stunnel manual can also be viewed here.
Some days back, the cyberstorm.mu (Name rebranded due to trademark issue) team made our first video stream on Youtube about Modem Insecurity in Mauritius. We received several feedbacks from the public, friends and local media about the issue raised. Upon further research, I noticed that there are several countries including Vietnam, China amongst others are in the same problematic situation as they are using the same Huawei modem. More and more vulnerabilities are now being faced by the end users. Users aware of the issue can mitigate it from their side whilst others are still in the dark.
On Tuesday the 17th of October 2017, the cyberstorm.mu team had a public podcast on Modem Insecurity in Mauritius. Fifteen minutes after the start of the broadcast, there were already about 30 views from the public. We had over Keshav Purdassea, a student in cybersecurity as a guest to ask questions. We also had people asking questions on the Facebook cyberstorm.mu public group.
Logan from cyberstorm.mu made a smart introduction during the podcast about its goal which is informing the public about the vulnerabilities found in Huawei Modem.
Codarren from cyberstorm.mu laid emphasis on several interesting points such as the state of Dnsmasq. He also gave some interesting hints to launch commands on the router which is not similar like a usual Linux Box. He explained how all processes are running as root including Dnsmasq. Codarren recently had a conversation with engineers from Huawei and it’s quite obvious that Dnsmasq is also doing DNS. It was recommended to run dnsmasq as a non-root user which is one of the best practice in any Linux Box. Someone can craft a DNS packet and run this on the modem with the intention to control it remotely. This security risk needs to be reviewed again.
In addition, I made a brief introduction to the preliminary precaution that can be taken to minimize impacts such as deactivating Telnet or even SSH on the router. We also noticed how it’s possible to download the configuration file and decrypt it. All passwords can be seen clearly on the configuration files. Here are the steps to be followed to decrypt it :
We also had Yash who made a sensitive point regarding as to whether the patch was supposed to come from Mauritius Telecom or Huawei. After some research, we noticed that there was no patch from Huawei itself.
Have you missed one of the most important cybersecurity events which recently took place in Mauritius? I wrote a blog post to announce the event. Well, in case you miss it, you might be interested in this article to catch up with the event. It was held on the 10th of September 2017 at Voila hotel conference room at Bagatelle, Mauritius. Several students from the University of Mauritius, professionals, and members of MOSS – Mauritius Open Source Society were also present on that day.
The cyberstorm.mu team which is the first group of Linux and BSD developers in Mauritius invitedPhilipp Buehler, an international cybersecurity expert. He spoke about his experience in cybersecurity and gave recommendations for people interested by the field or just want to learn new skills in that area. He also emphasized heavily on Network and Security infrastructure, Firewalls, IPS, IDS, and several other components. You can view the slide here :
It was an open talk. Several topics such as Fragmentations and Protocol issues were tossed from the audience. One of the interesting topic was on IPS – Intrusion Prevent System. Philipp explain how most of the time if wrongly configured the system does not prevent any attack but instead legitimate packets. Typically, since it is an automated system and usually we have Crons which run at night and based upon some patterns by the IPS, same is interpreted as an attack and finally several IPs are banned and finally we land in a debug session. He pointed out about putting it back to an IDS – Intrusion Detection System. Support of IPV6 to several IDS were proposed as one example for University projects. It was amazing how Philipp re-drew the OSI diagram in a practical way and mentioned the “8th layer”. Another interesting diagram explaining how the Kernel interacts with the CPU, Memory and Disk to illustrate the Userland, the Kernel and the hardwares.