Достаточно ли только настройки hosts.allow hosts.deny для защиты от злоумышленников?
Нет, недостаточная. Обеспечение безопасности -- это целый комплекс мер, и чем больше уровней защиты, тем лучше. Как минимум, стоит добавить ещё правила на файрволе.
Ну и прописывать список IP, с которых вы планируете подключаться к серверу по SSH -- так себе идея :-) Это сейчас вы на конкретном IP сидите, а потом выйдете прогуляться, вам позвонят и скажут, что "сайт упал", а ближайший интернет -- в каком-нибудь кафе. Вы такой подключаетесь к их вайфаю, ломитесь на сервак и... опа -- облом! Вы же ограничили возможность входа только для своего домашнего IP.
Идеологически верно для сервера, торчащего напрямую в интернет, перенести SSH на нестандартный порт и открыть возможность подключения с любого IP. А авторизацию сделать не по паролю, а по ключу, и ключ тоже сделать защищённым паролем.
MySQL наружу высовывать тоже идея не фонтан, тут правильнее было бы построить какой-нибудь вариант туннеля. Хотя, если жёстко зажать файрволом список IP, с которых можно подключиться к MySQL -- то сойдёт. Но я бы всё равно так делать не стал, так как данные будут ходить в открытом виде по интернету. Поэтому стоит завернуть MySQL-трафик в шифрованный туннель любого рода -- SSH, IPsec, l2tp, что угодно.
Достаточно ли только настройки hosts.allow hosts.deny для защиты от злоумышленников?Нет.
Для защиты от злоумышленников нужно сделать как минимум три вещи-
1)Четко определить что будем защищать, и от кого.
2)Выяснить возможные направления атак и слабые места.
3)Провести комплекс мероприятий для устранения  возможности проведения атак выявленные в п.2.
Проведение каких либо мероприятий  по защите без выполнения п.1 и п,2 бессмысленная и бесполезная потеря времени.