I don't understand why you use server client model, if your server has 0 authority and lacks capability to enforce rules. Your server have to know the map. How else could it stop player from walking through walls. You say "client side is unmodifiable", I say you are misinformed. There is no such thing as "unmodifiable client". You are trusting too much on client and without map/world awareness, the server cannot do anything.
Heres example of client server communication:
Client: "I am clicking my mouse 1 now"
Server:"Ok, based on my memory, you stand at x y and aim towards x2 y2, you click mouse 1 and your selected weapon is desert eagle with 2 bullets in clip, lets shoot and check if you hit someone"
Server-again: "based on calculations, player1 hit player2, so lets update everyone to let them know this happened."
See the difference? If you wanna have authoritative server, you have to give more information for it. This is the way, the modern server client games work. Client is just a remote input device with display. Server is the one who does all the decisions. Your client should not be able to send damage packets or kill packets or anything at all. Only packets, that tell the server what the client did after last update.