-
Notifications
You must be signed in to change notification settings - Fork 425
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Final submission: Executable tutorial #1878
Conversation
# Assignment Proposal ## Title Secure Linux webserver ## Names and KTH ID - Philip Hamelink ([email protected]) ## Deadline Task 3 May 3, 17h Stockholm time ## Category Executable tutorial ## Description I want to create a step-by-step guide on how to deploy a secure webserver on linux. Starting from a default project that includes an API server and a React website, I want to show how you can secure the webserver by enabling basic ssh access as a non-root user, set up a firewall to only allow incoming https requests. I then want to show how you can set up a reverse proxy with nginx to serve either API requests or the static website's files. I plan on doing a step by step demonstration, explaining every notion and showing the results to the user (for example when restricting ssh access to only non-root users, show that access is denied by letting the user try anyway). Final submission links: Katacoda-Scenario Repository: https://github.com/phamelink/katacoda-scenarios/tree/main/secure-server-tutorial Katacoda-Scenario Tutorial: https://katacoda.com/phamelink/scenarios/secure-server-tutorial
From: https://hackmd.io/KhmxEvX2SYCmhUPxJnYOKA?both Feedback on Katacoda: Secure Server TutorialThis document was used to note down our thoughts and suggestions for the Katacoda tutorial authored by Philip Hamelink. As soon as Philip's proposal was accepted, we got in contact to figure out his schedule for the tutorial. Since he was planning on finalizing his work on Friday (29. April), we worked on giving him pre-delivery feedback the day before. At this point, 3/4 steps of his tutorial were already done. We then reviewed the 4th and last step of the Katacoda in an extra session on Sunday, 1. May. Philip had access to this document at any time. Additionally, we scheduled a meeting on Thursday, 29. April, to discuss the current state of the tutorial. Summary (High-Level Feedback)Our overall impression of the first draft is that Philip focused on applying the suggestions given in the Formatting and Design Guide of the Katacoda documentation. He fragmented his complex topic into 4 relevant subsections (steps), providing a clear path to follow:
The individual steps were easy to follow, with minimal effort, but gave room for some own explorations on the side. To further support those explorations we would suggest embedding some more links to relevant material. Over the entire tutorial, he kept a consistent, unformal, and friendly authoring style that motivated the executee to keep going. The use of analogies was incredibly beneficial to our shared understanding. Strengths
Weaknesses
General suggestionsTwo pointers we feel could be useful across all steps of this tutorial
IntroductionThe intro gives good information on what to expect from the tutorial and why it is relevant to explore this topic. Overall it felt a bit wordy in the beginning. After reading it, we understood that this was because of the chosen narrative style, which is unformal and takes the reader by the hand. We could imagine that it would be an improvement to add an outline of the agenda in bullet points, for people that would otherwise skip the intro. Step 1Step 1 of the tutorial is about getting the webserver we will work on up and running. It is concise, straightforward, and well-written. However, we recommend that the author:
Step 2Step 2, configuring the Nginx reverse-proxy, is one of the more verbose sections of the tutorial. While dense, we believe this is necessary to explain the functionality of the Nginx protocol and appreciate the author's use of the McDonalds analogy. We also appreciated the transition paragraph into step 3 at the end. Potential improvements to the section include:
Step 3In this step, Philip explained, what a firewall is used for and gives an excellent example of why it is needed as an addition to the reverse proxy. He chose the popular firewall UFW and guided the executee to set it up. Everything was clear and easy to follow. However, there was one thing, that we are not sure if it works as it should. When doing the HTTP Get request to port :8000 before setting up the firewall, the response is "Cannot GET /". We could not find out, if we did something wrong or if this is a bug, as we would assume that it outputs "Hello World! This is the Express API". It would have been appreciated to add a section for the expected output as it was done in other sections. Step 4Step 4 delves into SSH server access, a very-commonly used practice in development workflows. Philip did a great job explaining why it is an improvement over password-based authentication and was able to include a small easter egg (
ConclusionPhilip's conclusion does a great job of tying all the principles learned in the tutorial back to DevOps, while leaving the executee with a passion to learn more. We think there are a couple of potential areas for improvement, but overall believe it's a perfect synopsis of the previous 4 steps, why they are important, and how to extend these learnings:
Pointers to additional material
Appendix (Raw notes from tutorial run-through)Introduction
Step 1
Step 2
Step 3
Step 4
|
Thanks for the submission! |
Assignment Proposal
Title
Secure Linux webserver
Names and KTH ID
Deadline
Task 3 May 3, 17h Stockholm time
Category
Executable tutorial
Description
I want to create a step-by-step guide on how to deploy a secure webserver on linux.
Starting from a default project that includes an API server and a React website, I want to show how you can secure the webserver
by enabling basic ssh access as a non-root user, set up a firewall to only allow incoming https requests. I then want to show how you can
set up a reverse proxy with nginx to serve either API requests or the static website's files.
I plan on doing a step by step demonstration, explaining every notion and showing the results to the user (for example when restricting ssh access
to only non-root users, show that access is denied by letting the user try anyway).
Final submission links:
Katacoda-Scenario Repository: https://github.com/phamelink/katacoda-scenarios/tree/main/secure-server-tutorial
Katacoda-Scenario Tutorial: https://katacoda.com/phamelink/scenarios/secure-server-tutorial