Kali Linux Revealed




Download 11,68 Mb.
Pdf ko'rish
bet72/174
Sana15.01.2024
Hajmi11,68 Mb.
#137314
1   ...   68   69   70   71   72   73   74   75   ...   174
Bog'liq
Kali-Linux-Revealed-2021-edition

Managing PostgreSQL Clusters
First, it is worth noting that the concept of “PostgreSQL cluster” is a
Debian-specific addition
1
and
that you will not find any reference to this term in the
official PostgreSQL documentation
2
. From
the point of view of the PostgreSQL tools, such a cluster is just an instance of a database server
running on a specific port.
That said, Debian’s postgresql-common package provides multiple tools to manage such
clusters:
pg_createcluster
,
pg_dropcluster
,
pg_ctlcluster
,
pg_upgradecluster
,
pg_renamecluster
, and
pg_lsclusters
. We won’t cover all those tools here, but you can
refer to their respective manual pages for more information.
What you must know is that when a new major version of PostgreSQL gets installed on your system,
it will create a new cluster that will run on the next port (usually 5433) and you will keep using
the old version until you migrate your databases from the old cluster to the new one.
You can retrieve a list of all the clusters and their status with
pg_lsclusters
. More impor-
tantly, you can automate the migration of your cluster to the latest PostgreSQL version with
1
https://wiki.debian.org/PostgreSql
2
https://www.postgresql.org/docs/
117
Chapter 5 — Configuring Kali Linux


pg_upgradecluster old-version cluster-name
. For this to succeed, you might have to first
remove the (empty) cluster created for the new version (with
pg_dropcluster new-version
cluster-name
). The old cluster is not dropped in the process, but it also won’t be started au-
tomatically. You can drop it once you have checked that the upgraded cluster works fine.
5.3.4. Configuring Apache
A typical Kali Linux installation includes the Apache web server, provided by the apache2 package.
Being a network service, it is disabled by default. You can manually start it with
systemctl start
apache2
.
With more and more applications being distributed as web applications, it is important to have
some knowledge of Apache in order to host those applications, whether for local usage or for
making them available over the network.
Apache is a modular server and many features are implemented by external modules that the
main program loads during its initialization. The default configuration only enables the most
common modules, but enabling new modules is easily done by running
a2enmod module
. Use
a2dismod module
to disable a module. These programs actually only create (or delete) symbolic
links in
/etc/apache2/mods-enabled/
, pointing at the actual files (stored in
/etc/apache2/
mods-available/
).
There are many modules available, but two are worth initial consideration: PHP and SSL (used for
TLS). Web applications written with PHP are executed by the Apache web server with the help of
the dedicated module provided by the libapache-mod-php package, and its installation automati-
cally enables the module.
Apache 2.4 includes the SSL module required for Hypertext Transfer Protocol Secure (HTTPS)
out of the box. It first needs to be enabled with
a2enmod ssl
, then the required directives
must be added to the configuration files. A configuration example is provided in
/etc/apache2/
sites-available/default-ssl.conf
. See
https://httpd.apache.org/docs/2.4/mod/mod_
ssl.html
for more information.
The full list of standard Apache modules can be found online at
https://httpd.apache.org/
docs/2.4/mod/index.html
.
With its default configuration, the web server listens on port 80 (as configured in
/etc/apache2/
ports.conf
), and serves pages from the
/var/www/html/
directory by default (as configured in
/etc/apache2/sites-enabled/000-default.conf
).
Configuring Virtual Hosts
A virtual host is an extra identity for the web server. The same Apache process can serve multiple
websites (say www.kali.org and www.offensive-security.com) because the HTTP requests embed
118
Kali Linux Revealed


both the name of the website requested and the URL localpart (this feature is known as name-based
virtual hosts).
The default configuration for Apache 2 enables name-based virtual hosts. In addition, a default
virtual host is defined in the /etc/apache2/sites-enabled/000-default.conf file; this virtual host will
be used if no host matching the request sent by the client is found.
Important
Requests concerning unknown virtual hosts will always be served by the
first defined virtual host, which is why the package ships a
000-default.
conf
configuration file, which is sorted first among all other files that you
might create.
Each extra virtual host is then described by a file stored in
/etc/apache2/sites-available/
.
The file is usually named after the hostname of the website followed by a .conf suffix (for example:
www.kali.org.conf
). You can then enable the new virtual host with
a2ensite www.kali.org
.
Here is a minimal virtualhost configuration for a website whose files are stored in
/srv/www.kali.
org/www/
(defined with the DocumentRoot option):

ServerName www.kali.org
ServerAlias kali.org
DocumentRoot /srv/www.kali.org/www

You might also consider adding CustomLog and ErrorLog directives to configure Apache to output
logs in files dedicated to the virtual host.
Common Directives
This section briefly reviews some of the commonly-used Apache configuration directives.
The main configuration file usually includes several Directory blocks; they allow specifying dif-
ferent behaviors for the server depending on the location of the file being served. Such a block
commonly includes Options and AllowOverride directives:

Options Includes FollowSymLinks
AllowOverride All
DirectoryIndex index.php index.html index.htm

119
Chapter 5 — Configuring Kali Linux


The DirectoryIndex directive contains a list of files to try when the client request matches a direc-
tory. The first existing file in the list is used and sent as a response.
The Options directive is followed by a list of options to enable. The None value disables all options;
correspondingly, All enables them all except MultiViews. Available options include:
• ExecCGI—indicates that CGI scripts can be executed.
• FollowSymLinks—tells the server that symbolic links can be followed, and that the response
should contain the contents of the target of such links.
• SymLinksIfOwnerMatch—also tells the server to follow symbolic links, but only when the
link and its target have the same owner.
• Includes—enables Server Side Includes (SSI). These are directives embedded in HTML pages
and executed on the fly for each request.
• Indexes—tells the server to list the contents of a directory if the HTTP request sent by the
client points to a directory without an index file (that is, when no files mentioned by the
DirectoryIndex directive exist in this directory).
• MultiViews—enables content negotiation; this can be used by the server to return a web
page matching the preferred language as configured in the browser.

Download 11,68 Mb.
1   ...   68   69   70   71   72   73   74   75   ...   174




Download 11,68 Mb.
Pdf ko'rish