Right way to Fine Tune - Train a fully connected layer as a separate step
First of all, you can do this in automatic way by setting the layers to be trainable or not. By selecting this hyper parameter to be false you freez the layer. we know that the first few layers are features extraction and the assumption when you perform fine tuning that the original problem and your problem are correlated, thus the features should be also the same. 
What is the right thing to do? 
It is very difficult to find a direct and absolute answer, it depends mainly on the original problem and the new one. In fact, I prefer to fine tune the whole network using different learning rates. 
You can use smaller learning rate for the convolution layers and larger rate with the fully connected layers.