Re: Apache Directive Closure Problem

Frank Gingras <[email protected]>
Newsgroups gmane.comp.apache.user
Message-ID <CAOY50mt1rSazk0bMfB08fR4HYcHy5QUPFK6Tk2dTq9SOMP62sw@mail.gmail.com>
On Fri, Oct 11, 2024 at 4:32 AM Adam Mihai Gergely <[email protected]>
wrote:

> Hello,
>
> I have a rather wierd question about Apache Directives Configuration.
>
> I am running Ubuntu Linux Server and my Apache Tree looks like this:
>
> server [/etc/apache2] # tree
> .
> ├── apache2.conf
> ├── apache2.conf.dpkg-old
> ├── apache2.conf.in
> ├── conf-available
> │   ├── charset.conf
> │   ├── javascript-common.conf
> │   ├── localized-error-pages.conf
> │   ├── other-vhosts-access-log.conf
> │   ├── phpmyadmin.conf -> ../../phpmyadmin/apache.conf
> │   ├── security.conf
> │   └── serve-cgi-bin.conf
> ├── conf-enabled
> │   ├── charset.conf -> ../conf-available/charset.conf
> │   ├── client-dirs.conf
> │   ├── javascript-common.conf -> ../conf-available/javascript-common.conf
> │   ├── localized-error-pages.conf ->
> ../conf-available/localized-error-pages.conf
> │   ├── other-vhosts-access-log.conf ->
> ../conf-available/other-vhosts-access-log.conf
> │   ├── phpmyadmin.conf -> ../conf-available/phpmyadmin.conf
> │   ├── security.conf -> ../conf-available/security.conf
> │   └── serve-cgi-bin.conf -> ../conf-available/serve-cgi-bin.conf
> ├── conf-local
> │   ├── htdirs.conf
> │   ├── htpasswd
> │   ├── htpasswd4laszlo
> │   └── htpasswd4project
> ├── envvars
> ├── magic
> ├── mods-available
> │   ├── access_compat.load
> │   ├── actions.conf
> │   ├── actions.load
> │   ├── alias.conf
> │   ├── alias.load
> │   ├── allowmethods.load
> │   ├── asis.load
> │   ├── auth_basic.load
> │   ├── auth_digest.load
> │   ├── auth_form.load
> │   ├── authn_anon.load
> │   ├── authn_core.load
> │   ├── authn_dbd.load
> │   ├── authn_dbm.load
> │   ├── authn_file.load
> │   ├── authn_socache.load
> │   ├── authnz_fcgi.load
> │   ├── authnz_ldap.load
> │   ├── authz_core.load
> │   ├── authz_dbd.load
> │   ├── authz_dbm.load
> │   ├── authz_groupfile.load
> │   ├── authz_host.load
> │   ├── authz_owner.load
> │   ├── authz_user.load
> │   ├── autoindex.conf
> │   ├── autoindex.load
> │   ├── buffer.load
> │   ├── cache_disk.conf
> │   ├── cache_disk.load
> │   ├── cache.load
> │   ├── cache_socache.load
> │   ├── cgid.conf
> │   ├── cgid.load
> │   ├── cgi.load
> │   ├── charset_lite.load
> │   ├── data.load
> │   ├── dav_fs.conf
> │   ├── dav_fs.load
> │   ├── dav.load
> │   ├── dav_lock.load
> │   ├── dbd.load
> │   ├── deflate.conf
> │   ├── deflate.load
> │   ├── dialup.load
> │   ├── dir.conf
> │   ├── dir.load
> │   ├── dump_io.load
> │   ├── echo.load
> │   ├── env.load
> │   ├── expires.load
> │   ├── ext_filter.load
> │   ├── file_cache.load
> │   ├── filter.load
> │   ├── headers.load
> │   ├── heartbeat.load
> │   ├── heartmonitor.load
> │   ├── ident.load
> │   ├── include.load
> │   ├── info.conf
> │   ├── info.load
> │   ├── lbmethod_bybusyness.load
> │   ├── lbmethod_byrequests.load
> │   ├── lbmethod_bytraffic.load
> │   ├── lbmethod_heartbeat.load
> │   ├── ldap.conf
> │   ├── ldap.load
> │   ├── log_debug.load
> │   ├── log_forensic.load
> │   ├── lua.load
> │   ├── macro.load
> │   ├── mime.conf
> │   ├── mime.load
> │   ├── mime_magic.conf
> │   ├── mime_magic.load
> │   ├── mpm_event.conf
> │   ├── mpm_event.load
> │   ├── mpm_prefork.conf
> │   ├── mpm_prefork.load
> │   ├── mpm_worker.conf
> │   ├── mpm_worker.load
> │   ├── negotiation.conf
> │   ├── negotiation.load
> │   ├── php5.6.conf
> │   ├── php5.6.load
> │   ├── php7.0.conf
> │   ├── php7.0.load
> │   ├── php7.1.conf
> │   ├── php7.1.load
> │   ├── php7.2.conf
> │   ├── php7.2.load
> │   ├── php7.3.conf
> │   ├── php7.3.load
> │   ├── php7.4.conf
> │   ├── php7.4.load
> │   ├── php8.0.conf
> │   ├── php8.0.load
> │   ├── proxy_ajp.load
> │   ├── proxy_balancer.conf
> │   ├── proxy_balancer.load
> │   ├── proxy.conf
> │   ├── proxy_connect.load
> │   ├── proxy_express.load
> │   ├── proxy_fcgi.load
> │   ├── proxy_fdpass.load
> │   ├── proxy_ftp.conf
> │   ├── proxy_ftp.load
> │   ├── proxy_html.conf
> │   ├── proxy_html.load
> │   ├── proxy_http.load
> │   ├── proxy.load
> │   ├── proxy_scgi.load
> │   ├── proxy_wstunnel.load
> │   ├── ratelimit.load
> │   ├── reflector.load
> │   ├── remoteip.load
> │   ├── reqtimeout.conf
> │   ├── reqtimeout.load
> │   ├── request.load
> │   ├── rewrite.load
> │   ├── sed.load
> │   ├── session_cookie.load
> │   ├── session_crypto.load
> │   ├── session_dbd.load
> │   ├── session.load
> │   ├── setenvif.conf
> │   ├── setenvif.load
> │   ├── slotmem_plain.load
> │   ├── slotmem_shm.load
> │   ├── socache_dbm.load
> │   ├── socache_memcache.load
> │   ├── socache_shmcb.load
> │   ├── speling.load
> │   ├── ssl.conf
> │   ├── ssl.load
> │   ├── status.conf
> │   ├── status.load
> │   ├── substitute.load
> │   ├── suexec.load
> │   ├── unique_id.load
> │   ├── userdir.conf
> │   ├── userdir.load
> │   ├── usertrack.load
> │   ├── vhost_alias.load
> │   └── xml2enc.load
> ├── mods-enabled
> │   ├── access_compat.load -> ../mods-available/access_compat.load
> │   ├── alias.conf -> ../mods-available/alias.conf
> │   ├── alias.load -> ../mods-available/alias.load
> │   ├── auth_basic.load -> ../mods-available/auth_basic.load
> │   ├── authn_core.load -> ../mods-available/authn_core.load
> │   ├── authn_file.load -> ../mods-available/authn_file.load
> │   ├── authz_core.load -> ../mods-available/authz_core.load
> │   ├── authz_host.load -> ../mods-available/authz_host.load
> │   ├── authz_user.load -> ../mods-available/authz_user.load
> │   ├── autoindex.conf -> ../mods-available/autoindex.conf
> │   ├── autoindex.load -> ../mods-available/autoindex.load
> │   ├── deflate.conf -> ../mods-available/deflate.conf
> │   ├── deflate.load -> ../mods-available/deflate.load
> │   ├── dir.conf -> ../mods-available/dir.conf
> │   ├── dir.load -> ../mods-available/dir.load
> │   ├── env.load -> ../mods-available/env.load
> │   ├── filter.load -> ../mods-available/filter.load
> │   ├── headers.load -> ../mods-available/headers.load
> │   ├── mime.conf -> ../mods-available/mime.conf
> │   ├── mime.load -> ../mods-available/mime.load
> │   ├── mpm_prefork.conf -> ../mods-available/mpm_prefork.conf
> │   ├── mpm_prefork.load -> ../mods-available/mpm_prefork.load
> │   ├── negotiation.conf -> ../mods-available/negotiation.conf
> │   ├── negotiation.load -> ../mods-available/negotiation.load
> │   ├── php5.6.conf -> ../mods-available/php5.6.conf
> │   ├── php5.6.load -> ../mods-available/php5.6.load
> │   ├── rewrite.load -> ../mods-available/rewrite.load
> │   ├── setenvif.conf -> ../mods-available/setenvif.conf
> │   ├── setenvif.load -> ../mods-available/setenvif.load
> │   ├── socache_dbm.load -> ../mods-available/socache_dbm.load
> │   ├── socache_memcache.load -> ../mods-available/socache_memcache.load
> │   ├── socache_shmcb.load -> ../mods-available/socache_shmcb.load
> │   ├── ssl.conf -> ../mods-available/ssl.conf
> │   ├── ssl.load -> ../mods-available/ssl.load
> │   ├── status.conf -> ../mods-available/status.conf
> │   ├── status.load -> ../mods-available/status.load
> │   ├── userdir.conf -> ../mods-available/userdir.conf
> │   └── userdir.load -> ../mods-available/userdir.load
> ├── ports.conf
> ├── sites-available
> │   ├── 000-default.conf
> │   └── default-ssl.conf
> └── sites-enabled
>     ├── 000-default.conf -> ../sites-available/000-default.conf
>     └── default-ssl.conf -> ../sites-available/default-ssl.conf
>
> 7 directories, 212 files
>
> Now, the problem is:
> One of my config files is */etc/apache2/mods-enabled/userdir.conf*
> It has this contents:
>
> [Begin File contents]
> <IfModule mod_userdir.c>
>         UserDir public_html
>         UserDir disabled root
>
>         <Directory /home/adam/public_html>
>                 AllowOverride FileInfo AuthConfig Limit Indexes
>                 Options MultiViews Indexes SymLinksIfOwnerMatch
> IncludesNoExec
>                 <Limit GET POST OPTIONS>
>                         Require all granted
>                 </Limit>
>                 <LimitExcept GET POST OPTIONS>
>                         Require all denied
>                 </LimitExcept>
>                 php_admin_value open_basedir /home/adam/public_html:/tmp
>         </Directory>
> [End File contents]
>
> The problem I noticed is that "</IfModule>" was absent from this file.
> So the <IfModule> at the beginning of this file was not properly closed.
> The mod_userdir module is always loaded and running. This is the intended
> setting.
>
> Restating the webserver (and retaining this configuration) did not yield
> any problems.
>
> However, requesting a certificate with Let's Encrypt's certbot revealed
> this issue because certbot performed an analysis on Apache's configuration
> files before renewing this certificate and found this problem.
>
> After I properly closed the IfModule with "</IfModule>" and restarted the
> webserver certbot worked again.
> Of course, Apache also worked.
>
> Now, my question is:
> What could this have affected ? The lack of "</IfModule>" at the end of
> the "userdir" module.
> (I am permanently using and loaded the UserDir Module because I needed. So
> the "IF" condition is a perfect TRUE, for my server.)
> Could have impacted something else ?
>
> I don't know how many other modules or directives loads Apache into memory
> on startup...
> Is it possible that everything it loaded after this file could be "under
> the influence" of <IfModule mod_userdir.c>  because it was not properly
> closed ?
> (In this case, perhaps Apache found another <IfModule> or <VirtualHost>
> along the way and nested it inside my unclosed <IfModule> ?)
>
> I am concerned about security risks, not loading of other configs properly
> or some other wierd combination that messes up my configs.... I have
> htaccess statements and security measures I put in place in my configs, as
> this server is used by tens of users.
>
> Also, Apache should have reported this unclosed <IfModule> on restart. I
> don't know why it didn't.
>
> I know Apache reads configuration files in a specific order based on a
> combination of directories, filenames, and inclusion rules, however I don't
> know how a missing IfModule closure tag can affect other things...
>
> If someone can help me... if an Apache developer or someone that
> understands these things perfectly knows what can I expect from this
> situation, please advise...
>
> Thank you.
>
> --
> Cu stima,
> Adam Mihai Gergely
> Informaticianwww.infosky.ro
>
>
What I would do first is create a simple test with an open <IfModule>
block, and apachectl -f /path/to/config/file configtest, and see if there
is an error.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.