To get the most value out of APM, you will need to instrument the applications. You could report response times at a proxy/firewall/etc. level by inspecting logs, or by implementing a plugin if your proxy supports it, but you will miss out on a lot of value like the in-process timeline of transactions. The firewall/proxy will not have that kind of visibility.
Nevertheless, to report the overall response times you could write custom code for your specific firewall, proxy, what-have-you. You can use the public transaction API from any of the language clients, documented here: https://www.elastic.co/guide/en/apm/agent/index.html.