RHCSA Rapid Track
Performance Checklist
In this lab, you will configure firewall and SELinux settings to allow access to multiple web servers running on serverb.
Outcomes
You should be able to configure firewall and SELinux settings on a web server host.
Log in as the student user on workstation using student as the password.
From workstation, run the lab netsecurity-review start command.
The command runs a start script to determine whether the serverb host is reachable on the network.
[student@workstation ~]$lab netsecurity-review start
Your company has decided to run a new web app.
This application listens on ports 80/TCP and 1001/TCP.
Port 22/TCP for ssh access must also be available.
All changes you make should persist across a reboot.
If prompted by sudo, use student as the password.
Important: The graphical interface used in the Red Hat Online Learning environment needs port 5900/TCP to remain available as well.
This port is also known under the service name vnc-server.
If you accidentally lock yourself out from your serverb, you can either attempt to recover by using ssh to your serverb machine from your workstation machine, or reset your serverb machine.
If you elect to reset your serverb machine, you must run the setup scripts for this lab again.
The configuration on your machines already includes a custom zone called ROL that opens these ports.
From
workstation, test access to the default web server athttp://serverb.lab.example.comand to the virtual host athttp://serverb.lab.example.com:1001.Test access to the
http://serverb.lab.example.comweb server. The test currently fails. Ultimately, the web server should returnSERVER B.[student@workstation ~]$curl http://serverb.lab.example.comcurl: (7) Failed to connect to serverb.lab.example.com port80: Connection refusedTest access to the
http://serverb.lab.example.com:1001virtual host. The test currently fails. Ultimately, the virtual host should returnVHOST 1.[student@workstation ~]$curl http://serverb.lab.example.com:1001curl: (7) Failed to connect to serverb.lab.example.com port1001: No route to host
Log in to
serverbto determine what is preventing access to the web servers.From
workstation, open an SSH session toserverbasstudentuser. The systems are configured to use SSH keys for authentication, so a password is not required.[student@workstation ~]$ssh student@serverb...output omitted...[student@serverb ~]$Determine whether the
httpdservice is active.[student@serverb ~]$systemctl is-active httpdinactiveEnable and start the
httpdservice. Thehttpdservice fails to start.[student@serverb ~]$sudo systemctl enable --now httpd[sudo] password for student:studentCreated symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service. Job for httpd.servicefailedbecause the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.Investigate the reasons why the
httpd.serviceservice failed to start.[student@serverb ~]$systemctl status httpd.service● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Active: failed (Result: exit-code) since Thu 2019-04-11 19:25:36 CDT; 19s ago Docs: man:httpd.service(8) Process: 9615 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE) Main PID: 9615 (code=exited, status=1/FAILURE) Status: "Reading configuration..." Apr 11 19:25:36 serverb.lab.example.com systemd[1]: Starting The Apache HTTP Server... Apr 11 19:25:36 serverb.lab.example.com httpd[9615]: (13)Permission denied: AH00072: make_sock:could not bind to address [::]:1001Apr 11 19:25:36 serverb.lab.example.com httpd[9615]: (13)Permission denied: AH00072: make_sock:could not bind to address 0.0.0.0:1001Apr 11 19:25:36 serverb.lab.example.com httpd[9615]:no listening sockets available, shutting downApr 11 19:25:36 serverb.lab.example.com httpd[9615]: AH00015: Unable to open logs Apr 11 19:25:36 serverb.lab.example.com systemd[1]: httpd.service: Main process exited, code=exited, status=1/FAILURE Apr 11 19:25:36 serverb.lab.example.com systemd[1]: httpd.service: Failed with result 'exit-code'. Apr 11 19:25:36 serverb.lab.example.com systemd[1]: Failed to start The Apache HTTP Server.Use the sealert command to check whether SELinux is blocking the
httpdservice from binding to port1001/TCP.[student@serverb ~]$sudo sealert -a /var/log/audit/audit.log100% done found 1 alerts in /var/log/audit/audit.log --------------------------------------------------------------------------------SELinux is preventing /usr/sbin/httpd from name_bind access on the tcp_socket port 1001.***** Plugin bind_ports (99.5 confidence) suggests ************************ If you want to allow /usr/sbin/httpd to bind to network port 1001 Then you need to modify the port type. Do# semanage port -a -t PORT_TYPE -p tcp 1001 where PORT_TYPE is one of the following: http_cache_port_t, http_port_t, jboss_management_port_t, jboss_messaging_port_t, ntop_port_t, puppet_port_t.***** Plugin catchall (1.49 confidence) suggests ************************** ...output omitted...
Configure SELinux to allow the
httpdservice to listen on port1001/TCP.Use the semanage command to find the correct port type.
[student@serverb ~]$sudo semanage port -l | grep 'http'http_cache_port_t tcp 8080, 8118, 8123, 10001-10010 http_cache_port_t udp 3130http_port_ttcp 80, 81, 443, 488, 8008, 8009, 8443, 9000 pegasus_http_port_t tcp 5988 pegasus_https_port_t tcp 5989Use the semanage command to bind port
1001/TCPto thehttp_port_ttype.[student@serverb ~]$sudo semanage port -a -t http_port_t -p tcp 1001[student@serverb ~]$Confirm that port
1001/TCPis bound to thehttp_port_tport type.[student@serverb ~]$sudo semanage port -l | grep '^http_port_t'http_port_ttcp1001, 80, 81, 443, 488, 8008, 8009, 8443, 9000Enable and start the
httpdservice.[student@serverb ~]$sudo systemctl enable --now httpdVerify the running state of the
httpdservice.[student@serverb ~]$systemctl is-active httpd; systemctl is-enabled httpdactive enabledExit from
serverb.[student@serverb ~]$exitlogout Connection to serverb closed. [student@workstation ~]$
From
workstation, test access to the default web server athttp://serverb.lab.example.comand to the virtual host athttp://serverb.lab.example.com:1001.Test access to the
http://serverb.lab.example.comweb server. The web server should returnSERVER B.[student@workstation ~]$curl http://serverb.lab.example.comSERVER BTest access to the
http://serverb.lab.example.com:1001virtual host. The test continues to fail.[student@workstation ~]$curl http://serverb.lab.example.com:1001curl: (7) Failed to connect to serverb.lab.example.com port 1001: No route to host
Log in to
serverbto determine whether the correct ports are assigned to the firewall.From
workstation, log in toserverbas thestudentuser.[student@workstation ~]$ssh student@serverb...output omitted...[student@serverb ~]$Verify that the default firewall zone is set to
public.[student@serverb ~]$firewall-cmd --get-default-zonepublicIf the previous step did not return
publicas the default zone, correct it with the following command:[student@serverb ~]$sudo firewall-cmd --set-default-zone publicDetermine the open ports listed in the
publicnetwork zone.[student@serverb ~]$sudo firewall-cmd --permanent --zone=public --list-all[sudo] password for student:studentpublic target: default icmp-block-inversion: no interfaces: sources: services: cockpit dhcpv6-client http sshports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Add port
1001/TCPto the permanent configuration for thepublicnetwork zone. Confirm your configuration.Add port
1001/TCPto thepublicnetwork zone.[student@serverb ~]$sudo firewall-cmd --permanent --zone=public \--add-port=1001/tcpsuccessReload the firewall configuration.
[student@serverb ~]$sudo firewall-cmd --reloadsuccessConfirm your configuration.
[student@serverb ~]$sudo firewall-cmd --permanent --zone=public --list-allpublic target: default icmp-block-inversion: no interfaces: sources: services: cockpit dhcpv6-client http ssh ports:1001/tcpprotocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:Exit from
serverb.[student@serverb ~]$exitlogout Connection to serverb closed. [student@workstation ~]$
From
workstation, confirm that the default web server atserverb.lab.example.comreturnsSERVER Band the virtual host atserverb.lab.example.com:1001returnsVHOST 1.