Еще одна маленькая статья, касающаяся безопасности вашего сервера. Речь работе файлов hosts.allow и hosts.deny. В них можно конкретизировать каким ip какие сервисы и службы нашего сервера разрешены или запрещены. После того как TCP пакет прошел через все цепи iptables и был пропущен в систему, его обрабатывает сначала hosts.allow , просматривая записи разрешений в этом файле, а потом уже покате поступает на проверку hosts.deny, где указываются запреты.
1. Проверяется файл /etc/hosts.allow. Если в нём найдено соответствие, доступ к сервису предоставляется.
2. Проверяется файл /etc/hosts.deny. Если в нём найдено соответствие, доступ будет запрещён.
3. В случае, если соответствующие правила не найдены, доступ предоставляется.
Порядок отработки этих файлов очень важен (а вдруг напутаете и вас перестанет пускать сервер), поэтому сначала вносят правки в файл hosts.allow , а уже потом в hosts.deny . Любые изменения, внесенные в файл, начинают действовать сразу, не требуя рестарта. Находятся оба файла в каталоге /etc/ . Начнем по правильному порядку.
Содержание файла hosts.allow по умолчанию:# /etc/hosts.allow: list of hosts that are allowed to access the system.
# See the manual pages hosts_access(5) and hosts_options(5).
#
# Example: ALL: LOCAL @some_netgroup
# ALL: .foobar.edu EXCEPT terminalserver.foobar.edu
#
# If you're going to protect the portmapper use the name "portmap" for the
# daemon name. Remember that you can only use the keyword "ALL" and IP
# addresses (NOT host or domain names) for the portmapper, as well as for
# rpc.mountd (the NFS mount daemon). See portmap(8) and rpc.mountd(8)
# for further information.
#
Содержание файла hosts.deny по умолчанию:
# /etc/hosts.deny: list of hosts that are _not_ allowed to access the system.
# See the manual pages hosts_access(5) and hosts_options(5).
#
# Example: ALL: some.host.name, .some.domain
# ALL EXCEPT in.fingerd: other.host.name, .other.domain
#
# If you're going to protect the portmapper use the name "portmap" for the
# daemon name. Remember that you can only use the keyword "ALL" and IP
# addresses (NOT host or domain names) for the portmapper, as well as for
# rpc.mountd (the NFS mount daemon). See portmap(8) and rpc.mountd(8)
# for further information.
#
# The PARANOID wildcard matches any host whose name does not match its
# address.
# You may wish to enable this to ensure any programs that don't
# validate looked up hostnames still leave understandable logs. In past
# versions of Debian this has been the default.
# ALL: PARANOID
Синтаксис:
служба: IP-адрес или имя хоста
ОЧЕНЬ интересный пример правил:
/etc/hosts.allow
#
# hosts.allow В этом файле описаны имена хостов,
# которым позволено использовать локальные INET-сервисы
#
#
# Мои новые правила
sshd : 192.168.0.14
/etc/hosts.deny
#
# hosts.deny В этом файле описаны имена хостов,
# которым запрещено использовать локальные INET-сервисы
#
#
# Мои новые правила
ALL : ALL
Обратите ВНИМАНИЕ на результат работы этих правил:
Подключение с 192.168.0.14
Last login: Tue Apr 7 06:45:09 2009 from station14
[root@station15 ~]#
Подключение с 192.168.0.247
[root@alien ~]# ssh 192.168.0.15
ssh_exchange_identification: Connection closed by remote host
[root@alien ~]#
Служебные слова:
ALL - Соответствует всем сервисам или хостам.
LOCAL - Соответствует любому хосту, в имени которого не содержится точек.
UNKNOWN - Соответствует любому неизвестному пользователю, и соответствует любому хосту, имя или адрес которого неизвестны. Не забывайте, что имя хоста может быть недоступно, если возникнут проблемы с сервером имён.
KNOWN - Соответствует известным пользователям и хостам, чьи имя и адрес известны. Не забывайте, что имя хоста может быть недоступно, если возникнут проблемы с сервером имён.
PARANOID - Соответствует любому хосту, имя которого не соответствует его IP-адресу.
EXCEPT - Данное служебное слово предполагает использование в следующем виде: list_1 EXCEPT list_2. Такой оператор будет соответствовать всему, что совпадает с list_1, при условии что нет совпадения с list_2. EXCEPT можно использовать в daemon_list и client_list.
Примеры записей:
Если хотите блокировать все smtp-пакеты, идущие к серверу от mail.test.ru, необходимо ввести в файл hosts.deny следующую строчку:
smtp: mail.test.ru
Можно также указать вместо имени хоста его IP-адрес:
smtp: 192.168.1.10
Для обозначения целой подсети можно использовать “.” в строке адреса. К примеру, если мы хотим разрешить доступ к серверу по http из всей сети 192.168.10.0/24, то нужно написать в hosts.allow следующее:
http: 192.168.10.
Также мы можем использовать этот знак, если хотим разрешить доступ к какой-либо службе всем компьютерам нашего домена, указав в hosts.allow следующее:
http: .test.ru
Ну, и самый простой способ - запретить всем mysql, указав hosts.deny
mysqld: ALL
а в hosts.allow разрешить использование mysql всем локальным пользователям (не забывайте, что сначала отрабатывается hosts.allow c разрешениями, а потом hosts.deny с запретами) дописав:
mysqld: LOCAL
< Предыдущая | Следующая > |
---|