Ни для кого не секрет, что в наше время необходимо серьезно относиться к вопросам безопасности серверов. Инструментов, для защиты серверов от вторжений злоумышленников масса и каждый администратор выбирает подходящее и нравящееся ему решение. Многие используют фильтр iptables и пишут длинные команды фильтров к нему, устанавливают дополнительное ПО с кучей конфигов и тд, совершенно забывая о том, что для защиты сервера, вполне достаточно изменить два файла, уже присутствующие в системе, это/etc/hosts.allow и /etc/hosts.deny.
Внимание! Необходимо очень осторожно вносить изменения в эти файлы, если вы что-то напутаете при изменении, то можете спокойно потерять доступ к своему серверу (это в том случае, если вы настраиваете его удаленно).
Синтаксис этих файлов очень прост:
<служба или порт>: <IP-адрес или имя хоста>
Итак, чтобы закрыть доступ к серверу по SSH для всех и оставить только для себя, нужно в файл /etc/hosts.deny добавить любым текстовым редактором следующее:
sshd: ALL
а в файл /etc/hosts.allow:
sshd: vash_ip
Под vash_ip подразумевается ip адрес компьютера, которому необходимо разрешить доступ.
Естественно вместо SSH можно закрыть любую службу или порт, достаточно просто изменить sshd на smtp(25 порт), http(80 порт), ну или любой другой. В общем, все достаточно просто.
Можно также все неудавшиеся подключения писать в лог файл, для этого нужно подправить файл /etc/hosts.deny:
sshd: ALL: spawn (echo "Deny from %h %a to %d at `date`" >> /var/log/tcp.deny.log)
В результате, все неудачные подключения к вашему серверу, будут записываться в лог файл/var/log/tcp.deny.log, в котором будет указано имя, IP-адрес компьютера пытавшегося соединиться и время соединения.
Помимо всего прочего, очень рекомендуется запретить доступ по SSH под логином root. Для это открываем конфигурационный файл SSH (/etc/ssh/sshd_config), находим в разделе «Authentication», строку с параметром:
PermitRootLogin yes
и изменяем ее на:
PermitRootLogin no