
Защита хоста/сети - довольно обширная тема. Собственно, грамотная настройка - и есть работа системного/сетевого администратора.
Я бы выделил следующие основные точки в порядке приоритета:
1. Не запускать ненужные сервисы - меньше дырявых демонов, да и просто служб, которые надо обслуживать.
2. Конфигурировать запущенные службы так, чтобы не было возможности несанкционированного их использования.
3. Настроить правила firewall'а: INPUT/OUTPUT для хоста, FORWARD для шлюза. По большому счету, для конечного пользователя желательно default правило выставить в DROP (или REJECT), а те порты/адреса, которые должны быть доступны - прописать в ACCEPT явно. Так-же, желательно прописать обработку SYN пакетов. Грамотное использование чейнов и правил даст гибкий и компактный список правил.
4. Использовать проксирование для таких служб, как http: реальный сервер расположить в локалке на приватном IP, а видимый IP преобразовывать NAT'ом во внутренний - это обеспечит защиту от проникновения шеллом на веб хост, при получении каких-то данных средствами дырявых скриптов.
5. Установить/настроить какую-либо IDS (intrusion detection system) - для отлова в динамике атак и, соответственно, корректное реагирование на них.
По каким портам чаще атаки - да по всем используемым

Начиная с виндовых 135-139,445 и кончая 22 (ssh)
"No! Try not! Do. Or do not. There is no try." -- Yoda