Basia

мой бложек

 
  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Еще про безопасность. hosts.allow hosts.deny

Еще одна маленькая статья, касающаяся безопасности вашего сервера. Речь работе файлов 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

 

Баннер