Advertisement
WEDC

apache.sh

Jun 26th, 2023
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 7.75 KB | Source Code | 0 0
  1. #!/bin/bash
  2.  
  3. # Installing Apache2
  4. zypper in -y --no-recommends w3m apache2{,-{event,utils,mod_fcgid}}
  5.  
  6. # Flags Setup
  7. a2enflag SSL
  8. a2enflag HTTP2
  9.  
  10. # Modules
  11. a2enmod rewrite
  12. a2enmod headers
  13. a2enmod deflate
  14. a2enmod filter
  15. a2enmod fcgid
  16. a2enmod http2
  17. a2enmod proxy
  18. a2enmod proxy_http
  19. a2enmod proxy_http2
  20. a2enmod proxy_fcgi
  21.  
  22. sed -i.bak 's/APACHE_MPM="[^"]"/APACHE_MPM="event"/' /etc/sysconfig/apache2
  23.  
  24. # Firewall Setup
  25. if [[ -x /usr/bin/firewall-cmd ]]; then
  26.   firewall-cmd --permanent --add-service=apache2 --add-service=apache2-ssl
  27.   firewall-cmd --reload
  28. fi
  29.  
  30. ### Mods Setup ###
  31. # mod_deflate
  32. cat >/etc/apache2/conf.d/mod_deflate.conf <<EOF
  33. <IfModule mod_deflate.c>
  34.  # Compress HTML, CSS, JavaScript, Text, XML and fonts
  35.   AddOutputFilterByType DEFLATE application/javascript
  36.   AddOutputFilterByType DEFLATE application/rss+xml
  37.   AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
  38.   AddOutputFilterByType DEFLATE application/x-font
  39.   AddOutputFilterByType DEFLATE application/x-font-opentype
  40.   AddOutputFilterByType DEFLATE application/x-font-otf
  41.   AddOutputFilterByType DEFLATE application/x-font-truetype
  42.   AddOutputFilterByType DEFLATE application/x-font-ttf
  43.   AddOutputFilterByType DEFLATE application/x-javascript
  44.   AddOutputFilterByType DEFLATE application/xhtml+xml
  45.   AddOutputFilterByType DEFLATE application/xml
  46.   AddOutputFilterByType DEFLATE font/opentype
  47.   AddOutputFilterByType DEFLATE font/otf
  48.   AddOutputFilterByType DEFLATE font/ttf
  49.   AddOutputFilterByType DEFLATE image/svg+xml
  50.   AddOutputFilterByType DEFLATE image/x-icon
  51.   AddOutputFilterByType DEFLATE text/css
  52.   AddOutputFilterByType DEFLATE text/html
  53.   AddOutputFilterByType DEFLATE text/javascript
  54.   AddOutputFilterByType DEFLATE text/plain
  55.   AddOutputFilterByType DEFLATE text/xml
  56.  
  57.  # Remove browser bugs (only needed for really old browsers)
  58.   BrowserMatch ^Mozilla/4 gzip-only-text/html
  59.   BrowserMatch ^Mozilla/4\.0[678] no-gzip
  60.   BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
  61.   Header append Vary User-Agent
  62. </IfModule>
  63. EOF
  64.  
  65. # mod_headers
  66. cat >/etc/apache2/conf.d/mod_headers.conf <<EOF
  67. <IfModule mod_headers.c>
  68.     Header always set X-XSS-Protection "1; mode=block"
  69.     Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
  70.     Header always set X-Content-Type-Options "nosniff"
  71.     Header always set X-Permitted-Cross-Domain-Policies "none"
  72.     Header always set Referrer-Policy "no-referrer"
  73.     Header always set Server ""
  74.     Header always append X-Frame-Options SAMEORIGIN
  75.     Header always set Permissions-Policy "accelerometer=(), autoplay=(self), camera=(), cross-origin-isolated=(self), display-capture=(self), encrypted-media=(self), fullscreen=(self), geolocation=(self), gyroscope=(self), magnetometer=(self), microphone=(), payment=(self), picture-in-picture=(self), publickey-credentials-get=(self), screen-wake-lock=(self), sync-xhr=(self), usb=(), web-share=(self), xr-spatial-tracking=(), clipboard-read=(self), clipboard-write=(self)"
  76.     #Header always edit Set-Cookie (.*) "\$1; httpOnly;Secure;SameSite=Strict"
  77. </IfModule>
  78. EOF
  79.  
  80. # mod_ssl
  81. cat >/etc/apache2/conf.d/ssl.conf <<EOF
  82. <IfModule mod_ssl.c>
  83.         SSLProtocol             all -SSLv3 -TLSv1 -TLSv1.1 -TLSv1.2
  84.         SSLHonorCipherOrder     off
  85.         SSLSessionTickets       off
  86.  
  87.         SSLUseStapling On
  88.         SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"
  89.  
  90.         <IfModule mod_socache_shmcb.c>
  91.             SSLSessionCache         shmcb:/var/lib/apache2/ssl_scache(512000)
  92.         </IfModule>
  93.         SSLSessionCacheTimeout  300
  94. </IfModule>
  95. EOF
  96.  
  97. cat >/etc/apache2/conf.d/mod_fcgid.conf <<EOF
  98. <IfModule fcgid_module>
  99.     FcgidIdleTimeout 900
  100.     FcgidIdleScanInterval 300
  101.     FcgidBusyTimeout 900
  102.     FcgidBusyScanInterval 300
  103.  
  104.     #FcgidErrorScanInterval 3
  105.     #FcgidZombieScanInterval 3
  106.  
  107.     FcgidProcessLifeTime 600
  108.  
  109.     FcgidIPCDir /var/lib/apache2/fcgid/
  110.     FcgidProcessTableFile /var/lib/apache2/fcgid/shm
  111.  
  112.     FcgidOutputBufferSize 65536
  113.  
  114.     <FilesMatch "\.php$">
  115.         SetHandler "proxy:fcgi://127.0.0.1:9000"
  116.     </FilesMatch>
  117.  
  118. </IfModule>
  119. EOF
  120.  
  121. if [ ! -f "/etc/apache2/default-server.conf.old" ]; then
  122.   mv /etc/apache2/default-server.conf /etc/apache2/default-server.conf.old
  123. fi
  124.  
  125. if [ ! -f "/etc/apache2/httpd.conf.old" ]; then
  126.   mv /etc/apache2/httpd.conf /etc/apache2/httpd.conf.old
  127.  
  128.   cat >/etc/apache2/httpd.conf <<EOF
  129. Include /etc/apache2/uid.conf
  130. Include /etc/apache2/server-tuning.conf
  131.  
  132. # Apache error_log
  133. ErrorLog /var/log/apache2/error_log
  134.  
  135. # generated from default value of APACHE_MODULES in /etc/sysconfig/apache2
  136. <IfDefine !SYSCONFIG>
  137.   Include /etc/apache2/loadmodule.conf
  138. </IfDefine>
  139.  
  140. Include /etc/apache2/listen.conf
  141.  
  142. # predefined logging formats
  143. Include /etc/apache2/mod_log_config.conf
  144.  
  145. # generated from default values of global settings in /etc/sysconfig/apache2
  146. <IfDefine !SYSCONFIG>
  147.   Include /etc/apache2/global.conf
  148. </IfDefine>
  149.  
  150. # optional mod_status, mod_info
  151. Include /etc/apache2/mod_status.conf
  152. Include /etc/apache2/mod_info.conf
  153.  
  154. Include /etc/apache2/mod_reqtimeout.conf
  155. Include /etc/apache2/mod_cgid-timeout.conf
  156.  
  157. Include /etc/apache2/mod_usertrack.conf
  158.  
  159. # configuration of server-generated directory listings
  160. Include /etc/apache2/mod_autoindex-defaults.conf
  161.  
  162. # associate MIME types with filename extensions
  163. TypesConfig /etc/apache2/mime.types
  164. Include /etc/apache2/mod_mime-defaults.conf
  165.  
  166. # set up (customizable) error responses
  167. Include /etc/apache2/errors.conf
  168.  
  169. Include /etc/apache2/ssl-global.conf
  170. Include /etc/apache2/protocols.conf
  171.  
  172. # forbid access to the entire filesystem by default
  173. <Directory />
  174.     Options None
  175.     AllowOverride None
  176.     Require all denied
  177. </Directory>
  178.  
  179. # use .htaccess files for overriding,
  180. AccessFileName .htaccess
  181. # and never show them
  182. <Files ~ "^\.ht">
  183.         Require all denied
  184. </Files>
  185.  
  186. # List of resources to look for when the client requests a directory
  187. DirectoryIndex index.html index.php index.html.var
  188.  
  189. #Include /etc/apache2/default-server.conf
  190. IncludeOptional /etc/apache2/conf.d/*.conf
  191. IncludeOptional /etc/apache2/vhosts.d/*.conf
  192. EOF
  193.  
  194. fi
  195. if [ ! -f "/etc/apache2/mod_reqtimeout.conf.old" ]; then
  196.   mv /etc/apache2/mod_reqtimeout.conf /etc/apache2/mod_reqtimeout.conf.old
  197.  
  198.   cat >/etc/apache2/mod_reqtimeout.conf <<EOF
  199. <IfModule mod_reqtimeout.c>
  200.   # allow 10s timeout for the headers and allow 1s more until 20s upon
  201.   # receipt of 1000 bytes.
  202.   # almost the same with the body, except that it is tricky to
  203.   # limit the request timeout within the body at all - it may take
  204.   # time to generate the body.
  205.   RequestReadTimeout header=20-40,MinRate=1000 body=20,MinRate=1000
  206.   ProxyTimeout 900
  207.   LogLevel reqtimeout:info
  208. </IfModule>
  209. EOF
  210. fi
  211.  
  212. if [ ! -f "/etc/apache2/mod_userdir.conf.old" ]; then
  213.   mv /etc/apache2/mod_userdir.conf /etc/apache2/mod_userdir.conf.old
  214.  
  215.   cat >/etc/apache2/mod_userdir.conf <<EOF
  216. <IfModule mod_userdir.c>
  217.         UserDir disabled root
  218.         <Directory /home/*/public_html>
  219.                 AllowOverride FileInfo AuthConfig Limit Indexes
  220.                 Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
  221.  
  222.                 <Limit GET POST OPTIONS PROPFIND>
  223.                 Require all granted
  224.                 </Limit>
  225.  
  226.                 <LimitExcept GET POST OPTIONS PROPFIND>
  227.                 Require all denied
  228.                 </LimitExcept>
  229.         </Directory>
  230. </IfModule>
  231. EOF
  232.  
  233. fi
  234.  
  235. cat >/etc/apache2/vhosts.d/proxy.template <<EOF
  236. <VirtualHost *:80>
  237.     ServerName domain.com
  238.     ServerAlias www.domain.com
  239.  
  240.     HostnameLookups Off
  241.     UseCanonicalName Off
  242.     ServerSignature On
  243.  
  244.     ProxyRequests Off
  245.     ProxyPreserveHost On
  246.     ProxyVia Full
  247.  
  248.     ErrorLog /var/log/apache2/dummy-host.example.com-error_log
  249.     CustomLog /var/log/apache2/dummy-host.example.com-access_log combined
  250.  
  251.     <Proxy *>
  252.         Require all granted
  253.     </Proxy>
  254.  
  255.     ProxyPass / http://127.0.0.1:port/
  256.     ProxyPassReverse / http://127.0.0.1:port/
  257. </VirtualHost>
  258. EOF
  259.  
  260. # Inicia Apache2
  261. systemctl enable --now apache2.service
  262.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement