7Sky, нет, неправильно.
Немного хитрее :)
# http_access allow|deny [!]aclname ...
#
# NOTE on default values:
#
# If there are no "access" lines present, the default is to deny
# the request.
#
# If none of the "access" lines cause a match, the default is the
# opposite of the last line in the list. If the last line was
# deny, the default is allow. Conversely, if the last line
# is allow, the default will be deny. For these reasons, it is a
# good idea to have an "deny all" or "allow all" entry at the end
# of your access lists to avoid potential confusion.
что на великом и могучем примерно означает:
Если "access" строки отсутствуют, запрос отклоняется.
Если ни одна из "access" строк не совпала, то выполняется действие, противоположное последней строке списка. Если последняя строка "deny" (отклонить), то будет применено действие allow (разрешить). Наоборот, если последняя строка "allow" (разрешить), будет применено действие deny (отклонить). По этим причинам хорошей идеей будет указать "deny all" или "allow all" в конце списка для исключения возможной путаницы.
От себя: all тут именно с целью совпадения любого пакета (acl all src all или acl all src 0.0.0.0/0.0.0.0) и устранения ситуации "Если ни одна из "access" строк не совпала".
А вот в ситуации, когда последнее правило "отклонить", а критерий не покрывает все возможные варианты, получаем то самое "оборотное зелье" -- всем, не упомянутым в списке правил, окажется "можно".