
Linux Networking Mastery Series Part 6: Network Services and Servers
Welcome back to Linux Networking Mastery!
So far we've covered the core building blocks:
- Part 1 – network stack basics and inspection tools
- Part 2 – interface and IP configuration (temporary + persistent via Netplan, nmcli, systemd-networkd)
- Part 3 – routing tables, static/policy routing, namespaces, simple router setup
- Part 4 – name resolution, systemd-resolved, per-link/global DNS, troubleshooting
- Part 5 – firewalls with nftables, firewalld, ufw, stateful rules
Now we put those pieces to work by configuring and hardening real network services.
This post focuses on four common, practical services:
- SSH (secure remote access – with strong hardening)
- Web server (lightweight Nginx setup)
- File sharing (NFS for Linux-to-Linux, Samba for cross-platform)
- DHCP server (simple internal network assignment)
We'll emphasize security best practices (especially relevant in 2026 with ongoing brute-force threats), use modern defaults, and tie back to previous parts (firewall rules, DNS, routing).
1. Secure Remote Access: SSH Server Hardening
SSH is the #1 way to manage Linux servers remotely — and the #1 attack target.
Basic Setup & Hardening Best Practices (2026)
Install (usually pre-installed):
sudo apt install openssh-server # Debian/Ubuntu sudo dnf install openssh-server # Fedora/RHELEdit
/etc/ssh/sshd_config(use drop-in file for cleanliness:/etc/ssh/sshd_config.d/99-hardening.conf):# Disable password auth – use keys only PasswordAuthentication no ChallengeResponseAuthentication no UsePAM no # Disable root login PermitRootLogin no # Restrict to specific users/groups (optional but recommended) AllowUsers alice bob # or AllowGroups wheel sshusers # Change default port (obscurity + reduces noise) Port 2222 # Limit login grace time & max auth tries LoginGraceTime 30 MaxAuthTries 3 # Enable key-based auth only PubkeyAuthentication yes # Modern crypto (disable weak ciphers) Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.orgGenerate & deploy key pair (on client):
ssh-keygen -t ed25519 -C "your@email.com" -f ~/.ssh/mykey ssh-copy-id -i ~/.ssh/mykey.pub -p 2222 user@serverRestart SSH:
sudo systemctl restart sshdFirewall rule (from Part 5):
- nftables:
tcp dport 2222 ct state new accept - firewalld:
sudo firewall-cmd --permanent --add-port=2222/tcp - ufw:
sudo ufw allow 2222/tcp
- nftables:
Install & configure Fail2Ban (brute-force protection):
sudo apt install fail2ban # or dnf install fail2banCreate
/etc/fail2ban/jail.d/sshd.local:[sshd] enabled = true port = 2222 filter = sshd logpath = %(sshd_log)s maxretry = 3 findtime = 10m bantime = 1h # Optional: banaction = nftables-multiport (modern backend)sudo systemctl restart fail2ban sudo fail2ban-client status sshd
2. Web Server: Lightweight Nginx Setup
Nginx is fast, modern, and preferred for new deployments.
sudo apt install nginx # Debian/Ubuntu
sudo dnf install nginx # Fedora/RHEL
Basic site in /etc/nginx/sites-available/my-site:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/my-site/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Enable:
sudo ln -s /etc/nginx/sites-available/my-site /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Firewall: allow 80 & 443 (add HTTPS later with certbot/Let's Encrypt).
3. File Sharing: NFS (Linux-to-Linux) & Samba (Cross-Platform)
NFSv4 (preferred for modern Linux):
Server install:
sudo apt install nfs-kernel-server
Export in /etc/exports:
/srv/nfs/share 192.168.100.0/24(rw,sync,no_subtree_check,sec=sys)
sudo exportfs -ra
sudo systemctl restart nfs-kernel-server
Firewall: allow from trusted subnet tcp/udp 2049
Client mount:
sudo mount -t nfs4 server:/srv/nfs/share /mnt/nfs
Samba (for Windows/Linux/Mac):
sudo apt install samba
Basic share in /etc/samba/smb.conf:
[global]
workgroup = WORKGROUP
server string = Samba Server
security = user
[public]
path = /srv/samba/public
browsable = yes
writable = yes
guest ok = yes
read only = no
sudo smbpasswd -a user # for authenticated shares
sudo systemctl restart smbd
Firewall: allow 445/tcp, 139/tcp (or just 445 for modern clients)
4. DHCP Server Setup (dnsmasq – simple & lightweight)
Install:
sudo apt install dnsmasq
Basic /etc/dnsmasq.conf:
interface=enp2s0 # LAN interface
dhcp-range=192.168.100.50,192.168.100.150,12h
dhcp-option=3,192.168.100.1 # gateway
dhcp-option=6,1.1.1.1,8.8.8.8 # DNS
sudo systemctl restart dnsmasq
Firewall: allow udp 67,68 from LAN
(For more advanced needs use isc-kea – emerging standard in 2026.)
Hands-On Exercises
- Harden SSH on a test VM: disable password auth, change port, add Fail2Ban, test key login & brute-force simulation.
- Set up Nginx with a static HTML page; allow via firewall.
- Export an NFS share; mount from another Linux box.
- Configure a simple Samba guest share; access from Windows/Linux.
- Run dnsmasq as DHCP on a LAN interface; verify client lease with
ip addr.
Warning: Test services in VM/lab; misconfigured shares/firewalls can expose data.
What's Next?
In Part 7 we'll shift to visibility: monitoring connections (ss), capturing packets (tcpdump), performance testing (iperf), bandwidth tools, and systematic troubleshooting workflows.
Leave Linux Networking Mastery Series Part 6: Network Services and Servers to:
Read more #computernetworks posts
Best Posts From Changzao Heka Fei
We have not curated any of x9ed1732b's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.
More Posts From Changzao Heka Fei
- Linux Networking Mastery Series Part 10: Container and Virtualization Networking
- Linux Networking Mastery Series Part 9: Wireless Networking on Linux
- Linux Networking Mastery Series Part 8: Advanced Networking Features
- The Future of Multi-Agent AI: From Cloud Orchestras to Decentralized Device Collaboration
- Linux Networking Mastery Series Part 7: Monitoring and Troubleshooting Tools
- Linux Networking Mastery Series Part 6: Network Services and Servers
- Linux Networking Mastery Series Part 5: Firewalls and Packet Filtering
- Linux Networking Mastery Series Part 4: DNS Configuration and Name Resolution
- Linux Networking Mastery Series Part 3: Routing, Gateways, and Advanced Addressing
- Linux Networking Mastery Series Part 2: Managing Network Interfaces and IP Configuration