Boolean issues with subdivision surface
The problem with Boolean operations is that they create quite the mess in your topology. This messy topology results in shading artifacts. Because subsurf results in so much geometry, it makes this mess nearly impossible to fix.
Put your current mesh in an archive somewhere in case you mess something up. Duplicate it and work on the duplicate.
Now, select the duplicate, apply all boolean modifiers but not the subsurf modifier. This will make the topology easier to handle. Go into Edit Mode and try to fix the topology.
After doing that, there's one problem. Your Booleans are going to be subsurfed as well. To avoid that, there's two options:

Select all the edges of your booleans and set their edge crease to 1. The edge creases tell the subsurf modifier not to smooth those edges.

Add supporting geometry to your booleans so they don't get smoothed as much.

If both of those don't work, try turning on Auto Smooth and adjust the angle. This cuts off the smoothing on corners at an angle greater than the Auto Smooth angle.


Your mesh should now not have the shading problems you had before.