<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://archive.forums.debian.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Donald</id>
	<title>Archive Debian Forums - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://archive.forums.debian.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Donald"/>
	<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Special:Contributions/Donald"/>
	<updated>2026-04-27T16:16:53Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Debian_First_Aid_Kit&amp;diff=205</id>
		<title>Debian First Aid Kit</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Debian_First_Aid_Kit&amp;diff=205"/>
		<updated>2026-03-10T13:08:06Z</updated>

		<summary type="html">&lt;p&gt;Donald: Categories&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Debian First Aid Kit =&lt;br /&gt;
&#039;&#039;&#039;All commands are verified on Debian 13.1 (Trixie) / 6.16.3+deb13-amd64 x64_64&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Created : 2025-10-27 15:54:21&lt;br /&gt;
&lt;br /&gt;
Last Updated : 2026-03-10 07:10:53 &#039;&#039;&#039;ID : 544000.4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Table of Contents ==&lt;br /&gt;
&lt;br /&gt;
# Issues&lt;br /&gt;
# Package Management Issues&lt;br /&gt;
# Disk &amp;amp; Filesystem Issues&lt;br /&gt;
# Performance Issues&lt;br /&gt;
# Service &amp;amp; Application Errors&lt;br /&gt;
# Permission &amp;amp; Access Issues&lt;br /&gt;
# Hardware IssuesSystem Freezes &amp;amp; Crashes&lt;br /&gt;
# Boot Problems&lt;br /&gt;
# Network&lt;br /&gt;
# Quick Diagnostic Commands&lt;br /&gt;
# Useful Aliases &amp;amp; Shortcuts&lt;br /&gt;
# Tips for Effective Troubleshooting&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 1. System Freezes &amp;amp; Crashes ==&lt;br /&gt;
&lt;br /&gt;
=== Check System Logs ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# View logs from previous boot (after freeze/crash)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;journalctl -b -1&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# List all available boots&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;journalctl --list-boots&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Show only kernel messages from previous boot&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;journalctl -b -1 -k&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Show errors and critical messages only&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;journalctl -b -1 -p err&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Save logs to file for analysis&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;journalctl -b -1 &amp;gt; ~/crash-log.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Common Freeze Causes to Look For ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Kernel panics&#039;&#039;&#039;: Search for &amp;quot;kernel panic&amp;quot; or &amp;quot;Oops&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;Out of Memory (OOM)&#039;&#039;&#039;: Search for &amp;quot;Out of memory&amp;quot; or &amp;quot;oom-killer&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;Hardware errors&#039;&#039;&#039;: Look for &amp;quot;MCE&amp;quot; (Machine Check Exception) or &amp;quot;hardware error&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;Driver issues&#039;&#039;&#039;: Check for module/driver failures&lt;br /&gt;
* &#039;&#039;&#039;Overheating&#039;&#039;&#039;: Check system temperatures&lt;br /&gt;
&lt;br /&gt;
=== Check System Resources ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# View memory usage&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;free -h&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check disk space&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;df -h&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Monitor system resources in real-time&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;htop&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# or&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;top&amp;lt;/code&amp;gt;&lt;br /&gt;
 (I prefer btop for better presentation)&lt;br /&gt;
 You would need to install it. sudo apt install btop&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check for disk errors&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo dmesg | grep -i error&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;These are permanent errors due to incomplete/buggy ACPI tables in the BIOS, but they are harmless :&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;0.686554] ACPI Error: No handler for Region [ECRM] (00000000201accc4) [EmbeddedControl] (20250404/evregion-131)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;0.686577] ACPI Error: Region EmbeddedControl (ID=3) has no handler (20250404/exfldio-261)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;0.686594] ACPI Error: Aborting method \_SB.GPIO._EVT due to previous error (AE_NOT_EXIST) (20250404/psparse-529)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. Boot Problems ==&lt;br /&gt;
&lt;br /&gt;
=== Check Boot Process ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# View systemd boot analysis&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;systemd-analyze blame&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# See what failed during boot&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;systemctl --failed&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check specific service status&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;systemctl status &amp;lt;service-name&amp;gt; e.g NetworkManager.service&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Access Recovery Mode ===&lt;br /&gt;
&lt;br /&gt;
# Reboot and hold &amp;lt;code&amp;gt;Shift&amp;lt;/code&amp;gt; to access GRUB menu (depending on your grub timing settings)&lt;br /&gt;
# Select &amp;quot;Advanced options&amp;quot;&lt;br /&gt;
# Choose recovery mode&lt;br /&gt;
# Select &amp;quot;root&amp;quot; for root shell access&lt;br /&gt;
&lt;br /&gt;
=== Common Boot Fixes ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Repair filesystem errors&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;Once you identify a device with lsblk&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo fsck /dev/sdXN&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Reinstall GRUB bootloader&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo grub-install /dev/sdX&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo update-grub&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check fstab for mount errors&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;cat /etc/fstab&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. Network Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Diagnose Network Connection ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Check network interfaces&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;ip addr show&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Test connectivity&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;ping -c 4 8.8.8.8&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;or&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;ping -c 6 2a00:1450:4007:809::200e&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check DNS resolution&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;nslookup google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# View routing table&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;ip route show&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check active connections&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;ss -tuln&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Restart Network Service ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# For systems with NetworkManager&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo systemctl restart NetworkManager&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# For systems with networking service&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo systemctl restart networking&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Bring interface down and up&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo ip link set eth0 down&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo ip link set eth0 up&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;If you need to prove to your server host something that is beyond your control, you can always get out the big guns with MTR.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;code&amp;gt;MTR (It’s Traceroute on Steroids)&amp;lt;/code&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
== What is MTR? ==&lt;br /&gt;
MTR combines the functionality of &amp;lt;code&amp;gt;ping&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;traceroute&amp;lt;/code&amp;gt; into a single real-time network diagnostic tool. It continuously monitors the path between your system and a destination, providing detailed statistics about latency and packet loss at each hop.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo apt install mtr&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Basic Usage ==&lt;br /&gt;
 &amp;lt;code&amp;gt;# Basic MTR (interactive mode)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Report mode (run 10 cycles and exit)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Specify number of pings&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 50 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Use TCP instead of ICMP&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --tcp google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Use UDP&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --udp google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# No DNS resolution (faster, shows IPs only)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --no-dns google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Show both hostnames and IPs&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --show-ips google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Understanding MTR Output ==&lt;br /&gt;
&lt;br /&gt;
=== Sample Output ===&lt;br /&gt;
 &amp;lt;code&amp;gt;HOST: hostname                    Loss%   Snt   Last   Avg  Best  Wrst StDev&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;1.|-- 192.168.1.1                0.0%    10    1.2   1.5   1.0   2.3   0.4&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;2.|-- 10.0.0.1                   0.0%    10    8.5   9.2   7.8  12.1   1.3&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;3.|-- isp-gateway.net            0.0%    10   15.3  16.1  14.2  19.8   1.8&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;4.|-- ???                       100.0%   10    0.0   0.0   0.0   0.0   0.0&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;5.|-- google.com                 0.0%    10   25.4  26.8  24.1  32.5   2.4&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Column Meanings ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;HOST&#039;&#039;&#039;: Hostname or IP address of each hop in the route&lt;br /&gt;
* &#039;&#039;&#039;Loss%&#039;&#039;&#039;: Percentage of packets lost at this hop&lt;br /&gt;
* &#039;&#039;&#039;Snt&#039;&#039;&#039;: Number of packets sent to this hop&lt;br /&gt;
* &#039;&#039;&#039;Last&#039;&#039;&#039;: Latency of the most recent packet (milliseconds)&lt;br /&gt;
* &#039;&#039;&#039;Avg&#039;&#039;&#039;: Average latency across all packets (milliseconds)&lt;br /&gt;
* &#039;&#039;&#039;Best&#039;&#039;&#039;: Lowest latency recorded (milliseconds)&lt;br /&gt;
* &#039;&#039;&#039;Wrst&#039;&#039;&#039;: Highest latency recorded (milliseconds)&lt;br /&gt;
* &#039;&#039;&#039;StDev&#039;&#039;&#039;: Standard deviation - measures latency consistency (lower is better)&lt;br /&gt;
&lt;br /&gt;
== Interpreting Results ==&lt;br /&gt;
&lt;br /&gt;
=== Healthy Network ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Loss% = 0%&#039;&#039;&#039; on all hops&lt;br /&gt;
* &#039;&#039;&#039;Stable latency&#039;&#039;&#039; (low StDev values)&lt;br /&gt;
* &#039;&#039;&#039;Gradual latency increase&#039;&#039;&#039; as hop count increases&lt;br /&gt;
* &#039;&#039;&#039;Consistent response times&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Problem Indicators ===&lt;br /&gt;
&lt;br /&gt;
==== 1. High Packet Loss at Specific Hop ====&lt;br /&gt;
 &amp;lt;code&amp;gt;5.|-- problem-router.net        25.0%    10   45.3  48.2  42.1  65.8  8.4&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Analysis:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* If loss continues to destination: Real problem at this router&lt;br /&gt;
* If loss only at this hop but NOT beyond: Router may be rate-limiting ICMP (false positive, not a real problem)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rule of thumb:&#039;&#039;&#039; If packet loss appears at hop N but hops N+1, N+2, etc. show 0% loss, it&#039;s usually just ICMP rate limiting.&lt;br /&gt;
&lt;br /&gt;
==== 2. High Latency at Specific Hop ====&lt;br /&gt;
 &amp;lt;code&amp;gt;3.|-- slow-link.net              0.0%    10  150.3 155.2 148.1 165.8  5.4&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Indicates:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Network bottleneck or congested link&lt;br /&gt;
* Geographical distance (intercontinental hops)&lt;br /&gt;
* Slow routing equipment&lt;br /&gt;
&lt;br /&gt;
==== 3. No Response (???) ====&lt;br /&gt;
 &amp;lt;code&amp;gt;4.|-- ???                       100.0%   10    0.0   0.0   0.0   0.0   0.0&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Possible causes:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Router configured to not respond to ICMP/traceroute packets&lt;br /&gt;
* Firewall blocking diagnostic packets&lt;br /&gt;
* &#039;&#039;&#039;Not necessarily a problem&#039;&#039;&#039; if later hops respond normally&lt;br /&gt;
&lt;br /&gt;
==== 4. High Jitter (StDev) ====&lt;br /&gt;
 &amp;lt;code&amp;gt;6.|-- unstable.net               0.0%    10   35.3  52.8  28.1  95.2  24.7&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Indicates:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Inconsistent latency (high StDev of 24.7ms)&lt;br /&gt;
* Network congestion or instability&lt;br /&gt;
* Poor for real-time applications (VoIP, gaming, video calls)&lt;br /&gt;
&lt;br /&gt;
==== 5. Sudden Latency Spike ====&lt;br /&gt;
 &amp;lt;code&amp;gt;1.|-- 192.168.1.1                0.0%    10    1.2   1.5   1.0   2.3   0.4&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;2.|-- 10.0.0.1                   0.0%    10    8.5   9.2   7.8  12.1   1.3&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;3.|-- problematic-hop.net        0.0%    10  180.5 185.2 178.1 195.8  6.4&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;4.|-- next-hop.net               0.0%    10  182.3 187.8 180.5 198.2  6.8&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Problem identified:&#039;&#039;&#039; Hop 3 introduces ~170ms of latency (jump from 9ms to 180ms)&lt;br /&gt;
&lt;br /&gt;
== Advanced Usage ==&lt;br /&gt;
&lt;br /&gt;
=== Report Mode with Different Output Formats ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# CSV format for logging and analysis&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report --csv google.com &amp;gt; network-report.csv&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# JSON output for parsing&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report --json google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# XML format&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report --xml google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Wide report (no abbreviations)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-wide google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Protocol Selection ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Use ICMP (default, requires no special permissions)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Use UDP (alternative to ICMP)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --udp google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Use TCP (useful for firewall testing)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --tcp google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Test specific TCP port&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo mtr --tcp --port 443 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo mtr --tcp --port 22 remote-server.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Timing and Duration ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Specify interval between pings (default 1 second)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --interval 0.5 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Extended test with 100 cycles&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 100 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Continuous monitoring (Ctrl+C to stop)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Quick 10-cycle report&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 10 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Advanced Options ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Show Autonomous System (AS) numbers&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --aslookup google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Set maximum number of hops&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --max-ttl 20 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Set packet size&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --psize 1000 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Show both IP and hostname&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --show-ips google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Specify source address (multiple network interfaces)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --address 192.168.1.100 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# IPv4 only&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr -4 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# IPv6 only&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr -6 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Interactive Mode Commands ==&lt;br /&gt;
When running MTR in interactive mode (just &amp;lt;code&amp;gt;mtr hostname&amp;lt;/code&amp;gt;), use these keys:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Key&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;h&#039;&#039;&#039;&lt;br /&gt;
|Display help&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;d&#039;&#039;&#039;&lt;br /&gt;
|Toggle display mode (cycle through different views)&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;n&#039;&#039;&#039;&lt;br /&gt;
|Toggle between hostnames and IP addresses&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;r&#039;&#039;&#039;&lt;br /&gt;
|Reset all statistics&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;p&#039;&#039;&#039;&lt;br /&gt;
|Pause/unpause the display&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;q&#039;&#039;&#039;&lt;br /&gt;
|Quit MTR&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;u&#039;&#039;&#039;&lt;br /&gt;
|Switch between ICMP, UDP, and TCP modes&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;y&#039;&#039;&#039;&lt;br /&gt;
|Switch between IPv4 and IPv6&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;o&#039;&#039;&#039;&lt;br /&gt;
|Toggle field display options&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;j&#039;&#039;&#039;&lt;br /&gt;
|Toggle latency display&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Practical Troubleshooting Scenarios ==&lt;br /&gt;
&lt;br /&gt;
=== Scenario 1: Diagnosing Slow Website ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Run extended test to get accurate statistics&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 100 --no-dns example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Look for:&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# - High average latency at specific hops&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# - Packet loss at destination&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# - High StDev values (jitter)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scenario 2: Testing if Firewall Blocks SSH ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Test SSH port (22) connectivity&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo mtr --tcp --port 22 --report-cycles 50 remote-server.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# If last hop shows 100% loss but earlier hops are fine:&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# - Port 22 might be filtered&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# - Try standard ICMP test for comparison&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scenario 3: ISP Performance Issues ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Test path to reliable external server&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 100 8.8.8.8&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Compare with another DNS server&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 100 1.1.1.1&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# If issues appear in first 3-4 hops: likely ISP problem&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# If issues appear later: problem is beyond your ISP&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scenario 4: VPN Troubleshooting ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Test before connecting to VPN&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 50 --no-dns google.com &amp;gt; before-vpn.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Test after connecting to VPN&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 50 --no-dns google.com &amp;gt; after-vpn.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Compare the two files to see VPN impact&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;diff before-vpn.txt after-vpn.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scenario 5: Gaming/Streaming Performance ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Test for jitter (important for real-time applications)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 200 game-server.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Look for:&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# - Low average latency (&amp;lt; 50ms for gaming)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# - Low StDev (&amp;lt; 5ms preferred)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# - Zero packet loss&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scenario 6: Intermittent Connectivity ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Long-running test to catch intermittent issues&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 500 --interval 1 target.com &amp;gt; long-test.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Monitor in real-time for several minutes&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr target.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# Watch for sudden spikes in Loss% or latency&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Continuous Monitoring ==&lt;br /&gt;
&lt;br /&gt;
=== Log Network Performance Over Time ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Create timestamped reports every hour&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;while true; do&amp;lt;/code&amp;gt;&lt;br /&gt;
     &amp;lt;code&amp;gt;timestamp=$(date +%Y%m%d-%H%M%S)&amp;lt;/code&amp;gt;&lt;br /&gt;
     &amp;lt;code&amp;gt;mtr --report --report-cycles 50 google.com &amp;gt; &amp;quot;mtr-$timestamp.txt&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
     &amp;lt;code&amp;gt;sleep 3600&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;done&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Monitor Multiple Destinations ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Create a simple monitoring script&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;#!/bin/bash&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;echo &amp;quot;=== MTR Report $(date) ===&amp;quot; &amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;echo &amp;quot;&amp;quot; &amp;gt;&amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;echo &amp;quot;Google DNS:&amp;quot; &amp;gt;&amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report --report-cycles 50 --no-dns 8.8.8.8 &amp;gt;&amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;echo &amp;quot;&amp;quot; &amp;gt;&amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;echo &amp;quot;Cloudflare DNS:&amp;quot; &amp;gt;&amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report --report-cycles 50 --no-dns 1.1.1.1 &amp;gt;&amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;echo &amp;quot;&amp;quot; &amp;gt;&amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;echo &amp;quot;Your Server:&amp;quot; &amp;gt;&amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report --report-cycles 50 your-server.com &amp;gt;&amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Useful Aliases for .bashrc ==&lt;br /&gt;
 &amp;lt;code&amp;gt;# Quick network path analysis&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias mtrreport=&#039;mtr --report --report-cycles 50 --no-dns&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Monitor connection to Google DNS&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias netcheck=&#039;mtr --report-cycles 20 8.8.8.8&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Extended network test&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias mtrlong=&#039;mtr --report-cycles 100&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# TCP port 443 test (HTTPS)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias mtrhttps=&#039;sudo mtr --tcp --port 443 --report-cycles 30&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Quick comparison of major DNS providers&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias dnstest=&#039;echo &amp;quot;Google:&amp;quot; &amp;amp;&amp;amp; mtr --report-cycles 20 8.8.8.8 &amp;amp;&amp;amp; echo -e &amp;quot;\nCloudflare:&amp;quot; &amp;amp;&amp;amp; mtr --report-cycles 20 1.1.1.1&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
After adding to &amp;lt;code&amp;gt;~/.bashrc&amp;lt;/code&amp;gt;:&lt;br /&gt;
 &amp;lt;code&amp;gt;source ~/.bashrc&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting Tips ==&lt;br /&gt;
&lt;br /&gt;
=== 1. Permission Issues ===&lt;br /&gt;
If you get permission errors with TCP mode:&lt;br /&gt;
 &amp;lt;code&amp;gt;# Use sudo for TCP on privileged ports&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo mtr --tcp --port 443 example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Or set capabilities (one-time setup)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo setcap cap_net_raw+ep /usr/bin/mtr-packet&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. False Positives ===&lt;br /&gt;
&#039;&#039;&#039;Common false positive:&#039;&#039;&#039; Packet loss at intermediate hops but NOT at the destination.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;code&amp;gt;3.|-- router.isp.net            20.0%    50   15.3  16.1  14.2  19.8   1.8&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;4.|-- next-hop.net               0.0%    50   18.5  19.2  17.8  22.1   1.3&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;5.|-- destination.com            0.0%    50   25.4  26.8  24.1  32.5   2.4&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;This is OK!&#039;&#039;&#039; Hop 3 shows 20% loss, but hops 4 and 5 show 0% loss. The router at hop 3 is rate-limiting ICMP responses, but actual traffic flows normally.&lt;br /&gt;
&lt;br /&gt;
=== 3. DNS Resolution Delays ===&lt;br /&gt;
If MTR seems slow to start:&lt;br /&gt;
 &amp;lt;code&amp;gt;# Skip DNS resolution for faster results&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --no-dns target.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Resolve names afterward if needed&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;host 203.0.113.1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. Comparing Results ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Run multiple tests and compare&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report --report-cycles 50 example.com &amp;gt; test1.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sleep 60&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report --report-cycles 50 example.com &amp;gt; test2.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;diff test1.txt test2.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When to Use MTR vs Other Tools ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tool&lt;br /&gt;
!Best For&lt;br /&gt;
!Limitations&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;MTR&#039;&#039;&#039;&lt;br /&gt;
|Continuous monitoring, identifying problem hops, detailed statistics&lt;br /&gt;
|Requires installation&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;ping&#039;&#039;&#039;&lt;br /&gt;
|Quick connectivity test, simple latency check&lt;br /&gt;
|Only tests endpoint&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;traceroute&#039;&#039;&#039;&lt;br /&gt;
|One-time path discovery&lt;br /&gt;
|No continuous monitoring&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;ss/netstat&#039;&#039;&#039;&lt;br /&gt;
|Local connection status&lt;br /&gt;
|Doesn&#039;t test remote paths&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Best Practices ==&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Run enough cycles&#039;&#039;&#039;: Use at least 50-100 cycles for accurate statistics&lt;br /&gt;
# &#039;&#039;&#039;Use --no-dns&#039;&#039;&#039;: Faster and avoids DNS resolution issues during testing&lt;br /&gt;
# &#039;&#039;&#039;Check multiple times&#039;&#039;&#039;: Network conditions vary; test at different times&lt;br /&gt;
# &#039;&#039;&#039;Compare protocols&#039;&#039;&#039;: Try ICMP, UDP, and TCP if one shows issues&lt;br /&gt;
# &#039;&#039;&#039;Document findings&#039;&#039;&#039;: Save reports with timestamps for trend analysis&lt;br /&gt;
# &#039;&#039;&#039;Test known-good hosts&#039;&#039;&#039;: Use 8.8.8.8 or 1.1.1.1 to verify your network first&lt;br /&gt;
# &#039;&#039;&#039;Be patient&#039;&#039;&#039;: Let MTR run for at least 30-60 seconds before drawing conclusions&lt;br /&gt;
&lt;br /&gt;
== Reading Between the Lines ==&lt;br /&gt;
&lt;br /&gt;
=== Good Network Health Example ===&lt;br /&gt;
 &amp;lt;code&amp;gt;HOST: hostname                    Loss%   Snt   Last   Avg  Best  Wrst StDev&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;1.|-- 192.168.1.1                0.0%    50    1.1   1.2   0.9   2.1   0.2&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;2.|-- 10.0.0.1                   0.0%    50    8.2   8.5   7.5  10.2   0.5&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;3.|-- isp-gateway.net            0.0%    50   15.1  15.5  14.0  18.3   0.8&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;4.|-- google.com                 0.0%    50   24.8  25.2  23.5  28.1   1.1&amp;lt;/code&amp;gt;&lt;br /&gt;
✅ No packet loss, consistent latency, low jitter&lt;br /&gt;
&lt;br /&gt;
=== Problem Network Example ===&lt;br /&gt;
 &amp;lt;code&amp;gt;HOST: hostname                    Loss%   Snt   Last   Avg  Best  Wrst StDev&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;1.|-- 192.168.1.1                0.0%    50    1.2   1.5   1.0   2.3   0.3&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;2.|-- 10.0.0.1                   5.0%    50   45.3  52.8  8.1  245.2  45.7&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;3.|-- ???                       100.0%   50    0.0   0.0   0.0   0.0   0.0&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;4.|-- destination.com           15.0%    50   95.4 125.8  48.2 385.5  78.2&amp;lt;/code&amp;gt;&lt;br /&gt;
❌ Packet loss at hop 2 and destination, high jitter, very high worst-case latency&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
MTR is your Swiss Army knife for network diagnostics. Key takeaways:&lt;br /&gt;
&lt;br /&gt;
* Use &amp;lt;code&amp;gt;--report-cycles 50+&amp;lt;/code&amp;gt; for reliable data&lt;br /&gt;
* Watch for packet loss at the &#039;&#039;&#039;destination&#039;&#039;&#039; (intermediate losses may be false positives)&lt;br /&gt;
* High &#039;&#039;&#039;StDev&#039;&#039;&#039; indicates unstable connection&lt;br /&gt;
* High &#039;&#039;&#039;Avg&#039;&#039;&#039; latency shows slow links&lt;br /&gt;
* Use &amp;lt;code&amp;gt;--no-dns&amp;lt;/code&amp;gt; for faster results&lt;br /&gt;
* Compare &#039;&#039;&#039;ICMP&#039;&#039;&#039;, &#039;&#039;&#039;UDP&#039;&#039;&#039;, and &#039;&#039;&#039;TCP&#039;&#039;&#039; modes if issues appear&lt;br /&gt;
* Test at different times of day for comprehensive analysis&lt;br /&gt;
&lt;br /&gt;
== 4. Package Management Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Fix Broken Packages ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Update package lists&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo apt update&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Fix broken dependencies&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo apt --fix-broken install&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Reconfigure packages&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo dpkg --configure -a&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;(if no output, there is nothing to do)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Clean package cache&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo apt clean&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo apt autoclean&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Remove unused packages&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo apt autoremove&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Handle Held or Locked Packages ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# If apt is locked, find the process&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo lsof /var/lib/dpkg/lock-frontend&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Force remove lock (use carefully)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo rm /var/lib/dpkg/lock-frontend&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo rm /var/lib/apt/lists/lock&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Reconfigure dpkg&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo dpkg --configure -a&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. Disk &amp;amp; Filesystem Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Check Disk Health ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Check disk space&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;df -h&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check inode usage&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;df -i&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# View disk I/O statistics&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;iostat -x 1&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;(Make sure you have sysstat which includes useful performance monitoring tools other than iostat - disk I/O statistics&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;mpstat&amp;lt;/code&amp;gt; - CPU statistics&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;sar&amp;lt;/code&amp;gt; - system activity reporter&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;pidstat&amp;lt;/code&amp;gt; - process statistics&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;cifsiostat&amp;lt;/code&amp;gt; - CIFS statistics&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&#039;&#039;# Show stats in MB instead of KB&#039;&#039; iostat -xm 2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&#039;&#039;# Monitor specific device&#039;&#039; iostat -x sda 1&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# Check for disk errors in dmesg&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo dmesg | grep -i &amp;quot;error\|fail&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# SMART disk health (if smartmontools installed)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo smartctl -a /dev/sda&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Repair Filesystem ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Unmount the partition first&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo umount /dev/sdXN&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Run filesystem check&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo fsck /dev/sdXN&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# For ext4 specifically&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo e2fsck -f /dev/sdXN&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6. Performance Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Identify Resource Hogs ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# CPU usage by process&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;top -o %CPU&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Memory usage by process&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;top -o %MEM&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Disk usage by directory&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;du -sh /* | sort -h&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Find large files&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;find / -type f -size +100M 2&amp;gt;/dev/null&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check running processes&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;ps aux --sort=-%mem | head -20&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== System Temperature Monitoring ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Install sensors (if not installed)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo apt install lm-sensors&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo sensors-detect&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# View temperatures&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sensors&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Real-time temperature monitoring&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;watch -n 2 sensors&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;&#039;&#039;I have it as an alias in ~/.bashrc&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;&#039;&#039;Go to 11. Useful Aliases &amp;amp; Shortcuts&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. Service &amp;amp; Application Errors ==&lt;br /&gt;
&lt;br /&gt;
=== Debug Service Problems ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Check service status&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo systemctl status service-name&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# View service logs&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo journalctl -u service-name&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Restart a service&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo systemctl restart service-name&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Enable service at boot&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo systemctl enable service-name&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# View recent service failures&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;journalctl -p err -b&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Application Crash Investigation ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Check for core dumps&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;ls -lh /var/crash/&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# View application-specific logs&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;ls /var/log/&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check syslog for application errors&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo tail -f /var/log/syslog&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 8. Permission &amp;amp; Access Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Fix Common Permission Problems ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Check file ownership&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;ls -l /path/to/file&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Change ownership&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo chown michael:michael /path/to/file&amp;lt;/code&amp;gt;&lt;br /&gt;
 user:group&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Change permissions&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo chmod 644 /path/to/file&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Recursively fix permissions&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo chown -R user:group /path/to/directory&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== User &amp;amp; Authentication Issues ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Check user information&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;id username&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# View user login history&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;last -a&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check failed login attempts&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo journalctl | grep &amp;quot;authentication failure&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Reset user password&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo passwd username&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 9. Hardware Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Identify Hardware ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# List all hardware&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo lshw -short&amp;lt;/code&amp;gt;&lt;br /&gt;
 (May not be installed by default)&lt;br /&gt;
 sudo apt install lshw&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# PCI devices&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;lspci -v&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# USB devices&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;lspci -v&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# CPU information&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;lscpu&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Memory information&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo dmidecode --type memory&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Check Hardware Errors ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Kernel ring buffer (hardware messages)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;dmesg | less&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;(If no output, good, no errors)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;q to quit&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Search for specific hardware issues&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;dmesg | grep -i &amp;quot;error\|fail\|warn&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check for USB issues&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;dmesg | grep -i usb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 10. Quick Diagnostic Commands ==&lt;br /&gt;
&lt;br /&gt;
=== System Information at a Glance ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Uptime and load average&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;uptime&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Kernel version&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;uname -r&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Debian version&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;cat /etc/debian_version&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# System summary&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo inxi -Fxz&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Emergency Toolkit ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Create a diagnostic report&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo journalctl -b &amp;gt; ~/system-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;dmesg &amp;gt;&amp;gt; ~/system-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;systemctl --failed &amp;gt;&amp;gt; ~/system-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;df -h &amp;gt;&amp;gt; ~/system-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;free -h &amp;gt;&amp;gt; ~/system-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Watch logs in real-time&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo journalctl -f&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Monitor system resources continuously&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;watch -n 1 &#039;free -h &amp;amp;&amp;amp; df -h&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 11. Useful Aliases &amp;amp; Shortcuts ==&lt;br /&gt;
Add these to your &amp;lt;code&amp;gt;~/.bashrc&amp;lt;/code&amp;gt; for quick access to common troubleshooting commands:&lt;br /&gt;
 &amp;lt;code&amp;gt;# Monitor system temperatures in real-time&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias temps=&amp;quot;watch -n 2 &#039;for i in /sys/class/hwmon/hwmon*/; do echo -n \&amp;quot;\$(cat \${i}name): \&amp;quot;; cat \${i}temp*_input 2&amp;gt;/dev/null | while read temp; do echo \&amp;quot;scale=1; \$temp/1000\&amp;quot; | bc; done | tr \&amp;quot;\n\&amp;quot; \&amp;quot; \&amp;quot;; echo \&amp;quot;°C\&amp;quot;; done&#039;&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;&#039;&#039;or run the watch command in the shell without the opening and closing double quotes.&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Quick system status&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias sysstat=&#039;echo &amp;quot;=== CPU ===&amp;quot; &amp;amp;&amp;amp; uptime &amp;amp;&amp;amp; echo -e &amp;quot;\n=== Memory ===&amp;quot; &amp;amp;&amp;amp; free -h &amp;amp;&amp;amp; echo -e &amp;quot;\n=== Disk ===&amp;quot; &amp;amp;&amp;amp; df -h &amp;amp;&amp;amp; echo -e &amp;quot;\n=== Top Processes ===&amp;quot; &amp;amp;&amp;amp; ps aux --sort=-%mem | head -10&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;(It’s a messy mayout, but I’m terrible with awk. Feel free to improve the layoput for me)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# View last boot logs&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias lastboot=&#039;journalctl -b -1&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check failed services&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias failedservices=&#039;systemctl --failed&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Monitor logs in real-time&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias watchlog=&#039;sudo journalctl -f&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Quick network status&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias netstat=&#039;ip addr show &amp;amp;&amp;amp; echo -e &amp;quot;\n=== Routes ===&amp;quot; &amp;amp;&amp;amp; ip route show&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
After adding these, run:&lt;br /&gt;
 &amp;lt;code&amp;gt;source ~/.bashrc&amp;lt;/code&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Tips for Your Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;First check logs&#039;&#039;&#039;: &amp;lt;code&amp;gt;journalctl&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;dmesg&amp;lt;/code&amp;gt; are your best friends&lt;br /&gt;
# &#039;&#039;&#039;Work through the sections&#039;&#039;&#039;: Change one thing at a time&lt;br /&gt;
# &#039;&#039;&#039;Document changes&#039;&#039;&#039;: Keep notes on what you&#039;ve tried&lt;br /&gt;
# &#039;&#039;&#039;Search for error messages&#039;&#039;&#039;: Copy exact error messages into search engines or AI&lt;br /&gt;
# &#039;&#039;&#039;Check recent changes&#039;&#039;&#039;: What you did before it happened? Install something, update packages, kernel?&lt;br /&gt;
# &#039;&#039;&#039;Make backups&#039;&#039;&#039;: Before major changes, backup important data&lt;br /&gt;
# &#039;&#039;&#039;Use verbose mode&#039;&#039;&#039;: Add &amp;lt;code&amp;gt;-v&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;-vv&amp;lt;/code&amp;gt; flags to commands for more detail&lt;br /&gt;
# &#039;&#039;&#039;Check forums&#039;&#039;&#039;: Debian forum, Reddit, Stack Exchange, and mailing lists&lt;br /&gt;
&lt;br /&gt;
----&#039;&#039;&#039;Remember&#039;&#039;&#039;: If in doubt, search for the specific error message along with &amp;quot;Debian&amp;quot; and the version number. e.g. Debian 13 or point release if needed, Debian 13,1&lt;br /&gt;
&lt;br /&gt;
This work was contributed by distro-nix on Debian User Forums on 2025-10-27 23:38:22&lt;br /&gt;
&lt;br /&gt;
I welcome comments, suggestions or resources : dev@divsmart.com .&lt;br /&gt;
&lt;br /&gt;
[[index.php?title=Category:Troubleshooting]]&lt;br /&gt;
[[index.php?title=Category:Guides]]&lt;br /&gt;
[[Category:Administration]]&lt;br /&gt;
[[Category:Guides]]&lt;br /&gt;
[[Category:Full Paper]]&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Fonts_and_Themes_in_Cinnamon_Desktop&amp;diff=204</id>
		<title>Fonts and Themes in Cinnamon Desktop</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Fonts_and_Themes_in_Cinnamon_Desktop&amp;diff=204"/>
		<updated>2026-03-10T13:07:38Z</updated>

		<summary type="html">&lt;p&gt;Donald: Categories&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Fonts and Themes in Cinnamon Desktop ==&lt;br /&gt;
&lt;br /&gt;
* Verified on Debian 13.1 (Trixie) / 6.12.43+deb13-amd64 x64_64&lt;br /&gt;
* Created : 28/10/2025 21:09:21&lt;br /&gt;
* Last Updated : 27/10/2025 23:42:45&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A comprehensive reference for managing console fonts, GUI fonts, and theme customization in Debian with Cinnamon DE.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;table-of-contents&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Table of Contents ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;[https://claude.ai/chat/6986fa74-5020-47a2-8736-f9eaf474bfc0#understanding-font-types Understanding Font Types]&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;[https://claude.ai/chat/6986fa74-5020-47a2-8736-f9eaf474bfc0#console-fonts-tty Console Fonts (TTY)]&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;[https://claude.ai/chat/6986fa74-5020-47a2-8736-f9eaf474bfc0#gui-fonts GUI Fonts]&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;[https://claude.ai/chat/6986fa74-5020-47a2-8736-f9eaf474bfc0#cinnamon-system-fonts Cinnamon System Fonts]&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;[https://claude.ai/chat/6986fa74-5020-47a2-8736-f9eaf474bfc0#theme-customization-with-css Theme Customization with CSS]&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;[https://claude.ai/chat/6986fa74-5020-47a2-8736-f9eaf474bfc0#accessibility-and-scaling Accessibility and Scaling]&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;[https://claude.ai/chat/6986fa74-5020-47a2-8736-f9eaf474bfc0#troubleshooting Troubleshooting]&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;understanding-font-types&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Understanding Font Types ==&lt;br /&gt;
&lt;br /&gt;
Linux uses different font systems depending on where text appears:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;console-fonts-tty&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Console Fonts (TTY) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Format&#039;&#039;&#039;: PSF (PC Screen Font) - .psf or .psf.gz&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Location&#039;&#039;&#039;: /usr/share/consolefonts/&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Used by&#039;&#039;&#039;: Text-based virtual consoles (Ctrl+Alt+F2 through F6)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Loaded&#039;&#039;&#039;: Before graphical system starts&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Limitations&#039;&#039;&#039;: No anti-aliasing, fixed character grid&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;gui-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== GUI Fonts ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Formats&#039;&#039;&#039;: TrueType (.ttf), OpenType (.otf)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Location&#039;&#039;&#039;: /usr/share/fonts/truetype/, /usr/share/fonts/opentype/&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Used by&#039;&#039;&#039;: All graphical applications&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Features&#039;&#039;&#039;: Anti-aliasing, scalability, subpixel rendering&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;why-two-systems&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Why Two Systems? ===&lt;br /&gt;
&lt;br /&gt;
The Linux console operates at a lower level than the graphical interface. It needs to display text even if the GUI fails to load, so it uses simpler font formats that don&#039;t require graphics libraries.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;console-fonts-tty-1&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Console Fonts (TTY) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;installing-console-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Installing Console Fonts ===&lt;br /&gt;
&lt;br /&gt;
Install Terminus (popular monospace console font):&lt;br /&gt;
&lt;br /&gt;
sudo apt update&lt;br /&gt;
&lt;br /&gt;
sudo apt install console-setup xfonts-terminus&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;configuring-console-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Configuring Console Fonts ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;method-1-interactive-configuration&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Method 1: Interactive Configuration ====&lt;br /&gt;
&lt;br /&gt;
sudo dpkg-reconfigure console-setup&lt;br /&gt;
&lt;br /&gt;
Follow the prompts:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Encoding&#039;&#039;&#039;: UTF-8&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Character set&#039;&#039;&#039;: Guess optimal character set&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Font&#039;&#039;&#039;: Terminus&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Font size&#039;&#039;&#039;: Choose from available sizes&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Available Terminus sizes: 8x14, 8x16, 10x20, 12x24, 14x28, 16x32&lt;br /&gt;
&lt;br /&gt;
Recommendation: 16x32 for good readability&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;method-2-direct-configuration-file-editing&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Method 2: Direct Configuration File Editing ====&lt;br /&gt;
&lt;br /&gt;
Edit /etc/default/console-setup:&lt;br /&gt;
&lt;br /&gt;
sudo nano /etc/default/console-setup&lt;br /&gt;
&lt;br /&gt;
Add or modify these lines:&lt;br /&gt;
&lt;br /&gt;
FONTFACE=&amp;amp;quot;Terminus&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
FONTSIZE=&amp;amp;quot;16x32&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
Other useful settings you might find:&lt;br /&gt;
&lt;br /&gt;
CHARMAP=&amp;amp;quot;UTF-8&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
CODESET=&amp;amp;quot;guess&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;applying-console-font-changes&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Applying Console Font Changes ===&lt;br /&gt;
&lt;br /&gt;
The changes take effect on boot, but to apply immediately on all consoles:&lt;br /&gt;
&lt;br /&gt;
sudo setupcon&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: This command only works when run from an actual TTY console, not from a terminal emulator in the GUI. If you get &amp;amp;quot;not on the console&amp;amp;quot; error, that&#039;s normal - the configuration is saved and will apply on next boot or when you switch to a TTY.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;testing-console-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Testing Console Fonts ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Switch to virtual console: Ctrl + Alt + F2&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Log in with your credentials&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Check the font - you should see Terminus&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Return to GUI: Ctrl + Alt + F1 or Ctrl + Alt + F7&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;viewing-available-console-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Viewing Available Console Fonts ===&lt;br /&gt;
&lt;br /&gt;
List all available console fonts:&lt;br /&gt;
&lt;br /&gt;
ls /usr/share/consolefonts/&lt;br /&gt;
&lt;br /&gt;
Filter for Terminus fonts:&lt;br /&gt;
&lt;br /&gt;
ls /usr/share/consolefonts/ | grep -i ter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;temporarily-testing-console-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Temporarily Testing Console Fonts ===&lt;br /&gt;
&lt;br /&gt;
To test a font before making it permanent:&lt;br /&gt;
&lt;br /&gt;
setfont /usr/share/consolefonts/Ter16x32n.psf.gz&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: setfont only works when run from a TTY console (Ctrl+Alt+F2), not from GUI terminals.&lt;br /&gt;
&lt;br /&gt;
To check current console font (from TTY):&lt;br /&gt;
&lt;br /&gt;
setfont -v&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;gui-fonts-1&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== GUI Fonts ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;installing-gui-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Installing GUI Fonts ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;system-wide-installation&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== System-wide Installation ====&lt;br /&gt;
&lt;br /&gt;
Install Terminus for graphical applications:&lt;br /&gt;
&lt;br /&gt;
sudo apt install fonts-terminus&lt;br /&gt;
&lt;br /&gt;
Install other popular fonts:&lt;br /&gt;
&lt;br /&gt;
# Programming fonts&lt;br /&gt;
&lt;br /&gt;
sudo apt install fonts-firacode fonts-hack fonts-jetbrains-mono&lt;br /&gt;
&lt;br /&gt;
# General purpose fonts&lt;br /&gt;
&lt;br /&gt;
sudo apt install fonts-liberation fonts-dejavu fonts-noto&lt;br /&gt;
&lt;br /&gt;
# More options&lt;br /&gt;
&lt;br /&gt;
sudo apt install fonts-ubuntu fonts-roboto&lt;br /&gt;
&lt;br /&gt;
After installing, log out and back in, or rebuild font cache:&lt;br /&gt;
&lt;br /&gt;
fc-cache -fv&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;user-only-installation&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== User-only Installation ====&lt;br /&gt;
&lt;br /&gt;
To install fonts just for your user account:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Create fonts directory:&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mkdir -p ~/.local/share/fonts&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol start=&amp;quot;2&amp;quot; style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Copy font files (.ttf or .otf) to this directory:&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cp /path/to/your/font.ttf ~/.local/share/fonts/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol start=&amp;quot;3&amp;quot; style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Rebuild font cache:&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fc-cache -fv&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;font-locations&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Font Locations ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;System-wide fonts&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
/usr/share/fonts/truetype/&lt;br /&gt;
&lt;br /&gt;
/usr/share/fonts/opentype/&lt;br /&gt;
&lt;br /&gt;
/usr/share/fonts/X11/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;User-specific fonts&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
~/.local/share/fonts/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;listing-available-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Listing Available Fonts ===&lt;br /&gt;
&lt;br /&gt;
List all fonts available to GUI applications:&lt;br /&gt;
&lt;br /&gt;
fc-list&lt;br /&gt;
&lt;br /&gt;
Search for specific font:&lt;br /&gt;
&lt;br /&gt;
fc-list | grep -i terminus&lt;br /&gt;
&lt;br /&gt;
fc-list | grep -i dejavu&lt;br /&gt;
&lt;br /&gt;
List fonts with details:&lt;br /&gt;
&lt;br /&gt;
fc-list : family style file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;configuring-terminal-emulator-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Configuring Terminal Emulator Fonts ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;gnome-terminal-default-in-cinnamon&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== GNOME Terminal (default in Cinnamon) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Open GNOME Terminal&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Menu → Preferences&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Select your profile&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Go to &#039;&#039;&#039;Text&#039;&#039;&#039; tab&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Uncheck &amp;amp;quot;Use the system fixed-width font&amp;amp;quot;&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Click font button and select Terminus (or other font)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Choose size (12, 14, or 16 recommended)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;guake-drop-down-terminal&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Guake (Drop-down Terminal) ====&lt;br /&gt;
&lt;br /&gt;
Install GUI version of Terminus first:&lt;br /&gt;
&lt;br /&gt;
sudo apt install fonts-terminus&lt;br /&gt;
&lt;br /&gt;
guake --quit&lt;br /&gt;
&lt;br /&gt;
guake &amp;amp;amp;&lt;br /&gt;
&lt;br /&gt;
Configure via GUI:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Open Guake (F12)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Right-click → Preferences&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Go to &#039;&#039;&#039;Appearance&#039;&#039;&#039; tab&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Uncheck &amp;amp;quot;Use the system fixed width font&amp;amp;quot;&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Select Terminus and size&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure via command line:&lt;br /&gt;
&lt;br /&gt;
gsettings set org.guake.style.font use-system-font false&lt;br /&gt;
&lt;br /&gt;
gsettings set org.guake.style.font font-name &#039;Terminus 12&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;cinnamon-system-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Cinnamon System Fonts ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;quick-font-configuration&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Quick Font Configuration ===&lt;br /&gt;
&lt;br /&gt;
Open &#039;&#039;&#039;System Settings&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
cinnamon-settings&lt;br /&gt;
&lt;br /&gt;
Navigate to: &#039;&#039;&#039;Font Selection&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You&#039;ll see these options:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Default font&#039;&#039;&#039;: Used for menus, buttons, dialogs (recommended: 10-12pt)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Desktop font&#039;&#039;&#039;: Used for desktop icon labels (recommended: 10-11pt)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Document font&#039;&#039;&#039;: Used in document viewers (recommended: 11pt)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Monospace font&#039;&#039;&#039;: Used in terminals and code editors (recommended: Terminus 12pt)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Window title font&#039;&#039;&#039;: Used in window title bars (recommended: 10-11pt bold)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;recommended-configuration-for-better-readability&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Recommended Configuration for Better Readability ===&lt;br /&gt;
&lt;br /&gt;
Default font: Sans 11 or 12&lt;br /&gt;
&lt;br /&gt;
Desktop font: Sans 10 or 11&lt;br /&gt;
&lt;br /&gt;
Document font: Sans 11&lt;br /&gt;
&lt;br /&gt;
Monospace font: Terminus 12 or 14&lt;br /&gt;
&lt;br /&gt;
Window title font: Sans Bold 10 or 11&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;using-command-line-to-change-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Using Command Line to Change Fonts ===&lt;br /&gt;
&lt;br /&gt;
View current settings:&lt;br /&gt;
&lt;br /&gt;
gsettings get org.cinnamon.desktop.interface font-name&lt;br /&gt;
&lt;br /&gt;
gsettings get org.gnome.desktop.interface monospace-font-name&lt;br /&gt;
&lt;br /&gt;
Change default font:&lt;br /&gt;
&lt;br /&gt;
gsettings set org.cinnamon.desktop.interface font-name &#039;Sans 12&#039;&lt;br /&gt;
&lt;br /&gt;
Change monospace font:&lt;br /&gt;
&lt;br /&gt;
gsettings set org.gnome.desktop.interface monospace-font-name &#039;Terminus 12&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;font-recommendations-by-use-case&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Font Recommendations by Use Case ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;For general readability&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Default: DejaVu Sans 11-12&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Monospace: Terminus 12 or DejaVu Sans Mono 11&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;For programming&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Monospace: Fira Code 11, JetBrains Mono 11, or Hack 11&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;For visually impaired users&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Default: Sans 13-14&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Monospace: Terminus 14-16&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Consider UI scaling (see Accessibility section)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;theme-customization-with-css&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Theme Customization with CSS ==&lt;br /&gt;
&lt;br /&gt;
Cinnamon themes use CSS for styling. You can customize any theme to change fonts, colors, spacing, and more.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;finding-your-current-theme&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Finding Your Current Theme ===&lt;br /&gt;
&lt;br /&gt;
Check which theme you&#039;re using:&lt;br /&gt;
&lt;br /&gt;
gsettings get org.cinnamon.theme name&lt;br /&gt;
&lt;br /&gt;
List available themes:&lt;br /&gt;
&lt;br /&gt;
ls /usr/share/themes/&lt;br /&gt;
&lt;br /&gt;
ls ~/.themes/&lt;br /&gt;
&lt;br /&gt;
View your theme in System Settings: &#039;&#039;&#039;System Settings → Themes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;creating-a-custom-theme-copy&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Creating a Custom Theme Copy ===&lt;br /&gt;
&lt;br /&gt;
Always work on a copy to avoid breaking your system:&lt;br /&gt;
&lt;br /&gt;
# Copy system theme to your user directory&lt;br /&gt;
&lt;br /&gt;
cp -r /usr/share/themes/YOUR-THEME-NAME ~/.themes/&lt;br /&gt;
&lt;br /&gt;
# Example:&lt;br /&gt;
&lt;br /&gt;
cp -r /usr/share/themes/Mint-Y ~/.themes/&lt;br /&gt;
&lt;br /&gt;
cp -r /usr/share/themes/Green-Submarine ~/.themes/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;theme-structure&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Theme Structure ===&lt;br /&gt;
&lt;br /&gt;
A typical Cinnamon theme:&lt;br /&gt;
&lt;br /&gt;
~/.themes/YOUR-THEME-NAME/&lt;br /&gt;
&lt;br /&gt;
├── cinnamon/&lt;br /&gt;
&lt;br /&gt;
│ ├── cinnamon.css # Main styling file&lt;br /&gt;
&lt;br /&gt;
│ ├── thumbnail.png&lt;br /&gt;
&lt;br /&gt;
│ └── assets/ # Images, icons&lt;br /&gt;
&lt;br /&gt;
├── gtk-3.0/ # GTK3 application styling&lt;br /&gt;
&lt;br /&gt;
├── gtk-2.0/ # GTK2 application styling&lt;br /&gt;
&lt;br /&gt;
├── metacity-1/ # Window decorations&lt;br /&gt;
&lt;br /&gt;
└── index.theme # Theme metadata&lt;br /&gt;
&lt;br /&gt;
The file you&#039;ll edit most: cinnamon/cinnamon.css&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;editing-theme-css&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Editing Theme CSS ===&lt;br /&gt;
&lt;br /&gt;
Open the CSS file:&lt;br /&gt;
&lt;br /&gt;
nano ~/.themes/YOUR-THEME-NAME/cinnamon/cinnamon.css&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;common-css-selectors&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Common CSS Selectors ====&lt;br /&gt;
&lt;br /&gt;
/* Overall stage - affects most UI elements */&lt;br /&gt;
&lt;br /&gt;
stage {&lt;br /&gt;
&lt;br /&gt;
font-size: 10pt;&lt;br /&gt;
&lt;br /&gt;
font-family: sans-serif;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Main menu */&lt;br /&gt;
&lt;br /&gt;
.menu {&lt;br /&gt;
&lt;br /&gt;
font-size: 10pt;&lt;br /&gt;
&lt;br /&gt;
background-color: rgba(48, 48, 48, 0.95);&lt;br /&gt;
&lt;br /&gt;
border-radius: 8px;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Menu application buttons */&lt;br /&gt;
&lt;br /&gt;
.menu-application-button-label {&lt;br /&gt;
&lt;br /&gt;
font-size: 9pt;&lt;br /&gt;
&lt;br /&gt;
padding-left: 10px;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Panel (taskbar) */&lt;br /&gt;
&lt;br /&gt;
.panel {&lt;br /&gt;
&lt;br /&gt;
font-size: 9pt;&lt;br /&gt;
&lt;br /&gt;
background-color: #2b2b2b;&lt;br /&gt;
&lt;br /&gt;
height: 32px;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Panel applet labels */&lt;br /&gt;
&lt;br /&gt;
.panel-button {&lt;br /&gt;
&lt;br /&gt;
font-size: 9pt;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Notifications */&lt;br /&gt;
&lt;br /&gt;
.notification {&lt;br /&gt;
&lt;br /&gt;
font-size: 10pt;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Window list buttons */&lt;br /&gt;
&lt;br /&gt;
.window-list-item-box {&lt;br /&gt;
&lt;br /&gt;
font-size: 9pt;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tooltips */&lt;br /&gt;
&lt;br /&gt;
.tooltip {&lt;br /&gt;
&lt;br /&gt;
font-size: 9pt;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;example-increasing-menu-font-size&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Example: Increasing Menu Font Size ===&lt;br /&gt;
&lt;br /&gt;
Find the menu section and modify:&lt;br /&gt;
&lt;br /&gt;
.menu {&lt;br /&gt;
&lt;br /&gt;
font-size: 14pt; /* Increase from default 9-10pt */&lt;br /&gt;
&lt;br /&gt;
background-color: rgba(48, 48, 48, 0.95);&lt;br /&gt;
&lt;br /&gt;
border-radius: 8px;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.menu-application-button-label {&lt;br /&gt;
&lt;br /&gt;
font-size: 13pt; /* Increase menu item text */&lt;br /&gt;
&lt;br /&gt;
padding-left: 10px;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Also increase category labels */&lt;br /&gt;
&lt;br /&gt;
.menu-category-button-label {&lt;br /&gt;
&lt;br /&gt;
font-size: 13pt;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;example-changing-font-family&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Example: Changing Font Family ===&lt;br /&gt;
&lt;br /&gt;
stage {&lt;br /&gt;
&lt;br /&gt;
font-family: &amp;amp;quot;DejaVu Sans&amp;amp;quot;, sans-serif;&lt;br /&gt;
&lt;br /&gt;
font-size: 11pt;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Use monospace for specific elements */&lt;br /&gt;
&lt;br /&gt;
.some-element {&lt;br /&gt;
&lt;br /&gt;
font-family: &amp;amp;quot;Terminus&amp;amp;quot;, &amp;amp;quot;DejaVu Sans Mono&amp;amp;quot;, monospace;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;applying-css-changes&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Applying CSS Changes ===&lt;br /&gt;
&lt;br /&gt;
After editing the CSS file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Save the file: Ctrl+O then Enter (in nano)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Exit: Ctrl+X (in nano)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Restart Cinnamon: Press Alt+F2, type r, press Enter&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or reload from command line:&lt;br /&gt;
&lt;br /&gt;
# Ensure theme is set&lt;br /&gt;
&lt;br /&gt;
gsettings set org.cinnamon.theme name &#039;YOUR-THEME-NAME&#039;&lt;br /&gt;
&lt;br /&gt;
# Restart Cinnamon&lt;br /&gt;
&lt;br /&gt;
cinnamon --replace &amp;amp;amp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;css-tips-and-tricks&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== CSS Tips and Tricks ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Finding the right selector&#039;&#039;&#039;: Use Cinnamon&#039;s Looking Glass debugger&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Press Alt+F2&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Type lg and press Enter&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Go to &#039;&#039;&#039;Picker&#039;&#039;&#039; tab&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Click on UI elements to see their CSS classes&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Testing changes quickly&#039;&#039;&#039;: Keep the CSS file open in one workspace, test in another, and use Alt+F2 → r to reload.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Backup before editing&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
cp ~/.themes/YOUR-THEME-NAME/cinnamon/cinnamon.css ~/.themes/YOUR-THEME-NAME/cinnamon/cinnamon.css.backup&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Restore backup if needed&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
cp ~/.themes/YOUR-THEME-NAME/cinnamon/cinnamon.css.backup ~/.themes/YOUR-THEME-NAME/cinnamon/cinnamon.css&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;common-css-properties&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Common CSS Properties ===&lt;br /&gt;
&lt;br /&gt;
/* Fonts */&lt;br /&gt;
&lt;br /&gt;
font-family: &amp;amp;quot;Font Name&amp;amp;quot;, fallback;&lt;br /&gt;
&lt;br /&gt;
font-size: 10pt; /* or 12px, 1.2em */&lt;br /&gt;
&lt;br /&gt;
font-weight: bold; /* or normal, 600 */&lt;br /&gt;
&lt;br /&gt;
font-style: italic;&lt;br /&gt;
&lt;br /&gt;
/* Colors */&lt;br /&gt;
&lt;br /&gt;
color: #ffffff;&lt;br /&gt;
&lt;br /&gt;
background-color: rgba(48, 48, 48, 0.95);&lt;br /&gt;
&lt;br /&gt;
border-color: #444444;&lt;br /&gt;
&lt;br /&gt;
/* Spacing */&lt;br /&gt;
&lt;br /&gt;
padding: 10px;&lt;br /&gt;
&lt;br /&gt;
margin: 5px;&lt;br /&gt;
&lt;br /&gt;
padding-left: 10px;&lt;br /&gt;
&lt;br /&gt;
/* Borders */&lt;br /&gt;
&lt;br /&gt;
border: 1px solid #444444;&lt;br /&gt;
&lt;br /&gt;
border-radius: 8px;&lt;br /&gt;
&lt;br /&gt;
/* Sizing */&lt;br /&gt;
&lt;br /&gt;
width: 300px;&lt;br /&gt;
&lt;br /&gt;
height: 40px;&lt;br /&gt;
&lt;br /&gt;
min-width: 200px;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;accessibility-and-scaling&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Accessibility and Scaling ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;ui-scaling-recommended-for-visual-impairment&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== UI Scaling (Recommended for Visual Impairment) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;via-system-settings&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Via System Settings ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;System Settings → Display → UI Scale&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Options typically: 100%, 125%, 150%, 200%&lt;br /&gt;
&lt;br /&gt;
Start with 125% and adjust as needed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;via-command-line&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Via Command Line ====&lt;br /&gt;
&lt;br /&gt;
# Check current scaling&lt;br /&gt;
&lt;br /&gt;
gsettings get org.cinnamon.desktop.interface scaling-factor&lt;br /&gt;
&lt;br /&gt;
# Set scaling (1 = 100%, 2 = 200%)&lt;br /&gt;
&lt;br /&gt;
gsettings set org.cinnamon.desktop.interface scaling-factor 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Fractional scaling (1.25, 1.5) may not be available on all systems.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;text-scaling-only&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Text Scaling Only ===&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want to scale everything, increase text size:&lt;br /&gt;
&lt;br /&gt;
# Increase text scaling factor&lt;br /&gt;
&lt;br /&gt;
gsettings set org.gnome.desktop.interface text-scaling-factor 1.25&lt;br /&gt;
&lt;br /&gt;
Values: 1.0 = 100%, 1.25 = 125%, 1.5 = 150%&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;high-contrast-themes&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== High Contrast Themes ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;System Settings → Themes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Look for high-contrast themes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;HighContrast (if available)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;HighContrastInverse&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or install:&lt;br /&gt;
&lt;br /&gt;
sudo apt install gnome-themes-extra&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;large-cursor&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Large Cursor ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;System Settings → Mouse and Touchpad → Cursor&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Select a larger cursor size (32px or 48px).&lt;br /&gt;
&lt;br /&gt;
Or via command line:&lt;br /&gt;
&lt;br /&gt;
gsettings set org.cinnamon.desktop.interface cursor-size 32&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;desktop-zoom-magnifier&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Desktop Zoom (Magnifier) ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;System Settings → Accessibility → Zoom&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Enable desktop magnification. Typical shortcut: Alt + Super + 8&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;font-smoothing&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Font Smoothing ===&lt;br /&gt;
&lt;br /&gt;
Ensure font smoothing is enabled for better readability:&lt;br /&gt;
&lt;br /&gt;
gsettings set org.cinnamon.settings-daemon.plugins.xsettings antialiasing &#039;rgba&#039;&lt;br /&gt;
&lt;br /&gt;
gsettings set org.cinnamon.settings-daemon.plugins.xsettings hinting &#039;slight&#039;&lt;br /&gt;
&lt;br /&gt;
Options for antialiasing: none, grayscale, rgba Options for hinting: none, slight, medium, full&lt;br /&gt;
&lt;br /&gt;
Recommended: rgba with slight hinting&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;troubleshooting&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;console-font-issues&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Console Font Issues ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: setupcon says &amp;amp;quot;not on the console&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;: This is normal when running from GUI. The configuration is saved. Test by switching to TTY with Ctrl+Alt+F2.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: Font changes don&#039;t persist after reboot&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;: Verify /etc/default/console-setup has correct settings. Run sudo dpkg-reconfigure console-setup again.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: setfont gives &amp;amp;quot;couldn&#039;t get file descriptor&amp;amp;quot; error&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;: setfont only works from actual TTY console, not GUI terminal emulators.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;gui-font-issues&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== GUI Font Issues ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: Installed font doesn&#039;t appear in applications&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
# Rebuild font cache&lt;br /&gt;
&lt;br /&gt;
fc-cache -fv&lt;br /&gt;
&lt;br /&gt;
# Log out and back in&lt;br /&gt;
&lt;br /&gt;
# Or restart the application&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: Font looks pixelated or ugly&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;: Check antialiasing settings:&lt;br /&gt;
&lt;br /&gt;
gsettings set org.cinnamon.settings-daemon.plugins.xsettings antialiasing &#039;rgba&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: Terminus not showing in Guake&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;: Install the TrueType version:&lt;br /&gt;
&lt;br /&gt;
sudo apt install fonts-terminus&lt;br /&gt;
&lt;br /&gt;
guake --quit&lt;br /&gt;
&lt;br /&gt;
guake &amp;amp;amp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;theme-css-issues&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Theme CSS Issues ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: CSS changes don&#039;t take effect&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Save the CSS file&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Restart Cinnamon: Alt+F2 → r&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Verify you&#039;re editing the active theme&#039;s CSS&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Check for CSS syntax errors&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: Cinnamon crashes after CSS edit&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;: Boot to TTY (Ctrl+Alt+F2), restore backup:&lt;br /&gt;
&lt;br /&gt;
cp ~/.themes/YOUR-THEME/cinnamon/cinnamon.css.backup ~/.themes/YOUR-THEME/cinnamon/cinnamon.css&lt;br /&gt;
&lt;br /&gt;
Then switch back to GUI and restart Cinnamon.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: Can&#039;t find the right CSS selector&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;: Use Looking Glass:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Alt+F2 → type lg → Enter&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Go to Picker tab&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Click UI element to see its classes&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;scaling-issues&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Scaling Issues ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: UI scaling makes everything blurry&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;: Some applications don&#039;t handle scaling well. Try:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Integer scaling only (100%, 200%) instead of fractional&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Increase font sizes instead of UI scaling&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Update graphics drivers&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: Some applications ignore scaling&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;: Set scaling per-application (for X11 apps):&lt;br /&gt;
&lt;br /&gt;
GDK_SCALE=2 application-name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;quick-reference-commands&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Quick Reference Commands ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;console-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Console Fonts ===&lt;br /&gt;
&lt;br /&gt;
# Configure interactively&lt;br /&gt;
&lt;br /&gt;
sudo dpkg-reconfigure console-setup&lt;br /&gt;
&lt;br /&gt;
# Apply changes&lt;br /&gt;
&lt;br /&gt;
sudo setupcon&lt;br /&gt;
&lt;br /&gt;
# List console fonts&lt;br /&gt;
&lt;br /&gt;
ls /usr/share/consolefonts/&lt;br /&gt;
&lt;br /&gt;
# Test font (from TTY only)&lt;br /&gt;
&lt;br /&gt;
setfont /usr/share/consolefonts/Ter16x32n.psf.gz&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;gui-fonts-2&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== GUI Fonts ===&lt;br /&gt;
&lt;br /&gt;
# Install fonts&lt;br /&gt;
&lt;br /&gt;
sudo apt install fonts-terminus fonts-firacode&lt;br /&gt;
&lt;br /&gt;
# Rebuild font cache&lt;br /&gt;
&lt;br /&gt;
fc-cache -fv&lt;br /&gt;
&lt;br /&gt;
# List all fonts&lt;br /&gt;
&lt;br /&gt;
fc-list&lt;br /&gt;
&lt;br /&gt;
# Search for specific font&lt;br /&gt;
&lt;br /&gt;
fc-list | grep -i terminus&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;cinnamon-settings&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Cinnamon Settings ===&lt;br /&gt;
&lt;br /&gt;
# Open settings&lt;br /&gt;
&lt;br /&gt;
cinnamon-settings&lt;br /&gt;
&lt;br /&gt;
# Check current theme&lt;br /&gt;
&lt;br /&gt;
gsettings get org.cinnamon.theme name&lt;br /&gt;
&lt;br /&gt;
# Set theme&lt;br /&gt;
&lt;br /&gt;
gsettings set org.cinnamon.theme name &#039;YOUR-THEME&#039;&lt;br /&gt;
&lt;br /&gt;
# UI scaling&lt;br /&gt;
&lt;br /&gt;
gsettings set org.cinnamon.desktop.interface scaling-factor 2&lt;br /&gt;
&lt;br /&gt;
# Restart Cinnamon&lt;br /&gt;
&lt;br /&gt;
Alt+F2 → r&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;theme-editing&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Theme Editing ===&lt;br /&gt;
&lt;br /&gt;
# Copy theme&lt;br /&gt;
&lt;br /&gt;
cp -r /usr/share/themes/THEME-NAME ~/.themes/&lt;br /&gt;
&lt;br /&gt;
# Edit CSS&lt;br /&gt;
&lt;br /&gt;
nano ~/.themes/THEME-NAME/cinnamon/cinnamon.css&lt;br /&gt;
&lt;br /&gt;
# Backup CSS&lt;br /&gt;
&lt;br /&gt;
cp ~/.themes/THEME-NAME/cinnamon/cinnamon.css{,.backup}&lt;br /&gt;
&lt;br /&gt;
# Restore backup&lt;br /&gt;
&lt;br /&gt;
cp ~/.themes/THEME-NAME/cinnamon/cinnamon.css{.backup,}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;additional-resources&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Additional Resources ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Official Cinnamon Documentation&#039;&#039;&#039;: https://cinnamon-spices.linuxmint.com/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cinnamon GitHub&#039;&#039;&#039;: https://github.com/linuxmint/cinnamon&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Theme Development Guide&#039;&#039;&#039;: Available in Cinnamon documentation&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Font Configuration&#039;&#039;&#039;: man fonts-conf or man fc-cache&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Console Setup&#039;&#039;&#039;: man console-setup or man setupcon&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Last Updated&#039;&#039;&#039;: October 2025&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Compatible with&#039;&#039;&#039;: Debian 13, Linux Mint 21+, any distribution using Cinnamon DE&lt;br /&gt;
&lt;br /&gt;
=== Credits &amp;amp; Comments ===&lt;br /&gt;
As usual I welcome any comments, suggestions or resources : dev@divsmart.com or distro-nix on Debian Forum.&lt;br /&gt;
[[Category:Fonts]]&lt;br /&gt;
[[Category:Themes]]&lt;br /&gt;
[[Category:Desktop]]&lt;br /&gt;
[[Category:Full Paper]]&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Security_Hardening_for_Debian_Users:_Protecting_Against_Targeted_Attacks&amp;diff=203</id>
		<title>Security Hardening for Debian Users: Protecting Against Targeted Attacks</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Security_Hardening_for_Debian_Users:_Protecting_Against_Targeted_Attacks&amp;diff=203"/>
		<updated>2026-03-10T13:06:46Z</updated>

		<summary type="html">&lt;p&gt;Donald: Categories&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Security Hardening for Debian Users: Protecting Against Targeted Attacks ==&lt;br /&gt;
&lt;br /&gt;
==== Cybersecurity Measures Against Targeted Attacks ====&lt;br /&gt;
&lt;br /&gt;
* This guide is based on personal experience with targeted attacks originating from state-sponsored actors associated with a totalitarian regime.&lt;br /&gt;
* The goal is to help users strengthen the security posture of Linux systems against advanced persistent threats.&lt;br /&gt;
* This article is intended for private users, owners of laptops and desktop computers, as well as administrators of small private servers. Corporate network security topics are not covered here.&lt;br /&gt;
* Likewise, this article does not address social engineering, psychological, legal, physical, or other important aspects of targeted attacks. It focuses exclusively on the cybersecurity aspects of Linux-based systems.&lt;br /&gt;
&lt;br /&gt;
==== Description of the Threat ====&lt;br /&gt;
Since 2011 (for over 14 years), the author has been targeted by a complex set of attacks that include system intrusions, surveillance, psychological pressure, and blackmail based on personal data obtained through such surveillance.&lt;br /&gt;
&lt;br /&gt;
Attackers can gain full control over a PC and steal personal information, often leaving almost no traces. Occasionally, such activity manifests as sudden cursor movements, system slowdowns, or unexplained network activity.&lt;br /&gt;
&lt;br /&gt;
They also monitor Internet traffic and can compromise passwords when those passwords are weak or when two-factor authentication is not enabled.&lt;br /&gt;
&lt;br /&gt;
Please note that such targeted attacks against individuals — both within and outside of authoritarian states — are a real and growing threat. What author describes is not speculation, but the result of many years of firsthand experience resisting cyberattacks and attempted extortion.&lt;br /&gt;
&lt;br /&gt;
There is a widespread belief that targeted cyberattacks affect only a very small fraction of users — around 0.01% or even less — and that for the overwhelming majority of people such risks are not a real concern. However, events of recent years demonstrate that the level of cyber threats is significantly higher than commonly assumed and is often underestimated by both professionals and ordinary users.&lt;br /&gt;
&lt;br /&gt;
The author, as a citizen of a country that has become a zone of increased interest from external actors employing a wide range of means — from traditional instruments of influence to cyber technologies aimed at compromising and monitoring private devices and servers — considers it necessary to draw the attention of the international community to this issue.&lt;br /&gt;
&lt;br /&gt;
Raising awareness about cyber threats and improving the understanding of modern attack methods are essential steps toward strengthening digital security, protecting personal data, and maintaining trust in open-source infrastructure.&lt;br /&gt;
&lt;br /&gt;
==== Countermeasures ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tested environment: Debian 12 (Bookworm), kernel 6.1.0-34-amd64 (April 2025 build).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since early 2025, the author has fully switched to Linux, using the Debian distribution. The author is writing here because, among Linux users, it is possible to discuss real protective measures and digital independence.&lt;br /&gt;
&lt;br /&gt;
At the same time, please share this information with Windows users, explaining how vulnerable Windows systems are to hacking and why switching to Ubuntu or another Linux distribution is a much safer choice.&lt;br /&gt;
&lt;br /&gt;
Linux, due to its modular architecture and open-source nature, enables deeper and more flexible security configurations.&lt;br /&gt;
&lt;br /&gt;
Another significant risk factor is the practice of installing Windows, Microsoft Office, or other user applications from pirated sources. Such unofficial builds &#039;&#039;&#039;may contain embedded backdoors, trojans, rootkits, or other forms of malware&#039;&#039;&#039;, which substantially weaken the security of a Windows system and make various types of attacks easier for an adversary.&lt;br /&gt;
&lt;br /&gt;
Debian and most Linux distributions (Ubuntu, Linux Mint, Mageia, Fedora, etc.) are distributed free of charge and rely on official repositories for downloading and installing software. Packages in these repositories undergo strict verification, which greatly reduces the likelihood of malicious code and provides a more predictable and transparent security model.&lt;br /&gt;
&lt;br /&gt;
However, installing Debian or any other Linux distribution alone does not guarantee protection from surveillance — proper configuration is essential.&lt;br /&gt;
&lt;br /&gt;
The adversary type described in this article is &#039;&#039;&#039;experienced and resourceful&#039;&#039;&#039;. Such actors develop software capable of bypassing default configurations of operating systems — both Linux and Windows. This is profitable: a successful &amp;quot;universal key&amp;quot; or exploit that works against many default deployments can grant stealthy access to a large number of machines.&lt;br /&gt;
&lt;br /&gt;
At the same time, creating such a universal key for systems with complex, individualized security configurations is substantially harder and often impractical: each machine will have a different set of rules, profiles and policies, and the exploit must be adapted per configuration. That significantly raises the attacker&#039;s cost.&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Conclusion: do not leave a freshly installed system with default security settings. Apply deliberate, deep, and individualized hardening — least-privilege policies, properly configured access control mechanisms (AppArmor/SELinux), strict firewall rules, verified update policies and monitoring. This increases the attacker&#039;s cost and complexity and makes automated widespread exploitation much harder.&#039;&#039;&#039;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Carefully and conscientiously harden your system security settings. Prepare the system not only to withstand common, predictable attacks (for example, unauthorized access to a banking account), but also to detect and mitigate non-standard attacks (like those described in this article) &#039;&#039;&#039;so they do not catch you off guard&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Apply the most secure configurations available, especially if you store sensitive personal or professional information.&lt;br /&gt;
&lt;br /&gt;
Below, the author shares methods for configuring Debian 12 (and other Linux systems) to strengthen protection against hacking and unauthorized access.&lt;br /&gt;
&lt;br /&gt;
This article is written both as a security recommendation and as a request for advice on improving system configuration.&lt;br /&gt;
&lt;br /&gt;
If you have suggestions for enhancing the existing configurations or additional cybersecurity recommendations that may not have been considered in this message, the author would greatly appreciate your expertise and feedback.&lt;br /&gt;
&lt;br /&gt;
==== Practical Instructions ====&lt;br /&gt;
&lt;br /&gt;
===== Linux system hardening recommendations: =====&lt;br /&gt;
&lt;br /&gt;
====== Main Aspects of System Hardening ======&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Use full-disk encryption. If your PC or laptop is stolen, the attacker will face significant difficulties in gaining access to any private data stored on your hard drive.&lt;br /&gt;
&lt;br /&gt;
2.  If the OS is installed on a desktop that does not serve as a server, disable and remove all remote access services. They should not merely be password-protected or disabled — completely remove them from the system. If you do need a remote-access service, use strong passwords of 16–20 characters. Also, use complex passwords for both the regular user session and the superuser account — at least 16 characters for the user and at least 20 for the superuser.&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Important&#039;&#039;&#039;: Do not hesitate to use long passwords. Apply them even if your PC or server is physically isolated. If access to the user or superuser session is not protected by strong, lengthy passwords, the entire Linux security architecture becomes meaningless.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Use only official repositories of your distribution to install software.  Whenever possible, install packages via the package manager (apt/apt-get in Debian) from official repositories — this ensures automatic security updates and integrity verification of packages. If you connect a third-party repository, make sure it is trustworthy: check who maintains it, whether packages are signed with a GPG key, if it is available via HTTPS, and whenever possible, import and verify trusted keys manually. When installing software manually (downloading .deb packages, binaries, or source code), always verify the source: compare checksums (SHA256), verify digital signatures, and follow official installation instructions from the software provider.&lt;br /&gt;
&lt;br /&gt;
4. Avoid using the superuser account or &#039;&#039;sudo&#039;&#039; without a clear necessity — and never execute arbitrary scripts with &#039;&#039;sudo&#039;&#039;.  Always carefully review commands before running them in the terminal. The terminal is a powerful administrative tool, but in inexperienced hands it can cause serious system damage or compromise. Practical recommendations:&lt;br /&gt;
* Always read a script fully before running it (less script.sh, cat script.sh).&lt;br /&gt;
* Never paste commands from untrusted or unverified sources into the terminal.&lt;br /&gt;
* Use sudo only when truly necessary; consider using sudoedit for editing configuration files.&lt;br /&gt;
* Follow the principle of least privilege — create separate user accounts and limit access rights where possible &amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Important:&#039;&#039;&#039; Improper or careless use of &#039;&#039;sudo&#039;&#039; and manual installation of software from untrusted sources are common causes of data leaks, data loss, and system compromise. Always test any configuration changes in an isolated environment before applying them on a production machine.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Follow a server-style access model  &lt;br /&gt;
&lt;br /&gt;
Do not add regular users to the &#039;&#039;sudo&#039;&#039; group. The &#039;&#039;sudo&#039;&#039; privilege should be reserved exclusively for the superuser (root). Regular users &#039;&#039;&#039;should not&#039;&#039;&#039; have the ability to execute commands as root via &#039;&#039;sudo&#039;&#039;.  &lt;br /&gt;
&lt;br /&gt;
Yes, this can introduce some inconvenience in system administration, but this model provides a more secure configuration and reduces the risk of accidental or intentional security breaches.&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; system users created by the kernel or services (e.g., &#039;&#039;www-data&#039;&#039;, &#039;&#039;postgres,&#039;&#039; &#039;&#039;nobody&#039;&#039;) &#039;&#039;&#039;do not have sudo access by default&#039;&#039;&#039;. Programs installed using &#039;&#039;sudo&#039;&#039; by the root user &#039;&#039;&#039;do not automatically grant sudo privileges to users created by those programs&#039;&#039;&#039;. Any virtual or service accounts remain unable to run commands with &#039;&#039;sudo&#039;&#039; unless explicitly added to the sudo-enabled group.&amp;lt;/blockquote&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
6. Use application confinement tools such as AppArmor; do not leave profiles at their defaults — customize and harden profiles to match your actual workflows. If you have difficulty configuring AppArmor, seek help from specialists or use AI-based tools.  &lt;br /&gt;
&lt;br /&gt;
The use of mandatory access control mechanisms represents an important layer of system protection. Without proper configuration, even a system with a correctly configured firewall may remain vulnerable to various types of attacks.&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Warning:&#039;&#039;&#039; AppArmor, SELinux and other Mandatory Access Control (MAC) mechanisms may cause system malfunction if misconfigured. Errors in profiles or policies can result in service failures, boot issues, user session lockout, or restricted access to system resources. In some cases, system recovery may be difficult even when using recovery mode, a chroot environment, or booting from a Live/Rescue medium.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
&lt;br /&gt;
It is recommended to perform testing and development of complex and/or custom policies and profiles in an isolated environment (for example, in a virtual machine). It is advisable to retain change logs and terminal output for subsequent analysis.&lt;br /&gt;
&lt;br /&gt;
Configuration changes should be applied to the host system &#039;&#039;&#039;only after confirming correct and stable operation in the test environment.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
7. Use advanced network filtering settings: iptables or nftables, or a commercial firewall. &lt;br /&gt;
My nftables config can be viewed [https://wiki.debian.org/Security/ProtectingAgainstTargetedAttacks/SecurityConfigsAndLogs#| here].&lt;br /&gt;
&lt;br /&gt;
8. Configure kernel parameters for maximum security (sysctl hardening). &lt;br /&gt;
My 99-protect.conf config can be viewed [https://wiki.debian.org/Security/ProtectingAgainstTargetedAttacks/SecurityConfigsAndLogs#| here].&lt;br /&gt;
&lt;br /&gt;
9. Use IDS/IPS systems — intrusion detection and prevention systems (examples: audit, OSSES, Wazus, AIDE). These tools can detect and log attacker activity within your system or network, as well as block malicious actions (logging each blocking event). &lt;br /&gt;
My auditd config can be viewed [https://wiki.debian.org/Security/ProtectingAgainstTargetedAttacks/SecurityConfigsAndLogs#| here].&lt;br /&gt;
&lt;br /&gt;
10. Test the system for vulnerabilities using scanners (for example, DebPkg:lynis, OpenVAS, Nessus). Test results can be analyzed using tools and, if necessary, AI — provide the logs for review.&lt;br /&gt;
&lt;br /&gt;
11 If you suspect that you are being targeted by a focused or targeted attack, start periodically capturing network traffic using tools such as tcpdump, Wireshark, or Zeek. The collected logs can then be sent to security specialists or AI-based analysis tools for further investigation. These measures will significantly complicate a hacker’s task and make the unnoticed collection of personal data more difficult.&lt;br /&gt;
&lt;br /&gt;
12. Follow the principle of Attack Surface Reduction (or [https://en.wikipedia.org/wiki/Occam&#039;s_razor Occam&#039;s Razor]) — disable all unnecessary daemons, services, and processes that are not required for your workflow.&lt;br /&gt;
* If there is a possibility you might need a service, daemon, or process in the future, disable it and remove it from autostart.&lt;br /&gt;
* If you are certain you will never use it, remove it completely from the system.&lt;br /&gt;
* This practice reduces potential attack vectors and strengthens overall system security.&lt;br /&gt;
* Before removing unnecessary daemons, services, or applications, make sure that their removal will not break dependencies with other system components or applications. &lt;br /&gt;
* Always create a full system backup before making any significant configuration changes or modifications.&lt;br /&gt;
&lt;br /&gt;
13. Perform regular antivirus and anti-rootkit scans of the system. In targeted attacks, adversaries typically rely on passive or covert methods — such as data interception, monitoring, traffic analysis, and minimal system interference that leaves few or no traces. Nevertheless, periodic antivirus and anti-rootkit scanning remains a valuable preventive measure, helping to detect known threats in time and maintain the overall security posture of the system.&lt;br /&gt;
&lt;br /&gt;
14. Always record every change you make in system and application configuration files. Add the note as a comment directly in the configuration file — either above the modified line or after it. Format: # YYYY-MM-DD HH:MM, short description of the change, reason Example: Editing `sshd_config` to disable root login via SSH:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
bash&lt;br /&gt;
&lt;br /&gt;
PermitRootLogin no&lt;br /&gt;
# 2025-11-09 14:35, root login via SSH disabled, system security enhancement&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why it matters:&lt;br /&gt;
&lt;br /&gt;
* Allows you to quickly understand when and why a change was made.&lt;br /&gt;
* Helps troubleshoot future issues — you can easily identify which change may have caused a failure or conflict.&lt;br /&gt;
* Simplifies system audits and security reviews.&lt;br /&gt;
&lt;br /&gt;
====== Related Aspects of Internet Security ======&lt;br /&gt;
&lt;br /&gt;
There are aspects of Internet security which, if neglected, can significantly reduce or completely nullify all your efforts in configuring and securing your operating system.&lt;br /&gt;
&lt;br /&gt;
1. Store passwords in a reliable password manager.  &#039;&#039;&#039;Outdated and insecure&#039;&#039;&#039; practices for storing passwords are still commonly encountered, including:&lt;br /&gt;
&lt;br /&gt;
* relying on human memory, with the risk of forgetting or confusing credentials;&lt;br /&gt;
* storing passwords on paper media, which can be damaged, lost, or stolen;&lt;br /&gt;
* saving passwords in web browsers in unencrypted form;&lt;br /&gt;
* keeping passwords in plain text files on the desktop or in other directories without encryption;&lt;br /&gt;
* and similar approaches.&lt;br /&gt;
Such outdated practices should be abandoned in favor of using a modern, reliable password manager that provides proper encryption and access control.&lt;br /&gt;
&lt;br /&gt;
A password manager encrypts the password database, and access to it is possible only after entering a master password, which should be memorized.&lt;br /&gt;
&lt;br /&gt;
Regularly create up-to-date backups of the &#039;&#039;encrypted&#039;&#039; password database.&lt;br /&gt;
&lt;br /&gt;
Do not rely on memory to remember all passwords: strong, attack-resistant passwords are difficult to memorize, while passwords that are easy to remember are generally &#039;&#039;not resistant to compromise&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Additional Practical Recommendations: &amp;lt;blockquote&amp;gt;A password manager (for example, [https://keepassxc.org/ KeePassXC]) can be configured to automatically enter the superuser password into a terminal window. It is strongly recommended to &#039;&#039;&#039;strictly bind this automatic input to a specific terminal window&#039;&#039;&#039; in order to prevent accidental password entry into another field or application. This approach makes it possible to safely use long, cryptographically strong passwords for privileged operations.&lt;br /&gt;
&lt;br /&gt;
In addition, individual account entries within a password manager can store attached encrypted data, such as text files containing access codes, GPG keys, or passphrases. All such information is stored in encrypted form within a single protected database.&lt;br /&gt;
&lt;br /&gt;
It is essential to use a &#039;&#039;&#039;strong master password&#039;&#039;&#039; and never share it with others. The password database should not be kept unlocked continuously. After completing the required operations, the database should be closed, or automatic locking should be configured based on specific conditions (such as screen locking or laptop closure) and/or after a defined period of inactivity (for example, 15–30 minutes).&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Enable two-factor authentication (2FA) on all your online accounts (email, social networks, etc.) — this means confirming your login through a phone call, SMS, a one-time code in a mobile authenticator app (see [https://en.wikipedia.org/wiki/Authenticator_app Authenticator app]), or a hardware security key such as a [https://en.wikipedia.org/wiki/YubiKey YubiKey].  &lt;br /&gt;
&lt;br /&gt;
The YubiKey hardware authenticator (USB/NFC key) offers the following advantages:&lt;br /&gt;
* YubiKey helps protect against phishing because the device verifies the website domain and will not work on fake or look-alike sites. &lt;br /&gt;
* It is virtually impossible to hack remotely or over the network, unlike apps, if your phone or backup password is compromised. &lt;br /&gt;
* Additionally, YubiKey is not vulnerable to SIM-swap attacks like SMS-based 2FA, as it is not tied to a phone number.  &lt;br /&gt;
&lt;br /&gt;
For now, it is one of the most reliable hardware-based options for two-factor authentication.&lt;br /&gt;
&lt;br /&gt;
3. Using VPN to improve privacy and security&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;If you are a private user&#039;&#039;, you can also configure a system-wide VPN (for example, ProtonVPN) so that all device traffic is routed through it — not only browser traffic or traffic from specific applications.&lt;br /&gt;
Enable the “killswitch” mode and disable it only when necessary, re-enabling it immediately afterwards.&lt;br /&gt;
It is also recommended to periodically change VPN servers, doing so at different and unpredictable intervals.&lt;br /&gt;
&lt;br /&gt;
Using a VPN increases your privacy: all of your traffic will be encrypted from observers on your local network and from your internet service provider. This makes it more difficult for an attacker to apply certain social-engineering methods based on traffic analysis, and it also helps protect your privacy in the event that your provider’s infrastructure is compromised.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;If you own a server&#039;&#039; and want access to it to be available only to trusted private or legal entities, while also increasing its protection against unauthorized access, you can configure the server so that SSH and other internal services are accessible exclusively through OpenVPN [https://openvpn.net/as-docs/tutorials/tutorial--change-tls-control-channel-security.html using TLS authentication (tls-auth / tls-crypt)] and unique client certificates instead of passwords.&lt;br /&gt;
&lt;br /&gt;
4. Actively study and apply artificial intelligence to improve security configurations in Debian and other Linux distributions, as well as to address related cybersecurity tasks. A lack of knowledge often becomes the weakest link; AI can provide accurate, structured recommendations interactively and help automate repetitive or complex operations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; Always verify AI-generated recommendations before applying them in production environments. Test any changes in an isolated system, review generated commands or configurations, and ensure that suggestions align with your threat model and security architecture.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In practice, users who effectively leverage AI tools are significantly better prepared, and the adoption of such technologies makes malicious activity considerably more difficult for attackers.&lt;br /&gt;
&lt;br /&gt;
5. If privacy is a priority, consider reducing reliance on the Google ecosystem and switching to more privacy-focused alternatives (for example, proton.me and similar services). Google provides very strong security, but its services collect extensive telemetry for analysis. While this data is encrypted and not accessible to attackers, it may still be undesirable for users who value strict privacy.&lt;br /&gt;
&lt;br /&gt;
6. Use a Wi-Fi router that supports nftables or an equivalent modern packet-filtering framework.&lt;br /&gt;
&lt;br /&gt;
It is not recommended to rely on the cheapest consumer-grade routers that lack built-in security mechanisms and fine-grained traffic filtering capabilities. A router should be treated as an integral part of the overall security architecture, not as an element that increases the attack surface.&lt;br /&gt;
&lt;br /&gt;
Deploying an additional network filtering layer at the entry point of a home network significantly complicates an attacker’s ability to build an effective attack configuration and increases the overall cost of an attack. Configure strict and well-defined filtering rules on the router’s nftables firewall, including inbound connection restrictions, outbound traffic control, and network segmentation where appropriate.&lt;br /&gt;
&lt;br /&gt;
Access to the router’s administrative interface must be protected with a strong, unique password. Whenever possible, management access should be restricted to trusted networks or limited to wired interfaces only.&lt;br /&gt;
&lt;br /&gt;
Such a configuration provides an additional layer of protection not only for the primary workstation, but also for other devices connected to the network (for example, Android-based mobile devices), which often lack the technical capability to use host-level packet filtering mechanisms such as iptables or nftables.&lt;br /&gt;
&lt;br /&gt;
7. Hardware Firewall&lt;br /&gt;
&lt;br /&gt;
If you handle confidential information on your computer and are in a high-risk zone for cyberattacks, consider using an additional layer of protection such as a &#039;&#039;&#039;hardware firewall&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Important note on cost: In addition to the one-time cost of the device (starting from approximately $55), an annual paid subscription is required for threat intelligence updates. Therefore, this solution is economically justified primarily in two cases:&lt;br /&gt;
&lt;br /&gt;
* You work with critically important information whose leakage is unacceptable (e.g., trade secrets, client personal data, unique developments, or if your professional activities involve sensitive data in fields such as law enforcement, military, legal practice, journalism, healthcare, and so on).&lt;br /&gt;
* You have well-founded suspicions that you or your organization could be the target of a directed attack.&lt;br /&gt;
&lt;br /&gt;
Attackers often rely on direct interaction with your devices. The presence of a dedicated, subscription-updated hardware firewall creates a significant obstacle for them. It acts as an independent filter, analyzing all incoming and outgoing traffic before it reaches your end devices. This substantially increases the cost and complexity of an attack for the malicious actor, reducing its effectiveness.&lt;br /&gt;
&lt;br /&gt;
However, this should not be viewed as a panacea. &#039;&#039;&#039;It is an additional, not the sole, layer of defense.&#039;&#039;&#039; Its presence does not negate the necessity of:&lt;br /&gt;
&lt;br /&gt;
* Configuring the basic security of your router.&lt;br /&gt;
* Using a software firewall and antivirus on your PC.&lt;br /&gt;
* Timely updating your operating system and applications.&lt;br /&gt;
* Practicing good cyber hygiene (e.g., using a password manager, being cautious of phishing).&lt;br /&gt;
&lt;br /&gt;
A hardware firewall should be seamlessly integrated into your overall security architecture, forming a &#039;&#039;&#039;multi-layered (defense-in-depth) protection system.&#039;&#039;&#039; It is precisely such a system, where breaching one barrier does not lead to the compromise of the entire network, that poses the most serious challenge for attackers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; Artificial intelligence tools, YubiKey, and other tools not directly related to Debian/Linux are mentioned here as optional technical aids, not as an endorsement of any specific service, vendor, or product. The author does not engage in commercial promotion of any software, hardware, or services, but merely provides optional recommendations for measures that directly or indirectly enhance the security of operating system usage.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
8. It is also important to consider the possibility of hardware-level attacks.&lt;br /&gt;
Although such attacks are significantly less common and typically require more resources than software-based attacks, they remain a potential threat. In certain scenarios, an adversary may exploit vulnerabilities in device firmware or conduct a combined attack targeting both software and hardware layers. Examples include remote injection of malicious code into the firmware of a motherboard, router, optical modem, or other hardware components.&lt;br /&gt;
&lt;br /&gt;
If, after a thorough software-level audit, a security issue remains unresolved, it is advisable &#039;&#039;&#039;to perform a hardware-level assessment&#039;&#039;&#039; as well, including verification of device firmware integrity and configuration.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;And most importantly — give up the illusion of complete security. We live in conditions of a severe information war, and everyone must make efforts so that malicious actors cannot freely spy on desktops and servers.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===== Examples of Deep Custom Security Configurations =====&lt;br /&gt;
&lt;br /&gt;
Below are examples of strong, individualized configurations for &#039;&#039;&#039;nftables&#039;&#039;&#039;, &#039;&#039;&#039;sysctl&#039;&#039;&#039; and &#039;&#039;&#039;auditd&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
These are not universal templates, but references illustrating advanced system hardening.&lt;br /&gt;
&lt;br /&gt;
[https://wiki.debian.org/Security/ProtectingAgainstTargetedAttacks/SecurityConfigsAndLogs| Examples of Deep Custom Security Configurations (DebianWiki)]&lt;br /&gt;
&lt;br /&gt;
==== UsefulPrograms ====&lt;br /&gt;
&lt;br /&gt;
Here is the list of programs useful for configuring and maintaining the security of Linux systems. The included programs are either open-source (the majority) or commercial, but with freely available limited features sufficient to address core security tasks (a smaller portion). &lt;br /&gt;
&lt;br /&gt;
[https://wiki.debian.org/Security/ProtectingAgainstTargetedAttacks/UsefulPrograms| Useful programs reviewed by the article author (DebianWiki)]&lt;br /&gt;
&lt;br /&gt;
==== Additional articles on the author&#039;s site: ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; The following materials are provided for &#039;&#039;&#039;awareness, defensive, and educational purposes only&#039;&#039;&#039;. They are intended to help users recognize threats and build their own security. All personal data and identifiers have been anonymized.&amp;lt;/blockquote&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
[https://blackcat568.github.io/CyberSecurityAndSocialEngineering/targeted-attack-analysis.html| Author&#039;s analysis of targeted attacks] - The author provides an analysis of complex targeted attack that was used against him, including social‑engineering and psychological components, as well as cyber attack vectors and defensive measures.  &lt;br /&gt;
&lt;br /&gt;
[https://blackcat568.github.io/CyberSecurityAndSocialEngineering/information-and-behavioral-hygiene-for-working-with-a-pc.html| Information and Behavioral Hygiene for Working with a PC] - This is an extensive popular-science essay dedicated to comprehensive digital hygiene. Drawing on years of personal (and often bitter) experience in working with PCs, observing user behavior, working in the security sector, as well as experience in countering scammers and manipulators online, the author formulates a system of practical principles for conscious, safe, and productive work with a PC and on the Internet.&lt;br /&gt;
&lt;br /&gt;
[https://blackcat568.github.io/CyberSecurityAndSocialEngineering/psychological-suppression-by-security-forces.html| Psychological Suppression via the Disbelief Effect] — The Disbelief Effect is a subtle, systemic tactic aimed at depriving a person of support, discrediting their testimony, and thereby weakening their ability to resist. When doubt, ridicule, and neglect become the social norm surrounding a particular individual, it functions as a form of psychological weapon: isolation, humiliation, loss of control over one’s own reality. This article provides a detailed analysis of the nature of the Disbelief Effect, its mechanisms, consequences, and practical recommendations: what must never be done and what can effectively be done under such pressure.&lt;br /&gt;
&lt;br /&gt;
==== External Resources ====&lt;br /&gt;
&lt;br /&gt;
[https://www.debian.org/doc/manuals/securing-debian-manual/index.en.html| Securing Debian Manual 3.19 — Javier Fernández-Sanguino Peña.]  &lt;br /&gt;
This document describes security in the Debian project and in the Debian operating system. Starting with the process of securing and hardening the default Debian GNU/Linux distribution installation, it also covers some of the common tasks to set up a secure network environment using Debian GNU/Linux, gives additional information on the security tools available and talks about how security is enforced in Debian by the security and audit team.  &lt;br /&gt;
&lt;br /&gt;
[https://medium.com/%40ihouelecaurcy/the-complete-nftables-guide-modern-linux-firewall-mastery-79fb86894d5c| The Complete nftables Guide: Modern Linux Firewall Mastery — Ihouele Caurcy]  &lt;br /&gt;
The definitive guide to nftables — the modern replacement for iptables, ip6tables, arptables, and ebtables. From basic concepts to enterprise-level configurations.  &lt;br /&gt;
&lt;br /&gt;
[https://notes.suhaib.in/docs/tech/utilities/iptables-nftables-and-you-a-friendly-guide-to-traffic-rules/| iptables, nftables, and You A Friendly Guide to Traffic Rules]&lt;br /&gt;
A friendly guide to iptables and nftables in Linux: explains Netfilter architecture, tables, chains and rules, with configuration examples (SSH, IP blocking, port forwarding). Covers differences between iptables and nftables, migration, and compatibility with modern firewall tools. Useful for understanding the iptables→nftables transition and practical examples.  &lt;br /&gt;
&lt;br /&gt;
[https://gitlab.com/apparmor/apparmor/-/wikis/home AppArmor]  &lt;br /&gt;
The official wiki for the AppArmor security project on Linux. Provides guidance for users and developers, instructions for creating and managing security profiles, example access policies for applications, and best practices to protect the operating system.  &lt;br /&gt;
&lt;br /&gt;
[https://nallino.net/stockage/security/Linux_Mint_Security.pdf| Security, Privacy and Anonymity in Linux Mint — Michel Nallino.]  &lt;br /&gt;
A good and comprehensive work on Linux Mint security that can also be useful for other Linux distributions.  &lt;br /&gt;
&lt;br /&gt;
[https://www.cisa.gov/topics/cybersecurity-best-practices| CISA — Cybersecurity Best Practices] &lt;br /&gt;
CISA (Certified Information Systems Auditor) provides information on cybersecurity best practices to help individuals and organizations implement preventative measures and manage cyber risks.&lt;br /&gt;
&lt;br /&gt;
==== Provenance ====&lt;br /&gt;
&lt;br /&gt;
This article was written by blackcat568 on the forums: https://forums.debian.net/viewtopic.php?t=164131&lt;br /&gt;
&lt;br /&gt;
it is initially shared on the Debian Wiki: https://wiki.debian.org/Security/ProtectingAgainstTargetedAttacks&lt;br /&gt;
[[Category:Security]]&lt;br /&gt;
[[Category:Administration]]&lt;br /&gt;
[[Category:Guides]]&lt;br /&gt;
[[Category:Full Paper]]&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=MTR_Network_Diagnostics&amp;diff=202</id>
		<title>MTR Network Diagnostics</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=MTR_Network_Diagnostics&amp;diff=202"/>
		<updated>2026-03-10T13:05:51Z</updated>

		<summary type="html">&lt;p&gt;Donald: Categories&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= MTR: Network Path Diagnostics =&lt;br /&gt;
&lt;br /&gt;
MTR combines the functionality of ping and traceroute into a single tool that monitors every hop along a network path continuously, producing statistical output that identifies where latency and packet loss actually occur. When basic connectivity tools confirm a problem exists but don’t locate it, MTR provides the data needed to isolate it.&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt install mtr&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MTR is available in the Debian main repository and requires no additional sources. It is maintained across all current Debian releases and installs without external dependencies. The package name is mtr, which includes both the command-line interface and mtr-packet, the helper binary responsible for sending and receiving network packets.&lt;br /&gt;
&lt;br /&gt;
=== Basic Usage ===&lt;br /&gt;
MTR operates in two modes: interactive, which displays a live updating view of the network path, and report mode, which runs a fixed number of cycles and prints a summary.&lt;br /&gt;
&lt;br /&gt;
* Interactive mode&lt;br /&gt;
&amp;lt;code&amp;gt;mtr example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Report mode — 50 cycles, no DNS resolution&lt;br /&gt;
&amp;lt;code&amp;gt;mtr --report --report-cycles 50 --no-dns example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TCP mode — useful when ICMP is filtered&lt;br /&gt;
&amp;lt;code&amp;gt;sudo mtr --tcp --port 443 example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Save report to file&lt;br /&gt;
&amp;lt;code&amp;gt;mtr --report --report-cycles 100 --no-dns example.com &amp;gt; mtr-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Output Example&lt;br /&gt;
|-&lt;br /&gt;
! Host !! hostname !! Loss% !! Snt !! Last !! Ave !! Best !! Wrst !! StDEV&lt;br /&gt;
|-&lt;br /&gt;
| 1. || 192.168.1.1 || 0.0% || 50 || 1.2 || 1.5 || 1.0 || 2.3 || 0.4 &lt;br /&gt;
|-&lt;br /&gt;
| 2.  || 10.0.0.1    || 0.0% || 50 || 8.5 || 9.2 || 7.8 || 12.1 || 1.3 &lt;br /&gt;
|-&lt;br /&gt;
| 3.  || isp-gateway.net ||  0.0% || 50 || 15.3 || 16.1 || 14.2 || 19.8 || 1.8 &lt;br /&gt;
|-&lt;br /&gt;
| 4.  || ??? || 100.0% || 50 || 0.0 || 0.0 || 0.0 || 0.0 || 0.0 &lt;br /&gt;
|-&lt;br /&gt;
| 5.  || destination.com || 0.0%||    50||   25.4||  26.8||  24.1|| 32.5||   2.4&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
Each row represents one hop. The columns report packet loss percentage, packets sent, and latency values in milliseconds — last, average, best, worst, and standard deviation. Standard deviation measures consistency: a low value indicates stable latency, a high value indicates jitter.&lt;br /&gt;
&lt;br /&gt;
==== Interpreting Results ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Packet loss at an intermediate hop that does not persist to subsequent hops&#039;&#039;&#039; is typically not a network problem. Many routers deprioritise or rate-limit ICMP responses while forwarding traffic normally. If hop 4 shows 100% loss but hop 5 responds cleanly, traffic is flowing through hop 4 — it simply isn’t generating diagnostic replies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Packet loss that begins at a hop and continues through to the destination&#039;&#039;&#039; indicates a genuine problem at or beyond that hop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A sudden increase in latency at a specific hop that persists to all subsequent hops&#039;&#039;&#039; points to a congested or slow link at that point in the path.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;High standard deviation&#039;&#039;&#039; indicates unstable latency, which affects real-time applications such as VoIP and video conferencing even when average latency appears acceptable.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A large latency increase with stable standard deviation and no packet loss&#039;&#039;&#039; reflects geographic distance or a slower interconnect, not a fault.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problems confined to the first hop&#039;&#039;&#039; — your local router — and absent from all subsequent hops point to a local network issue: wireless interference, a misconfigured interface, or a problem with the router itself.&lt;br /&gt;
&lt;br /&gt;
==== Practical Scenarios ====&lt;br /&gt;
===== Isolating a problem for an ISP or hosting provider =====&lt;br /&gt;
&lt;br /&gt;
Run an extended report against a known external address and save the output:&lt;br /&gt;
&amp;lt;code&amp;gt;mtr --report-cycles 100 --no-dns 8.8.8.8 &amp;gt; isp-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The report shows exactly where in the path packet loss or latency appears, which hop belongs to which network, and whether the problem is within the provider’s infrastructure or beyond it.&lt;br /&gt;
&lt;br /&gt;
===== Testing when ICMP is filtered =====&lt;br /&gt;
Some paths block ICMP but pass TCP traffic. Testing with TCP against a specific port confirms whether a service is reachable end-to-end:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo mtr --tcp --port 22 --report-cycles 50 remote-server.com&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo mtr --tcp --port 443 --report-cycles 50 remote-server.com&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
===== Diagnosing jitter for real-time applications =====&lt;br /&gt;
Run a longer test and focus on the StDev column:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mtr --report-cycles 200 game-server.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Values above 5ms in the StDev column at any hop that persists to the destination will affect latency-sensitive applications.&lt;br /&gt;
&lt;br /&gt;
==== Catching intermittent problems ====&lt;br /&gt;
Intermittent issues require longer observation windows than a standard report provides:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mtr --report-cycles 500 --interval 1 target.com &amp;gt; long-test.txt&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Protocol Selection =====&lt;br /&gt;
&lt;br /&gt;
MTR supports ICMP (default), UDP, and TCP. When one protocol appears to show loss or filtering, testing with another confirms whether the issue is protocol-specific or affects all traffic:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Icmp&#039;&#039;&lt;br /&gt;
 mtr example.com &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;UDP&#039;&#039;&lt;br /&gt;
 mtr --udp example.com &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TCP on port 80&#039;&#039;&lt;br /&gt;
 sudo mtr --tcp --port 80 example.com &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Output Formats =====&lt;br /&gt;
MTR can produce machine-readable output for logging or automated analysis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
mtr --report --csv example.com&lt;br /&gt;
&lt;br /&gt;
mtr --report --json example.com&lt;br /&gt;
&lt;br /&gt;
mtr --report --xml example.com&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Additional Options =====&lt;br /&gt;
* Show both hostname and IP address&lt;br /&gt;
&amp;lt;code&amp;gt;mtr --show-ips example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Display Autonomous System numbers&lt;br /&gt;
&amp;lt;code&amp;gt;mtr --aslookup example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Limit maximum hops&lt;br /&gt;
&amp;lt;code&amp;gt;mtr --max-ttl 20 example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Specify source address on systems with multiple interfaces&lt;br /&gt;
&amp;lt;code&amp;gt;mtr --address 192.168.1.100 example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Force IPv4 or IPv6&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
mtr -4 example.com&lt;br /&gt;
&lt;br /&gt;
mtr -6 example.com&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Interactive Mode Key Bindings =====&lt;br /&gt;
In interactive mode, the following keys are available:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Available keys&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Action&lt;br /&gt;
|-&lt;br /&gt;
| d || Toggle display mode&lt;br /&gt;
|-&lt;br /&gt;
| n || Toggle between hostnames and IP addresses&lt;br /&gt;
|-&lt;br /&gt;
| r || Reset statistics&lt;br /&gt;
|-&lt;br /&gt;
| p || Pause and resume&lt;br /&gt;
|-&lt;br /&gt;
| u || Cycle between ICMP, UDP, and TCP&lt;br /&gt;
|-&lt;br /&gt;
| y || Toggle between IPv4 and IPv6&lt;br /&gt;
|-&lt;br /&gt;
| q || Quit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Useful Aliases =====&lt;br /&gt;
These aliases cover the most common diagnostic tasks. Add them to ~/.bashrc and reload with source ~/.bashrc:&lt;br /&gt;
&lt;br /&gt;
* Standard report — 50 cycles, no DNS&lt;br /&gt;
&amp;lt;code&amp;gt;alias mtrreport=&#039;mtr --report --report-cycles 50 --no-dns&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Extended report — 100 cycles&lt;br /&gt;
&amp;lt;code&amp;gt;alias mtrlong=&#039;mtr --report --report-cycles 100 --no-dns&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* HTTPS path test&lt;br /&gt;
&amp;lt;code&amp;gt;alias mtrhttps=&#039;sudo mtr --tcp --port 443 --report-cycles 50&#039;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Permission Note =====&lt;br /&gt;
TCP mode on privileged ports requires either sudo or the cap_net_raw capability set on the mtr-packet binary:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo setcap cap_net_raw+ep /usr/bin/mtr-packet&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After setting the capability, TCP tests run without sudo.&lt;br /&gt;
&lt;br /&gt;
Remember: If in doubt, search for the specific error message along with &amp;quot;Debian&amp;quot; and the version number. e.g. Debian 13 or point release if needed, Debian 13,1&lt;br /&gt;
&lt;br /&gt;
As usual I welcome any comments, suggestions or resources : dev@divsmart.com or distro-nix on Debian Forum.&lt;br /&gt;
[[Category:HowTo]]&lt;br /&gt;
[[Category:Networking]]&lt;br /&gt;
[[Category:Full Paper]]&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Main_Page&amp;diff=201</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Main_Page&amp;diff=201"/>
		<updated>2026-03-10T13:03:36Z</updated>

		<summary type="html">&lt;p&gt;Donald: /* Guides (reference) */ Minor word change to title&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Welcome to the Debian User Forum Archives. =&lt;br /&gt;
&lt;br /&gt;
This wiki is dedicated specific member solutions from the [https://forums.debian.net Debian User Forums] and not to be confused with the larger man style documentation driven official [https://wiki.debian.org Debian Project Wiki].&lt;br /&gt;
&lt;br /&gt;
Our works here are citable formats of some of our best threads, member contributions, guides, and information that can provide assistance on or offline. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== About ==&lt;br /&gt;
About:&lt;br /&gt;
* [[Archive Debian Forums:About|Archive Debian Forums]]&lt;br /&gt;
* [[Debian User Forums]]&lt;br /&gt;
* [[The Debian Project]]&lt;br /&gt;
* [[Forum jokes, lingo, and memorable quotes]]&lt;br /&gt;
&lt;br /&gt;
== Guides (reference) ==&lt;br /&gt;
&lt;br /&gt;
* [[Root, Sudo, and SU|Root, sudo, su, and su -]] &amp;lt;small&amp;gt;(forum archive)&amp;lt;/small&amp;gt;&lt;br /&gt;
* [[Debian First Aid Kit]] &amp;lt;small&amp;gt;(full paper)&amp;lt;/small&amp;gt;&lt;br /&gt;
* [[Fonts and Themes in Cinnamon Desktop]] &amp;lt;small&amp;gt;(full paper)&amp;lt;/small&amp;gt;&lt;br /&gt;
* [[To install Firefox from Mozilla repo|Installing Firefox from the Mozilla repository]] &amp;lt;small&amp;gt;(forum archive)&amp;lt;/small&amp;gt;&lt;br /&gt;
* [[Security Hardening for Debian Users: Protecting Against Targeted Attacks]] &amp;lt;small&amp;gt;(full paper)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== HowTo (guides) == &lt;br /&gt;
* [[MTR Network Diagnostics]]  &amp;lt;small&amp;gt;(full paper)&amp;lt;/small&amp;gt;&lt;br /&gt;
* [[WiFi Signal Strength and Sharing]] &amp;lt;small&amp;gt;(forum archive)&amp;lt;/small&amp;gt;&lt;br /&gt;
* [[REFInd USB Drive (for emergency boot)]] &amp;lt;small&amp;gt;(forum archive)&amp;lt;/small&amp;gt;&lt;br /&gt;
* [[Trixie iwd]] &amp;lt;small&amp;gt;(forum archive)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Licensing and Use ==&lt;br /&gt;
Licensing:&lt;br /&gt;
* [[Publish using CC International licencing and your Forum name]].&lt;br /&gt;
* [[Archive AI Use]]&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Main_Page&amp;diff=195</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Main_Page&amp;diff=195"/>
		<updated>2026-02-28T17:53:57Z</updated>

		<summary type="html">&lt;p&gt;Donald: /* About */ moved AI policy and changed Licensing to Licensing and Use. Added the about page for the archive.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Welcome to the Debian User Forum Archives. =&lt;br /&gt;
&lt;br /&gt;
This wiki is dedicated specific member solutions from the [https://forums.debian.net Debian User Forums] and not to be confused with the larger man style documentation driven official [https://wiki.debian.org Debian Project Wiki].&lt;br /&gt;
&lt;br /&gt;
Our works here are citable formats of some of our best threads, member contributions, guides, and information that can provide assistance on or offline. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== About ==&lt;br /&gt;
About:&lt;br /&gt;
* [[Archive Debian Forums:About|Archive Debian Forums]]&lt;br /&gt;
* [[Debian User Forums]]&lt;br /&gt;
* [[The Debian Project]]&lt;br /&gt;
* [[Forum jokes, lingo, and memorable quotes]]&lt;br /&gt;
&lt;br /&gt;
== Guides (reference) ==&lt;br /&gt;
&lt;br /&gt;
* [[Root, Sudo, and SU|Root, sudo, su, and su -]] &amp;lt;small&amp;gt;(forum archive)&amp;lt;/small&amp;gt;&lt;br /&gt;
* [[Debian First Aid Kit|My Debian First Aid Kit]] &amp;lt;small&amp;gt;(full paper)&amp;lt;/small&amp;gt;&lt;br /&gt;
* [[Fonts and Themes in Cinnamon Desktop]] &amp;lt;small&amp;gt;(full paper)&amp;lt;/small&amp;gt;&lt;br /&gt;
* [[To install Firefox from Mozilla repo|Installing Firefox from the Mozilla repository]] &amp;lt;small&amp;gt;(forum archive)&amp;lt;/small&amp;gt;&lt;br /&gt;
* [[Security Hardening for Debian Users: Protecting Against Targeted Attacks]] &amp;lt;small&amp;gt;(full paper)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== HowTo (guides) == &lt;br /&gt;
* [[MTR Network Diagnostics]]  &amp;lt;small&amp;gt;(full paper)&amp;lt;/small&amp;gt;&lt;br /&gt;
* [[WiFi Signal Strength and Sharing]] &amp;lt;small&amp;gt;(forum archive)&amp;lt;/small&amp;gt;&lt;br /&gt;
* [[REFInd USB Drive (for emergency boot)]] &amp;lt;small&amp;gt;(forum archive)&amp;lt;/small&amp;gt;&lt;br /&gt;
* [[Trixie iwd]] &amp;lt;small&amp;gt;(forum archive)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Licensing and Use ==&lt;br /&gt;
Licensing:&lt;br /&gt;
* [[Publish using CC International licencing and your Forum name]].&lt;br /&gt;
* [[Archive AI Use]]&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=The_Debian_Project&amp;diff=194</id>
		<title>The Debian Project</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=The_Debian_Project&amp;diff=194"/>
		<updated>2026-02-28T17:50:24Z</updated>

		<summary type="html">&lt;p&gt;Donald: Typo correction, Link correction.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [https://www.debian.org/ Debian Project]  is an association of individuals who have made common cause to create a free operating system. This operating system that we have created is called &#039;&#039;&#039;Debian&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
An operating system is the set of basic programs and utilities that make your computer run. At the core of an operating system is the kernel. The kernel is the most fundamental program on the computer and does all the basic housekeeping and lets you start other programs.&lt;br /&gt;
&lt;br /&gt;
Debian systems currently use the Linux kernel or the FreeBSD kernel. Linux is a piece of software started by Linus Torvalds and supported by thousands of programmers worldwide. FreeBSD is an operating system including a kernel and other software.&lt;br /&gt;
&lt;br /&gt;
However, work is in progress to provide Debian for other kernels, primarily for the Hurd. The Hurd is a collection of servers that run on top of a microkernel (such as Mach) to implement different features. The Hurd is free software produced by the GNU project.&lt;br /&gt;
&lt;br /&gt;
A large part of the basic tools that fill out the operating system come from the GNU project; hence the names: GNU/Linux and GNU/Hurd. These tools are also free.&lt;br /&gt;
&lt;br /&gt;
Of course, the thing that people want is application software: programs to help them get what they want to do done, from editing documents to running a business to playing games to writing more software. Debian comes with over 70000 packages (precompiled software that is bundled up in a nice format for easy installation on your machine), a package manager (APT), and other utilities that make it possible to manage thousands of packages on thousands of computers as easily as installing a single application. All of it free.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a bit like a tower. At the base is the kernel. On top of that are all the basic tools. Next is all the software that you run on the computer. At the top of the tower is Debian — carefully organizing and fitting everything so it all works together.&lt;br /&gt;
&lt;br /&gt;
[https://www.debian.org/intro/about About Debian]&lt;br /&gt;
&lt;br /&gt;
[https://debian.org The Debian Project]&lt;br /&gt;
[[Category:Debian]]&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Archive_Debian_Forums:About&amp;diff=193</id>
		<title>Archive Debian Forums:About</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Archive_Debian_Forums:About&amp;diff=193"/>
		<updated>2026-02-26T02:26:31Z</updated>

		<summary type="html">&lt;p&gt;Donald: Slight wording change&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== About Archive Debian Forums: ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;&#039;Archive Debian Forums exists because good technical work deserves a permanent home&#039;&#039;.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The Debian forums hold a lot of useful knowledge—tested procedures, hard-won solutions, and practical guides built from real experience. The Archives allows the authors to have &#039;&#039;&#039;cited&#039;&#039;&#039; works and &#039;&#039;&#039;permanent- links&#039;&#039;&#039; to their works something the forums cannot offer. &lt;br /&gt;
&lt;br /&gt;
Forum threads age, and when the forums are down or gone, that knowledge is gone with them.&lt;br /&gt;
&lt;br /&gt;
This archive means content is attributed, versioned, and stable—available whether the forums are there or not. If you wrote something worth keeping, it gets a permanent link. If you are looking for something or sharing something, even in your own writing, you can cite what you find in a readable and professional format.&lt;br /&gt;
&lt;br /&gt;
We&#039;re not an open wiki. Submissions go through a review process, which keeps the quality high and the spam out. That accountability runs both ways: authors stand behind what they publish, and readers can trust that what they&#039;re reading has been verified by their peers, and is known to work with their version.&lt;br /&gt;
&lt;br /&gt;
With that being said, please enjoy the best work of the Debian User Forum community.&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Archive_Debian_Forums:About&amp;diff=192</id>
		<title>Archive Debian Forums:About</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Archive_Debian_Forums:About&amp;diff=192"/>
		<updated>2026-02-26T02:04:52Z</updated>

		<summary type="html">&lt;p&gt;Donald: Page creation, credit to @distro-nix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== About Archive Debian Forums: ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;&#039;Archive Debian Forums exists because good technical work deserves a permanent home&#039;&#039;.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The Debian forums hold a lot of useful knowledge—tested procedures, hard-won solutions, and practical guides built from real experience. The Archives allows the authors to have &#039;&#039;&#039;cited&#039;&#039;&#039; works and &#039;&#039;&#039;permanent- links&#039;&#039;&#039; to their works something the forums cannot offer for works. &lt;br /&gt;
&lt;br /&gt;
Forum threads age, and when the forums are down or gone, that knowledge is gone with them.&lt;br /&gt;
&lt;br /&gt;
This archive means content is attributed, versioned, and stable—available whether the forums are there or not. If you wrote something worth keeping, it gets a permanent link. If you are looking for something or sharing something, even in your own writing, you can cite what you find.&lt;br /&gt;
&lt;br /&gt;
We&#039;re not an open wiki. Submissions go through a review process, which keeps the quality high and the spam out. That accountability runs both ways: authors stand behind what they publish, and readers can trust that what they&#039;re reading has been verified by their peers, and is known to work with their version.&lt;br /&gt;
&lt;br /&gt;
With that being said, please enjoy the best work of the Debian User Forum community.&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=MTR_Network_Diagnostics&amp;diff=191</id>
		<title>MTR Network Diagnostics</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=MTR_Network_Diagnostics&amp;diff=191"/>
		<updated>2026-02-24T18:10:14Z</updated>

		<summary type="html">&lt;p&gt;Donald: Added categories&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= MTR: Network Path Diagnostics =&lt;br /&gt;
&lt;br /&gt;
MTR combines the functionality of ping and traceroute into a single tool that monitors every hop along a network path continuously, producing statistical output that identifies where latency and packet loss actually occur. When basic connectivity tools confirm a problem exists but don’t locate it, MTR provides the data needed to isolate it.&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt install mtr&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MTR is available in the Debian main repository and requires no additional sources. It is maintained across all current Debian releases and installs without external dependencies. The package name is mtr, which includes both the command-line interface and mtr-packet, the helper binary responsible for sending and receiving network packets.&lt;br /&gt;
&lt;br /&gt;
=== Basic Usage ===&lt;br /&gt;
MTR operates in two modes: interactive, which displays a live updating view of the network path, and report mode, which runs a fixed number of cycles and prints a summary.&lt;br /&gt;
&lt;br /&gt;
* Interactive mode&lt;br /&gt;
&amp;lt;code&amp;gt;mtr example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Report mode — 50 cycles, no DNS resolution&lt;br /&gt;
&amp;lt;code&amp;gt;mtr --report --report-cycles 50 --no-dns example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TCP mode — useful when ICMP is filtered&lt;br /&gt;
&amp;lt;code&amp;gt;sudo mtr --tcp --port 443 example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Save report to file&lt;br /&gt;
&amp;lt;code&amp;gt;mtr --report --report-cycles 100 --no-dns example.com &amp;gt; mtr-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Output Example&lt;br /&gt;
|-&lt;br /&gt;
! Host !! hostname !! Loss% !! Snt !! Last !! Ave !! Best !! Wrst !! StDEV&lt;br /&gt;
|-&lt;br /&gt;
| 1. || 192.168.1.1 || 0.0% || 50 || 1.2 || 1.5 || 1.0 || 2.3 || 0.4 &lt;br /&gt;
|-&lt;br /&gt;
| 2.  || 10.0.0.1    || 0.0% || 50 || 8.5 || 9.2 || 7.8 || 12.1 || 1.3 &lt;br /&gt;
|-&lt;br /&gt;
| 3.  || isp-gateway.net ||  0.0% || 50 || 15.3 || 16.1 || 14.2 || 19.8 || 1.8 &lt;br /&gt;
|-&lt;br /&gt;
| 4.  || ??? || 100.0% || 50 || 0.0 || 0.0 || 0.0 || 0.0 || 0.0 &lt;br /&gt;
|-&lt;br /&gt;
| 5.  || destination.com || 0.0%||    50||   25.4||  26.8||  24.1|| 32.5||   2.4&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
Each row represents one hop. The columns report packet loss percentage, packets sent, and latency values in milliseconds — last, average, best, worst, and standard deviation. Standard deviation measures consistency: a low value indicates stable latency, a high value indicates jitter.&lt;br /&gt;
&lt;br /&gt;
==== Interpreting Results ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Packet loss at an intermediate hop that does not persist to subsequent hops&#039;&#039;&#039; is typically not a network problem. Many routers deprioritise or rate-limit ICMP responses while forwarding traffic normally. If hop 4 shows 100% loss but hop 5 responds cleanly, traffic is flowing through hop 4 — it simply isn’t generating diagnostic replies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Packet loss that begins at a hop and continues through to the destination&#039;&#039;&#039; indicates a genuine problem at or beyond that hop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A sudden increase in latency at a specific hop that persists to all subsequent hops&#039;&#039;&#039; points to a congested or slow link at that point in the path.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;High standard deviation&#039;&#039;&#039; indicates unstable latency, which affects real-time applications such as VoIP and video conferencing even when average latency appears acceptable.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A large latency increase with stable standard deviation and no packet loss&#039;&#039;&#039; reflects geographic distance or a slower interconnect, not a fault.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problems confined to the first hop&#039;&#039;&#039; — your local router — and absent from all subsequent hops point to a local network issue: wireless interference, a misconfigured interface, or a problem with the router itself.&lt;br /&gt;
&lt;br /&gt;
==== Practical Scenarios ====&lt;br /&gt;
===== Isolating a problem for an ISP or hosting provider =====&lt;br /&gt;
&lt;br /&gt;
Run an extended report against a known external address and save the output:&lt;br /&gt;
&amp;lt;code&amp;gt;mtr --report-cycles 100 --no-dns 8.8.8.8 &amp;gt; isp-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The report shows exactly where in the path packet loss or latency appears, which hop belongs to which network, and whether the problem is within the provider’s infrastructure or beyond it.&lt;br /&gt;
&lt;br /&gt;
===== Testing when ICMP is filtered =====&lt;br /&gt;
Some paths block ICMP but pass TCP traffic. Testing with TCP against a specific port confirms whether a service is reachable end-to-end:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo mtr --tcp --port 22 --report-cycles 50 remote-server.com&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo mtr --tcp --port 443 --report-cycles 50 remote-server.com&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
===== Diagnosing jitter for real-time applications =====&lt;br /&gt;
Run a longer test and focus on the StDev column:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mtr --report-cycles 200 game-server.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Values above 5ms in the StDev column at any hop that persists to the destination will affect latency-sensitive applications.&lt;br /&gt;
&lt;br /&gt;
==== Catching intermittent problems ====&lt;br /&gt;
Intermittent issues require longer observation windows than a standard report provides:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mtr --report-cycles 500 --interval 1 target.com &amp;gt; long-test.txt&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Protocol Selection =====&lt;br /&gt;
&lt;br /&gt;
MTR supports ICMP (default), UDP, and TCP. When one protocol appears to show loss or filtering, testing with another confirms whether the issue is protocol-specific or affects all traffic:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Icmp&#039;&#039;&lt;br /&gt;
 mtr example.com &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;UDP&#039;&#039;&lt;br /&gt;
 mtr --udp example.com &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TCP on port 80&#039;&#039;&lt;br /&gt;
 sudo mtr --tcp --port 80 example.com &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Output Formats =====&lt;br /&gt;
MTR can produce machine-readable output for logging or automated analysis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
mtr --report --csv example.com&lt;br /&gt;
&lt;br /&gt;
mtr --report --json example.com&lt;br /&gt;
&lt;br /&gt;
mtr --report --xml example.com&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Additional Options =====&lt;br /&gt;
* Show both hostname and IP address&lt;br /&gt;
&amp;lt;code&amp;gt;mtr --show-ips example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Display Autonomous System numbers&lt;br /&gt;
&amp;lt;code&amp;gt;mtr --aslookup example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Limit maximum hops&lt;br /&gt;
&amp;lt;code&amp;gt;mtr --max-ttl 20 example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Specify source address on systems with multiple interfaces&lt;br /&gt;
&amp;lt;code&amp;gt;mtr --address 192.168.1.100 example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Force IPv4 or IPv6&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
mtr -4 example.com&lt;br /&gt;
&lt;br /&gt;
mtr -6 example.com&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Interactive Mode Key Bindings =====&lt;br /&gt;
In interactive mode, the following keys are available:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Available keys&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Action&lt;br /&gt;
|-&lt;br /&gt;
| d || Toggle display mode&lt;br /&gt;
|-&lt;br /&gt;
| n || Toggle between hostnames and IP addresses&lt;br /&gt;
|-&lt;br /&gt;
| r || Reset statistics&lt;br /&gt;
|-&lt;br /&gt;
| p || Pause and resume&lt;br /&gt;
|-&lt;br /&gt;
| u || Cycle between ICMP, UDP, and TCP&lt;br /&gt;
|-&lt;br /&gt;
| y || Toggle between IPv4 and IPv6&lt;br /&gt;
|-&lt;br /&gt;
| q || Quit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Useful Aliases =====&lt;br /&gt;
These aliases cover the most common diagnostic tasks. Add them to ~/.bashrc and reload with source ~/.bashrc:&lt;br /&gt;
&lt;br /&gt;
* Standard report — 50 cycles, no DNS&lt;br /&gt;
&amp;lt;code&amp;gt;alias mtrreport=&#039;mtr --report --report-cycles 50 --no-dns&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Extended report — 100 cycles&lt;br /&gt;
&amp;lt;code&amp;gt;alias mtrlong=&#039;mtr --report --report-cycles 100 --no-dns&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* HTTPS path test&lt;br /&gt;
&amp;lt;code&amp;gt;alias mtrhttps=&#039;sudo mtr --tcp --port 443 --report-cycles 50&#039;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Permission Note =====&lt;br /&gt;
TCP mode on privileged ports requires either sudo or the cap_net_raw capability set on the mtr-packet binary:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo setcap cap_net_raw+ep /usr/bin/mtr-packet&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After setting the capability, TCP tests run without sudo.&lt;br /&gt;
&lt;br /&gt;
Remember: If in doubt, search for the specific error message along with &amp;quot;Debian&amp;quot; and the version number. e.g. Debian 13 or point release if needed, Debian 13,1&lt;br /&gt;
&lt;br /&gt;
As usual I welcome any comments, suggestions or resources : dev@divsmart.com or distro-nix on Debian Forum.&lt;br /&gt;
[[Category:HowTo]]&lt;br /&gt;
[[Category:Networking]]&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Main_Page&amp;diff=190</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Main_Page&amp;diff=190"/>
		<updated>2026-02-24T18:09:37Z</updated>

		<summary type="html">&lt;p&gt;Donald: /* HowTo (guides) */ Added section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Welcome to the Debian User Forum Archives. =&lt;br /&gt;
&lt;br /&gt;
This wiki is dedicated specific member solutions from the [https://forums.debian.net Debian User Forums] and not to be confused with the larger man style documentation driven official [https://wiki.debian.org Debian Project Wiki].&lt;br /&gt;
&lt;br /&gt;
Our works here are citable formats of some of our best threads, member contributions, guides, and information that can provide assistance on or offline. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== About ==&lt;br /&gt;
About:&lt;br /&gt;
* [[Debian User Forums]]&lt;br /&gt;
* [[The Debian Project]]&lt;br /&gt;
* [[Archive AI Use]]&lt;br /&gt;
* [[Forum jokes, lingo, and memorable quotes]]&lt;br /&gt;
&lt;br /&gt;
== Guides (reference) ==&lt;br /&gt;
&lt;br /&gt;
* [[Root, Sudo, and SU|Root, sudo, su, and su -]] &amp;lt;small&amp;gt;(forum archive)&amp;lt;/small&amp;gt;&lt;br /&gt;
* [[Debian First Aid Kit|My Debian First Aid Kit]] &amp;lt;small&amp;gt;(full paper)&amp;lt;/small&amp;gt;&lt;br /&gt;
* [[Fonts and Themes in Cinnamon Desktop]] &amp;lt;small&amp;gt;(full paper)&amp;lt;/small&amp;gt;&lt;br /&gt;
* [[To install Firefox from Mozilla repo|Installing Firefox from the Mozilla repository]] &amp;lt;small&amp;gt;(forum archive)&amp;lt;/small&amp;gt;&lt;br /&gt;
* [[Security Hardening for Debian Users: Protecting Against Targeted Attacks]] &amp;lt;small&amp;gt;(full paper)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== HowTo (guides) == &lt;br /&gt;
* [[MTR Network Diagnostics]]  &amp;lt;small&amp;gt;(full paper)&amp;lt;/small&amp;gt;&lt;br /&gt;
* [[WiFi Signal Strength and Sharing]] &amp;lt;small&amp;gt;(forum archive)&amp;lt;/small&amp;gt;&lt;br /&gt;
* [[REFInd USB Drive (for emergency boot)]] &amp;lt;small&amp;gt;(forum archive)&amp;lt;/small&amp;gt;&lt;br /&gt;
* [[Trixie iwd]] &amp;lt;small&amp;gt;(forum archive)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
Licensing:&lt;br /&gt;
* [[Publish using CC International licencing and your Forum name]].&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=MTR_Network_Diagnostics&amp;diff=189</id>
		<title>MTR Network Diagnostics</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=MTR_Network_Diagnostics&amp;diff=189"/>
		<updated>2026-02-24T18:08:35Z</updated>

		<summary type="html">&lt;p&gt;Donald: New page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= MTR: Network Path Diagnostics =&lt;br /&gt;
&lt;br /&gt;
MTR combines the functionality of ping and traceroute into a single tool that monitors every hop along a network path continuously, producing statistical output that identifies where latency and packet loss actually occur. When basic connectivity tools confirm a problem exists but don’t locate it, MTR provides the data needed to isolate it.&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt install mtr&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MTR is available in the Debian main repository and requires no additional sources. It is maintained across all current Debian releases and installs without external dependencies. The package name is mtr, which includes both the command-line interface and mtr-packet, the helper binary responsible for sending and receiving network packets.&lt;br /&gt;
&lt;br /&gt;
=== Basic Usage ===&lt;br /&gt;
MTR operates in two modes: interactive, which displays a live updating view of the network path, and report mode, which runs a fixed number of cycles and prints a summary.&lt;br /&gt;
&lt;br /&gt;
* Interactive mode&lt;br /&gt;
&amp;lt;code&amp;gt;mtr example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Report mode — 50 cycles, no DNS resolution&lt;br /&gt;
&amp;lt;code&amp;gt;mtr --report --report-cycles 50 --no-dns example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TCP mode — useful when ICMP is filtered&lt;br /&gt;
&amp;lt;code&amp;gt;sudo mtr --tcp --port 443 example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Save report to file&lt;br /&gt;
&amp;lt;code&amp;gt;mtr --report --report-cycles 100 --no-dns example.com &amp;gt; mtr-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Output Example&lt;br /&gt;
|-&lt;br /&gt;
! Host !! hostname !! Loss% !! Snt !! Last !! Ave !! Best !! Wrst !! StDEV&lt;br /&gt;
|-&lt;br /&gt;
| 1. || 192.168.1.1 || 0.0% || 50 || 1.2 || 1.5 || 1.0 || 2.3 || 0.4 &lt;br /&gt;
|-&lt;br /&gt;
| 2.  || 10.0.0.1    || 0.0% || 50 || 8.5 || 9.2 || 7.8 || 12.1 || 1.3 &lt;br /&gt;
|-&lt;br /&gt;
| 3.  || isp-gateway.net ||  0.0% || 50 || 15.3 || 16.1 || 14.2 || 19.8 || 1.8 &lt;br /&gt;
|-&lt;br /&gt;
| 4.  || ??? || 100.0% || 50 || 0.0 || 0.0 || 0.0 || 0.0 || 0.0 &lt;br /&gt;
|-&lt;br /&gt;
| 5.  || destination.com || 0.0%||    50||   25.4||  26.8||  24.1|| 32.5||   2.4&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
Each row represents one hop. The columns report packet loss percentage, packets sent, and latency values in milliseconds — last, average, best, worst, and standard deviation. Standard deviation measures consistency: a low value indicates stable latency, a high value indicates jitter.&lt;br /&gt;
&lt;br /&gt;
==== Interpreting Results ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Packet loss at an intermediate hop that does not persist to subsequent hops&#039;&#039;&#039; is typically not a network problem. Many routers deprioritise or rate-limit ICMP responses while forwarding traffic normally. If hop 4 shows 100% loss but hop 5 responds cleanly, traffic is flowing through hop 4 — it simply isn’t generating diagnostic replies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Packet loss that begins at a hop and continues through to the destination&#039;&#039;&#039; indicates a genuine problem at or beyond that hop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A sudden increase in latency at a specific hop that persists to all subsequent hops&#039;&#039;&#039; points to a congested or slow link at that point in the path.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;High standard deviation&#039;&#039;&#039; indicates unstable latency, which affects real-time applications such as VoIP and video conferencing even when average latency appears acceptable.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A large latency increase with stable standard deviation and no packet loss&#039;&#039;&#039; reflects geographic distance or a slower interconnect, not a fault.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problems confined to the first hop&#039;&#039;&#039; — your local router — and absent from all subsequent hops point to a local network issue: wireless interference, a misconfigured interface, or a problem with the router itself.&lt;br /&gt;
&lt;br /&gt;
==== Practical Scenarios ====&lt;br /&gt;
===== Isolating a problem for an ISP or hosting provider =====&lt;br /&gt;
&lt;br /&gt;
Run an extended report against a known external address and save the output:&lt;br /&gt;
&amp;lt;code&amp;gt;mtr --report-cycles 100 --no-dns 8.8.8.8 &amp;gt; isp-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The report shows exactly where in the path packet loss or latency appears, which hop belongs to which network, and whether the problem is within the provider’s infrastructure or beyond it.&lt;br /&gt;
&lt;br /&gt;
===== Testing when ICMP is filtered =====&lt;br /&gt;
Some paths block ICMP but pass TCP traffic. Testing with TCP against a specific port confirms whether a service is reachable end-to-end:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo mtr --tcp --port 22 --report-cycles 50 remote-server.com&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo mtr --tcp --port 443 --report-cycles 50 remote-server.com&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
===== Diagnosing jitter for real-time applications =====&lt;br /&gt;
Run a longer test and focus on the StDev column:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mtr --report-cycles 200 game-server.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Values above 5ms in the StDev column at any hop that persists to the destination will affect latency-sensitive applications.&lt;br /&gt;
&lt;br /&gt;
==== Catching intermittent problems ====&lt;br /&gt;
Intermittent issues require longer observation windows than a standard report provides:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mtr --report-cycles 500 --interval 1 target.com &amp;gt; long-test.txt&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Protocol Selection =====&lt;br /&gt;
&lt;br /&gt;
MTR supports ICMP (default), UDP, and TCP. When one protocol appears to show loss or filtering, testing with another confirms whether the issue is protocol-specific or affects all traffic:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Icmp&#039;&#039;&lt;br /&gt;
 mtr example.com &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;UDP&#039;&#039;&lt;br /&gt;
 mtr --udp example.com &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TCP on port 80&#039;&#039;&lt;br /&gt;
 sudo mtr --tcp --port 80 example.com &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Output Formats =====&lt;br /&gt;
MTR can produce machine-readable output for logging or automated analysis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
mtr --report --csv example.com&lt;br /&gt;
&lt;br /&gt;
mtr --report --json example.com&lt;br /&gt;
&lt;br /&gt;
mtr --report --xml example.com&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Additional Options =====&lt;br /&gt;
* Show both hostname and IP address&lt;br /&gt;
&amp;lt;code&amp;gt;mtr --show-ips example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Display Autonomous System numbers&lt;br /&gt;
&amp;lt;code&amp;gt;mtr --aslookup example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Limit maximum hops&lt;br /&gt;
&amp;lt;code&amp;gt;mtr --max-ttl 20 example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Specify source address on systems with multiple interfaces&lt;br /&gt;
&amp;lt;code&amp;gt;mtr --address 192.168.1.100 example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Force IPv4 or IPv6&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
mtr -4 example.com&lt;br /&gt;
&lt;br /&gt;
mtr -6 example.com&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Interactive Mode Key Bindings =====&lt;br /&gt;
In interactive mode, the following keys are available:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Available keys&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Action&lt;br /&gt;
|-&lt;br /&gt;
| d || Toggle display mode&lt;br /&gt;
|-&lt;br /&gt;
| n || Toggle between hostnames and IP addresses&lt;br /&gt;
|-&lt;br /&gt;
| r || Reset statistics&lt;br /&gt;
|-&lt;br /&gt;
| p || Pause and resume&lt;br /&gt;
|-&lt;br /&gt;
| u || Cycle between ICMP, UDP, and TCP&lt;br /&gt;
|-&lt;br /&gt;
| y || Toggle between IPv4 and IPv6&lt;br /&gt;
|-&lt;br /&gt;
| q || Quit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Useful Aliases =====&lt;br /&gt;
These aliases cover the most common diagnostic tasks. Add them to ~/.bashrc and reload with source ~/.bashrc:&lt;br /&gt;
&lt;br /&gt;
* Standard report — 50 cycles, no DNS&lt;br /&gt;
&amp;lt;code&amp;gt;alias mtrreport=&#039;mtr --report --report-cycles 50 --no-dns&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Extended report — 100 cycles&lt;br /&gt;
&amp;lt;code&amp;gt;alias mtrlong=&#039;mtr --report --report-cycles 100 --no-dns&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* HTTPS path test&lt;br /&gt;
&amp;lt;code&amp;gt;alias mtrhttps=&#039;sudo mtr --tcp --port 443 --report-cycles 50&#039;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Permission Note =====&lt;br /&gt;
TCP mode on privileged ports requires either sudo or the cap_net_raw capability set on the mtr-packet binary:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo setcap cap_net_raw+ep /usr/bin/mtr-packet&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After setting the capability, TCP tests run without sudo.&lt;br /&gt;
&lt;br /&gt;
Remember: If in doubt, search for the specific error message along with &amp;quot;Debian&amp;quot; and the version number. e.g. Debian 13 or point release if needed, Debian 13,1&lt;br /&gt;
&lt;br /&gt;
As usual I welcome any comments, suggestions or resources : dev@divsmart.com or distro-nix on Debian Forum.&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Root,_Sudo,_and_SU&amp;diff=183</id>
		<title>Root, Sudo, and SU</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Root,_Sudo,_and_SU&amp;diff=183"/>
		<updated>2026-02-10T21:24:33Z</updated>

		<summary type="html">&lt;p&gt;Donald: Typo correction&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== The Concept of Root and User: ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;&#039;root&#039;&#039; is the user name or account that by default has access to all commands and files on a Linux or other Unix-like operating system. It is also referred to as the root account, root user and the superuser. &amp;lt;ref&amp;gt;root Definition &amp;quot;http://www.linfo.org/root.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An ordinary user only has control over files in his/her own &amp;quot;home&amp;quot; directory, though they may be &amp;quot;allowed&amp;quot; access to other files and applications.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;su, su -, and sudo:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;su&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;su -&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt; commands are used in a terminal to give you root access to the system. You can of course log on as root but this is not generally a good idea; once logged on in a particular identity, you tend to continue in that identity until you log off again, and it is bad practice to work as root for long periods.&lt;br /&gt;
&lt;br /&gt;
Instead you should use &amp;lt;code&amp;gt;su&amp;lt;/code&amp;gt; to become root &amp;quot;for the duration&amp;quot;. You will need to give the root password which you set when you installed Debian. Your prompt will change to show that you are now root. When you have done what you need to do as root, type exit to get back to your own identity.&lt;br /&gt;
&lt;br /&gt;
Debian has adopted specific variations for the &#039;&#039;&#039;su&#039;&#039;&#039; command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;su&amp;lt;/code&amp;gt; will give access to all commands except for critical system commands in the &amp;lt;code&amp;gt;/usr/sbin directory&amp;lt;/code&amp;gt;. This is a function of the environment which the &amp;lt;code&amp;gt;su&amp;lt;/code&amp;gt; command invokes - if you switch from user account to root with su, you retain that &#039;&#039;user&#039;s environment&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;su -&amp;lt;/code&amp;gt; will also switch you to &#039;&#039;root&#039;&#039; account but invokes the &#039;&#039;root environment&#039;&#039; which is required for any commands in the &amp;lt;nowiki&amp;gt;/usr/sbin&amp;lt;/nowiki&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
     For example, you can run the &amp;lt;code&amp;gt;chown&amp;lt;/code&amp;gt; command &#039;&#039;&#039;after&#039;&#039;&#039; elevating to root privileges with &amp;lt;code&amp;gt;su&amp;lt;/code&amp;gt;, but to run the &amp;lt;code&amp;gt;adduser&amp;lt;/code&amp;gt; command you need to get root with &amp;lt;code&amp;gt;su -&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt; should also allow running commands which require root environment like those in &amp;lt;nowiki&amp;gt;/usr/sbin/&amp;lt;/nowiki&amp;gt; eg. &amp;lt;code&amp;gt;sudo blkid&amp;lt;/code&amp;gt; (PM me if you have a different experience; it works here).&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt; command is a more selective alternative to su, particularly useful if there are several users of your system. &lt;br /&gt;
&lt;br /&gt;
By editing, as root, the file &amp;lt;nowiki&amp;gt;/etc/sudoers&amp;lt;/nowiki&amp;gt;, you can give root access to a specific individual for specific commands only. This is much safer than letting them know the root password. &lt;br /&gt;
&lt;br /&gt;
The man page for sudoers gives details of the syntax for this file.&lt;br /&gt;
&lt;br /&gt;
The Debian installer will ask if you wish to add your user to &#039;&#039;&#039;sudo&#039;&#039;&#039; and if you wish to create a root password. If you don&#039;t specify a root password, your user will automatically be added to &#039;&#039;&#039;sudo&#039;&#039;&#039;. If you didn&#039;t add you user to &#039;&#039;&#039;sudo&#039;&#039;&#039; during install, you can do it afterwards with the command (run as &amp;lt;code&amp;gt;su -&amp;lt;/code&amp;gt; and entering the root password):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;adduser &amp;lt;username&amp;gt; sudo&amp;lt;/code&amp;gt;&lt;br /&gt;
of course replace &amp;lt;username&amp;gt; with your actual user name.&lt;br /&gt;
&lt;br /&gt;
To use sudo, simply preface the command you wish to execute as root with the word &#039;&#039;&#039;sudo&#039;&#039;&#039;. You will be asked to enter your own user password to prove your identity. &lt;br /&gt;
&lt;br /&gt;
The system will then check whether you have been given permission to execute this particular command as root; if so, it will be executed. sudo &amp;quot;remembers&amp;quot; you for a short time so that you can give a group of sudo commands without entering your password each time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This thread was original posted on the Debian User Forums by @The Beginners guide, curated by @sunrat: http://forums.debian.net/viewtopic.php?f=32&amp;amp;t=58557&amp;amp;p=338548&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ref 1: http://www.linfo.org/root.html&lt;br /&gt;
&lt;br /&gt;
[[Category:Administration]]&lt;br /&gt;
[[Category:HowTo]]&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Debian_First_Aid_Kit&amp;diff=182</id>
		<title>Debian First Aid Kit</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Debian_First_Aid_Kit&amp;diff=182"/>
		<updated>2026-02-10T20:02:28Z</updated>

		<summary type="html">&lt;p&gt;Donald: Catefory&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= My Debian First Aid Kit =&lt;br /&gt;
&#039;&#039;&#039;All commands are verified on Debian 13.1 (Trixie) / 6.16.3+deb13-amd64 x64_64&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Created : 27/10/2025 15:54:21&lt;br /&gt;
&lt;br /&gt;
Last Updated : 27/10/2025 23:42:45 &#039;&#039;&#039;ID : 544000.3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Table of Contents ==&lt;br /&gt;
&lt;br /&gt;
# Issues&lt;br /&gt;
# Package Management Issues&lt;br /&gt;
# Disk &amp;amp; Filesystem Issues&lt;br /&gt;
# Performance Issues&lt;br /&gt;
# Service &amp;amp; Application Errors&lt;br /&gt;
# Permission &amp;amp; Access Issues&lt;br /&gt;
# Hardware IssuesSystem Freezes &amp;amp; Crashes&lt;br /&gt;
# Boot Problems&lt;br /&gt;
# Network&lt;br /&gt;
# Quick Diagnostic Commands&lt;br /&gt;
# Useful Aliases &amp;amp; Shortcuts&lt;br /&gt;
# Tips for Effective Troubleshooting&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 1. System Freezes &amp;amp; Crashes ==&lt;br /&gt;
&lt;br /&gt;
=== Check System Logs ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# View logs from previous boot (after freeze/crash)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;journalctl -b -1&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# List all available boots&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;journalctl --list-boots&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Show only kernel messages from previous boot&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;journalctl -b -1 -k&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Show errors and critical messages only&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;journalctl -b -1 -p err&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Save logs to file for analysis&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;journalctl -b -1 &amp;gt; ~/crash-log.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Common Freeze Causes to Look For ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Kernel panics&#039;&#039;&#039;: Search for &amp;quot;kernel panic&amp;quot; or &amp;quot;Oops&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;Out of Memory (OOM)&#039;&#039;&#039;: Search for &amp;quot;Out of memory&amp;quot; or &amp;quot;oom-killer&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;Hardware errors&#039;&#039;&#039;: Look for &amp;quot;MCE&amp;quot; (Machine Check Exception) or &amp;quot;hardware error&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;Driver issues&#039;&#039;&#039;: Check for module/driver failures&lt;br /&gt;
* &#039;&#039;&#039;Overheating&#039;&#039;&#039;: Check system temperatures&lt;br /&gt;
&lt;br /&gt;
=== Check System Resources ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# View memory usage&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;free -h&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check disk space&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;df -h&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Monitor system resources in real-time&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;htop&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# or&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;top&amp;lt;/code&amp;gt;&lt;br /&gt;
 (I prefer btop for better presentation)&lt;br /&gt;
 You would need to install it. sudo apt install btop&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check for disk errors&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo dmesg | grep -i error&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;These are permanent errors due to incomplete/buggy ACPI tables in the BIOS, but they are harmless :&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;0.686554] ACPI Error: No handler for Region [ECRM] (00000000201accc4) [EmbeddedControl] (20250404/evregion-131)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;0.686577] ACPI Error: Region EmbeddedControl (ID=3) has no handler (20250404/exfldio-261)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;0.686594] ACPI Error: Aborting method \_SB.GPIO._EVT due to previous error (AE_NOT_EXIST) (20250404/psparse-529)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. Boot Problems ==&lt;br /&gt;
&lt;br /&gt;
=== Check Boot Process ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# View systemd boot analysis&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;systemd-analyze blame&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# See what failed during boot&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;systemctl --failed&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check specific service status&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;systemctl status &amp;lt;service-name&amp;gt; e.g NetworkManager.service&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Access Recovery Mode ===&lt;br /&gt;
&lt;br /&gt;
# Reboot and hold &amp;lt;code&amp;gt;Shift&amp;lt;/code&amp;gt; to access GRUB menu (depending on your grub timing settings)&lt;br /&gt;
# Select &amp;quot;Advanced options&amp;quot;&lt;br /&gt;
# Choose recovery mode&lt;br /&gt;
# Select &amp;quot;root&amp;quot; for root shell access&lt;br /&gt;
&lt;br /&gt;
=== Common Boot Fixes ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Repair filesystem errors&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;Once you identify a device with lsblk&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo fsck /dev/sdXN&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Reinstall GRUB bootloader&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo grub-install /dev/sdX&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo update-grub&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check fstab for mount errors&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;cat /etc/fstab&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. Network Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Diagnose Network Connection ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Check network interfaces&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;ip addr show&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Test connectivity&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;ping -c 4 8.8.8.8&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;or&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;ping -c 6 2a00:1450:4007:809::200e&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check DNS resolution&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;nslookup google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# View routing table&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;ip route show&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check active connections&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;ss -tuln&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Restart Network Service ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# For systems with NetworkManager&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo systemctl restart NetworkManager&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# For systems with networking service&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo systemctl restart networking&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Bring interface down and up&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo ip link set eth0 down&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo ip link set eth0 up&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;If you need to prove to your server host something that is beyond your control, you can always get out the big guns with MTR.&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= &amp;lt;code&amp;gt;MTR (It’s Traceroute on Steroids)&amp;lt;/code&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
== What is MTR? ==&lt;br /&gt;
MTR combines the functionality of &amp;lt;code&amp;gt;ping&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;traceroute&amp;lt;/code&amp;gt; into a single real-time network diagnostic tool. It continuously monitors the path between your system and a destination, providing detailed statistics about latency and packet loss at each hop.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo apt install mtr&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Basic Usage ==&lt;br /&gt;
 &amp;lt;code&amp;gt;# Basic MTR (interactive mode)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Report mode (run 10 cycles and exit)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Specify number of pings&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 50 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Use TCP instead of ICMP&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --tcp google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Use UDP&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --udp google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# No DNS resolution (faster, shows IPs only)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --no-dns google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Show both hostnames and IPs&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --show-ips google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Understanding MTR Output ==&lt;br /&gt;
&lt;br /&gt;
=== Sample Output ===&lt;br /&gt;
 &amp;lt;code&amp;gt;HOST: hostname                    Loss%   Snt   Last   Avg  Best  Wrst StDev&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;1.|-- 192.168.1.1                0.0%    10    1.2   1.5   1.0   2.3   0.4&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;2.|-- 10.0.0.1                   0.0%    10    8.5   9.2   7.8  12.1   1.3&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;3.|-- isp-gateway.net            0.0%    10   15.3  16.1  14.2  19.8   1.8&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;4.|-- ???                       100.0%   10    0.0   0.0   0.0   0.0   0.0&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;5.|-- google.com                 0.0%    10   25.4  26.8  24.1  32.5   2.4&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Column Meanings ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;HOST&#039;&#039;&#039;: Hostname or IP address of each hop in the route&lt;br /&gt;
* &#039;&#039;&#039;Loss%&#039;&#039;&#039;: Percentage of packets lost at this hop&lt;br /&gt;
* &#039;&#039;&#039;Snt&#039;&#039;&#039;: Number of packets sent to this hop&lt;br /&gt;
* &#039;&#039;&#039;Last&#039;&#039;&#039;: Latency of the most recent packet (milliseconds)&lt;br /&gt;
* &#039;&#039;&#039;Avg&#039;&#039;&#039;: Average latency across all packets (milliseconds)&lt;br /&gt;
* &#039;&#039;&#039;Best&#039;&#039;&#039;: Lowest latency recorded (milliseconds)&lt;br /&gt;
* &#039;&#039;&#039;Wrst&#039;&#039;&#039;: Highest latency recorded (milliseconds)&lt;br /&gt;
* &#039;&#039;&#039;StDev&#039;&#039;&#039;: Standard deviation - measures latency consistency (lower is better)&lt;br /&gt;
&lt;br /&gt;
== Interpreting Results ==&lt;br /&gt;
&lt;br /&gt;
=== Healthy Network ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Loss% = 0%&#039;&#039;&#039; on all hops&lt;br /&gt;
* &#039;&#039;&#039;Stable latency&#039;&#039;&#039; (low StDev values)&lt;br /&gt;
* &#039;&#039;&#039;Gradual latency increase&#039;&#039;&#039; as hop count increases&lt;br /&gt;
* &#039;&#039;&#039;Consistent response times&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Problem Indicators ===&lt;br /&gt;
&lt;br /&gt;
==== 1. High Packet Loss at Specific Hop ====&lt;br /&gt;
 &amp;lt;code&amp;gt;5.|-- problem-router.net        25.0%    10   45.3  48.2  42.1  65.8  8.4&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Analysis:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* If loss continues to destination: Real problem at this router&lt;br /&gt;
* If loss only at this hop but NOT beyond: Router may be rate-limiting ICMP (false positive, not a real problem)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rule of thumb:&#039;&#039;&#039; If packet loss appears at hop N but hops N+1, N+2, etc. show 0% loss, it&#039;s usually just ICMP rate limiting.&lt;br /&gt;
&lt;br /&gt;
==== 2. High Latency at Specific Hop ====&lt;br /&gt;
 &amp;lt;code&amp;gt;3.|-- slow-link.net              0.0%    10  150.3 155.2 148.1 165.8  5.4&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Indicates:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Network bottleneck or congested link&lt;br /&gt;
* Geographical distance (intercontinental hops)&lt;br /&gt;
* Slow routing equipment&lt;br /&gt;
&lt;br /&gt;
==== 3. No Response (???) ====&lt;br /&gt;
 &amp;lt;code&amp;gt;4.|-- ???                       100.0%   10    0.0   0.0   0.0   0.0   0.0&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Possible causes:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Router configured to not respond to ICMP/traceroute packets&lt;br /&gt;
* Firewall blocking diagnostic packets&lt;br /&gt;
* &#039;&#039;&#039;Not necessarily a problem&#039;&#039;&#039; if later hops respond normally&lt;br /&gt;
&lt;br /&gt;
==== 4. High Jitter (StDev) ====&lt;br /&gt;
 &amp;lt;code&amp;gt;6.|-- unstable.net               0.0%    10   35.3  52.8  28.1  95.2  24.7&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Indicates:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Inconsistent latency (high StDev of 24.7ms)&lt;br /&gt;
* Network congestion or instability&lt;br /&gt;
* Poor for real-time applications (VoIP, gaming, video calls)&lt;br /&gt;
&lt;br /&gt;
==== 5. Sudden Latency Spike ====&lt;br /&gt;
 &amp;lt;code&amp;gt;1.|-- 192.168.1.1                0.0%    10    1.2   1.5   1.0   2.3   0.4&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;2.|-- 10.0.0.1                   0.0%    10    8.5   9.2   7.8  12.1   1.3&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;3.|-- problematic-hop.net        0.0%    10  180.5 185.2 178.1 195.8  6.4&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;4.|-- next-hop.net               0.0%    10  182.3 187.8 180.5 198.2  6.8&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Problem identified:&#039;&#039;&#039; Hop 3 introduces ~170ms of latency (jump from 9ms to 180ms)&lt;br /&gt;
&lt;br /&gt;
== Advanced Usage ==&lt;br /&gt;
&lt;br /&gt;
=== Report Mode with Different Output Formats ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# CSV format for logging and analysis&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report --csv google.com &amp;gt; network-report.csv&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# JSON output for parsing&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report --json google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# XML format&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report --xml google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Wide report (no abbreviations)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-wide google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Protocol Selection ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Use ICMP (default, requires no special permissions)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Use UDP (alternative to ICMP)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --udp google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Use TCP (useful for firewall testing)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --tcp google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Test specific TCP port&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo mtr --tcp --port 443 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo mtr --tcp --port 22 remote-server.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Timing and Duration ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Specify interval between pings (default 1 second)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --interval 0.5 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Extended test with 100 cycles&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 100 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Continuous monitoring (Ctrl+C to stop)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Quick 10-cycle report&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 10 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Advanced Options ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Show Autonomous System (AS) numbers&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --aslookup google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Set maximum number of hops&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --max-ttl 20 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Set packet size&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --psize 1000 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Show both IP and hostname&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --show-ips google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Specify source address (multiple network interfaces)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --address 192.168.1.100 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# IPv4 only&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr -4 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# IPv6 only&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr -6 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Interactive Mode Commands ==&lt;br /&gt;
When running MTR in interactive mode (just &amp;lt;code&amp;gt;mtr hostname&amp;lt;/code&amp;gt;), use these keys:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Key&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;h&#039;&#039;&#039;&lt;br /&gt;
|Display help&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;d&#039;&#039;&#039;&lt;br /&gt;
|Toggle display mode (cycle through different views)&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;n&#039;&#039;&#039;&lt;br /&gt;
|Toggle between hostnames and IP addresses&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;r&#039;&#039;&#039;&lt;br /&gt;
|Reset all statistics&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;p&#039;&#039;&#039;&lt;br /&gt;
|Pause/unpause the display&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;q&#039;&#039;&#039;&lt;br /&gt;
|Quit MTR&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;u&#039;&#039;&#039;&lt;br /&gt;
|Switch between ICMP, UDP, and TCP modes&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;y&#039;&#039;&#039;&lt;br /&gt;
|Switch between IPv4 and IPv6&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;o&#039;&#039;&#039;&lt;br /&gt;
|Toggle field display options&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;j&#039;&#039;&#039;&lt;br /&gt;
|Toggle latency display&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Practical Troubleshooting Scenarios ==&lt;br /&gt;
&lt;br /&gt;
=== Scenario 1: Diagnosing Slow Website ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Run extended test to get accurate statistics&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 100 --no-dns example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Look for:&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# - High average latency at specific hops&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# - Packet loss at destination&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# - High StDev values (jitter)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scenario 2: Testing if Firewall Blocks SSH ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Test SSH port (22) connectivity&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo mtr --tcp --port 22 --report-cycles 50 remote-server.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# If last hop shows 100% loss but earlier hops are fine:&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# - Port 22 might be filtered&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# - Try standard ICMP test for comparison&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scenario 3: ISP Performance Issues ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Test path to reliable external server&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 100 8.8.8.8&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Compare with another DNS server&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 100 1.1.1.1&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# If issues appear in first 3-4 hops: likely ISP problem&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# If issues appear later: problem is beyond your ISP&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scenario 4: VPN Troubleshooting ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Test before connecting to VPN&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 50 --no-dns google.com &amp;gt; before-vpn.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Test after connecting to VPN&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 50 --no-dns google.com &amp;gt; after-vpn.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Compare the two files to see VPN impact&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;diff before-vpn.txt after-vpn.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scenario 5: Gaming/Streaming Performance ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Test for jitter (important for real-time applications)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 200 game-server.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Look for:&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# - Low average latency (&amp;lt; 50ms for gaming)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# - Low StDev (&amp;lt; 5ms preferred)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# - Zero packet loss&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scenario 6: Intermittent Connectivity ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Long-running test to catch intermittent issues&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 500 --interval 1 target.com &amp;gt; long-test.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Monitor in real-time for several minutes&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr target.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# Watch for sudden spikes in Loss% or latency&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Continuous Monitoring ==&lt;br /&gt;
&lt;br /&gt;
=== Log Network Performance Over Time ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Create timestamped reports every hour&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;while true; do&amp;lt;/code&amp;gt;&lt;br /&gt;
     &amp;lt;code&amp;gt;timestamp=$(date +%Y%m%d-%H%M%S)&amp;lt;/code&amp;gt;&lt;br /&gt;
     &amp;lt;code&amp;gt;mtr --report --report-cycles 50 google.com &amp;gt; &amp;quot;mtr-$timestamp.txt&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
     &amp;lt;code&amp;gt;sleep 3600&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;done&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Monitor Multiple Destinations ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Create a simple monitoring script&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;#!/bin/bash&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;echo &amp;quot;=== MTR Report $(date) ===&amp;quot; &amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;echo &amp;quot;&amp;quot; &amp;gt;&amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;echo &amp;quot;Google DNS:&amp;quot; &amp;gt;&amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report --report-cycles 50 --no-dns 8.8.8.8 &amp;gt;&amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;echo &amp;quot;&amp;quot; &amp;gt;&amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;echo &amp;quot;Cloudflare DNS:&amp;quot; &amp;gt;&amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report --report-cycles 50 --no-dns 1.1.1.1 &amp;gt;&amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;echo &amp;quot;&amp;quot; &amp;gt;&amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;echo &amp;quot;Your Server:&amp;quot; &amp;gt;&amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report --report-cycles 50 your-server.com &amp;gt;&amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Useful Aliases for .bashrc ==&lt;br /&gt;
 &amp;lt;code&amp;gt;# Quick network path analysis&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias mtrreport=&#039;mtr --report --report-cycles 50 --no-dns&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Monitor connection to Google DNS&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias netcheck=&#039;mtr --report-cycles 20 8.8.8.8&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Extended network test&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias mtrlong=&#039;mtr --report-cycles 100&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# TCP port 443 test (HTTPS)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias mtrhttps=&#039;sudo mtr --tcp --port 443 --report-cycles 30&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Quick comparison of major DNS providers&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias dnstest=&#039;echo &amp;quot;Google:&amp;quot; &amp;amp;&amp;amp; mtr --report-cycles 20 8.8.8.8 &amp;amp;&amp;amp; echo -e &amp;quot;\nCloudflare:&amp;quot; &amp;amp;&amp;amp; mtr --report-cycles 20 1.1.1.1&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
After adding to &amp;lt;code&amp;gt;~/.bashrc&amp;lt;/code&amp;gt;:&lt;br /&gt;
 &amp;lt;code&amp;gt;source ~/.bashrc&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting Tips ==&lt;br /&gt;
&lt;br /&gt;
=== 1. Permission Issues ===&lt;br /&gt;
If you get permission errors with TCP mode:&lt;br /&gt;
 &amp;lt;code&amp;gt;# Use sudo for TCP on privileged ports&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo mtr --tcp --port 443 example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Or set capabilities (one-time setup)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo setcap cap_net_raw+ep /usr/bin/mtr-packet&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. False Positives ===&lt;br /&gt;
&#039;&#039;&#039;Common false positive:&#039;&#039;&#039; Packet loss at intermediate hops but NOT at the destination.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;code&amp;gt;3.|-- router.isp.net            20.0%    50   15.3  16.1  14.2  19.8   1.8&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;4.|-- next-hop.net               0.0%    50   18.5  19.2  17.8  22.1   1.3&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;5.|-- destination.com            0.0%    50   25.4  26.8  24.1  32.5   2.4&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;This is OK!&#039;&#039;&#039; Hop 3 shows 20% loss, but hops 4 and 5 show 0% loss. The router at hop 3 is rate-limiting ICMP responses, but actual traffic flows normally.&lt;br /&gt;
&lt;br /&gt;
=== 3. DNS Resolution Delays ===&lt;br /&gt;
If MTR seems slow to start:&lt;br /&gt;
 &amp;lt;code&amp;gt;# Skip DNS resolution for faster results&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --no-dns target.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Resolve names afterward if needed&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;host 203.0.113.1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. Comparing Results ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Run multiple tests and compare&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report --report-cycles 50 example.com &amp;gt; test1.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sleep 60&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report --report-cycles 50 example.com &amp;gt; test2.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;diff test1.txt test2.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When to Use MTR vs Other Tools ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tool&lt;br /&gt;
!Best For&lt;br /&gt;
!Limitations&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;MTR&#039;&#039;&#039;&lt;br /&gt;
|Continuous monitoring, identifying problem hops, detailed statistics&lt;br /&gt;
|Requires installation&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;ping&#039;&#039;&#039;&lt;br /&gt;
|Quick connectivity test, simple latency check&lt;br /&gt;
|Only tests endpoint&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;traceroute&#039;&#039;&#039;&lt;br /&gt;
|One-time path discovery&lt;br /&gt;
|No continuous monitoring&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;ss/netstat&#039;&#039;&#039;&lt;br /&gt;
|Local connection status&lt;br /&gt;
|Doesn&#039;t test remote paths&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Best Practices ==&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Run enough cycles&#039;&#039;&#039;: Use at least 50-100 cycles for accurate statistics&lt;br /&gt;
# &#039;&#039;&#039;Use --no-dns&#039;&#039;&#039;: Faster and avoids DNS resolution issues during testing&lt;br /&gt;
# &#039;&#039;&#039;Check multiple times&#039;&#039;&#039;: Network conditions vary; test at different times&lt;br /&gt;
# &#039;&#039;&#039;Compare protocols&#039;&#039;&#039;: Try ICMP, UDP, and TCP if one shows issues&lt;br /&gt;
# &#039;&#039;&#039;Document findings&#039;&#039;&#039;: Save reports with timestamps for trend analysis&lt;br /&gt;
# &#039;&#039;&#039;Test known-good hosts&#039;&#039;&#039;: Use 8.8.8.8 or 1.1.1.1 to verify your network first&lt;br /&gt;
# &#039;&#039;&#039;Be patient&#039;&#039;&#039;: Let MTR run for at least 30-60 seconds before drawing conclusions&lt;br /&gt;
&lt;br /&gt;
== Reading Between the Lines ==&lt;br /&gt;
&lt;br /&gt;
=== Good Network Health Example ===&lt;br /&gt;
 &amp;lt;code&amp;gt;HOST: hostname                    Loss%   Snt   Last   Avg  Best  Wrst StDev&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;1.|-- 192.168.1.1                0.0%    50    1.1   1.2   0.9   2.1   0.2&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;2.|-- 10.0.0.1                   0.0%    50    8.2   8.5   7.5  10.2   0.5&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;3.|-- isp-gateway.net            0.0%    50   15.1  15.5  14.0  18.3   0.8&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;4.|-- google.com                 0.0%    50   24.8  25.2  23.5  28.1   1.1&amp;lt;/code&amp;gt;&lt;br /&gt;
✅ No packet loss, consistent latency, low jitter&lt;br /&gt;
&lt;br /&gt;
=== Problem Network Example ===&lt;br /&gt;
 &amp;lt;code&amp;gt;HOST: hostname                    Loss%   Snt   Last   Avg  Best  Wrst StDev&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;1.|-- 192.168.1.1                0.0%    50    1.2   1.5   1.0   2.3   0.3&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;2.|-- 10.0.0.1                   5.0%    50   45.3  52.8  8.1  245.2  45.7&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;3.|-- ???                       100.0%   50    0.0   0.0   0.0   0.0   0.0&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;4.|-- destination.com           15.0%    50   95.4 125.8  48.2 385.5  78.2&amp;lt;/code&amp;gt;&lt;br /&gt;
❌ Packet loss at hop 2 and destination, high jitter, very high worst-case latency&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
MTR is your Swiss Army knife for network diagnostics. Key takeaways:&lt;br /&gt;
&lt;br /&gt;
* Use &amp;lt;code&amp;gt;--report-cycles 50+&amp;lt;/code&amp;gt; for reliable data&lt;br /&gt;
* Watch for packet loss at the &#039;&#039;&#039;destination&#039;&#039;&#039; (intermediate losses may be false positives)&lt;br /&gt;
* High &#039;&#039;&#039;StDev&#039;&#039;&#039; indicates unstable connection&lt;br /&gt;
* High &#039;&#039;&#039;Avg&#039;&#039;&#039; latency shows slow links&lt;br /&gt;
* Use &amp;lt;code&amp;gt;--no-dns&amp;lt;/code&amp;gt; for faster results&lt;br /&gt;
* Compare &#039;&#039;&#039;ICMP&#039;&#039;&#039;, &#039;&#039;&#039;UDP&#039;&#039;&#039;, and &#039;&#039;&#039;TCP&#039;&#039;&#039; modes if issues appear&lt;br /&gt;
* Test at different times of day for comprehensive analysis&lt;br /&gt;
&lt;br /&gt;
== 4. Package Management Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Fix Broken Packages ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Update package lists&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo apt update&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Fix broken dependencies&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo apt --fix-broken install&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Reconfigure packages&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo dpkg --configure -a&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;(if no output, there is nothing to do)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Clean package cache&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo apt clean&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo apt autoclean&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Remove unused packages&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo apt autoremove&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Handle Held or Locked Packages ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# If apt is locked, find the process&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo lsof /var/lib/dpkg/lock-frontend&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Force remove lock (use carefully)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo rm /var/lib/dpkg/lock-frontend&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo rm /var/lib/apt/lists/lock&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Reconfigure dpkg&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo dpkg --configure -a&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. Disk &amp;amp; Filesystem Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Check Disk Health ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Check disk space&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;df -h&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check inode usage&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;df -i&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# View disk I/O statistics&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;iostat -x 1&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;(Make sure you have sysstat which includes useful performance monitoring tools other than iostat - disk I/O statistics&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;mpstat&amp;lt;/code&amp;gt; - CPU statistics&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;sar&amp;lt;/code&amp;gt; - system activity reporter&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;pidstat&amp;lt;/code&amp;gt; - process statistics&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;cifsiostat&amp;lt;/code&amp;gt; - CIFS statistics&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&#039;&#039;# Show stats in MB instead of KB&#039;&#039; iostat -xm 2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&#039;&#039;# Monitor specific device&#039;&#039; iostat -x sda 1&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# Check for disk errors in dmesg&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo dmesg | grep -i &amp;quot;error\|fail&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# SMART disk health (if smartmontools installed)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo smartctl -a /dev/sda&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Repair Filesystem ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Unmount the partition first&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo umount /dev/sdXN&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Run filesystem check&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo fsck /dev/sdXN&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# For ext4 specifically&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo e2fsck -f /dev/sdXN&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6. Performance Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Identify Resource Hogs ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# CPU usage by process&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;top -o %CPU&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Memory usage by process&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;top -o %MEM&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Disk usage by directory&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;du -sh /* | sort -h&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Find large files&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;find / -type f -size +100M 2&amp;gt;/dev/null&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check running processes&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;ps aux --sort=-%mem | head -20&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== System Temperature Monitoring ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Install sensors (if not installed)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo apt install lm-sensors&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo sensors-detect&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# View temperatures&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sensors&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Real-time temperature monitoring&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;watch -n 2 sensors&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;&#039;&#039;I have it as an alias in ~/.bashrc&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;&#039;&#039;Go to 11. Useful Aliases &amp;amp; Shortcuts&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. Service &amp;amp; Application Errors ==&lt;br /&gt;
&lt;br /&gt;
=== Debug Service Problems ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Check service status&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo systemctl status service-name&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# View service logs&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo journalctl -u service-name&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Restart a service&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo systemctl restart service-name&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Enable service at boot&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo systemctl enable service-name&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# View recent service failures&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;journalctl -p err -b&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Application Crash Investigation ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Check for core dumps&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;ls -lh /var/crash/&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# View application-specific logs&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;ls /var/log/&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check syslog for application errors&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo tail -f /var/log/syslog&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 8. Permission &amp;amp; Access Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Fix Common Permission Problems ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Check file ownership&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;ls -l /path/to/file&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Change ownership&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo chown michael:michael /path/to/file&amp;lt;/code&amp;gt;&lt;br /&gt;
 user:group&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Change permissions&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo chmod 644 /path/to/file&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Recursively fix permissions&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo chown -R user:group /path/to/directory&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== User &amp;amp; Authentication Issues ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Check user information&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;id username&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# View user login history&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;last -a&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check failed login attempts&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo journalctl | grep &amp;quot;authentication failure&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Reset user password&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo passwd username&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 9. Hardware Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Identify Hardware ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# List all hardware&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo lshw -short&amp;lt;/code&amp;gt;&lt;br /&gt;
 (May not be installed by default)&lt;br /&gt;
 sudo apt install lshw&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# PCI devices&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;lspci -v&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# USB devices&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;lspci -v&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# CPU information&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;lscpu&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Memory information&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo dmidecode --type memory&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Check Hardware Errors ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Kernel ring buffer (hardware messages)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;dmesg | less&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;(If no output, good, no errors)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;q to quit&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Search for specific hardware issues&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;dmesg | grep -i &amp;quot;error\|fail\|warn&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check for USB issues&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;dmesg | grep -i usb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 10. Quick Diagnostic Commands ==&lt;br /&gt;
&lt;br /&gt;
=== System Information at a Glance ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Uptime and load average&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;uptime&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Kernel version&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;uname -r&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Debian version&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;cat /etc/debian_version&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# System summary&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo inxi -Fxz&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Emergency Toolkit ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Create a diagnostic report&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo journalctl -b &amp;gt; ~/system-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;dmesg &amp;gt;&amp;gt; ~/system-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;systemctl --failed &amp;gt;&amp;gt; ~/system-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;df -h &amp;gt;&amp;gt; ~/system-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;free -h &amp;gt;&amp;gt; ~/system-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Watch logs in real-time&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo journalctl -f&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Monitor system resources continuously&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;watch -n 1 &#039;free -h &amp;amp;&amp;amp; df -h&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 11. Useful Aliases &amp;amp; Shortcuts ==&lt;br /&gt;
Add these to your &amp;lt;code&amp;gt;~/.bashrc&amp;lt;/code&amp;gt; for quick access to common troubleshooting commands:&lt;br /&gt;
 &amp;lt;code&amp;gt;# Monitor system temperatures in real-time&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias temps=&amp;quot;watch -n 2 &#039;for i in /sys/class/hwmon/hwmon*/; do echo -n \&amp;quot;\$(cat \${i}name): \&amp;quot;; cat \${i}temp*_input 2&amp;gt;/dev/null | while read temp; do echo \&amp;quot;scale=1; \$temp/1000\&amp;quot; | bc; done | tr \&amp;quot;\n\&amp;quot; \&amp;quot; \&amp;quot;; echo \&amp;quot;°C\&amp;quot;; done&#039;&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;&#039;&#039;or run the watch command in the shell without the opening and closing double quotes.&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Quick system status&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias sysstat=&#039;echo &amp;quot;=== CPU ===&amp;quot; &amp;amp;&amp;amp; uptime &amp;amp;&amp;amp; echo -e &amp;quot;\n=== Memory ===&amp;quot; &amp;amp;&amp;amp; free -h &amp;amp;&amp;amp; echo -e &amp;quot;\n=== Disk ===&amp;quot; &amp;amp;&amp;amp; df -h &amp;amp;&amp;amp; echo -e &amp;quot;\n=== Top Processes ===&amp;quot; &amp;amp;&amp;amp; ps aux --sort=-%mem | head -10&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;(It’s a messy mayout, but I’m terrible with awk. Feel free to improve the layoput for me)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# View last boot logs&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias lastboot=&#039;journalctl -b -1&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check failed services&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias failedservices=&#039;systemctl --failed&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Monitor logs in real-time&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias watchlog=&#039;sudo journalctl -f&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Quick network status&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias netstat=&#039;ip addr show &amp;amp;&amp;amp; echo -e &amp;quot;\n=== Routes ===&amp;quot; &amp;amp;&amp;amp; ip route show&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
After adding these, run:&lt;br /&gt;
 &amp;lt;code&amp;gt;source ~/.bashrc&amp;lt;/code&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Tips for Your Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;First check logs&#039;&#039;&#039;: &amp;lt;code&amp;gt;journalctl&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;dmesg&amp;lt;/code&amp;gt; are your best friends&lt;br /&gt;
# &#039;&#039;&#039;Work through the sections&#039;&#039;&#039;: Change one thing at a time&lt;br /&gt;
# &#039;&#039;&#039;Document changes&#039;&#039;&#039;: Keep notes on what you&#039;ve tried&lt;br /&gt;
# &#039;&#039;&#039;Search for error messages&#039;&#039;&#039;: Copy exact error messages into search engines or AI&lt;br /&gt;
# &#039;&#039;&#039;Check recent changes&#039;&#039;&#039;: What you did before it happened? Install something, update packages, kernel?&lt;br /&gt;
# &#039;&#039;&#039;Make backups&#039;&#039;&#039;: Before major changes, backup important data&lt;br /&gt;
# &#039;&#039;&#039;Use verbose mode&#039;&#039;&#039;: Add &amp;lt;code&amp;gt;-v&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;-vv&amp;lt;/code&amp;gt; flags to commands for more detail&lt;br /&gt;
# &#039;&#039;&#039;Check forums&#039;&#039;&#039;: Debian forum, Reddit, Stack Exchange, and mailing lists&lt;br /&gt;
&lt;br /&gt;
----&#039;&#039;&#039;Remember&#039;&#039;&#039;: If in doubt, search for the specific error message along with &amp;quot;Debian&amp;quot; and the version number. e.g. Debian 13 or point release if needed, Debian 13,1&lt;br /&gt;
&lt;br /&gt;
As usual I welcome any comments, suggestions or resources : &#039;&#039;&#039;dev@divsmart.com&#039;&#039;&#039; or &#039;&#039;&#039;distro-nix&#039;&#039;&#039; on Debian Forum.&lt;br /&gt;
&lt;br /&gt;
[[Category:Troubleshooting]]&lt;br /&gt;
[[Category: Guides]]&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Main_Page&amp;diff=181</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Main_Page&amp;diff=181"/>
		<updated>2026-02-10T19:59:48Z</updated>

		<summary type="html">&lt;p&gt;Donald: /* Guides (reference) */ Page name changed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Welcome to the Debian User Forum Archives. =&lt;br /&gt;
&lt;br /&gt;
This wiki is dedicated specific member solutions from the [https://forums.debian.net Debian User Forums] and not to be confused with the larger man style documentation driven official [https://wiki.debian.org Debian Project Wiki].&lt;br /&gt;
&lt;br /&gt;
Our works here are citable formats of some of our best threads, member contributions, guides, and information that can provide assistance on or offline. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== About ==&lt;br /&gt;
About:&lt;br /&gt;
* [[Debian User Forums]]&lt;br /&gt;
* [[The Debian Project]]&lt;br /&gt;
* [[Archive AI Use]]&lt;br /&gt;
* [[Forum jokes, lingo, and memorable quotes]]&lt;br /&gt;
&lt;br /&gt;
== Guides (reference) ==&lt;br /&gt;
&lt;br /&gt;
* [[Root, Sudo, and SU|Root, sudo, su, and su -]] &amp;lt;small&amp;gt;(forum archive)&amp;lt;/small&amp;gt;&lt;br /&gt;
* [[Debian First Aid Kit|My Debian First Aid Kit]] &amp;lt;small&amp;gt;(full paper)&amp;lt;/small&amp;gt;&lt;br /&gt;
* [[Fonts and Themes in Cinnamon Desktop]] &amp;lt;small&amp;gt;(full paper)&amp;lt;/small&amp;gt;&lt;br /&gt;
* [[To install Firefox from Mozilla repo|Installing Firefox from the Mozilla repository]] &amp;lt;small&amp;gt;(forum archive)&amp;lt;/small&amp;gt;&lt;br /&gt;
* [[Security Hardening for Debian Users: Protecting Against Targeted Attacks]] &amp;lt;small&amp;gt;(full paper)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== HowTo (guides) == &lt;br /&gt;
* [[WiFi Signal Strength and Sharing]] &amp;lt;small&amp;gt;(forum archive)&amp;lt;/small&amp;gt;&lt;br /&gt;
* [[REFInd USB Drive (for emergency boot)]] &amp;lt;small&amp;gt;(forum archive)&amp;lt;/small&amp;gt;&lt;br /&gt;
* [[Trixie iwd]] &amp;lt;small&amp;gt;(forum archive)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
Licensing:&lt;br /&gt;
* [[Publish using CC International licencing and your Forum name]].&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Root,_Sudo,_and_SU&amp;diff=180</id>
		<title>Root, Sudo, and SU</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Root,_Sudo,_and_SU&amp;diff=180"/>
		<updated>2026-02-10T19:58:22Z</updated>

		<summary type="html">&lt;p&gt;Donald: Donald moved page Sudo to Root, Sudo, and SU without leaving a redirect: Clarification of title&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== The Concept of Root and User: ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;&#039;root&#039;&#039; is the user name or account that by default has access to all commands and files on a Linux or other Unix-like operating system. It is also referred to as the root account, root user and the superuser. &amp;lt;ref&amp;gt;root Definition &amp;quot;http://www.linfo.org/root.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An ordinary user only has control over files in his/her own &amp;quot;home&amp;quot; directory, though they may be &amp;quot;allowed&amp;quot; access to other files and applications.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;su, su -, and sudo:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;su&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;su -&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt; commands are used in a terminal to give you root access to the system. You can of course log on as root but this is not generally a good idea; once logged on in a particular identity, you tend to continue in that identity until you log off again, and it is bad practice to work as root for long periods.&lt;br /&gt;
&lt;br /&gt;
Instead you should use &amp;lt;code&amp;gt;su&amp;lt;/code&amp;gt; to become root &amp;quot;for the duration&amp;quot;. You will need to give the root password which you set when you installed Debian. Your prompt will change to show that you are now root. When you have done what you need to do as root, type exit to get back to your own identity.&lt;br /&gt;
&lt;br /&gt;
Debian has adopted specific variations for the &#039;&#039;&#039;su&#039;&#039;&#039; command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;su&amp;lt;/code&amp;gt; will give access to all commands except for critical system commands in the &amp;lt;code&amp;gt;/usr/sbin directory&amp;lt;/code&amp;gt;. This is a function of the environment which the &amp;lt;code&amp;gt;su&amp;lt;/code&amp;gt; command invokes - if you switch from user account to root with su, you retain that &#039;&#039;user&#039;s environment&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;su -&amp;lt;/code&amp;gt; will also switch you to &#039;&#039;root&#039;&#039; account but invokes the &#039;&#039;root environment&#039;&#039; which is required for any commands in the &amp;lt;nowiki&amp;gt;/usr/sbin&amp;lt;/nowiki&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
     For example, you can run the &amp;lt;code&amp;gt;chown&amp;lt;/code&amp;gt; command &#039;&#039;&#039;after&#039;&#039;&#039; elevating to root privileges with &amp;lt;code&amp;gt;su&amp;lt;/code&amp;gt;, but to run the &amp;lt;code&amp;gt;adduser&amp;lt;/code&amp;gt; command you need to get root with &amp;lt;code&amp;gt;su -&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt; should also allow running commands which require root environment like those in &amp;lt;nowiki&amp;gt;/usr/sbin/&amp;lt;/nowiki&amp;gt; eg. &amp;lt;code&amp;gt;sudo blkid&amp;lt;/code&amp;gt; (PM me if you have a different experience; it works here).&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt; command is a more selective alternative to su, particularly useful if there are several users of your system. &lt;br /&gt;
&lt;br /&gt;
By editing, as root, the file &amp;lt;nowiki&amp;gt;/etc/sudoers&amp;lt;/nowiki&amp;gt;, you can give root access to a specific individual for specific commands only. This is much safer than letting them know the root password. &lt;br /&gt;
&lt;br /&gt;
The man page for sudoers gives details of the syntax for this file.&lt;br /&gt;
&lt;br /&gt;
The Debian installer will ask if you wish to add your user to &#039;&#039;&#039;sudo&#039;&#039;&#039; and if you wish to create a root password. If you don&#039;t specify a root password, your user will automatically be added to &#039;&#039;&#039;sudo&#039;&#039;&#039;. If you didn&#039;t add you user to &#039;&#039;&#039;sudo&#039;&#039;&#039; during install, you can do it afterwards with the command (run as &amp;lt;code&amp;gt;su -&amp;lt;/code&amp;gt; and entering the root password):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;adduser &amp;lt;username&amp;gt; sudo&amp;lt;/code&amp;gt;&lt;br /&gt;
of course replace &amp;lt;username&amp;gt; with your actual user name.&lt;br /&gt;
&lt;br /&gt;
To use sudo, simply preface the command you wish to execute as root with the word &#039;&#039;&#039;sudo&#039;&#039;&#039;. You will be asked to enter your own user password to prove your identity. &lt;br /&gt;
&lt;br /&gt;
The system will then check whether you have been given permission to execute this particular command as root; if so, it will be executed. sudo &amp;quot;remembers&amp;quot; you for a short time so that you can give a group of sudo commands without entering your password each time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This thread was original posted on the Debian User Forumsm but @sunrat: http://forums.debian.net/viewtopic.php?f=32&amp;amp;t=58557&amp;amp;p=338548&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ref 1: http://www.linfo.org/root.html&lt;br /&gt;
&lt;br /&gt;
[[Category:Administration]][[Category:HowTo]]&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Category:Administration&amp;diff=179</id>
		<title>Category:Administration</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Category:Administration&amp;diff=179"/>
		<updated>2026-02-10T19:55:13Z</updated>

		<summary type="html">&lt;p&gt;Donald: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Category:Desktop&amp;diff=178</id>
		<title>Category:Desktop</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Category:Desktop&amp;diff=178"/>
		<updated>2026-02-10T19:54:15Z</updated>

		<summary type="html">&lt;p&gt;Donald: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Category:Themes&amp;diff=177</id>
		<title>Category:Themes</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Category:Themes&amp;diff=177"/>
		<updated>2026-02-10T19:53:57Z</updated>

		<summary type="html">&lt;p&gt;Donald: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Category:Fonts&amp;diff=176</id>
		<title>Category:Fonts</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Category:Fonts&amp;diff=176"/>
		<updated>2026-02-10T19:53:37Z</updated>

		<summary type="html">&lt;p&gt;Donald: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Fonts_and_Themes_in_Cinnamon_Desktop&amp;diff=175</id>
		<title>Fonts and Themes in Cinnamon Desktop</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Fonts_and_Themes_in_Cinnamon_Desktop&amp;diff=175"/>
		<updated>2026-02-10T19:53:20Z</updated>

		<summary type="html">&lt;p&gt;Donald: Category:Category name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Fonts and Themes in Cinnamon Desktop ==&lt;br /&gt;
&lt;br /&gt;
* Verified on Debian 13.1 (Trixie) / 6.12.43+deb13-amd64 x64_64&lt;br /&gt;
* Created : 28/10/2025 21:09:21&lt;br /&gt;
* Last Updated : 27/10/2025 23:42:45&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A comprehensive reference for managing console fonts, GUI fonts, and theme customization in Debian with Cinnamon DE.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;table-of-contents&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Table of Contents ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;[https://claude.ai/chat/6986fa74-5020-47a2-8736-f9eaf474bfc0#understanding-font-types Understanding Font Types]&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;[https://claude.ai/chat/6986fa74-5020-47a2-8736-f9eaf474bfc0#console-fonts-tty Console Fonts (TTY)]&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;[https://claude.ai/chat/6986fa74-5020-47a2-8736-f9eaf474bfc0#gui-fonts GUI Fonts]&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;[https://claude.ai/chat/6986fa74-5020-47a2-8736-f9eaf474bfc0#cinnamon-system-fonts Cinnamon System Fonts]&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;[https://claude.ai/chat/6986fa74-5020-47a2-8736-f9eaf474bfc0#theme-customization-with-css Theme Customization with CSS]&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;[https://claude.ai/chat/6986fa74-5020-47a2-8736-f9eaf474bfc0#accessibility-and-scaling Accessibility and Scaling]&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;[https://claude.ai/chat/6986fa74-5020-47a2-8736-f9eaf474bfc0#troubleshooting Troubleshooting]&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;understanding-font-types&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Understanding Font Types ==&lt;br /&gt;
&lt;br /&gt;
Linux uses different font systems depending on where text appears:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;console-fonts-tty&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Console Fonts (TTY) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Format&#039;&#039;&#039;: PSF (PC Screen Font) - .psf or .psf.gz&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Location&#039;&#039;&#039;: /usr/share/consolefonts/&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Used by&#039;&#039;&#039;: Text-based virtual consoles (Ctrl+Alt+F2 through F6)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Loaded&#039;&#039;&#039;: Before graphical system starts&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Limitations&#039;&#039;&#039;: No anti-aliasing, fixed character grid&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;gui-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== GUI Fonts ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Formats&#039;&#039;&#039;: TrueType (.ttf), OpenType (.otf)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Location&#039;&#039;&#039;: /usr/share/fonts/truetype/, /usr/share/fonts/opentype/&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Used by&#039;&#039;&#039;: All graphical applications&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Features&#039;&#039;&#039;: Anti-aliasing, scalability, subpixel rendering&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;why-two-systems&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Why Two Systems? ===&lt;br /&gt;
&lt;br /&gt;
The Linux console operates at a lower level than the graphical interface. It needs to display text even if the GUI fails to load, so it uses simpler font formats that don&#039;t require graphics libraries.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;console-fonts-tty-1&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Console Fonts (TTY) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;installing-console-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Installing Console Fonts ===&lt;br /&gt;
&lt;br /&gt;
Install Terminus (popular monospace console font):&lt;br /&gt;
&lt;br /&gt;
sudo apt update&lt;br /&gt;
&lt;br /&gt;
sudo apt install console-setup xfonts-terminus&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;configuring-console-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Configuring Console Fonts ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;method-1-interactive-configuration&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Method 1: Interactive Configuration ====&lt;br /&gt;
&lt;br /&gt;
sudo dpkg-reconfigure console-setup&lt;br /&gt;
&lt;br /&gt;
Follow the prompts:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Encoding&#039;&#039;&#039;: UTF-8&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Character set&#039;&#039;&#039;: Guess optimal character set&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Font&#039;&#039;&#039;: Terminus&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Font size&#039;&#039;&#039;: Choose from available sizes&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Available Terminus sizes: 8x14, 8x16, 10x20, 12x24, 14x28, 16x32&lt;br /&gt;
&lt;br /&gt;
Recommendation: 16x32 for good readability&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;method-2-direct-configuration-file-editing&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Method 2: Direct Configuration File Editing ====&lt;br /&gt;
&lt;br /&gt;
Edit /etc/default/console-setup:&lt;br /&gt;
&lt;br /&gt;
sudo nano /etc/default/console-setup&lt;br /&gt;
&lt;br /&gt;
Add or modify these lines:&lt;br /&gt;
&lt;br /&gt;
FONTFACE=&amp;amp;quot;Terminus&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
FONTSIZE=&amp;amp;quot;16x32&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
Other useful settings you might find:&lt;br /&gt;
&lt;br /&gt;
CHARMAP=&amp;amp;quot;UTF-8&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
CODESET=&amp;amp;quot;guess&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;applying-console-font-changes&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Applying Console Font Changes ===&lt;br /&gt;
&lt;br /&gt;
The changes take effect on boot, but to apply immediately on all consoles:&lt;br /&gt;
&lt;br /&gt;
sudo setupcon&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: This command only works when run from an actual TTY console, not from a terminal emulator in the GUI. If you get &amp;amp;quot;not on the console&amp;amp;quot; error, that&#039;s normal - the configuration is saved and will apply on next boot or when you switch to a TTY.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;testing-console-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Testing Console Fonts ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Switch to virtual console: Ctrl + Alt + F2&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Log in with your credentials&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Check the font - you should see Terminus&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Return to GUI: Ctrl + Alt + F1 or Ctrl + Alt + F7&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;viewing-available-console-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Viewing Available Console Fonts ===&lt;br /&gt;
&lt;br /&gt;
List all available console fonts:&lt;br /&gt;
&lt;br /&gt;
ls /usr/share/consolefonts/&lt;br /&gt;
&lt;br /&gt;
Filter for Terminus fonts:&lt;br /&gt;
&lt;br /&gt;
ls /usr/share/consolefonts/ | grep -i ter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;temporarily-testing-console-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Temporarily Testing Console Fonts ===&lt;br /&gt;
&lt;br /&gt;
To test a font before making it permanent:&lt;br /&gt;
&lt;br /&gt;
setfont /usr/share/consolefonts/Ter16x32n.psf.gz&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: setfont only works when run from a TTY console (Ctrl+Alt+F2), not from GUI terminals.&lt;br /&gt;
&lt;br /&gt;
To check current console font (from TTY):&lt;br /&gt;
&lt;br /&gt;
setfont -v&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;gui-fonts-1&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== GUI Fonts ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;installing-gui-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Installing GUI Fonts ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;system-wide-installation&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== System-wide Installation ====&lt;br /&gt;
&lt;br /&gt;
Install Terminus for graphical applications:&lt;br /&gt;
&lt;br /&gt;
sudo apt install fonts-terminus&lt;br /&gt;
&lt;br /&gt;
Install other popular fonts:&lt;br /&gt;
&lt;br /&gt;
# Programming fonts&lt;br /&gt;
&lt;br /&gt;
sudo apt install fonts-firacode fonts-hack fonts-jetbrains-mono&lt;br /&gt;
&lt;br /&gt;
# General purpose fonts&lt;br /&gt;
&lt;br /&gt;
sudo apt install fonts-liberation fonts-dejavu fonts-noto&lt;br /&gt;
&lt;br /&gt;
# More options&lt;br /&gt;
&lt;br /&gt;
sudo apt install fonts-ubuntu fonts-roboto&lt;br /&gt;
&lt;br /&gt;
After installing, log out and back in, or rebuild font cache:&lt;br /&gt;
&lt;br /&gt;
fc-cache -fv&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;user-only-installation&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== User-only Installation ====&lt;br /&gt;
&lt;br /&gt;
To install fonts just for your user account:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Create fonts directory:&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mkdir -p ~/.local/share/fonts&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol start=&amp;quot;2&amp;quot; style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Copy font files (.ttf or .otf) to this directory:&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cp /path/to/your/font.ttf ~/.local/share/fonts/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol start=&amp;quot;3&amp;quot; style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Rebuild font cache:&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fc-cache -fv&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;font-locations&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Font Locations ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;System-wide fonts&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
/usr/share/fonts/truetype/&lt;br /&gt;
&lt;br /&gt;
/usr/share/fonts/opentype/&lt;br /&gt;
&lt;br /&gt;
/usr/share/fonts/X11/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;User-specific fonts&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
~/.local/share/fonts/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;listing-available-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Listing Available Fonts ===&lt;br /&gt;
&lt;br /&gt;
List all fonts available to GUI applications:&lt;br /&gt;
&lt;br /&gt;
fc-list&lt;br /&gt;
&lt;br /&gt;
Search for specific font:&lt;br /&gt;
&lt;br /&gt;
fc-list | grep -i terminus&lt;br /&gt;
&lt;br /&gt;
fc-list | grep -i dejavu&lt;br /&gt;
&lt;br /&gt;
List fonts with details:&lt;br /&gt;
&lt;br /&gt;
fc-list : family style file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;configuring-terminal-emulator-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Configuring Terminal Emulator Fonts ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;gnome-terminal-default-in-cinnamon&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== GNOME Terminal (default in Cinnamon) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Open GNOME Terminal&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Menu → Preferences&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Select your profile&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Go to &#039;&#039;&#039;Text&#039;&#039;&#039; tab&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Uncheck &amp;amp;quot;Use the system fixed-width font&amp;amp;quot;&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Click font button and select Terminus (or other font)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Choose size (12, 14, or 16 recommended)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;guake-drop-down-terminal&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Guake (Drop-down Terminal) ====&lt;br /&gt;
&lt;br /&gt;
Install GUI version of Terminus first:&lt;br /&gt;
&lt;br /&gt;
sudo apt install fonts-terminus&lt;br /&gt;
&lt;br /&gt;
guake --quit&lt;br /&gt;
&lt;br /&gt;
guake &amp;amp;amp;&lt;br /&gt;
&lt;br /&gt;
Configure via GUI:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Open Guake (F12)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Right-click → Preferences&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Go to &#039;&#039;&#039;Appearance&#039;&#039;&#039; tab&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Uncheck &amp;amp;quot;Use the system fixed width font&amp;amp;quot;&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Select Terminus and size&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure via command line:&lt;br /&gt;
&lt;br /&gt;
gsettings set org.guake.style.font use-system-font false&lt;br /&gt;
&lt;br /&gt;
gsettings set org.guake.style.font font-name &#039;Terminus 12&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;cinnamon-system-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Cinnamon System Fonts ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;quick-font-configuration&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Quick Font Configuration ===&lt;br /&gt;
&lt;br /&gt;
Open &#039;&#039;&#039;System Settings&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
cinnamon-settings&lt;br /&gt;
&lt;br /&gt;
Navigate to: &#039;&#039;&#039;Font Selection&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You&#039;ll see these options:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Default font&#039;&#039;&#039;: Used for menus, buttons, dialogs (recommended: 10-12pt)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Desktop font&#039;&#039;&#039;: Used for desktop icon labels (recommended: 10-11pt)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Document font&#039;&#039;&#039;: Used in document viewers (recommended: 11pt)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Monospace font&#039;&#039;&#039;: Used in terminals and code editors (recommended: Terminus 12pt)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Window title font&#039;&#039;&#039;: Used in window title bars (recommended: 10-11pt bold)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;recommended-configuration-for-better-readability&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Recommended Configuration for Better Readability ===&lt;br /&gt;
&lt;br /&gt;
Default font: Sans 11 or 12&lt;br /&gt;
&lt;br /&gt;
Desktop font: Sans 10 or 11&lt;br /&gt;
&lt;br /&gt;
Document font: Sans 11&lt;br /&gt;
&lt;br /&gt;
Monospace font: Terminus 12 or 14&lt;br /&gt;
&lt;br /&gt;
Window title font: Sans Bold 10 or 11&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;using-command-line-to-change-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Using Command Line to Change Fonts ===&lt;br /&gt;
&lt;br /&gt;
View current settings:&lt;br /&gt;
&lt;br /&gt;
gsettings get org.cinnamon.desktop.interface font-name&lt;br /&gt;
&lt;br /&gt;
gsettings get org.gnome.desktop.interface monospace-font-name&lt;br /&gt;
&lt;br /&gt;
Change default font:&lt;br /&gt;
&lt;br /&gt;
gsettings set org.cinnamon.desktop.interface font-name &#039;Sans 12&#039;&lt;br /&gt;
&lt;br /&gt;
Change monospace font:&lt;br /&gt;
&lt;br /&gt;
gsettings set org.gnome.desktop.interface monospace-font-name &#039;Terminus 12&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;font-recommendations-by-use-case&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Font Recommendations by Use Case ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;For general readability&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Default: DejaVu Sans 11-12&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Monospace: Terminus 12 or DejaVu Sans Mono 11&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;For programming&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Monospace: Fira Code 11, JetBrains Mono 11, or Hack 11&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;For visually impaired users&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Default: Sans 13-14&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Monospace: Terminus 14-16&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Consider UI scaling (see Accessibility section)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;theme-customization-with-css&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Theme Customization with CSS ==&lt;br /&gt;
&lt;br /&gt;
Cinnamon themes use CSS for styling. You can customize any theme to change fonts, colors, spacing, and more.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;finding-your-current-theme&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Finding Your Current Theme ===&lt;br /&gt;
&lt;br /&gt;
Check which theme you&#039;re using:&lt;br /&gt;
&lt;br /&gt;
gsettings get org.cinnamon.theme name&lt;br /&gt;
&lt;br /&gt;
List available themes:&lt;br /&gt;
&lt;br /&gt;
ls /usr/share/themes/&lt;br /&gt;
&lt;br /&gt;
ls ~/.themes/&lt;br /&gt;
&lt;br /&gt;
View your theme in System Settings: &#039;&#039;&#039;System Settings → Themes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;creating-a-custom-theme-copy&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Creating a Custom Theme Copy ===&lt;br /&gt;
&lt;br /&gt;
Always work on a copy to avoid breaking your system:&lt;br /&gt;
&lt;br /&gt;
# Copy system theme to your user directory&lt;br /&gt;
&lt;br /&gt;
cp -r /usr/share/themes/YOUR-THEME-NAME ~/.themes/&lt;br /&gt;
&lt;br /&gt;
# Example:&lt;br /&gt;
&lt;br /&gt;
cp -r /usr/share/themes/Mint-Y ~/.themes/&lt;br /&gt;
&lt;br /&gt;
cp -r /usr/share/themes/Green-Submarine ~/.themes/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;theme-structure&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Theme Structure ===&lt;br /&gt;
&lt;br /&gt;
A typical Cinnamon theme:&lt;br /&gt;
&lt;br /&gt;
~/.themes/YOUR-THEME-NAME/&lt;br /&gt;
&lt;br /&gt;
├── cinnamon/&lt;br /&gt;
&lt;br /&gt;
│ ├── cinnamon.css # Main styling file&lt;br /&gt;
&lt;br /&gt;
│ ├── thumbnail.png&lt;br /&gt;
&lt;br /&gt;
│ └── assets/ # Images, icons&lt;br /&gt;
&lt;br /&gt;
├── gtk-3.0/ # GTK3 application styling&lt;br /&gt;
&lt;br /&gt;
├── gtk-2.0/ # GTK2 application styling&lt;br /&gt;
&lt;br /&gt;
├── metacity-1/ # Window decorations&lt;br /&gt;
&lt;br /&gt;
└── index.theme # Theme metadata&lt;br /&gt;
&lt;br /&gt;
The file you&#039;ll edit most: cinnamon/cinnamon.css&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;editing-theme-css&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Editing Theme CSS ===&lt;br /&gt;
&lt;br /&gt;
Open the CSS file:&lt;br /&gt;
&lt;br /&gt;
nano ~/.themes/YOUR-THEME-NAME/cinnamon/cinnamon.css&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;common-css-selectors&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Common CSS Selectors ====&lt;br /&gt;
&lt;br /&gt;
/* Overall stage - affects most UI elements */&lt;br /&gt;
&lt;br /&gt;
stage {&lt;br /&gt;
&lt;br /&gt;
font-size: 10pt;&lt;br /&gt;
&lt;br /&gt;
font-family: sans-serif;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Main menu */&lt;br /&gt;
&lt;br /&gt;
.menu {&lt;br /&gt;
&lt;br /&gt;
font-size: 10pt;&lt;br /&gt;
&lt;br /&gt;
background-color: rgba(48, 48, 48, 0.95);&lt;br /&gt;
&lt;br /&gt;
border-radius: 8px;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Menu application buttons */&lt;br /&gt;
&lt;br /&gt;
.menu-application-button-label {&lt;br /&gt;
&lt;br /&gt;
font-size: 9pt;&lt;br /&gt;
&lt;br /&gt;
padding-left: 10px;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Panel (taskbar) */&lt;br /&gt;
&lt;br /&gt;
.panel {&lt;br /&gt;
&lt;br /&gt;
font-size: 9pt;&lt;br /&gt;
&lt;br /&gt;
background-color: #2b2b2b;&lt;br /&gt;
&lt;br /&gt;
height: 32px;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Panel applet labels */&lt;br /&gt;
&lt;br /&gt;
.panel-button {&lt;br /&gt;
&lt;br /&gt;
font-size: 9pt;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Notifications */&lt;br /&gt;
&lt;br /&gt;
.notification {&lt;br /&gt;
&lt;br /&gt;
font-size: 10pt;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Window list buttons */&lt;br /&gt;
&lt;br /&gt;
.window-list-item-box {&lt;br /&gt;
&lt;br /&gt;
font-size: 9pt;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tooltips */&lt;br /&gt;
&lt;br /&gt;
.tooltip {&lt;br /&gt;
&lt;br /&gt;
font-size: 9pt;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;example-increasing-menu-font-size&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Example: Increasing Menu Font Size ===&lt;br /&gt;
&lt;br /&gt;
Find the menu section and modify:&lt;br /&gt;
&lt;br /&gt;
.menu {&lt;br /&gt;
&lt;br /&gt;
font-size: 14pt; /* Increase from default 9-10pt */&lt;br /&gt;
&lt;br /&gt;
background-color: rgba(48, 48, 48, 0.95);&lt;br /&gt;
&lt;br /&gt;
border-radius: 8px;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.menu-application-button-label {&lt;br /&gt;
&lt;br /&gt;
font-size: 13pt; /* Increase menu item text */&lt;br /&gt;
&lt;br /&gt;
padding-left: 10px;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Also increase category labels */&lt;br /&gt;
&lt;br /&gt;
.menu-category-button-label {&lt;br /&gt;
&lt;br /&gt;
font-size: 13pt;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;example-changing-font-family&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Example: Changing Font Family ===&lt;br /&gt;
&lt;br /&gt;
stage {&lt;br /&gt;
&lt;br /&gt;
font-family: &amp;amp;quot;DejaVu Sans&amp;amp;quot;, sans-serif;&lt;br /&gt;
&lt;br /&gt;
font-size: 11pt;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Use monospace for specific elements */&lt;br /&gt;
&lt;br /&gt;
.some-element {&lt;br /&gt;
&lt;br /&gt;
font-family: &amp;amp;quot;Terminus&amp;amp;quot;, &amp;amp;quot;DejaVu Sans Mono&amp;amp;quot;, monospace;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;applying-css-changes&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Applying CSS Changes ===&lt;br /&gt;
&lt;br /&gt;
After editing the CSS file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Save the file: Ctrl+O then Enter (in nano)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Exit: Ctrl+X (in nano)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Restart Cinnamon: Press Alt+F2, type r, press Enter&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or reload from command line:&lt;br /&gt;
&lt;br /&gt;
# Ensure theme is set&lt;br /&gt;
&lt;br /&gt;
gsettings set org.cinnamon.theme name &#039;YOUR-THEME-NAME&#039;&lt;br /&gt;
&lt;br /&gt;
# Restart Cinnamon&lt;br /&gt;
&lt;br /&gt;
cinnamon --replace &amp;amp;amp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;css-tips-and-tricks&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== CSS Tips and Tricks ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Finding the right selector&#039;&#039;&#039;: Use Cinnamon&#039;s Looking Glass debugger&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Press Alt+F2&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Type lg and press Enter&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Go to &#039;&#039;&#039;Picker&#039;&#039;&#039; tab&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Click on UI elements to see their CSS classes&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Testing changes quickly&#039;&#039;&#039;: Keep the CSS file open in one workspace, test in another, and use Alt+F2 → r to reload.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Backup before editing&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
cp ~/.themes/YOUR-THEME-NAME/cinnamon/cinnamon.css ~/.themes/YOUR-THEME-NAME/cinnamon/cinnamon.css.backup&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Restore backup if needed&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
cp ~/.themes/YOUR-THEME-NAME/cinnamon/cinnamon.css.backup ~/.themes/YOUR-THEME-NAME/cinnamon/cinnamon.css&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;common-css-properties&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Common CSS Properties ===&lt;br /&gt;
&lt;br /&gt;
/* Fonts */&lt;br /&gt;
&lt;br /&gt;
font-family: &amp;amp;quot;Font Name&amp;amp;quot;, fallback;&lt;br /&gt;
&lt;br /&gt;
font-size: 10pt; /* or 12px, 1.2em */&lt;br /&gt;
&lt;br /&gt;
font-weight: bold; /* or normal, 600 */&lt;br /&gt;
&lt;br /&gt;
font-style: italic;&lt;br /&gt;
&lt;br /&gt;
/* Colors */&lt;br /&gt;
&lt;br /&gt;
color: #ffffff;&lt;br /&gt;
&lt;br /&gt;
background-color: rgba(48, 48, 48, 0.95);&lt;br /&gt;
&lt;br /&gt;
border-color: #444444;&lt;br /&gt;
&lt;br /&gt;
/* Spacing */&lt;br /&gt;
&lt;br /&gt;
padding: 10px;&lt;br /&gt;
&lt;br /&gt;
margin: 5px;&lt;br /&gt;
&lt;br /&gt;
padding-left: 10px;&lt;br /&gt;
&lt;br /&gt;
/* Borders */&lt;br /&gt;
&lt;br /&gt;
border: 1px solid #444444;&lt;br /&gt;
&lt;br /&gt;
border-radius: 8px;&lt;br /&gt;
&lt;br /&gt;
/* Sizing */&lt;br /&gt;
&lt;br /&gt;
width: 300px;&lt;br /&gt;
&lt;br /&gt;
height: 40px;&lt;br /&gt;
&lt;br /&gt;
min-width: 200px;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;accessibility-and-scaling&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Accessibility and Scaling ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;ui-scaling-recommended-for-visual-impairment&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== UI Scaling (Recommended for Visual Impairment) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;via-system-settings&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Via System Settings ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;System Settings → Display → UI Scale&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Options typically: 100%, 125%, 150%, 200%&lt;br /&gt;
&lt;br /&gt;
Start with 125% and adjust as needed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;via-command-line&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Via Command Line ====&lt;br /&gt;
&lt;br /&gt;
# Check current scaling&lt;br /&gt;
&lt;br /&gt;
gsettings get org.cinnamon.desktop.interface scaling-factor&lt;br /&gt;
&lt;br /&gt;
# Set scaling (1 = 100%, 2 = 200%)&lt;br /&gt;
&lt;br /&gt;
gsettings set org.cinnamon.desktop.interface scaling-factor 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Fractional scaling (1.25, 1.5) may not be available on all systems.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;text-scaling-only&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Text Scaling Only ===&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want to scale everything, increase text size:&lt;br /&gt;
&lt;br /&gt;
# Increase text scaling factor&lt;br /&gt;
&lt;br /&gt;
gsettings set org.gnome.desktop.interface text-scaling-factor 1.25&lt;br /&gt;
&lt;br /&gt;
Values: 1.0 = 100%, 1.25 = 125%, 1.5 = 150%&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;high-contrast-themes&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== High Contrast Themes ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;System Settings → Themes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Look for high-contrast themes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;HighContrast (if available)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;HighContrastInverse&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or install:&lt;br /&gt;
&lt;br /&gt;
sudo apt install gnome-themes-extra&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;large-cursor&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Large Cursor ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;System Settings → Mouse and Touchpad → Cursor&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Select a larger cursor size (32px or 48px).&lt;br /&gt;
&lt;br /&gt;
Or via command line:&lt;br /&gt;
&lt;br /&gt;
gsettings set org.cinnamon.desktop.interface cursor-size 32&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;desktop-zoom-magnifier&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Desktop Zoom (Magnifier) ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;System Settings → Accessibility → Zoom&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Enable desktop magnification. Typical shortcut: Alt + Super + 8&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;font-smoothing&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Font Smoothing ===&lt;br /&gt;
&lt;br /&gt;
Ensure font smoothing is enabled for better readability:&lt;br /&gt;
&lt;br /&gt;
gsettings set org.cinnamon.settings-daemon.plugins.xsettings antialiasing &#039;rgba&#039;&lt;br /&gt;
&lt;br /&gt;
gsettings set org.cinnamon.settings-daemon.plugins.xsettings hinting &#039;slight&#039;&lt;br /&gt;
&lt;br /&gt;
Options for antialiasing: none, grayscale, rgba Options for hinting: none, slight, medium, full&lt;br /&gt;
&lt;br /&gt;
Recommended: rgba with slight hinting&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;troubleshooting&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;console-font-issues&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Console Font Issues ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: setupcon says &amp;amp;quot;not on the console&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;: This is normal when running from GUI. The configuration is saved. Test by switching to TTY with Ctrl+Alt+F2.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: Font changes don&#039;t persist after reboot&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;: Verify /etc/default/console-setup has correct settings. Run sudo dpkg-reconfigure console-setup again.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: setfont gives &amp;amp;quot;couldn&#039;t get file descriptor&amp;amp;quot; error&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;: setfont only works from actual TTY console, not GUI terminal emulators.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;gui-font-issues&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== GUI Font Issues ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: Installed font doesn&#039;t appear in applications&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
# Rebuild font cache&lt;br /&gt;
&lt;br /&gt;
fc-cache -fv&lt;br /&gt;
&lt;br /&gt;
# Log out and back in&lt;br /&gt;
&lt;br /&gt;
# Or restart the application&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: Font looks pixelated or ugly&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;: Check antialiasing settings:&lt;br /&gt;
&lt;br /&gt;
gsettings set org.cinnamon.settings-daemon.plugins.xsettings antialiasing &#039;rgba&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: Terminus not showing in Guake&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;: Install the TrueType version:&lt;br /&gt;
&lt;br /&gt;
sudo apt install fonts-terminus&lt;br /&gt;
&lt;br /&gt;
guake --quit&lt;br /&gt;
&lt;br /&gt;
guake &amp;amp;amp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;theme-css-issues&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Theme CSS Issues ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: CSS changes don&#039;t take effect&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Save the CSS file&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Restart Cinnamon: Alt+F2 → r&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Verify you&#039;re editing the active theme&#039;s CSS&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Check for CSS syntax errors&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: Cinnamon crashes after CSS edit&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;: Boot to TTY (Ctrl+Alt+F2), restore backup:&lt;br /&gt;
&lt;br /&gt;
cp ~/.themes/YOUR-THEME/cinnamon/cinnamon.css.backup ~/.themes/YOUR-THEME/cinnamon/cinnamon.css&lt;br /&gt;
&lt;br /&gt;
Then switch back to GUI and restart Cinnamon.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: Can&#039;t find the right CSS selector&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;: Use Looking Glass:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Alt+F2 → type lg → Enter&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Go to Picker tab&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Click UI element to see its classes&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;scaling-issues&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Scaling Issues ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: UI scaling makes everything blurry&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;: Some applications don&#039;t handle scaling well. Try:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Integer scaling only (100%, 200%) instead of fractional&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Increase font sizes instead of UI scaling&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Update graphics drivers&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: Some applications ignore scaling&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;: Set scaling per-application (for X11 apps):&lt;br /&gt;
&lt;br /&gt;
GDK_SCALE=2 application-name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;quick-reference-commands&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Quick Reference Commands ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;console-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Console Fonts ===&lt;br /&gt;
&lt;br /&gt;
# Configure interactively&lt;br /&gt;
&lt;br /&gt;
sudo dpkg-reconfigure console-setup&lt;br /&gt;
&lt;br /&gt;
# Apply changes&lt;br /&gt;
&lt;br /&gt;
sudo setupcon&lt;br /&gt;
&lt;br /&gt;
# List console fonts&lt;br /&gt;
&lt;br /&gt;
ls /usr/share/consolefonts/&lt;br /&gt;
&lt;br /&gt;
# Test font (from TTY only)&lt;br /&gt;
&lt;br /&gt;
setfont /usr/share/consolefonts/Ter16x32n.psf.gz&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;gui-fonts-2&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== GUI Fonts ===&lt;br /&gt;
&lt;br /&gt;
# Install fonts&lt;br /&gt;
&lt;br /&gt;
sudo apt install fonts-terminus fonts-firacode&lt;br /&gt;
&lt;br /&gt;
# Rebuild font cache&lt;br /&gt;
&lt;br /&gt;
fc-cache -fv&lt;br /&gt;
&lt;br /&gt;
# List all fonts&lt;br /&gt;
&lt;br /&gt;
fc-list&lt;br /&gt;
&lt;br /&gt;
# Search for specific font&lt;br /&gt;
&lt;br /&gt;
fc-list | grep -i terminus&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;cinnamon-settings&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Cinnamon Settings ===&lt;br /&gt;
&lt;br /&gt;
# Open settings&lt;br /&gt;
&lt;br /&gt;
cinnamon-settings&lt;br /&gt;
&lt;br /&gt;
# Check current theme&lt;br /&gt;
&lt;br /&gt;
gsettings get org.cinnamon.theme name&lt;br /&gt;
&lt;br /&gt;
# Set theme&lt;br /&gt;
&lt;br /&gt;
gsettings set org.cinnamon.theme name &#039;YOUR-THEME&#039;&lt;br /&gt;
&lt;br /&gt;
# UI scaling&lt;br /&gt;
&lt;br /&gt;
gsettings set org.cinnamon.desktop.interface scaling-factor 2&lt;br /&gt;
&lt;br /&gt;
# Restart Cinnamon&lt;br /&gt;
&lt;br /&gt;
Alt+F2 → r&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;theme-editing&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Theme Editing ===&lt;br /&gt;
&lt;br /&gt;
# Copy theme&lt;br /&gt;
&lt;br /&gt;
cp -r /usr/share/themes/THEME-NAME ~/.themes/&lt;br /&gt;
&lt;br /&gt;
# Edit CSS&lt;br /&gt;
&lt;br /&gt;
nano ~/.themes/THEME-NAME/cinnamon/cinnamon.css&lt;br /&gt;
&lt;br /&gt;
# Backup CSS&lt;br /&gt;
&lt;br /&gt;
cp ~/.themes/THEME-NAME/cinnamon/cinnamon.css{,.backup}&lt;br /&gt;
&lt;br /&gt;
# Restore backup&lt;br /&gt;
&lt;br /&gt;
cp ~/.themes/THEME-NAME/cinnamon/cinnamon.css{.backup,}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;additional-resources&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Additional Resources ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Official Cinnamon Documentation&#039;&#039;&#039;: https://cinnamon-spices.linuxmint.com/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cinnamon GitHub&#039;&#039;&#039;: https://github.com/linuxmint/cinnamon&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Theme Development Guide&#039;&#039;&#039;: Available in Cinnamon documentation&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Font Configuration&#039;&#039;&#039;: man fonts-conf or man fc-cache&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Console Setup&#039;&#039;&#039;: man console-setup or man setupcon&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Last Updated&#039;&#039;&#039;: October 2025&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Compatible with&#039;&#039;&#039;: Debian 13, Linux Mint 21+, any distribution using Cinnamon DE&lt;br /&gt;
&lt;br /&gt;
=== Credits &amp;amp; Comments ===&lt;br /&gt;
As usual I welcome any comments, suggestions or resources : dev@divsmart.com or distro-nix on Debian Forum.&lt;br /&gt;
&lt;br /&gt;
[[Category:Fonts]]&lt;br /&gt;
[[Category:Themes]]&lt;br /&gt;
[[Category:Desktop]]&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Forum_jokes,_lingo,_and_memorable_quotes&amp;diff=174</id>
		<title>Forum jokes, lingo, and memorable quotes</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Forum_jokes,_lingo,_and_memorable_quotes&amp;diff=174"/>
		<updated>2026-02-10T19:42:18Z</updated>

		<summary type="html">&lt;p&gt;Donald: Category:Category name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Inside Jokes, Lingo, and Quotes ==&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;u&amp;gt;Memorable Quotes&amp;lt;/u&amp;gt; =====&lt;br /&gt;
* Shiny side facing out ([https://forums.debian.net/viewtopic.php?t=157623 thread])&lt;br /&gt;
** The walls, ceiling and floor of my apartment are papered with heavy duty aluminum foil hung with rubber glue. Shiny side facing out. - Trihexagonal&lt;br /&gt;
* Why is Debian still under development??? ([https://forums.debian.net/viewtopic.php?p=455576#p455576 thread])&lt;br /&gt;
** If Debian is THAT GOOD, why is Debian still under development??? Why are new versions released? IF Debian was that good, we would al been using Debian version 0.() for the past 19 years.... - nomko&lt;br /&gt;
* ,...here, hold my tea&lt;br /&gt;
** Like there&#039;s a Great White swimming around somewhere wondering when he&#039;s going to develop Molars so he can enjoy the health benefits of seaweed. This [presents] a flowery non-specific justification for perpetual shiny new syndrome. ([https://forums.debian.net/viewtopic.php?p=763708#p763708 thread])&lt;br /&gt;
&lt;br /&gt;
===== Inside Humor =====&lt;br /&gt;
The forums about header changes once in a while in some humor and to see who is paying attention. Here are the most recent:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Debian Fish and Animal Emporium&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;16 years of discussion about socks and the people that wear them&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;We have read the manual.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Category:Forums]]&lt;br /&gt;
[[Category:Humor]]&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Category:Boot&amp;diff=173</id>
		<title>Category:Boot</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Category:Boot&amp;diff=173"/>
		<updated>2026-02-10T19:39:38Z</updated>

		<summary type="html">&lt;p&gt;Donald: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=REFInd_USB_Drive_(for_emergency_boot)&amp;diff=172</id>
		<title>REFInd USB Drive (for emergency boot)</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=REFInd_USB_Drive_(for_emergency_boot)&amp;diff=172"/>
		<updated>2026-02-10T19:39:21Z</updated>

		<summary type="html">&lt;p&gt;Donald: Category:Category name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[https://www.rodsbooks.com/refind/ The rEFInd boot manager], forked by Rod Smith many years ago from a prior project called rEFIt. &lt;br /&gt;
&lt;br /&gt;
It&#039;s one of the finest pieces of Linux programming that never caught on. Part of the problem is that, because rEFInd only works in UEFI, it isn&#039;t suitable for default installation on distros supporting BIOS boot (which of course is most, including Debian). If one has UEFI, there&#039;s a lot to be said for replacing Grub with rEFInd, but I&#039;m not going to tackle that here. In this tutorial, I&#039;m only going to explain how to install rEFInd to USB drive, which is particularly useful as an emergency boot tool.&lt;br /&gt;
 &amp;lt;small&amp;gt;Note: It&#039;s easier to create a rEFInd USB drive in advance, obviously, but can be improvised after the excrement has hit the fan. The drive can be setup from a live session, virtual machine or any almost computer running Linux. Doesn&#039;t matter which Linux or desktop. All it does is provide a platform to format an EFI partition, download a zip file, and run an installer script directed at an external drive.&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &#039;&#039;&#039;How it works&#039;&#039;&#039; =====&lt;br /&gt;
What makes rEFInd useful for emergency boot is that the Linux kernel is bootable in its own right, without need for a separate boot loader. This means rEFInd on USB drive can boot kernel images of an installed system, even if Grub and/or NVRAM have been damaged or misconfigured. It also can boot Windows (using its boot loader) even if Grub is damaged. Someone taught me this trick early in my Linux journey and I&#039;ve had a rEFInd USB drive sitting next to my computer ever since. By the way, once booted, you can remove the rEFInd drive, freeing up the port.&lt;br /&gt;
&lt;br /&gt;
====== &#039;&#039;&#039;Select target&#039;&#039;&#039; ======&lt;br /&gt;
rEFInd needs to be installed to an EFI partition. Simplest solution is to dig out an old 2.0 flash drive, put rEFInd on it and don&#039;t worry about the remaining space. Or you can create two (or more) partitions, one for rEFInd and another for something else (e.g., data files). Or you can clear a little space on a backup drive and put the EFI partition there. My personal preference is a full install USB drive with rEFInd instead of Grub.&lt;br /&gt;
&lt;br /&gt;
EFI Partition. Can be very small; the rEFInd files are only about 2 MB. Anything less than 100 MB sometimes draws squawks from partitioning tools, though, so that&#039;s what I use. Partition needs to be FAT format, with boot/esp flags. For GUI, use GParted or Gnome Disks. For CLI, use fdisk or gdisk. If you&#039;re new to partitioning, plenty of tutorials are available on the internet.&lt;br /&gt;
&lt;br /&gt;
====== &#039;&#039;&#039;Download files&#039;&#039;&#039; ======&lt;br /&gt;
rEFInd is available in several formats. For this tutorial, you want the binary zip file, download links here. Files are hosted at SourceForge; current version is 0.14.2, uploaded Apr&#039;24. Extract zip file. Can use the Downloads folder or move first to another. Downloads is fine if planning to delete folder after creating the USB drive (always can download again, if needed).&lt;br /&gt;
&lt;br /&gt;
====== &#039;&#039;&#039;Install&#039;&#039;&#039; ======&lt;br /&gt;
The zip file includes a script for installing rEFInd to the EFI partition. Open Terminal in the extracted folder. For example, double-click in file manager, then right-click and select &#039;&#039;&#039;Open in Terminal&#039;&#039;&#039;; or open Terminal then &#039;&#039;&#039;cd&#039;&#039;&#039; to the appropriate folder. Run command in this form (notice dot): &#039;&#039;&#039;./refind-install --usedefault /dev/sdxn --alldrivers&#039;&#039;&#039; , where sdxn = target EFI partition (e.g., sdb1); sudo not needed, but will be prompted for password.&lt;br /&gt;
&lt;br /&gt;
====== Ventoy ======&lt;br /&gt;
If you use Ventoy, there&#039;s an even simpler option. On download page (link above), there&#039;s also a CD-R image file. Again, it&#039;s a zip file. Once extracted, there will be a .img file in the folder. Copy this to your Ventoy images folder. Ventoy will boot directly from the rEFInd img file, same as if it were an ISO.&lt;br /&gt;
&lt;br /&gt;
====== &#039;&#039;&#039;How to Use&#039;&#039;&#039; ======&lt;br /&gt;
Attach USB drive, power up and select USB drive from firmware boot menu. If secure boot is enabled, you&#039;ll need to disable it,* but can re-enable later (after having fixed whatever is causing you to use rEFInd in the first place). rEFInd scans the computer for bootable objects, including boot loaders and Linux kernel images. Will present a horizontal row of icons with available options, first boot loaders, then kernel images. (Second row has tools.) Arrow-key to desired option, then Enter to select. To access backup kernels, similar to advanced boot options in Grub, press F2, Insert or Tab; use arrow keys to select desired kernel, then Enter to boot.&lt;br /&gt;
 &amp;lt;small&amp;gt;* Well, there is a way to leave secure boot enabled, provided you do the work ahead of time. You would copy rEFInd&#039;s secure boot certificate (and those of all installed systems) to the internal drive&#039;s EFI partition, then register the certificates with MOK. Only worth the trouble, though, if planning to use the USB drive for everyday boot, in which event might as well install rEFInd to the computer (see next paragraph). In any event, there&#039;s no way to certify the USB drive itself, so it will be secure boot qualified on all systems.&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== &#039;&#039;&#039;Replacing Grub&#039;&#039;&#039; ======&lt;br /&gt;
If you like the USB drive and decide to replace Grub on the installed system with rEFInd, I recommend the repo method (installs packages which, in turn, install rEFInd to the internal drives&#039;s EFI partition). As mentioned, unlike a USB drive, it&#039;s possible to endorse installed rEFInd so it&#039;s secure boot compatible. There are many configuration options, not particularly useful for a USB drive but handy if using rEFInd as main boot manager. Also, you will want to freeze Grub updates (sudo apt-mark hold) or even remove the Grub packages altogether. rEFInd&#039;s website (link above) discusses in detail all these issues and more.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This article was posted by pbear: https://forums.debian.net/viewtopic.php?t=163086&lt;br /&gt;
&lt;br /&gt;
[[Category:HowTo]]&lt;br /&gt;
[[Category:Boot]]&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Security_Hardening_for_Debian_Users:_Protecting_Against_Targeted_Attacks&amp;diff=171</id>
		<title>Security Hardening for Debian Users: Protecting Against Targeted Attacks</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Security_Hardening_for_Debian_Users:_Protecting_Against_Targeted_Attacks&amp;diff=171"/>
		<updated>2026-02-10T19:25:39Z</updated>

		<summary type="html">&lt;p&gt;Donald: Category:Category name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Security Hardening for Debian Users: Protecting Against Targeted Attacks ==&lt;br /&gt;
&lt;br /&gt;
==== Cybersecurity Measures Against Targeted Attacks ====&lt;br /&gt;
&lt;br /&gt;
* This guide is based on personal experience with targeted attacks originating from state-sponsored actors associated with a totalitarian regime.&lt;br /&gt;
* The goal is to help users strengthen the security posture of Linux systems against advanced persistent threats.&lt;br /&gt;
* This article is intended for private users, owners of laptops and desktop computers, as well as administrators of small private servers. Corporate network security topics are not covered here.&lt;br /&gt;
* Likewise, this article does not address social engineering, psychological, legal, physical, or other important aspects of targeted attacks. It focuses exclusively on the cybersecurity aspects of Linux-based systems.&lt;br /&gt;
&lt;br /&gt;
==== Description of the Threat ====&lt;br /&gt;
Since 2011 (for over 14 years), the author has been targeted by a complex set of attacks that include system intrusions, surveillance, psychological pressure, and blackmail based on personal data obtained through such surveillance.&lt;br /&gt;
&lt;br /&gt;
Attackers can gain full control over a PC and steal personal information, often leaving almost no traces. Occasionally, such activity manifests as sudden cursor movements, system slowdowns, or unexplained network activity.&lt;br /&gt;
&lt;br /&gt;
They also monitor Internet traffic and can compromise passwords when those passwords are weak or when two-factor authentication is not enabled.&lt;br /&gt;
&lt;br /&gt;
Please note that such targeted attacks against individuals — both within and outside of authoritarian states — are a real and growing threat. What author describes is not speculation, but the result of many years of firsthand experience resisting cyberattacks and attempted extortion.&lt;br /&gt;
&lt;br /&gt;
There is a widespread belief that targeted cyberattacks affect only a very small fraction of users — around 0.01% or even less — and that for the overwhelming majority of people such risks are not a real concern. However, events of recent years demonstrate that the level of cyber threats is significantly higher than commonly assumed and is often underestimated by both professionals and ordinary users.&lt;br /&gt;
&lt;br /&gt;
The author, as a citizen of a country that has become a zone of increased interest from external actors employing a wide range of means — from traditional instruments of influence to cyber technologies aimed at compromising and monitoring private devices and servers — considers it necessary to draw the attention of the international community to this issue.&lt;br /&gt;
&lt;br /&gt;
Raising awareness about cyber threats and improving the understanding of modern attack methods are essential steps toward strengthening digital security, protecting personal data, and maintaining trust in open-source infrastructure.&lt;br /&gt;
&lt;br /&gt;
==== Countermeasures ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tested environment: Debian 12 (Bookworm), kernel 6.1.0-34-amd64 (April 2025 build).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since early 2025, the author has fully switched to Linux, using the Debian distribution. The author is writing here because, among Linux users, it is possible to discuss real protective measures and digital independence.&lt;br /&gt;
&lt;br /&gt;
At the same time, please share this information with Windows users, explaining how vulnerable Windows systems are to hacking and why switching to Ubuntu or another Linux distribution is a much safer choice.&lt;br /&gt;
&lt;br /&gt;
Linux, due to its modular architecture and open-source nature, enables deeper and more flexible security configurations.&lt;br /&gt;
&lt;br /&gt;
Another significant risk factor is the practice of installing Windows, Microsoft Office, or other user applications from pirated sources. Such unofficial builds &#039;&#039;&#039;may contain embedded backdoors, trojans, rootkits, or other forms of malware&#039;&#039;&#039;, which substantially weaken the security of a Windows system and make various types of attacks easier for an adversary.&lt;br /&gt;
&lt;br /&gt;
Debian and most Linux distributions (Ubuntu, Linux Mint, Mageia, Fedora, etc.) are distributed free of charge and rely on official repositories for downloading and installing software. Packages in these repositories undergo strict verification, which greatly reduces the likelihood of malicious code and provides a more predictable and transparent security model.&lt;br /&gt;
&lt;br /&gt;
However, installing Debian or any other Linux distribution alone does not guarantee protection from surveillance — proper configuration is essential.&lt;br /&gt;
&lt;br /&gt;
The adversary type described in this article is &#039;&#039;&#039;experienced and resourceful&#039;&#039;&#039;. Such actors develop software capable of bypassing default configurations of operating systems — both Linux and Windows. This is profitable: a successful &amp;quot;universal key&amp;quot; or exploit that works against many default deployments can grant stealthy access to a large number of machines.&lt;br /&gt;
&lt;br /&gt;
At the same time, creating such a universal key for systems with complex, individualized security configurations is substantially harder and often impractical: each machine will have a different set of rules, profiles and policies, and the exploit must be adapted per configuration. That significantly raises the attacker&#039;s cost.&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Conclusion: do not leave a freshly installed system with default security settings. Apply deliberate, deep, and individualized hardening — least-privilege policies, properly configured access control mechanisms (AppArmor/SELinux), strict firewall rules, verified update policies and monitoring. This increases the attacker&#039;s cost and complexity and makes automated widespread exploitation much harder.&#039;&#039;&#039;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Carefully and conscientiously harden your system security settings. Prepare the system not only to withstand common, predictable attacks (for example, unauthorized access to a banking account), but also to detect and mitigate non-standard attacks (like those described in this article) &#039;&#039;&#039;so they do not catch you off guard&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Apply the most secure configurations available, especially if you store sensitive personal or professional information.&lt;br /&gt;
&lt;br /&gt;
Below, the author shares methods for configuring Debian 12 (and other Linux systems) to strengthen protection against hacking and unauthorized access.&lt;br /&gt;
&lt;br /&gt;
This article is written both as a security recommendation and as a request for advice on improving system configuration.&lt;br /&gt;
&lt;br /&gt;
If you have suggestions for enhancing the existing configurations or additional cybersecurity recommendations that may not have been considered in this message, the author would greatly appreciate your expertise and feedback.&lt;br /&gt;
&lt;br /&gt;
==== Practical Instructions ====&lt;br /&gt;
&lt;br /&gt;
===== Linux system hardening recommendations: =====&lt;br /&gt;
&lt;br /&gt;
====== Main Aspects of System Hardening ======&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Use full-disk encryption. If your PC or laptop is stolen, the attacker will face significant difficulties in gaining access to any private data stored on your hard drive.&lt;br /&gt;
&lt;br /&gt;
2.  If the OS is installed on a desktop that does not serve as a server, disable and remove all remote access services. They should not merely be password-protected or disabled — completely remove them from the system. If you do need a remote-access service, use strong passwords of 16–20 characters. Also, use complex passwords for both the regular user session and the superuser account — at least 16 characters for the user and at least 20 for the superuser.&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Important&#039;&#039;&#039;: Do not hesitate to type long passwords. Apply them even if your PC or server is physically isolated. If access to the user or superuser session is not protected by strong, lengthy passwords, the entire Linux security architecture becomes meaningless.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Use only official repositories of your distribution to install software.  Whenever possible, install packages via the package manager (apt/apt-get in Debian) from official repositories — this ensures automatic security updates and integrity verification of packages. If you connect a third-party repository, make sure it is trustworthy: check who maintains it, whether packages are signed with a GPG key, if it is available via HTTPS, and whenever possible, import and verify trusted keys manually. When installing software manually (downloading .deb packages, binaries, or source code), always verify the source: compare checksums (SHA256), verify digital signatures, and follow official installation instructions from the software provider.&lt;br /&gt;
&lt;br /&gt;
4. Avoid using the superuser account or &#039;&#039;sudo&#039;&#039; without a clear necessity — and never execute arbitrary scripts with &#039;&#039;sudo&#039;&#039;.  Always carefully review commands before running them in the terminal. The terminal is a powerful administrative tool, but in inexperienced hands it can cause serious system damage or compromise. Practical recommendations:&lt;br /&gt;
* Always read a script fully before running it (less script.sh, cat script.sh).&lt;br /&gt;
* Never paste commands from untrusted or unverified sources into the terminal.&lt;br /&gt;
* Use sudo only when truly necessary; consider using sudoedit for editing configuration files.&lt;br /&gt;
* Follow the principle of least privilege — create separate user accounts and limit access rights where possible &amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Important:&#039;&#039;&#039; Improper or careless use of &#039;&#039;sudo&#039;&#039; and manual installation of software from untrusted sources are common causes of data leaks, data loss, and system compromise. Always test any configuration changes in an isolated environment before applying them on a production machine.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Follow a server-style access model  &lt;br /&gt;
&lt;br /&gt;
Do not add regular users to the &#039;&#039;sudo&#039;&#039; group. The &#039;&#039;sudo&#039;&#039; privilege should be reserved exclusively for the superuser (root). Regular users &#039;&#039;&#039;should not&#039;&#039;&#039; have the ability to execute commands as root via &#039;&#039;sudo&#039;&#039;.  &lt;br /&gt;
&lt;br /&gt;
Yes, this can introduce some inconvenience in system administration, but this model provides a more secure configuration and reduces the risk of accidental or intentional security breaches.&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; system users created by the kernel or services (e.g., &#039;&#039;www-data&#039;&#039;, &#039;&#039;postgres,&#039;&#039; &#039;&#039;nobody&#039;&#039;) &#039;&#039;&#039;do not have sudo access by default&#039;&#039;&#039;. Programs installed using &#039;&#039;sudo&#039;&#039; by the root user &#039;&#039;&#039;do not automatically grant sudo privileges to users created by those programs&#039;&#039;&#039;. Any virtual or service accounts remain unable to run commands with &#039;&#039;sudo&#039;&#039; unless explicitly added to the sudo-enabled group.&amp;lt;/blockquote&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
6. Use application confinement tools such as AppArmor; do not leave profiles at their defaults — customize and harden profiles to match your actual workflows. You may also consider switching to SELinux. If you have difficulty configuring AppArmor or SELinux, seek help from specialists or use AI-based tools. My SELinux configuration can be viewed [https://wiki.debian.org/Security/ProtectingAgainstTargetedAttacks/SecurityConfigsAndLogs#| here].&lt;br /&gt;
&lt;br /&gt;
7. Use advanced network filtering settings: iptables or nftables, or a commercial firewall. &lt;br /&gt;
My nftables config can be viewed [https://wiki.debian.org/Security/ProtectingAgainstTargetedAttacks/SecurityConfigsAndLogs#| here].&lt;br /&gt;
&lt;br /&gt;
8. Configure kernel parameters for maximum security (sysctl hardening). &lt;br /&gt;
My 99-protect.conf config can be viewed [https://wiki.debian.org/Security/ProtectingAgainstTargetedAttacks/SecurityConfigsAndLogs#| here].&lt;br /&gt;
&lt;br /&gt;
9. Use IDS/IPS systems — intrusion detection and prevention systems (examples: audit, OSSES, Wazus, AIDE). These tools can detect and log attacker activity within your system or network, as well as block malicious actions (logging each blocking event). &lt;br /&gt;
My auditd config can be viewed [https://wiki.debian.org/Security/ProtectingAgainstTargetedAttacks/SecurityConfigsAndLogs#| here].&lt;br /&gt;
&lt;br /&gt;
10. Test the system for vulnerabilities using scanners (for example, DebPkg:lynis, OpenVAS, Nessus). Test results can be analyzed using tools and, if necessary, AI — provide the logs for review.&lt;br /&gt;
&lt;br /&gt;
11 If you suspect that you are being targeted by a focused or targeted attack, start periodically capturing network traffic using tools such as tcpdump, Wireshark, or Zeek. The collected logs can then be sent to security specialists or AI-based analysis tools for further investigation. These measures will significantly complicate a hacker’s task and make the unnoticed collection of personal data more difficult.&lt;br /&gt;
&lt;br /&gt;
12. Follow the principle of Attack Surface Reduction (or [https://en.wikipedia.org/wiki/Occam&#039;s_razor Occam&#039;s Razor]) — disable all unnecessary daemons, services, and processes that are not required for your workflow.&lt;br /&gt;
* If there is a possibility you might need a service, daemon, or process in the future, disable it and remove it from autostart.&lt;br /&gt;
* If you are certain you will never use it, remove it completely from the system.&lt;br /&gt;
* This practice reduces potential attack vectors and strengthens overall system security.&lt;br /&gt;
* Before removing unnecessary daemons, services, or applications, make sure that their removal will not break dependencies with other system components or applications. &lt;br /&gt;
* Always create a full system backup before making any significant configuration changes or modifications.&lt;br /&gt;
&lt;br /&gt;
13. Perform regular antivirus and anti-rootkit scans of the system. In targeted attacks, adversaries typically rely on passive or covert methods — such as data interception, monitoring, traffic analysis, and minimal system interference that leaves few or no traces. Nevertheless, periodic antivirus and anti-rootkit scanning remains a valuable preventive measure, helping to detect known threats in time and maintain the overall security posture of the system.&lt;br /&gt;
&lt;br /&gt;
14. Always record every change you make in system and application configuration files. Add the note as a comment directly in the configuration file — either above the modified line or after it. Format: # YYYY-MM-DD HH:MM, short description of the change, reason Example: Editing `sshd_config` to disable root login via SSH:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
bash&lt;br /&gt;
&lt;br /&gt;
PermitRootLogin no&lt;br /&gt;
# 2025-11-09 14:35, root login via SSH disabled, system security enhancement&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why it matters:&lt;br /&gt;
&lt;br /&gt;
* Allows you to quickly understand when and why a change was made.&lt;br /&gt;
* Helps troubleshoot future issues — you can easily identify which change may have caused a failure or conflict.&lt;br /&gt;
* Simplifies system audits and security reviews.&lt;br /&gt;
&lt;br /&gt;
====== Related Aspects of Internet Security ======&lt;br /&gt;
&lt;br /&gt;
There are aspects of Internet security which, if neglected, can significantly reduce or completely nullify all your efforts in configuring and securing your operating system.&lt;br /&gt;
&lt;br /&gt;
1. Store passwords in a reliable password manager.  &#039;&#039;&#039;Outdated and insecure&#039;&#039;&#039; practices for storing passwords are still commonly encountered, including:&lt;br /&gt;
&lt;br /&gt;
* relying on human memory, with the risk of forgetting or confusing credentials;&lt;br /&gt;
* storing passwords on paper media, which can be damaged, lost, or stolen;&lt;br /&gt;
* saving passwords in web browsers in unencrypted form;&lt;br /&gt;
* keeping passwords in plain text files on the desktop or in other directories without encryption;&lt;br /&gt;
* and similar approaches.&lt;br /&gt;
Such outdated practices should be abandoned in favor of using a modern, reliable password manager that provides proper encryption and access control.&lt;br /&gt;
&lt;br /&gt;
A password manager encrypts the password database, and access to it is possible only after entering a master password, which should be memorized.&lt;br /&gt;
&lt;br /&gt;
Regularly create up-to-date backups of the &#039;&#039;encrypted&#039;&#039; password database.&lt;br /&gt;
&lt;br /&gt;
Do not rely on memory to remember all passwords: strong, attack-resistant passwords are difficult to memorize, while passwords that are easy to remember are generally &#039;&#039;not resistant to compromise&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Additional Practical Recommendations: &amp;lt;blockquote&amp;gt;A password manager (for example, [https://keepassxc.org/ KeePassXC]) can be configured to automatically enter the superuser password into a terminal window. It is strongly recommended to &#039;&#039;&#039;strictly bind this automatic input to a specific terminal window&#039;&#039;&#039; in order to prevent accidental password entry into another field or application. This approach makes it possible to safely use long, cryptographically strong passwords for privileged operations.&lt;br /&gt;
&lt;br /&gt;
In addition, individual account entries within a password manager can store attached encrypted data, such as text files containing access codes, GPG keys, or passphrases. All such information is stored in encrypted form within a single protected database.&lt;br /&gt;
&lt;br /&gt;
It is essential to use a &#039;&#039;&#039;strong master password&#039;&#039;&#039; and never share it with others. The password database should not be kept unlocked continuously. After completing the required operations, the database should be closed, or automatic locking should be configured based on specific conditions (such as screen locking or laptop closure) and/or after a defined period of inactivity (for example, 15–30 minutes).&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Enable two-factor authentication (2FA) on all your online accounts (email, social networks, etc.) — this means confirming your login through a phone call, SMS, a one-time code in a mobile authenticator app (see [https://en.wikipedia.org/wiki/Authenticator_app Authenticator app]), or a hardware security key such as a [https://en.wikipedia.org/wiki/YubiKey YubiKey].  &lt;br /&gt;
&lt;br /&gt;
The YubiKey hardware authenticator (USB/NFC key) offers the following advantages:&lt;br /&gt;
* YubiKey helps protect against phishing because the device verifies the website domain and will not work on fake or look-alike sites. &lt;br /&gt;
* It is virtually impossible to hack remotely or over the network, unlike apps, if your phone or backup password is compromised. &lt;br /&gt;
* Additionally, YubiKey is not vulnerable to SIM-swap attacks like SMS-based 2FA, as it is not tied to a phone number.  &lt;br /&gt;
&lt;br /&gt;
For now, it is one of the most reliable hardware-based options for two-factor authentication.&lt;br /&gt;
&lt;br /&gt;
3. Using VPN to improve privacy and security&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;If you are a private user&#039;&#039;, you can also configure a system-wide VPN (for example, ProtonVPN) so that all device traffic is routed through it — not only browser traffic or traffic from specific applications.&lt;br /&gt;
Enable the “killswitch” mode and disable it only when necessary, re-enabling it immediately afterwards.&lt;br /&gt;
It is also recommended to periodically change VPN servers, doing so at different and unpredictable intervals.&lt;br /&gt;
&lt;br /&gt;
Using a VPN increases your privacy: all of your traffic will be encrypted from observers on your local network and from your internet service provider. This makes it more difficult for an attacker to apply certain social-engineering methods based on traffic analysis, and it also helps protect your privacy in the event that your provider’s infrastructure is compromised.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;If you own a server&#039;&#039; and want access to it to be available only to trusted private or legal entities, while also increasing its protection against unauthorized access, you can configure the server so that SSH and other internal services are accessible exclusively through OpenVPN [https://openvpn.net/as-docs/tutorials/tutorial--change-tls-control-channel-security.html using TLS authentication (tls-auth / tls-crypt)] and unique client certificates instead of passwords.&lt;br /&gt;
&lt;br /&gt;
4. Actively study and apply artificial intelligence to improve security configurations in Debian and other Linux distributions, as well as to address related cybersecurity tasks. A lack of knowledge often becomes the weakest link; AI can provide accurate, structured recommendations interactively and help automate repetitive or complex operations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; Always verify AI-generated recommendations before applying them in production environments. Test any changes in an isolated system, review generated commands or configurations, and ensure that suggestions align with your threat model and security architecture.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In practice, users who effectively leverage AI tools are significantly better prepared, and the adoption of such technologies makes malicious activity considerably more difficult for attackers.&lt;br /&gt;
&lt;br /&gt;
5. If privacy is a priority, consider reducing reliance on the Google ecosystem and switching to more privacy-focused alternatives (for example, proton.me and similar services). Google provides very strong security, but its services collect extensive telemetry for analysis. While this data is encrypted and not accessible to attackers, it may still be undesirable for users who value strict privacy.&lt;br /&gt;
&lt;br /&gt;
6. Use a Wi-Fi router that supports nftables or an equivalent modern packet-filtering framework.&lt;br /&gt;
&lt;br /&gt;
It is not recommended to rely on the cheapest consumer-grade routers that lack built-in security mechanisms and fine-grained traffic filtering capabilities. A router should be treated as an integral part of the overall security architecture, not as an element that increases the attack surface.&lt;br /&gt;
&lt;br /&gt;
Deploying an additional network filtering layer at the entry point of a home network significantly complicates an attacker’s ability to build an effective attack configuration and increases the overall cost of an attack. Configure strict and well-defined filtering rules on the router’s nftables firewall, including inbound connection restrictions, outbound traffic control, and network segmentation where appropriate.&lt;br /&gt;
&lt;br /&gt;
Access to the router’s administrative interface must be protected with a strong, unique password. Whenever possible, management access should be restricted to trusted networks or limited to wired interfaces only.&lt;br /&gt;
&lt;br /&gt;
Such a configuration provides an additional layer of protection not only for the primary workstation, but also for other devices connected to the network (for example, Android-based mobile devices), which often lack the technical capability to use host-level packet filtering mechanisms such as iptables or nftables.&lt;br /&gt;
&lt;br /&gt;
7. Hardware Firewall&lt;br /&gt;
&lt;br /&gt;
If you handle confidential information on your computer and are in a high-risk zone for cyberattacks, consider using an additional layer of protection such as a &#039;&#039;&#039;hardware firewall&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Important note on cost: In addition to the one-time cost of the device (starting from approximately $55), an annual paid subscription is required for threat intelligence updates. Therefore, this solution is economically justified primarily in two cases:&lt;br /&gt;
&lt;br /&gt;
* You work with critically important information whose leakage is unacceptable (e.g., trade secrets, client personal data, unique developments, or if your professional activities involve sensitive data in fields such as law enforcement, military, legal practice, journalism, healthcare, and so on).&lt;br /&gt;
* You have well-founded suspicions that you or your organization could be the target of a directed attack.&lt;br /&gt;
&lt;br /&gt;
Attackers often rely on direct interaction with your devices. The presence of a dedicated, subscription-updated hardware firewall creates a significant obstacle for them. It acts as an independent filter, analyzing all incoming and outgoing traffic before it reaches your end devices. This substantially increases the cost and complexity of an attack for the malicious actor, reducing its effectiveness.&lt;br /&gt;
&lt;br /&gt;
However, this should not be viewed as a panacea. &#039;&#039;&#039;It is an additional, not the sole, layer of defense.&#039;&#039;&#039; Its presence does not negate the necessity of:&lt;br /&gt;
&lt;br /&gt;
* Configuring the basic security of your router.&lt;br /&gt;
* Using a software firewall and antivirus on your PC.&lt;br /&gt;
* Timely updating your operating system and applications.&lt;br /&gt;
* Practicing good cyber hygiene (e.g., using a password manager, being cautious of phishing).&lt;br /&gt;
&lt;br /&gt;
A hardware firewall should be seamlessly integrated into your overall security architecture, forming a &#039;&#039;&#039;multi-layered (defense-in-depth) protection system.&#039;&#039;&#039; It is precisely such a system, where breaching one barrier does not lead to the compromise of the entire network, that poses the most serious challenge for attackers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; Artificial intelligence tools, YubiKey, and other tools not directly related to Debian/Linux are mentioned here as optional technical aids, not as an endorsement of any specific service, vendor, or product. The author does not engage in commercial promotion of any software, hardware, or services, but merely provides optional recommendations for measures that directly or indirectly enhance the security of operating system usage.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
8. It is also important to consider the possibility of hardware-level attacks.&lt;br /&gt;
Although such attacks are significantly less common and typically require more resources than software-based attacks, they remain a potential threat. In certain scenarios, an adversary may exploit vulnerabilities in device firmware or conduct a combined attack targeting both software and hardware layers. Examples include remote injection of malicious code into the firmware of a motherboard, router, optical modem, or other hardware components.&lt;br /&gt;
&lt;br /&gt;
If, after a thorough software-level audit, a security issue remains unresolved, it is advisable &#039;&#039;&#039;to perform a hardware-level assessment&#039;&#039;&#039; as well, including verification of device firmware integrity and configuration.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;And most importantly — give up the illusion of complete security. We live in conditions of a severe information war, and everyone must make efforts so that malicious actors cannot freely spy on desktops and servers.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===== Examples of Deep Custom Security Configurations =====&lt;br /&gt;
&lt;br /&gt;
Below are examples of strong, individualized configurations for &#039;&#039;&#039;SELinux&#039;&#039;&#039;, &#039;&#039;&#039;nftables&#039;&#039;&#039;, &#039;&#039;&#039;sysctl&#039;&#039;&#039; and &#039;&#039;&#039;auditd&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
These are not universal templates, but references illustrating advanced system hardening.&lt;br /&gt;
&lt;br /&gt;
[https://wiki.debian.org/Security/ProtectingAgainstTargetedAttacks/SecurityConfigsAndLogs| Examples of Deep Custom Security Configurations (DebianWiki)]&lt;br /&gt;
&lt;br /&gt;
==== UsefulPrograms ====&lt;br /&gt;
&lt;br /&gt;
Here is the list of programs useful for configuring and maintaining the security of Linux systems. The included programs are either open-source (the majority) or commercial, but with freely available limited features sufficient to address core security tasks (a smaller portion). &lt;br /&gt;
&lt;br /&gt;
[https://wiki.debian.org/Security/ProtectingAgainstTargetedAttacks/UsefulPrograms| Useful programs reviewed by the article author (DebianWiki)]&lt;br /&gt;
&lt;br /&gt;
==== Additional articles on the author&#039;s site: ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; The following materials are provided for &#039;&#039;&#039;awareness, defensive, and educational purposes only&#039;&#039;&#039;. They are intended to help users recognize threats and build their own security. All personal data and identifiers have been anonymized.&amp;lt;/blockquote&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
[https://blackcat568.github.io/CyberSecurityAndSocialEngineering/targeted-attack-analysis.html| Author&#039;s analysis of targeted attacks] - The author provides an analysis of complex targeted attack that was used against him, including social‑engineering and psychological components, as well as cyber attack vectors and defensive measures.  &lt;br /&gt;
&lt;br /&gt;
[https://blackcat568.github.io/CyberSecurityAndSocialEngineering/information-and-behavioral-hygiene-for-working-with-a-pc.html| Information and Behavioral Hygiene for Working with a PC] - This is an extensive popular-science essay dedicated to comprehensive digital hygiene. Drawing on years of personal (and often bitter) experience in working with PCs, observing user behavior, working in the security sector, as well as experience in countering scammers and manipulators online, the author formulates a system of practical principles for conscious, safe, and productive work with a PC and on the Internet.&lt;br /&gt;
&lt;br /&gt;
==== External Resources ====&lt;br /&gt;
&lt;br /&gt;
[https://www.debian.org/doc/manuals/securing-debian-manual/index.en.html| Securing Debian Manual 3.19 — Javier Fernández-Sanguino Peña.]  &lt;br /&gt;
This document describes security in the Debian project and in the Debian operating system. Starting with the process of securing and hardening the default Debian GNU/Linux distribution installation, it also covers some of the common tasks to set up a secure network environment using Debian GNU/Linux, gives additional information on the security tools available and talks about how security is enforced in Debian by the security and audit team.  &lt;br /&gt;
&lt;br /&gt;
[https://medium.com/%40ihouelecaurcy/the-complete-nftables-guide-modern-linux-firewall-mastery-79fb86894d5c| The Complete nftables Guide: Modern Linux Firewall Mastery — Ihouele Caurcy]  &lt;br /&gt;
The definitive guide to nftables — the modern replacement for iptables, ip6tables, arptables, and ebtables. From basic concepts to enterprise-level configurations.  &lt;br /&gt;
&lt;br /&gt;
[https://notes.suhaib.in/docs/tech/utilities/iptables-nftables-and-you-a-friendly-guide-to-traffic-rules/| iptables, nftables, and You A Friendly Guide to Traffic Rules]&lt;br /&gt;
A friendly guide to iptables and nftables in Linux: explains Netfilter architecture, tables, chains and rules, with configuration examples (SSH, IP blocking, port forwarding). Covers differences between iptables and nftables, migration, and compatibility with modern firewall tools. Useful for understanding the iptables→nftables transition and practical examples.  &lt;br /&gt;
&lt;br /&gt;
[https://public.jdstone1.com/books_and_magazines/Computer_Books/Operating_Systems/SELinux%20System%20Administration%20(3rd%20ed).pdf| SELinux System Administration Third Edition — Sven Vermeulen.]  &lt;br /&gt;
Implement mandatory access control to secure applications, users, and information flows on Linux.  &lt;br /&gt;
&lt;br /&gt;
[https://gitlab.com/apparmor/apparmor/-/wikis/home AppArmor]  &lt;br /&gt;
The official wiki for the AppArmor security project on Linux. Provides guidance for users and developers, instructions for creating and managing security profiles, example access policies for applications, and best practices to protect the operating system.  &lt;br /&gt;
&lt;br /&gt;
[https://nallino.net/stockage/security/Linux_Mint_Security.pdf| Security, Privacy and Anonymity in Linux Mint — Michel Nallino.]  &lt;br /&gt;
A good and comprehensive work on Linux Mint security that can also be useful for other Linux distributions.  &lt;br /&gt;
&lt;br /&gt;
[https://www.cisa.gov/topics/cybersecurity-best-practices| CISA — Cybersecurity Best Practices] &lt;br /&gt;
CISA (Certified Information Systems Auditor) provides information on cybersecurity best practices to help individuals and organizations implement preventative measures and manage cyber risks.&lt;br /&gt;
&lt;br /&gt;
==== Provenance ====&lt;br /&gt;
&lt;br /&gt;
This article was written by blackcat568 on the forums: https://forums.debian.net/viewtopic.php?t=164131&lt;br /&gt;
&lt;br /&gt;
it is initially shared on the Debian Wiki: https://wiki.debian.org/Security/ProtectingAgainstTargetedAttacks&lt;br /&gt;
&lt;br /&gt;
[[Category:Security]]&lt;br /&gt;
[[Category:Administration]]&lt;br /&gt;
[[Category:Guides]]&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Root,_Sudo,_and_SU&amp;diff=170</id>
		<title>Root, Sudo, and SU</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Root,_Sudo,_and_SU&amp;diff=170"/>
		<updated>2026-02-10T19:23:59Z</updated>

		<summary type="html">&lt;p&gt;Donald: /* The Concept of Root and User: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== The Concept of Root and User: ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;&#039;root&#039;&#039; is the user name or account that by default has access to all commands and files on a Linux or other Unix-like operating system. It is also referred to as the root account, root user and the superuser. &amp;lt;ref&amp;gt;root Definition &amp;quot;http://www.linfo.org/root.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An ordinary user only has control over files in his/her own &amp;quot;home&amp;quot; directory, though they may be &amp;quot;allowed&amp;quot; access to other files and applications.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;su, su -, and sudo:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;su&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;su -&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt; commands are used in a terminal to give you root access to the system. You can of course log on as root but this is not generally a good idea; once logged on in a particular identity, you tend to continue in that identity until you log off again, and it is bad practice to work as root for long periods.&lt;br /&gt;
&lt;br /&gt;
Instead you should use &amp;lt;code&amp;gt;su&amp;lt;/code&amp;gt; to become root &amp;quot;for the duration&amp;quot;. You will need to give the root password which you set when you installed Debian. Your prompt will change to show that you are now root. When you have done what you need to do as root, type exit to get back to your own identity.&lt;br /&gt;
&lt;br /&gt;
Debian has adopted specific variations for the &#039;&#039;&#039;su&#039;&#039;&#039; command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;su&amp;lt;/code&amp;gt; will give access to all commands except for critical system commands in the &amp;lt;code&amp;gt;/usr/sbin directory&amp;lt;/code&amp;gt;. This is a function of the environment which the &amp;lt;code&amp;gt;su&amp;lt;/code&amp;gt; command invokes - if you switch from user account to root with su, you retain that &#039;&#039;user&#039;s environment&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;su -&amp;lt;/code&amp;gt; will also switch you to &#039;&#039;root&#039;&#039; account but invokes the &#039;&#039;root environment&#039;&#039; which is required for any commands in the &amp;lt;nowiki&amp;gt;/usr/sbin&amp;lt;/nowiki&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
     For example, you can run the &amp;lt;code&amp;gt;chown&amp;lt;/code&amp;gt; command &#039;&#039;&#039;after&#039;&#039;&#039; elevating to root privileges with &amp;lt;code&amp;gt;su&amp;lt;/code&amp;gt;, but to run the &amp;lt;code&amp;gt;adduser&amp;lt;/code&amp;gt; command you need to get root with &amp;lt;code&amp;gt;su -&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt; should also allow running commands which require root environment like those in &amp;lt;nowiki&amp;gt;/usr/sbin/&amp;lt;/nowiki&amp;gt; eg. &amp;lt;code&amp;gt;sudo blkid&amp;lt;/code&amp;gt; (PM me if you have a different experience; it works here).&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt; command is a more selective alternative to su, particularly useful if there are several users of your system. &lt;br /&gt;
&lt;br /&gt;
By editing, as root, the file &amp;lt;nowiki&amp;gt;/etc/sudoers&amp;lt;/nowiki&amp;gt;, you can give root access to a specific individual for specific commands only. This is much safer than letting them know the root password. &lt;br /&gt;
&lt;br /&gt;
The man page for sudoers gives details of the syntax for this file.&lt;br /&gt;
&lt;br /&gt;
The Debian installer will ask if you wish to add your user to &#039;&#039;&#039;sudo&#039;&#039;&#039; and if you wish to create a root password. If you don&#039;t specify a root password, your user will automatically be added to &#039;&#039;&#039;sudo&#039;&#039;&#039;. If you didn&#039;t add you user to &#039;&#039;&#039;sudo&#039;&#039;&#039; during install, you can do it afterwards with the command (run as &amp;lt;code&amp;gt;su -&amp;lt;/code&amp;gt; and entering the root password):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;adduser &amp;lt;username&amp;gt; sudo&amp;lt;/code&amp;gt;&lt;br /&gt;
of course replace &amp;lt;username&amp;gt; with your actual user name.&lt;br /&gt;
&lt;br /&gt;
To use sudo, simply preface the command you wish to execute as root with the word &#039;&#039;&#039;sudo&#039;&#039;&#039;. You will be asked to enter your own user password to prove your identity. &lt;br /&gt;
&lt;br /&gt;
The system will then check whether you have been given permission to execute this particular command as root; if so, it will be executed. sudo &amp;quot;remembers&amp;quot; you for a short time so that you can give a group of sudo commands without entering your password each time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This thread was original posted on the Debian User Forumsm but @sunrat: http://forums.debian.net/viewtopic.php?f=32&amp;amp;t=58557&amp;amp;p=338548&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ref 1: http://www.linfo.org/root.html&lt;br /&gt;
&lt;br /&gt;
[[Category:Administration]][[Category:HowTo]]&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Debian_First_Aid_Kit&amp;diff=169</id>
		<title>Debian First Aid Kit</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Debian_First_Aid_Kit&amp;diff=169"/>
		<updated>2026-02-10T19:21:54Z</updated>

		<summary type="html">&lt;p&gt;Donald: Category:Category name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= My Debian First Aid Kit =&lt;br /&gt;
&#039;&#039;&#039;All commands are verified on Debian 13.1 (Trixie) / 6.16.3+deb13-amd64 x64_64&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Created : 27/10/2025 15:54:21&lt;br /&gt;
&lt;br /&gt;
Last Updated : 27/10/2025 23:42:45 &#039;&#039;&#039;ID : 544000.3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Table of Contents ==&lt;br /&gt;
&lt;br /&gt;
# Issues&lt;br /&gt;
# Package Management Issues&lt;br /&gt;
# Disk &amp;amp; Filesystem Issues&lt;br /&gt;
# Performance Issues&lt;br /&gt;
# Service &amp;amp; Application Errors&lt;br /&gt;
# Permission &amp;amp; Access Issues&lt;br /&gt;
# Hardware IssuesSystem Freezes &amp;amp; Crashes&lt;br /&gt;
# Boot Problems&lt;br /&gt;
# Network&lt;br /&gt;
# Quick Diagnostic Commands&lt;br /&gt;
# Useful Aliases &amp;amp; Shortcuts&lt;br /&gt;
# Tips for Effective Troubleshooting&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 1. System Freezes &amp;amp; Crashes ==&lt;br /&gt;
&lt;br /&gt;
=== Check System Logs ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# View logs from previous boot (after freeze/crash)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;journalctl -b -1&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# List all available boots&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;journalctl --list-boots&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Show only kernel messages from previous boot&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;journalctl -b -1 -k&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Show errors and critical messages only&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;journalctl -b -1 -p err&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Save logs to file for analysis&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;journalctl -b -1 &amp;gt; ~/crash-log.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Common Freeze Causes to Look For ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Kernel panics&#039;&#039;&#039;: Search for &amp;quot;kernel panic&amp;quot; or &amp;quot;Oops&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;Out of Memory (OOM)&#039;&#039;&#039;: Search for &amp;quot;Out of memory&amp;quot; or &amp;quot;oom-killer&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;Hardware errors&#039;&#039;&#039;: Look for &amp;quot;MCE&amp;quot; (Machine Check Exception) or &amp;quot;hardware error&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;Driver issues&#039;&#039;&#039;: Check for module/driver failures&lt;br /&gt;
* &#039;&#039;&#039;Overheating&#039;&#039;&#039;: Check system temperatures&lt;br /&gt;
&lt;br /&gt;
=== Check System Resources ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# View memory usage&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;free -h&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check disk space&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;df -h&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Monitor system resources in real-time&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;htop&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# or&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;top&amp;lt;/code&amp;gt;&lt;br /&gt;
 (I prefer btop for better presentation)&lt;br /&gt;
 You would need to install it. sudo apt install btop&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check for disk errors&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo dmesg | grep -i error&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;These are permanent errors due to incomplete/buggy ACPI tables in the BIOS, but they are harmless :&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;0.686554] ACPI Error: No handler for Region [ECRM] (00000000201accc4) [EmbeddedControl] (20250404/evregion-131)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;0.686577] ACPI Error: Region EmbeddedControl (ID=3) has no handler (20250404/exfldio-261)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;0.686594] ACPI Error: Aborting method \_SB.GPIO._EVT due to previous error (AE_NOT_EXIST) (20250404/psparse-529)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. Boot Problems ==&lt;br /&gt;
&lt;br /&gt;
=== Check Boot Process ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# View systemd boot analysis&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;systemd-analyze blame&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# See what failed during boot&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;systemctl --failed&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check specific service status&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;systemctl status &amp;lt;service-name&amp;gt; e.g NetworkManager.service&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Access Recovery Mode ===&lt;br /&gt;
&lt;br /&gt;
# Reboot and hold &amp;lt;code&amp;gt;Shift&amp;lt;/code&amp;gt; to access GRUB menu (depending on your grub timing settings)&lt;br /&gt;
# Select &amp;quot;Advanced options&amp;quot;&lt;br /&gt;
# Choose recovery mode&lt;br /&gt;
# Select &amp;quot;root&amp;quot; for root shell access&lt;br /&gt;
&lt;br /&gt;
=== Common Boot Fixes ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Repair filesystem errors&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;Once you identify a device with lsblk&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo fsck /dev/sdXN&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Reinstall GRUB bootloader&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo grub-install /dev/sdX&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo update-grub&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check fstab for mount errors&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;cat /etc/fstab&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. Network Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Diagnose Network Connection ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Check network interfaces&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;ip addr show&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Test connectivity&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;ping -c 4 8.8.8.8&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;or&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;ping -c 6 2a00:1450:4007:809::200e&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check DNS resolution&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;nslookup google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# View routing table&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;ip route show&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check active connections&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;ss -tuln&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Restart Network Service ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# For systems with NetworkManager&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo systemctl restart NetworkManager&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# For systems with networking service&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo systemctl restart networking&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Bring interface down and up&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo ip link set eth0 down&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo ip link set eth0 up&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;If you need to prove to your server host something that is beyond your control, you can always get out the big guns with MTR.&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= &amp;lt;code&amp;gt;MTR (It’s Traceroute on Steroids)&amp;lt;/code&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
== What is MTR? ==&lt;br /&gt;
MTR combines the functionality of &amp;lt;code&amp;gt;ping&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;traceroute&amp;lt;/code&amp;gt; into a single real-time network diagnostic tool. It continuously monitors the path between your system and a destination, providing detailed statistics about latency and packet loss at each hop.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo apt install mtr&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Basic Usage ==&lt;br /&gt;
 &amp;lt;code&amp;gt;# Basic MTR (interactive mode)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Report mode (run 10 cycles and exit)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Specify number of pings&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 50 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Use TCP instead of ICMP&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --tcp google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Use UDP&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --udp google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# No DNS resolution (faster, shows IPs only)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --no-dns google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Show both hostnames and IPs&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --show-ips google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Understanding MTR Output ==&lt;br /&gt;
&lt;br /&gt;
=== Sample Output ===&lt;br /&gt;
 &amp;lt;code&amp;gt;HOST: hostname                    Loss%   Snt   Last   Avg  Best  Wrst StDev&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;1.|-- 192.168.1.1                0.0%    10    1.2   1.5   1.0   2.3   0.4&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;2.|-- 10.0.0.1                   0.0%    10    8.5   9.2   7.8  12.1   1.3&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;3.|-- isp-gateway.net            0.0%    10   15.3  16.1  14.2  19.8   1.8&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;4.|-- ???                       100.0%   10    0.0   0.0   0.0   0.0   0.0&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;5.|-- google.com                 0.0%    10   25.4  26.8  24.1  32.5   2.4&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Column Meanings ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;HOST&#039;&#039;&#039;: Hostname or IP address of each hop in the route&lt;br /&gt;
* &#039;&#039;&#039;Loss%&#039;&#039;&#039;: Percentage of packets lost at this hop&lt;br /&gt;
* &#039;&#039;&#039;Snt&#039;&#039;&#039;: Number of packets sent to this hop&lt;br /&gt;
* &#039;&#039;&#039;Last&#039;&#039;&#039;: Latency of the most recent packet (milliseconds)&lt;br /&gt;
* &#039;&#039;&#039;Avg&#039;&#039;&#039;: Average latency across all packets (milliseconds)&lt;br /&gt;
* &#039;&#039;&#039;Best&#039;&#039;&#039;: Lowest latency recorded (milliseconds)&lt;br /&gt;
* &#039;&#039;&#039;Wrst&#039;&#039;&#039;: Highest latency recorded (milliseconds)&lt;br /&gt;
* &#039;&#039;&#039;StDev&#039;&#039;&#039;: Standard deviation - measures latency consistency (lower is better)&lt;br /&gt;
&lt;br /&gt;
== Interpreting Results ==&lt;br /&gt;
&lt;br /&gt;
=== Healthy Network ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Loss% = 0%&#039;&#039;&#039; on all hops&lt;br /&gt;
* &#039;&#039;&#039;Stable latency&#039;&#039;&#039; (low StDev values)&lt;br /&gt;
* &#039;&#039;&#039;Gradual latency increase&#039;&#039;&#039; as hop count increases&lt;br /&gt;
* &#039;&#039;&#039;Consistent response times&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Problem Indicators ===&lt;br /&gt;
&lt;br /&gt;
==== 1. High Packet Loss at Specific Hop ====&lt;br /&gt;
 &amp;lt;code&amp;gt;5.|-- problem-router.net        25.0%    10   45.3  48.2  42.1  65.8  8.4&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Analysis:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* If loss continues to destination: Real problem at this router&lt;br /&gt;
* If loss only at this hop but NOT beyond: Router may be rate-limiting ICMP (false positive, not a real problem)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rule of thumb:&#039;&#039;&#039; If packet loss appears at hop N but hops N+1, N+2, etc. show 0% loss, it&#039;s usually just ICMP rate limiting.&lt;br /&gt;
&lt;br /&gt;
==== 2. High Latency at Specific Hop ====&lt;br /&gt;
 &amp;lt;code&amp;gt;3.|-- slow-link.net              0.0%    10  150.3 155.2 148.1 165.8  5.4&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Indicates:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Network bottleneck or congested link&lt;br /&gt;
* Geographical distance (intercontinental hops)&lt;br /&gt;
* Slow routing equipment&lt;br /&gt;
&lt;br /&gt;
==== 3. No Response (???) ====&lt;br /&gt;
 &amp;lt;code&amp;gt;4.|-- ???                       100.0%   10    0.0   0.0   0.0   0.0   0.0&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Possible causes:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Router configured to not respond to ICMP/traceroute packets&lt;br /&gt;
* Firewall blocking diagnostic packets&lt;br /&gt;
* &#039;&#039;&#039;Not necessarily a problem&#039;&#039;&#039; if later hops respond normally&lt;br /&gt;
&lt;br /&gt;
==== 4. High Jitter (StDev) ====&lt;br /&gt;
 &amp;lt;code&amp;gt;6.|-- unstable.net               0.0%    10   35.3  52.8  28.1  95.2  24.7&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Indicates:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Inconsistent latency (high StDev of 24.7ms)&lt;br /&gt;
* Network congestion or instability&lt;br /&gt;
* Poor for real-time applications (VoIP, gaming, video calls)&lt;br /&gt;
&lt;br /&gt;
==== 5. Sudden Latency Spike ====&lt;br /&gt;
 &amp;lt;code&amp;gt;1.|-- 192.168.1.1                0.0%    10    1.2   1.5   1.0   2.3   0.4&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;2.|-- 10.0.0.1                   0.0%    10    8.5   9.2   7.8  12.1   1.3&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;3.|-- problematic-hop.net        0.0%    10  180.5 185.2 178.1 195.8  6.4&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;4.|-- next-hop.net               0.0%    10  182.3 187.8 180.5 198.2  6.8&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Problem identified:&#039;&#039;&#039; Hop 3 introduces ~170ms of latency (jump from 9ms to 180ms)&lt;br /&gt;
&lt;br /&gt;
== Advanced Usage ==&lt;br /&gt;
&lt;br /&gt;
=== Report Mode with Different Output Formats ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# CSV format for logging and analysis&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report --csv google.com &amp;gt; network-report.csv&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# JSON output for parsing&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report --json google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# XML format&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report --xml google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Wide report (no abbreviations)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-wide google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Protocol Selection ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Use ICMP (default, requires no special permissions)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Use UDP (alternative to ICMP)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --udp google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Use TCP (useful for firewall testing)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --tcp google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Test specific TCP port&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo mtr --tcp --port 443 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo mtr --tcp --port 22 remote-server.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Timing and Duration ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Specify interval between pings (default 1 second)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --interval 0.5 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Extended test with 100 cycles&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 100 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Continuous monitoring (Ctrl+C to stop)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Quick 10-cycle report&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 10 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Advanced Options ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Show Autonomous System (AS) numbers&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --aslookup google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Set maximum number of hops&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --max-ttl 20 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Set packet size&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --psize 1000 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Show both IP and hostname&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --show-ips google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Specify source address (multiple network interfaces)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --address 192.168.1.100 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# IPv4 only&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr -4 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# IPv6 only&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr -6 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Interactive Mode Commands ==&lt;br /&gt;
When running MTR in interactive mode (just &amp;lt;code&amp;gt;mtr hostname&amp;lt;/code&amp;gt;), use these keys:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Key&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;h&#039;&#039;&#039;&lt;br /&gt;
|Display help&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;d&#039;&#039;&#039;&lt;br /&gt;
|Toggle display mode (cycle through different views)&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;n&#039;&#039;&#039;&lt;br /&gt;
|Toggle between hostnames and IP addresses&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;r&#039;&#039;&#039;&lt;br /&gt;
|Reset all statistics&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;p&#039;&#039;&#039;&lt;br /&gt;
|Pause/unpause the display&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;q&#039;&#039;&#039;&lt;br /&gt;
|Quit MTR&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;u&#039;&#039;&#039;&lt;br /&gt;
|Switch between ICMP, UDP, and TCP modes&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;y&#039;&#039;&#039;&lt;br /&gt;
|Switch between IPv4 and IPv6&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;o&#039;&#039;&#039;&lt;br /&gt;
|Toggle field display options&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;j&#039;&#039;&#039;&lt;br /&gt;
|Toggle latency display&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Practical Troubleshooting Scenarios ==&lt;br /&gt;
&lt;br /&gt;
=== Scenario 1: Diagnosing Slow Website ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Run extended test to get accurate statistics&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 100 --no-dns example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Look for:&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# - High average latency at specific hops&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# - Packet loss at destination&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# - High StDev values (jitter)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scenario 2: Testing if Firewall Blocks SSH ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Test SSH port (22) connectivity&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo mtr --tcp --port 22 --report-cycles 50 remote-server.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# If last hop shows 100% loss but earlier hops are fine:&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# - Port 22 might be filtered&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# - Try standard ICMP test for comparison&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scenario 3: ISP Performance Issues ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Test path to reliable external server&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 100 8.8.8.8&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Compare with another DNS server&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 100 1.1.1.1&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# If issues appear in first 3-4 hops: likely ISP problem&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# If issues appear later: problem is beyond your ISP&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scenario 4: VPN Troubleshooting ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Test before connecting to VPN&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 50 --no-dns google.com &amp;gt; before-vpn.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Test after connecting to VPN&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 50 --no-dns google.com &amp;gt; after-vpn.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Compare the two files to see VPN impact&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;diff before-vpn.txt after-vpn.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scenario 5: Gaming/Streaming Performance ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Test for jitter (important for real-time applications)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 200 game-server.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Look for:&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# - Low average latency (&amp;lt; 50ms for gaming)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# - Low StDev (&amp;lt; 5ms preferred)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# - Zero packet loss&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scenario 6: Intermittent Connectivity ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Long-running test to catch intermittent issues&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 500 --interval 1 target.com &amp;gt; long-test.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Monitor in real-time for several minutes&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr target.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# Watch for sudden spikes in Loss% or latency&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Continuous Monitoring ==&lt;br /&gt;
&lt;br /&gt;
=== Log Network Performance Over Time ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Create timestamped reports every hour&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;while true; do&amp;lt;/code&amp;gt;&lt;br /&gt;
     &amp;lt;code&amp;gt;timestamp=$(date +%Y%m%d-%H%M%S)&amp;lt;/code&amp;gt;&lt;br /&gt;
     &amp;lt;code&amp;gt;mtr --report --report-cycles 50 google.com &amp;gt; &amp;quot;mtr-$timestamp.txt&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
     &amp;lt;code&amp;gt;sleep 3600&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;done&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Monitor Multiple Destinations ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Create a simple monitoring script&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;#!/bin/bash&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;echo &amp;quot;=== MTR Report $(date) ===&amp;quot; &amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;echo &amp;quot;&amp;quot; &amp;gt;&amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;echo &amp;quot;Google DNS:&amp;quot; &amp;gt;&amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report --report-cycles 50 --no-dns 8.8.8.8 &amp;gt;&amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;echo &amp;quot;&amp;quot; &amp;gt;&amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;echo &amp;quot;Cloudflare DNS:&amp;quot; &amp;gt;&amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report --report-cycles 50 --no-dns 1.1.1.1 &amp;gt;&amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;echo &amp;quot;&amp;quot; &amp;gt;&amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;echo &amp;quot;Your Server:&amp;quot; &amp;gt;&amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report --report-cycles 50 your-server.com &amp;gt;&amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Useful Aliases for .bashrc ==&lt;br /&gt;
 &amp;lt;code&amp;gt;# Quick network path analysis&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias mtrreport=&#039;mtr --report --report-cycles 50 --no-dns&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Monitor connection to Google DNS&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias netcheck=&#039;mtr --report-cycles 20 8.8.8.8&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Extended network test&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias mtrlong=&#039;mtr --report-cycles 100&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# TCP port 443 test (HTTPS)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias mtrhttps=&#039;sudo mtr --tcp --port 443 --report-cycles 30&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Quick comparison of major DNS providers&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias dnstest=&#039;echo &amp;quot;Google:&amp;quot; &amp;amp;&amp;amp; mtr --report-cycles 20 8.8.8.8 &amp;amp;&amp;amp; echo -e &amp;quot;\nCloudflare:&amp;quot; &amp;amp;&amp;amp; mtr --report-cycles 20 1.1.1.1&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
After adding to &amp;lt;code&amp;gt;~/.bashrc&amp;lt;/code&amp;gt;:&lt;br /&gt;
 &amp;lt;code&amp;gt;source ~/.bashrc&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting Tips ==&lt;br /&gt;
&lt;br /&gt;
=== 1. Permission Issues ===&lt;br /&gt;
If you get permission errors with TCP mode:&lt;br /&gt;
 &amp;lt;code&amp;gt;# Use sudo for TCP on privileged ports&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo mtr --tcp --port 443 example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Or set capabilities (one-time setup)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo setcap cap_net_raw+ep /usr/bin/mtr-packet&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. False Positives ===&lt;br /&gt;
&#039;&#039;&#039;Common false positive:&#039;&#039;&#039; Packet loss at intermediate hops but NOT at the destination.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;code&amp;gt;3.|-- router.isp.net            20.0%    50   15.3  16.1  14.2  19.8   1.8&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;4.|-- next-hop.net               0.0%    50   18.5  19.2  17.8  22.1   1.3&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;5.|-- destination.com            0.0%    50   25.4  26.8  24.1  32.5   2.4&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;This is OK!&#039;&#039;&#039; Hop 3 shows 20% loss, but hops 4 and 5 show 0% loss. The router at hop 3 is rate-limiting ICMP responses, but actual traffic flows normally.&lt;br /&gt;
&lt;br /&gt;
=== 3. DNS Resolution Delays ===&lt;br /&gt;
If MTR seems slow to start:&lt;br /&gt;
 &amp;lt;code&amp;gt;# Skip DNS resolution for faster results&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --no-dns target.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Resolve names afterward if needed&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;host 203.0.113.1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. Comparing Results ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Run multiple tests and compare&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report --report-cycles 50 example.com &amp;gt; test1.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sleep 60&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report --report-cycles 50 example.com &amp;gt; test2.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;diff test1.txt test2.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When to Use MTR vs Other Tools ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tool&lt;br /&gt;
!Best For&lt;br /&gt;
!Limitations&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;MTR&#039;&#039;&#039;&lt;br /&gt;
|Continuous monitoring, identifying problem hops, detailed statistics&lt;br /&gt;
|Requires installation&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;ping&#039;&#039;&#039;&lt;br /&gt;
|Quick connectivity test, simple latency check&lt;br /&gt;
|Only tests endpoint&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;traceroute&#039;&#039;&#039;&lt;br /&gt;
|One-time path discovery&lt;br /&gt;
|No continuous monitoring&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;ss/netstat&#039;&#039;&#039;&lt;br /&gt;
|Local connection status&lt;br /&gt;
|Doesn&#039;t test remote paths&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Best Practices ==&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Run enough cycles&#039;&#039;&#039;: Use at least 50-100 cycles for accurate statistics&lt;br /&gt;
# &#039;&#039;&#039;Use --no-dns&#039;&#039;&#039;: Faster and avoids DNS resolution issues during testing&lt;br /&gt;
# &#039;&#039;&#039;Check multiple times&#039;&#039;&#039;: Network conditions vary; test at different times&lt;br /&gt;
# &#039;&#039;&#039;Compare protocols&#039;&#039;&#039;: Try ICMP, UDP, and TCP if one shows issues&lt;br /&gt;
# &#039;&#039;&#039;Document findings&#039;&#039;&#039;: Save reports with timestamps for trend analysis&lt;br /&gt;
# &#039;&#039;&#039;Test known-good hosts&#039;&#039;&#039;: Use 8.8.8.8 or 1.1.1.1 to verify your network first&lt;br /&gt;
# &#039;&#039;&#039;Be patient&#039;&#039;&#039;: Let MTR run for at least 30-60 seconds before drawing conclusions&lt;br /&gt;
&lt;br /&gt;
== Reading Between the Lines ==&lt;br /&gt;
&lt;br /&gt;
=== Good Network Health Example ===&lt;br /&gt;
 &amp;lt;code&amp;gt;HOST: hostname                    Loss%   Snt   Last   Avg  Best  Wrst StDev&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;1.|-- 192.168.1.1                0.0%    50    1.1   1.2   0.9   2.1   0.2&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;2.|-- 10.0.0.1                   0.0%    50    8.2   8.5   7.5  10.2   0.5&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;3.|-- isp-gateway.net            0.0%    50   15.1  15.5  14.0  18.3   0.8&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;4.|-- google.com                 0.0%    50   24.8  25.2  23.5  28.1   1.1&amp;lt;/code&amp;gt;&lt;br /&gt;
✅ No packet loss, consistent latency, low jitter&lt;br /&gt;
&lt;br /&gt;
=== Problem Network Example ===&lt;br /&gt;
 &amp;lt;code&amp;gt;HOST: hostname                    Loss%   Snt   Last   Avg  Best  Wrst StDev&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;1.|-- 192.168.1.1                0.0%    50    1.2   1.5   1.0   2.3   0.3&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;2.|-- 10.0.0.1                   5.0%    50   45.3  52.8  8.1  245.2  45.7&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;3.|-- ???                       100.0%   50    0.0   0.0   0.0   0.0   0.0&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;4.|-- destination.com           15.0%    50   95.4 125.8  48.2 385.5  78.2&amp;lt;/code&amp;gt;&lt;br /&gt;
❌ Packet loss at hop 2 and destination, high jitter, very high worst-case latency&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
MTR is your Swiss Army knife for network diagnostics. Key takeaways:&lt;br /&gt;
&lt;br /&gt;
* Use &amp;lt;code&amp;gt;--report-cycles 50+&amp;lt;/code&amp;gt; for reliable data&lt;br /&gt;
* Watch for packet loss at the &#039;&#039;&#039;destination&#039;&#039;&#039; (intermediate losses may be false positives)&lt;br /&gt;
* High &#039;&#039;&#039;StDev&#039;&#039;&#039; indicates unstable connection&lt;br /&gt;
* High &#039;&#039;&#039;Avg&#039;&#039;&#039; latency shows slow links&lt;br /&gt;
* Use &amp;lt;code&amp;gt;--no-dns&amp;lt;/code&amp;gt; for faster results&lt;br /&gt;
* Compare &#039;&#039;&#039;ICMP&#039;&#039;&#039;, &#039;&#039;&#039;UDP&#039;&#039;&#039;, and &#039;&#039;&#039;TCP&#039;&#039;&#039; modes if issues appear&lt;br /&gt;
* Test at different times of day for comprehensive analysis&lt;br /&gt;
&lt;br /&gt;
== 4. Package Management Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Fix Broken Packages ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Update package lists&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo apt update&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Fix broken dependencies&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo apt --fix-broken install&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Reconfigure packages&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo dpkg --configure -a&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;(if no output, there is nothing to do)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Clean package cache&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo apt clean&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo apt autoclean&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Remove unused packages&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo apt autoremove&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Handle Held or Locked Packages ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# If apt is locked, find the process&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo lsof /var/lib/dpkg/lock-frontend&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Force remove lock (use carefully)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo rm /var/lib/dpkg/lock-frontend&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo rm /var/lib/apt/lists/lock&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Reconfigure dpkg&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo dpkg --configure -a&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. Disk &amp;amp; Filesystem Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Check Disk Health ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Check disk space&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;df -h&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check inode usage&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;df -i&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# View disk I/O statistics&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;iostat -x 1&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;(Make sure you have sysstat which includes useful performance monitoring tools other than iostat - disk I/O statistics&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;mpstat&amp;lt;/code&amp;gt; - CPU statistics&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;sar&amp;lt;/code&amp;gt; - system activity reporter&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;pidstat&amp;lt;/code&amp;gt; - process statistics&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;cifsiostat&amp;lt;/code&amp;gt; - CIFS statistics&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&#039;&#039;# Show stats in MB instead of KB&#039;&#039; iostat -xm 2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&#039;&#039;# Monitor specific device&#039;&#039; iostat -x sda 1&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# Check for disk errors in dmesg&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo dmesg | grep -i &amp;quot;error\|fail&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# SMART disk health (if smartmontools installed)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo smartctl -a /dev/sda&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Repair Filesystem ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Unmount the partition first&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo umount /dev/sdXN&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Run filesystem check&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo fsck /dev/sdXN&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# For ext4 specifically&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo e2fsck -f /dev/sdXN&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6. Performance Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Identify Resource Hogs ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# CPU usage by process&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;top -o %CPU&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Memory usage by process&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;top -o %MEM&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Disk usage by directory&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;du -sh /* | sort -h&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Find large files&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;find / -type f -size +100M 2&amp;gt;/dev/null&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check running processes&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;ps aux --sort=-%mem | head -20&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== System Temperature Monitoring ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Install sensors (if not installed)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo apt install lm-sensors&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo sensors-detect&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# View temperatures&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sensors&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Real-time temperature monitoring&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;watch -n 2 sensors&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;&#039;&#039;I have it as an alias in ~/.bashrc&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;&#039;&#039;Go to 11. Useful Aliases &amp;amp; Shortcuts&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. Service &amp;amp; Application Errors ==&lt;br /&gt;
&lt;br /&gt;
=== Debug Service Problems ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Check service status&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo systemctl status service-name&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# View service logs&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo journalctl -u service-name&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Restart a service&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo systemctl restart service-name&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Enable service at boot&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo systemctl enable service-name&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# View recent service failures&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;journalctl -p err -b&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Application Crash Investigation ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Check for core dumps&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;ls -lh /var/crash/&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# View application-specific logs&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;ls /var/log/&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check syslog for application errors&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo tail -f /var/log/syslog&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 8. Permission &amp;amp; Access Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Fix Common Permission Problems ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Check file ownership&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;ls -l /path/to/file&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Change ownership&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo chown michael:michael /path/to/file&amp;lt;/code&amp;gt;&lt;br /&gt;
 user:group&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Change permissions&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo chmod 644 /path/to/file&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Recursively fix permissions&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo chown -R user:group /path/to/directory&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== User &amp;amp; Authentication Issues ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Check user information&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;id username&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# View user login history&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;last -a&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check failed login attempts&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo journalctl | grep &amp;quot;authentication failure&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Reset user password&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo passwd username&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 9. Hardware Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Identify Hardware ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# List all hardware&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo lshw -short&amp;lt;/code&amp;gt;&lt;br /&gt;
 (May not be installed by default)&lt;br /&gt;
 sudo apt install lshw&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# PCI devices&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;lspci -v&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# USB devices&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;lspci -v&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# CPU information&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;lscpu&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Memory information&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo dmidecode --type memory&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Check Hardware Errors ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Kernel ring buffer (hardware messages)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;dmesg | less&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;(If no output, good, no errors)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;q to quit&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Search for specific hardware issues&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;dmesg | grep -i &amp;quot;error\|fail\|warn&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check for USB issues&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;dmesg | grep -i usb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 10. Quick Diagnostic Commands ==&lt;br /&gt;
&lt;br /&gt;
=== System Information at a Glance ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Uptime and load average&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;uptime&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Kernel version&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;uname -r&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Debian version&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;cat /etc/debian_version&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# System summary&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo inxi -Fxz&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Emergency Toolkit ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Create a diagnostic report&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo journalctl -b &amp;gt; ~/system-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;dmesg &amp;gt;&amp;gt; ~/system-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;systemctl --failed &amp;gt;&amp;gt; ~/system-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;df -h &amp;gt;&amp;gt; ~/system-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;free -h &amp;gt;&amp;gt; ~/system-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Watch logs in real-time&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo journalctl -f&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Monitor system resources continuously&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;watch -n 1 &#039;free -h &amp;amp;&amp;amp; df -h&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 11. Useful Aliases &amp;amp; Shortcuts ==&lt;br /&gt;
Add these to your &amp;lt;code&amp;gt;~/.bashrc&amp;lt;/code&amp;gt; for quick access to common troubleshooting commands:&lt;br /&gt;
 &amp;lt;code&amp;gt;# Monitor system temperatures in real-time&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias temps=&amp;quot;watch -n 2 &#039;for i in /sys/class/hwmon/hwmon*/; do echo -n \&amp;quot;\$(cat \${i}name): \&amp;quot;; cat \${i}temp*_input 2&amp;gt;/dev/null | while read temp; do echo \&amp;quot;scale=1; \$temp/1000\&amp;quot; | bc; done | tr \&amp;quot;\n\&amp;quot; \&amp;quot; \&amp;quot;; echo \&amp;quot;°C\&amp;quot;; done&#039;&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;&#039;&#039;or run the watch command in the shell without the opening and closing double quotes.&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Quick system status&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias sysstat=&#039;echo &amp;quot;=== CPU ===&amp;quot; &amp;amp;&amp;amp; uptime &amp;amp;&amp;amp; echo -e &amp;quot;\n=== Memory ===&amp;quot; &amp;amp;&amp;amp; free -h &amp;amp;&amp;amp; echo -e &amp;quot;\n=== Disk ===&amp;quot; &amp;amp;&amp;amp; df -h &amp;amp;&amp;amp; echo -e &amp;quot;\n=== Top Processes ===&amp;quot; &amp;amp;&amp;amp; ps aux --sort=-%mem | head -10&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;(It’s a messy mayout, but I’m terrible with awk. Feel free to improve the layoput for me)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# View last boot logs&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias lastboot=&#039;journalctl -b -1&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check failed services&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias failedservices=&#039;systemctl --failed&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Monitor logs in real-time&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias watchlog=&#039;sudo journalctl -f&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Quick network status&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias netstat=&#039;ip addr show &amp;amp;&amp;amp; echo -e &amp;quot;\n=== Routes ===&amp;quot; &amp;amp;&amp;amp; ip route show&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
After adding these, run:&lt;br /&gt;
 &amp;lt;code&amp;gt;source ~/.bashrc&amp;lt;/code&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Tips for Your Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;First check logs&#039;&#039;&#039;: &amp;lt;code&amp;gt;journalctl&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;dmesg&amp;lt;/code&amp;gt; are your best friends&lt;br /&gt;
# &#039;&#039;&#039;Work through the sections&#039;&#039;&#039;: Change one thing at a time&lt;br /&gt;
# &#039;&#039;&#039;Document changes&#039;&#039;&#039;: Keep notes on what you&#039;ve tried&lt;br /&gt;
# &#039;&#039;&#039;Search for error messages&#039;&#039;&#039;: Copy exact error messages into search engines or AI&lt;br /&gt;
# &#039;&#039;&#039;Check recent changes&#039;&#039;&#039;: What you did before it happened? Install something, update packages, kernel?&lt;br /&gt;
# &#039;&#039;&#039;Make backups&#039;&#039;&#039;: Before major changes, backup important data&lt;br /&gt;
# &#039;&#039;&#039;Use verbose mode&#039;&#039;&#039;: Add &amp;lt;code&amp;gt;-v&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;-vv&amp;lt;/code&amp;gt; flags to commands for more detail&lt;br /&gt;
# &#039;&#039;&#039;Check forums&#039;&#039;&#039;: Debian forum, Reddit, Stack Exchange, and mailing lists&lt;br /&gt;
&lt;br /&gt;
----&#039;&#039;&#039;Remember&#039;&#039;&#039;: If in doubt, search for the specific error message along with &amp;quot;Debian&amp;quot; and the version number. e.g. Debian 13 or point release if needed, Debian 13,1&lt;br /&gt;
&lt;br /&gt;
As usual I welcome any comments, suggestions or resources : &#039;&#039;&#039;dev@divsmart.com&#039;&#039;&#039; or &#039;&#039;&#039;distro-nix&#039;&#039;&#039; on Debian Forum.&lt;br /&gt;
&lt;br /&gt;
[[Category:Troubleshooting, Guides]]&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Main_Page&amp;diff=168</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Main_Page&amp;diff=168"/>
		<updated>2026-02-10T19:08:55Z</updated>

		<summary type="html">&lt;p&gt;Donald: Update Header text and information&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Welcome to the Debian User Forum Archives. =&lt;br /&gt;
&lt;br /&gt;
This wiki is dedicated specific member solutions from the [https://forums.debian.net Debian User Forums] and not to be confused with the larger man style documentation driven official [https://wiki.debian.org Debian Project Wiki].&lt;br /&gt;
&lt;br /&gt;
Our works here are citable formats of some of our best threads, member contributions, guides, and information that can provide assistance on or offline. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== About ==&lt;br /&gt;
About:&lt;br /&gt;
* [[Debian User Forums]]&lt;br /&gt;
* [[The Debian Project]]&lt;br /&gt;
* [[Archive AI Use]]&lt;br /&gt;
* [[Forum jokes, lingo, and memorable quotes]]&lt;br /&gt;
&lt;br /&gt;
== Guides (reference) ==&lt;br /&gt;
&lt;br /&gt;
* [[Sudo|Root, sudo, su, and su -]] &amp;lt;small&amp;gt;(forum archive)&amp;lt;/small&amp;gt;&lt;br /&gt;
* [[Debian First Aid Kit|My Debian First Aid Kit]] &amp;lt;small&amp;gt;(full paper)&amp;lt;/small&amp;gt;&lt;br /&gt;
* [[Fonts and Themes in Cinnamon Desktop]] &amp;lt;small&amp;gt;(full paper)&amp;lt;/small&amp;gt;&lt;br /&gt;
* [[To install Firefox from Mozilla repo|Installing Firefox from the Mozilla repository]] &amp;lt;small&amp;gt;(forum archive)&amp;lt;/small&amp;gt;&lt;br /&gt;
* [[Security Hardening for Debian Users: Protecting Against Targeted Attacks]] &amp;lt;small&amp;gt;(full paper)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== HowTo (guides) == &lt;br /&gt;
* [[WiFi Signal Strength and Sharing]] &amp;lt;small&amp;gt;(forum archive)&amp;lt;/small&amp;gt;&lt;br /&gt;
* [[REFInd USB Drive (for emergency boot)]] &amp;lt;small&amp;gt;(forum archive)&amp;lt;/small&amp;gt;&lt;br /&gt;
* [[Trixie iwd]] &amp;lt;small&amp;gt;(forum archive)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
Licensing:&lt;br /&gt;
* [[Publish using CC International licencing and your Forum name]].&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Main_Page&amp;diff=167</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Main_Page&amp;diff=167"/>
		<updated>2026-02-10T18:52:00Z</updated>

		<summary type="html">&lt;p&gt;Donald: /* Guides (reference) */ Added My Debian First Aid Kit Link to section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About ==&lt;br /&gt;
About:&lt;br /&gt;
* [[Debian User Forums]]&lt;br /&gt;
* [[The Debian Project]]&lt;br /&gt;
* [[Archive AI Use]]&lt;br /&gt;
* [[Forum jokes, lingo, and memorable quotes]]&lt;br /&gt;
&lt;br /&gt;
== Guides (reference) ==&lt;br /&gt;
&lt;br /&gt;
* [[Sudo|Root, sudo, su, and su -]]&lt;br /&gt;
* [[Debian First Aid Kit|My Debian First Aid Kit]]&lt;br /&gt;
* [[Fonts and Themes in Cinnamon Desktop]]&lt;br /&gt;
* [[To install Firefox from Mozilla repo|Installing Firefox from Mozilla repo]]&lt;br /&gt;
* [[Security Hardening for Debian Users: Protecting Against Targeted Attacks]]&lt;br /&gt;
&lt;br /&gt;
== HowTo ==&lt;br /&gt;
* [[WiFi Signal Strength and Sharing]]&lt;br /&gt;
* [[REFInd USB Drive (for emergency boot)]]&lt;br /&gt;
* [[Trixie iwd]]&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
Licensing:&lt;br /&gt;
* [[Publish using CC International licencing and your Forum name]].&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Fonts_and_Themes_in_Cinnamon_Desktop&amp;diff=166</id>
		<title>Fonts and Themes in Cinnamon Desktop</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Fonts_and_Themes_in_Cinnamon_Desktop&amp;diff=166"/>
		<updated>2026-02-10T18:45:36Z</updated>

		<summary type="html">&lt;p&gt;Donald: Added author informaiton&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Fonts and Themes in Cinnamon Desktop ==&lt;br /&gt;
&lt;br /&gt;
* Verified on Debian 13.1 (Trixie) / 6.12.43+deb13-amd64 x64_64&lt;br /&gt;
* Created : 28/10/2025 21:09:21&lt;br /&gt;
* Last Updated : 27/10/2025 23:42:45&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A comprehensive reference for managing console fonts, GUI fonts, and theme customization in Debian with Cinnamon DE.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;table-of-contents&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Table of Contents ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;[https://claude.ai/chat/6986fa74-5020-47a2-8736-f9eaf474bfc0#understanding-font-types Understanding Font Types]&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;[https://claude.ai/chat/6986fa74-5020-47a2-8736-f9eaf474bfc0#console-fonts-tty Console Fonts (TTY)]&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;[https://claude.ai/chat/6986fa74-5020-47a2-8736-f9eaf474bfc0#gui-fonts GUI Fonts]&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;[https://claude.ai/chat/6986fa74-5020-47a2-8736-f9eaf474bfc0#cinnamon-system-fonts Cinnamon System Fonts]&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;[https://claude.ai/chat/6986fa74-5020-47a2-8736-f9eaf474bfc0#theme-customization-with-css Theme Customization with CSS]&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;[https://claude.ai/chat/6986fa74-5020-47a2-8736-f9eaf474bfc0#accessibility-and-scaling Accessibility and Scaling]&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;[https://claude.ai/chat/6986fa74-5020-47a2-8736-f9eaf474bfc0#troubleshooting Troubleshooting]&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;understanding-font-types&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Understanding Font Types ==&lt;br /&gt;
&lt;br /&gt;
Linux uses different font systems depending on where text appears:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;console-fonts-tty&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Console Fonts (TTY) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Format&#039;&#039;&#039;: PSF (PC Screen Font) - .psf or .psf.gz&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Location&#039;&#039;&#039;: /usr/share/consolefonts/&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Used by&#039;&#039;&#039;: Text-based virtual consoles (Ctrl+Alt+F2 through F6)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Loaded&#039;&#039;&#039;: Before graphical system starts&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Limitations&#039;&#039;&#039;: No anti-aliasing, fixed character grid&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;gui-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== GUI Fonts ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Formats&#039;&#039;&#039;: TrueType (.ttf), OpenType (.otf)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Location&#039;&#039;&#039;: /usr/share/fonts/truetype/, /usr/share/fonts/opentype/&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Used by&#039;&#039;&#039;: All graphical applications&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Features&#039;&#039;&#039;: Anti-aliasing, scalability, subpixel rendering&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;why-two-systems&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Why Two Systems? ===&lt;br /&gt;
&lt;br /&gt;
The Linux console operates at a lower level than the graphical interface. It needs to display text even if the GUI fails to load, so it uses simpler font formats that don&#039;t require graphics libraries.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;console-fonts-tty-1&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Console Fonts (TTY) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;installing-console-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Installing Console Fonts ===&lt;br /&gt;
&lt;br /&gt;
Install Terminus (popular monospace console font):&lt;br /&gt;
&lt;br /&gt;
sudo apt update&lt;br /&gt;
&lt;br /&gt;
sudo apt install console-setup xfonts-terminus&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;configuring-console-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Configuring Console Fonts ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;method-1-interactive-configuration&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Method 1: Interactive Configuration ====&lt;br /&gt;
&lt;br /&gt;
sudo dpkg-reconfigure console-setup&lt;br /&gt;
&lt;br /&gt;
Follow the prompts:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Encoding&#039;&#039;&#039;: UTF-8&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Character set&#039;&#039;&#039;: Guess optimal character set&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Font&#039;&#039;&#039;: Terminus&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Font size&#039;&#039;&#039;: Choose from available sizes&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Available Terminus sizes: 8x14, 8x16, 10x20, 12x24, 14x28, 16x32&lt;br /&gt;
&lt;br /&gt;
Recommendation: 16x32 for good readability&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;method-2-direct-configuration-file-editing&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Method 2: Direct Configuration File Editing ====&lt;br /&gt;
&lt;br /&gt;
Edit /etc/default/console-setup:&lt;br /&gt;
&lt;br /&gt;
sudo nano /etc/default/console-setup&lt;br /&gt;
&lt;br /&gt;
Add or modify these lines:&lt;br /&gt;
&lt;br /&gt;
FONTFACE=&amp;amp;quot;Terminus&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
FONTSIZE=&amp;amp;quot;16x32&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
Other useful settings you might find:&lt;br /&gt;
&lt;br /&gt;
CHARMAP=&amp;amp;quot;UTF-8&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
CODESET=&amp;amp;quot;guess&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;applying-console-font-changes&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Applying Console Font Changes ===&lt;br /&gt;
&lt;br /&gt;
The changes take effect on boot, but to apply immediately on all consoles:&lt;br /&gt;
&lt;br /&gt;
sudo setupcon&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: This command only works when run from an actual TTY console, not from a terminal emulator in the GUI. If you get &amp;amp;quot;not on the console&amp;amp;quot; error, that&#039;s normal - the configuration is saved and will apply on next boot or when you switch to a TTY.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;testing-console-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Testing Console Fonts ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Switch to virtual console: Ctrl + Alt + F2&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Log in with your credentials&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Check the font - you should see Terminus&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Return to GUI: Ctrl + Alt + F1 or Ctrl + Alt + F7&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;viewing-available-console-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Viewing Available Console Fonts ===&lt;br /&gt;
&lt;br /&gt;
List all available console fonts:&lt;br /&gt;
&lt;br /&gt;
ls /usr/share/consolefonts/&lt;br /&gt;
&lt;br /&gt;
Filter for Terminus fonts:&lt;br /&gt;
&lt;br /&gt;
ls /usr/share/consolefonts/ | grep -i ter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;temporarily-testing-console-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Temporarily Testing Console Fonts ===&lt;br /&gt;
&lt;br /&gt;
To test a font before making it permanent:&lt;br /&gt;
&lt;br /&gt;
setfont /usr/share/consolefonts/Ter16x32n.psf.gz&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: setfont only works when run from a TTY console (Ctrl+Alt+F2), not from GUI terminals.&lt;br /&gt;
&lt;br /&gt;
To check current console font (from TTY):&lt;br /&gt;
&lt;br /&gt;
setfont -v&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;gui-fonts-1&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== GUI Fonts ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;installing-gui-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Installing GUI Fonts ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;system-wide-installation&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== System-wide Installation ====&lt;br /&gt;
&lt;br /&gt;
Install Terminus for graphical applications:&lt;br /&gt;
&lt;br /&gt;
sudo apt install fonts-terminus&lt;br /&gt;
&lt;br /&gt;
Install other popular fonts:&lt;br /&gt;
&lt;br /&gt;
# Programming fonts&lt;br /&gt;
&lt;br /&gt;
sudo apt install fonts-firacode fonts-hack fonts-jetbrains-mono&lt;br /&gt;
&lt;br /&gt;
# General purpose fonts&lt;br /&gt;
&lt;br /&gt;
sudo apt install fonts-liberation fonts-dejavu fonts-noto&lt;br /&gt;
&lt;br /&gt;
# More options&lt;br /&gt;
&lt;br /&gt;
sudo apt install fonts-ubuntu fonts-roboto&lt;br /&gt;
&lt;br /&gt;
After installing, log out and back in, or rebuild font cache:&lt;br /&gt;
&lt;br /&gt;
fc-cache -fv&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;user-only-installation&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== User-only Installation ====&lt;br /&gt;
&lt;br /&gt;
To install fonts just for your user account:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Create fonts directory:&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mkdir -p ~/.local/share/fonts&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol start=&amp;quot;2&amp;quot; style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Copy font files (.ttf or .otf) to this directory:&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cp /path/to/your/font.ttf ~/.local/share/fonts/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol start=&amp;quot;3&amp;quot; style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Rebuild font cache:&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fc-cache -fv&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;font-locations&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Font Locations ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;System-wide fonts&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
/usr/share/fonts/truetype/&lt;br /&gt;
&lt;br /&gt;
/usr/share/fonts/opentype/&lt;br /&gt;
&lt;br /&gt;
/usr/share/fonts/X11/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;User-specific fonts&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
~/.local/share/fonts/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;listing-available-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Listing Available Fonts ===&lt;br /&gt;
&lt;br /&gt;
List all fonts available to GUI applications:&lt;br /&gt;
&lt;br /&gt;
fc-list&lt;br /&gt;
&lt;br /&gt;
Search for specific font:&lt;br /&gt;
&lt;br /&gt;
fc-list | grep -i terminus&lt;br /&gt;
&lt;br /&gt;
fc-list | grep -i dejavu&lt;br /&gt;
&lt;br /&gt;
List fonts with details:&lt;br /&gt;
&lt;br /&gt;
fc-list : family style file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;configuring-terminal-emulator-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Configuring Terminal Emulator Fonts ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;gnome-terminal-default-in-cinnamon&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== GNOME Terminal (default in Cinnamon) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Open GNOME Terminal&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Menu → Preferences&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Select your profile&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Go to &#039;&#039;&#039;Text&#039;&#039;&#039; tab&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Uncheck &amp;amp;quot;Use the system fixed-width font&amp;amp;quot;&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Click font button and select Terminus (or other font)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Choose size (12, 14, or 16 recommended)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;guake-drop-down-terminal&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Guake (Drop-down Terminal) ====&lt;br /&gt;
&lt;br /&gt;
Install GUI version of Terminus first:&lt;br /&gt;
&lt;br /&gt;
sudo apt install fonts-terminus&lt;br /&gt;
&lt;br /&gt;
guake --quit&lt;br /&gt;
&lt;br /&gt;
guake &amp;amp;amp;&lt;br /&gt;
&lt;br /&gt;
Configure via GUI:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Open Guake (F12)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Right-click → Preferences&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Go to &#039;&#039;&#039;Appearance&#039;&#039;&#039; tab&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Uncheck &amp;amp;quot;Use the system fixed width font&amp;amp;quot;&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Select Terminus and size&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure via command line:&lt;br /&gt;
&lt;br /&gt;
gsettings set org.guake.style.font use-system-font false&lt;br /&gt;
&lt;br /&gt;
gsettings set org.guake.style.font font-name &#039;Terminus 12&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;cinnamon-system-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Cinnamon System Fonts ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;quick-font-configuration&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Quick Font Configuration ===&lt;br /&gt;
&lt;br /&gt;
Open &#039;&#039;&#039;System Settings&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
cinnamon-settings&lt;br /&gt;
&lt;br /&gt;
Navigate to: &#039;&#039;&#039;Font Selection&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You&#039;ll see these options:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Default font&#039;&#039;&#039;: Used for menus, buttons, dialogs (recommended: 10-12pt)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Desktop font&#039;&#039;&#039;: Used for desktop icon labels (recommended: 10-11pt)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Document font&#039;&#039;&#039;: Used in document viewers (recommended: 11pt)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Monospace font&#039;&#039;&#039;: Used in terminals and code editors (recommended: Terminus 12pt)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Window title font&#039;&#039;&#039;: Used in window title bars (recommended: 10-11pt bold)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;recommended-configuration-for-better-readability&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Recommended Configuration for Better Readability ===&lt;br /&gt;
&lt;br /&gt;
Default font: Sans 11 or 12&lt;br /&gt;
&lt;br /&gt;
Desktop font: Sans 10 or 11&lt;br /&gt;
&lt;br /&gt;
Document font: Sans 11&lt;br /&gt;
&lt;br /&gt;
Monospace font: Terminus 12 or 14&lt;br /&gt;
&lt;br /&gt;
Window title font: Sans Bold 10 or 11&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;using-command-line-to-change-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Using Command Line to Change Fonts ===&lt;br /&gt;
&lt;br /&gt;
View current settings:&lt;br /&gt;
&lt;br /&gt;
gsettings get org.cinnamon.desktop.interface font-name&lt;br /&gt;
&lt;br /&gt;
gsettings get org.gnome.desktop.interface monospace-font-name&lt;br /&gt;
&lt;br /&gt;
Change default font:&lt;br /&gt;
&lt;br /&gt;
gsettings set org.cinnamon.desktop.interface font-name &#039;Sans 12&#039;&lt;br /&gt;
&lt;br /&gt;
Change monospace font:&lt;br /&gt;
&lt;br /&gt;
gsettings set org.gnome.desktop.interface monospace-font-name &#039;Terminus 12&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;font-recommendations-by-use-case&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Font Recommendations by Use Case ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;For general readability&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Default: DejaVu Sans 11-12&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Monospace: Terminus 12 or DejaVu Sans Mono 11&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;For programming&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Monospace: Fira Code 11, JetBrains Mono 11, or Hack 11&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;For visually impaired users&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Default: Sans 13-14&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Monospace: Terminus 14-16&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Consider UI scaling (see Accessibility section)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;theme-customization-with-css&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Theme Customization with CSS ==&lt;br /&gt;
&lt;br /&gt;
Cinnamon themes use CSS for styling. You can customize any theme to change fonts, colors, spacing, and more.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;finding-your-current-theme&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Finding Your Current Theme ===&lt;br /&gt;
&lt;br /&gt;
Check which theme you&#039;re using:&lt;br /&gt;
&lt;br /&gt;
gsettings get org.cinnamon.theme name&lt;br /&gt;
&lt;br /&gt;
List available themes:&lt;br /&gt;
&lt;br /&gt;
ls /usr/share/themes/&lt;br /&gt;
&lt;br /&gt;
ls ~/.themes/&lt;br /&gt;
&lt;br /&gt;
View your theme in System Settings: &#039;&#039;&#039;System Settings → Themes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;creating-a-custom-theme-copy&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Creating a Custom Theme Copy ===&lt;br /&gt;
&lt;br /&gt;
Always work on a copy to avoid breaking your system:&lt;br /&gt;
&lt;br /&gt;
# Copy system theme to your user directory&lt;br /&gt;
&lt;br /&gt;
cp -r /usr/share/themes/YOUR-THEME-NAME ~/.themes/&lt;br /&gt;
&lt;br /&gt;
# Example:&lt;br /&gt;
&lt;br /&gt;
cp -r /usr/share/themes/Mint-Y ~/.themes/&lt;br /&gt;
&lt;br /&gt;
cp -r /usr/share/themes/Green-Submarine ~/.themes/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;theme-structure&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Theme Structure ===&lt;br /&gt;
&lt;br /&gt;
A typical Cinnamon theme:&lt;br /&gt;
&lt;br /&gt;
~/.themes/YOUR-THEME-NAME/&lt;br /&gt;
&lt;br /&gt;
├── cinnamon/&lt;br /&gt;
&lt;br /&gt;
│ ├── cinnamon.css # Main styling file&lt;br /&gt;
&lt;br /&gt;
│ ├── thumbnail.png&lt;br /&gt;
&lt;br /&gt;
│ └── assets/ # Images, icons&lt;br /&gt;
&lt;br /&gt;
├── gtk-3.0/ # GTK3 application styling&lt;br /&gt;
&lt;br /&gt;
├── gtk-2.0/ # GTK2 application styling&lt;br /&gt;
&lt;br /&gt;
├── metacity-1/ # Window decorations&lt;br /&gt;
&lt;br /&gt;
└── index.theme # Theme metadata&lt;br /&gt;
&lt;br /&gt;
The file you&#039;ll edit most: cinnamon/cinnamon.css&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;editing-theme-css&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Editing Theme CSS ===&lt;br /&gt;
&lt;br /&gt;
Open the CSS file:&lt;br /&gt;
&lt;br /&gt;
nano ~/.themes/YOUR-THEME-NAME/cinnamon/cinnamon.css&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;common-css-selectors&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Common CSS Selectors ====&lt;br /&gt;
&lt;br /&gt;
/* Overall stage - affects most UI elements */&lt;br /&gt;
&lt;br /&gt;
stage {&lt;br /&gt;
&lt;br /&gt;
font-size: 10pt;&lt;br /&gt;
&lt;br /&gt;
font-family: sans-serif;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Main menu */&lt;br /&gt;
&lt;br /&gt;
.menu {&lt;br /&gt;
&lt;br /&gt;
font-size: 10pt;&lt;br /&gt;
&lt;br /&gt;
background-color: rgba(48, 48, 48, 0.95);&lt;br /&gt;
&lt;br /&gt;
border-radius: 8px;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Menu application buttons */&lt;br /&gt;
&lt;br /&gt;
.menu-application-button-label {&lt;br /&gt;
&lt;br /&gt;
font-size: 9pt;&lt;br /&gt;
&lt;br /&gt;
padding-left: 10px;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Panel (taskbar) */&lt;br /&gt;
&lt;br /&gt;
.panel {&lt;br /&gt;
&lt;br /&gt;
font-size: 9pt;&lt;br /&gt;
&lt;br /&gt;
background-color: #2b2b2b;&lt;br /&gt;
&lt;br /&gt;
height: 32px;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Panel applet labels */&lt;br /&gt;
&lt;br /&gt;
.panel-button {&lt;br /&gt;
&lt;br /&gt;
font-size: 9pt;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Notifications */&lt;br /&gt;
&lt;br /&gt;
.notification {&lt;br /&gt;
&lt;br /&gt;
font-size: 10pt;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Window list buttons */&lt;br /&gt;
&lt;br /&gt;
.window-list-item-box {&lt;br /&gt;
&lt;br /&gt;
font-size: 9pt;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tooltips */&lt;br /&gt;
&lt;br /&gt;
.tooltip {&lt;br /&gt;
&lt;br /&gt;
font-size: 9pt;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;example-increasing-menu-font-size&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Example: Increasing Menu Font Size ===&lt;br /&gt;
&lt;br /&gt;
Find the menu section and modify:&lt;br /&gt;
&lt;br /&gt;
.menu {&lt;br /&gt;
&lt;br /&gt;
font-size: 14pt; /* Increase from default 9-10pt */&lt;br /&gt;
&lt;br /&gt;
background-color: rgba(48, 48, 48, 0.95);&lt;br /&gt;
&lt;br /&gt;
border-radius: 8px;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.menu-application-button-label {&lt;br /&gt;
&lt;br /&gt;
font-size: 13pt; /* Increase menu item text */&lt;br /&gt;
&lt;br /&gt;
padding-left: 10px;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Also increase category labels */&lt;br /&gt;
&lt;br /&gt;
.menu-category-button-label {&lt;br /&gt;
&lt;br /&gt;
font-size: 13pt;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;example-changing-font-family&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Example: Changing Font Family ===&lt;br /&gt;
&lt;br /&gt;
stage {&lt;br /&gt;
&lt;br /&gt;
font-family: &amp;amp;quot;DejaVu Sans&amp;amp;quot;, sans-serif;&lt;br /&gt;
&lt;br /&gt;
font-size: 11pt;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Use monospace for specific elements */&lt;br /&gt;
&lt;br /&gt;
.some-element {&lt;br /&gt;
&lt;br /&gt;
font-family: &amp;amp;quot;Terminus&amp;amp;quot;, &amp;amp;quot;DejaVu Sans Mono&amp;amp;quot;, monospace;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;applying-css-changes&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Applying CSS Changes ===&lt;br /&gt;
&lt;br /&gt;
After editing the CSS file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Save the file: Ctrl+O then Enter (in nano)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Exit: Ctrl+X (in nano)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Restart Cinnamon: Press Alt+F2, type r, press Enter&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or reload from command line:&lt;br /&gt;
&lt;br /&gt;
# Ensure theme is set&lt;br /&gt;
&lt;br /&gt;
gsettings set org.cinnamon.theme name &#039;YOUR-THEME-NAME&#039;&lt;br /&gt;
&lt;br /&gt;
# Restart Cinnamon&lt;br /&gt;
&lt;br /&gt;
cinnamon --replace &amp;amp;amp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;css-tips-and-tricks&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== CSS Tips and Tricks ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Finding the right selector&#039;&#039;&#039;: Use Cinnamon&#039;s Looking Glass debugger&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Press Alt+F2&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Type lg and press Enter&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Go to &#039;&#039;&#039;Picker&#039;&#039;&#039; tab&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Click on UI elements to see their CSS classes&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Testing changes quickly&#039;&#039;&#039;: Keep the CSS file open in one workspace, test in another, and use Alt+F2 → r to reload.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Backup before editing&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
cp ~/.themes/YOUR-THEME-NAME/cinnamon/cinnamon.css ~/.themes/YOUR-THEME-NAME/cinnamon/cinnamon.css.backup&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Restore backup if needed&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
cp ~/.themes/YOUR-THEME-NAME/cinnamon/cinnamon.css.backup ~/.themes/YOUR-THEME-NAME/cinnamon/cinnamon.css&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;common-css-properties&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Common CSS Properties ===&lt;br /&gt;
&lt;br /&gt;
/* Fonts */&lt;br /&gt;
&lt;br /&gt;
font-family: &amp;amp;quot;Font Name&amp;amp;quot;, fallback;&lt;br /&gt;
&lt;br /&gt;
font-size: 10pt; /* or 12px, 1.2em */&lt;br /&gt;
&lt;br /&gt;
font-weight: bold; /* or normal, 600 */&lt;br /&gt;
&lt;br /&gt;
font-style: italic;&lt;br /&gt;
&lt;br /&gt;
/* Colors */&lt;br /&gt;
&lt;br /&gt;
color: #ffffff;&lt;br /&gt;
&lt;br /&gt;
background-color: rgba(48, 48, 48, 0.95);&lt;br /&gt;
&lt;br /&gt;
border-color: #444444;&lt;br /&gt;
&lt;br /&gt;
/* Spacing */&lt;br /&gt;
&lt;br /&gt;
padding: 10px;&lt;br /&gt;
&lt;br /&gt;
margin: 5px;&lt;br /&gt;
&lt;br /&gt;
padding-left: 10px;&lt;br /&gt;
&lt;br /&gt;
/* Borders */&lt;br /&gt;
&lt;br /&gt;
border: 1px solid #444444;&lt;br /&gt;
&lt;br /&gt;
border-radius: 8px;&lt;br /&gt;
&lt;br /&gt;
/* Sizing */&lt;br /&gt;
&lt;br /&gt;
width: 300px;&lt;br /&gt;
&lt;br /&gt;
height: 40px;&lt;br /&gt;
&lt;br /&gt;
min-width: 200px;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;accessibility-and-scaling&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Accessibility and Scaling ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;ui-scaling-recommended-for-visual-impairment&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== UI Scaling (Recommended for Visual Impairment) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;via-system-settings&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Via System Settings ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;System Settings → Display → UI Scale&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Options typically: 100%, 125%, 150%, 200%&lt;br /&gt;
&lt;br /&gt;
Start with 125% and adjust as needed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;via-command-line&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Via Command Line ====&lt;br /&gt;
&lt;br /&gt;
# Check current scaling&lt;br /&gt;
&lt;br /&gt;
gsettings get org.cinnamon.desktop.interface scaling-factor&lt;br /&gt;
&lt;br /&gt;
# Set scaling (1 = 100%, 2 = 200%)&lt;br /&gt;
&lt;br /&gt;
gsettings set org.cinnamon.desktop.interface scaling-factor 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Fractional scaling (1.25, 1.5) may not be available on all systems.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;text-scaling-only&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Text Scaling Only ===&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want to scale everything, increase text size:&lt;br /&gt;
&lt;br /&gt;
# Increase text scaling factor&lt;br /&gt;
&lt;br /&gt;
gsettings set org.gnome.desktop.interface text-scaling-factor 1.25&lt;br /&gt;
&lt;br /&gt;
Values: 1.0 = 100%, 1.25 = 125%, 1.5 = 150%&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;high-contrast-themes&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== High Contrast Themes ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;System Settings → Themes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Look for high-contrast themes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;HighContrast (if available)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;HighContrastInverse&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or install:&lt;br /&gt;
&lt;br /&gt;
sudo apt install gnome-themes-extra&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;large-cursor&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Large Cursor ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;System Settings → Mouse and Touchpad → Cursor&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Select a larger cursor size (32px or 48px).&lt;br /&gt;
&lt;br /&gt;
Or via command line:&lt;br /&gt;
&lt;br /&gt;
gsettings set org.cinnamon.desktop.interface cursor-size 32&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;desktop-zoom-magnifier&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Desktop Zoom (Magnifier) ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;System Settings → Accessibility → Zoom&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Enable desktop magnification. Typical shortcut: Alt + Super + 8&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;font-smoothing&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Font Smoothing ===&lt;br /&gt;
&lt;br /&gt;
Ensure font smoothing is enabled for better readability:&lt;br /&gt;
&lt;br /&gt;
gsettings set org.cinnamon.settings-daemon.plugins.xsettings antialiasing &#039;rgba&#039;&lt;br /&gt;
&lt;br /&gt;
gsettings set org.cinnamon.settings-daemon.plugins.xsettings hinting &#039;slight&#039;&lt;br /&gt;
&lt;br /&gt;
Options for antialiasing: none, grayscale, rgba Options for hinting: none, slight, medium, full&lt;br /&gt;
&lt;br /&gt;
Recommended: rgba with slight hinting&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;troubleshooting&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;console-font-issues&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Console Font Issues ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: setupcon says &amp;amp;quot;not on the console&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;: This is normal when running from GUI. The configuration is saved. Test by switching to TTY with Ctrl+Alt+F2.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: Font changes don&#039;t persist after reboot&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;: Verify /etc/default/console-setup has correct settings. Run sudo dpkg-reconfigure console-setup again.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: setfont gives &amp;amp;quot;couldn&#039;t get file descriptor&amp;amp;quot; error&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;: setfont only works from actual TTY console, not GUI terminal emulators.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;gui-font-issues&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== GUI Font Issues ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: Installed font doesn&#039;t appear in applications&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
# Rebuild font cache&lt;br /&gt;
&lt;br /&gt;
fc-cache -fv&lt;br /&gt;
&lt;br /&gt;
# Log out and back in&lt;br /&gt;
&lt;br /&gt;
# Or restart the application&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: Font looks pixelated or ugly&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;: Check antialiasing settings:&lt;br /&gt;
&lt;br /&gt;
gsettings set org.cinnamon.settings-daemon.plugins.xsettings antialiasing &#039;rgba&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: Terminus not showing in Guake&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;: Install the TrueType version:&lt;br /&gt;
&lt;br /&gt;
sudo apt install fonts-terminus&lt;br /&gt;
&lt;br /&gt;
guake --quit&lt;br /&gt;
&lt;br /&gt;
guake &amp;amp;amp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;theme-css-issues&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Theme CSS Issues ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: CSS changes don&#039;t take effect&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Save the CSS file&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Restart Cinnamon: Alt+F2 → r&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Verify you&#039;re editing the active theme&#039;s CSS&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Check for CSS syntax errors&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: Cinnamon crashes after CSS edit&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;: Boot to TTY (Ctrl+Alt+F2), restore backup:&lt;br /&gt;
&lt;br /&gt;
cp ~/.themes/YOUR-THEME/cinnamon/cinnamon.css.backup ~/.themes/YOUR-THEME/cinnamon/cinnamon.css&lt;br /&gt;
&lt;br /&gt;
Then switch back to GUI and restart Cinnamon.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: Can&#039;t find the right CSS selector&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;: Use Looking Glass:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Alt+F2 → type lg → Enter&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Go to Picker tab&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Click UI element to see its classes&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;scaling-issues&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Scaling Issues ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: UI scaling makes everything blurry&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;: Some applications don&#039;t handle scaling well. Try:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Integer scaling only (100%, 200%) instead of fractional&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Increase font sizes instead of UI scaling&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Update graphics drivers&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: Some applications ignore scaling&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;: Set scaling per-application (for X11 apps):&lt;br /&gt;
&lt;br /&gt;
GDK_SCALE=2 application-name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;quick-reference-commands&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Quick Reference Commands ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;console-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Console Fonts ===&lt;br /&gt;
&lt;br /&gt;
# Configure interactively&lt;br /&gt;
&lt;br /&gt;
sudo dpkg-reconfigure console-setup&lt;br /&gt;
&lt;br /&gt;
# Apply changes&lt;br /&gt;
&lt;br /&gt;
sudo setupcon&lt;br /&gt;
&lt;br /&gt;
# List console fonts&lt;br /&gt;
&lt;br /&gt;
ls /usr/share/consolefonts/&lt;br /&gt;
&lt;br /&gt;
# Test font (from TTY only)&lt;br /&gt;
&lt;br /&gt;
setfont /usr/share/consolefonts/Ter16x32n.psf.gz&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;gui-fonts-2&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== GUI Fonts ===&lt;br /&gt;
&lt;br /&gt;
# Install fonts&lt;br /&gt;
&lt;br /&gt;
sudo apt install fonts-terminus fonts-firacode&lt;br /&gt;
&lt;br /&gt;
# Rebuild font cache&lt;br /&gt;
&lt;br /&gt;
fc-cache -fv&lt;br /&gt;
&lt;br /&gt;
# List all fonts&lt;br /&gt;
&lt;br /&gt;
fc-list&lt;br /&gt;
&lt;br /&gt;
# Search for specific font&lt;br /&gt;
&lt;br /&gt;
fc-list | grep -i terminus&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;cinnamon-settings&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Cinnamon Settings ===&lt;br /&gt;
&lt;br /&gt;
# Open settings&lt;br /&gt;
&lt;br /&gt;
cinnamon-settings&lt;br /&gt;
&lt;br /&gt;
# Check current theme&lt;br /&gt;
&lt;br /&gt;
gsettings get org.cinnamon.theme name&lt;br /&gt;
&lt;br /&gt;
# Set theme&lt;br /&gt;
&lt;br /&gt;
gsettings set org.cinnamon.theme name &#039;YOUR-THEME&#039;&lt;br /&gt;
&lt;br /&gt;
# UI scaling&lt;br /&gt;
&lt;br /&gt;
gsettings set org.cinnamon.desktop.interface scaling-factor 2&lt;br /&gt;
&lt;br /&gt;
# Restart Cinnamon&lt;br /&gt;
&lt;br /&gt;
Alt+F2 → r&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;theme-editing&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Theme Editing ===&lt;br /&gt;
&lt;br /&gt;
# Copy theme&lt;br /&gt;
&lt;br /&gt;
cp -r /usr/share/themes/THEME-NAME ~/.themes/&lt;br /&gt;
&lt;br /&gt;
# Edit CSS&lt;br /&gt;
&lt;br /&gt;
nano ~/.themes/THEME-NAME/cinnamon/cinnamon.css&lt;br /&gt;
&lt;br /&gt;
# Backup CSS&lt;br /&gt;
&lt;br /&gt;
cp ~/.themes/THEME-NAME/cinnamon/cinnamon.css{,.backup}&lt;br /&gt;
&lt;br /&gt;
# Restore backup&lt;br /&gt;
&lt;br /&gt;
cp ~/.themes/THEME-NAME/cinnamon/cinnamon.css{.backup,}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;additional-resources&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Additional Resources ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Official Cinnamon Documentation&#039;&#039;&#039;: https://cinnamon-spices.linuxmint.com/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cinnamon GitHub&#039;&#039;&#039;: https://github.com/linuxmint/cinnamon&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Theme Development Guide&#039;&#039;&#039;: Available in Cinnamon documentation&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Font Configuration&#039;&#039;&#039;: man fonts-conf or man fc-cache&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Console Setup&#039;&#039;&#039;: man console-setup or man setupcon&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Last Updated&#039;&#039;&#039;: October 2025&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Compatible with&#039;&#039;&#039;: Debian 13, Linux Mint 21+, any distribution using Cinnamon DE&lt;br /&gt;
&lt;br /&gt;
=== Credits &amp;amp; Comments ===&lt;br /&gt;
As usual I welcome any comments, suggestions or resources : dev@divsmart.com or distro-nix on Debian Forum.&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Debian_First_Aid_Kit&amp;diff=165</id>
		<title>Debian First Aid Kit</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Debian_First_Aid_Kit&amp;diff=165"/>
		<updated>2026-02-10T18:40:27Z</updated>

		<summary type="html">&lt;p&gt;Donald: Created page with &amp;quot;= My Debian First Aid Kit = &amp;#039;&amp;#039;&amp;#039;All commands are verified on Debian 13.1 (Trixie) / 6.16.3+deb13-amd64 x64_64&amp;#039;&amp;#039;&amp;#039;  Created : 27/10/2025 15:54:21  Last Updated : 27/10/2025 23:42:45 &amp;#039;&amp;#039;&amp;#039;ID : 544000.3&amp;#039;&amp;#039;&amp;#039;  == Table of Contents ==  # Issues # Package Management Issues # Disk &amp;amp; Filesystem Issues # Performance Issues # Service &amp;amp; Application Errors # Permission &amp;amp; Access Issues # Hardware IssuesSystem Freezes &amp;amp; Crashes # Boot Problems # Network # Quick Diagnostic Commands # Useful...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= My Debian First Aid Kit =&lt;br /&gt;
&#039;&#039;&#039;All commands are verified on Debian 13.1 (Trixie) / 6.16.3+deb13-amd64 x64_64&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Created : 27/10/2025 15:54:21&lt;br /&gt;
&lt;br /&gt;
Last Updated : 27/10/2025 23:42:45 &#039;&#039;&#039;ID : 544000.3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Table of Contents ==&lt;br /&gt;
&lt;br /&gt;
# Issues&lt;br /&gt;
# Package Management Issues&lt;br /&gt;
# Disk &amp;amp; Filesystem Issues&lt;br /&gt;
# Performance Issues&lt;br /&gt;
# Service &amp;amp; Application Errors&lt;br /&gt;
# Permission &amp;amp; Access Issues&lt;br /&gt;
# Hardware IssuesSystem Freezes &amp;amp; Crashes&lt;br /&gt;
# Boot Problems&lt;br /&gt;
# Network&lt;br /&gt;
# Quick Diagnostic Commands&lt;br /&gt;
# Useful Aliases &amp;amp; Shortcuts&lt;br /&gt;
# Tips for Effective Troubleshooting&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 1. System Freezes &amp;amp; Crashes ==&lt;br /&gt;
&lt;br /&gt;
=== Check System Logs ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# View logs from previous boot (after freeze/crash)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;journalctl -b -1&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# List all available boots&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;journalctl --list-boots&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Show only kernel messages from previous boot&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;journalctl -b -1 -k&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Show errors and critical messages only&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;journalctl -b -1 -p err&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Save logs to file for analysis&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;journalctl -b -1 &amp;gt; ~/crash-log.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Common Freeze Causes to Look For ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Kernel panics&#039;&#039;&#039;: Search for &amp;quot;kernel panic&amp;quot; or &amp;quot;Oops&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;Out of Memory (OOM)&#039;&#039;&#039;: Search for &amp;quot;Out of memory&amp;quot; or &amp;quot;oom-killer&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;Hardware errors&#039;&#039;&#039;: Look for &amp;quot;MCE&amp;quot; (Machine Check Exception) or &amp;quot;hardware error&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;Driver issues&#039;&#039;&#039;: Check for module/driver failures&lt;br /&gt;
* &#039;&#039;&#039;Overheating&#039;&#039;&#039;: Check system temperatures&lt;br /&gt;
&lt;br /&gt;
=== Check System Resources ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# View memory usage&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;free -h&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check disk space&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;df -h&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Monitor system resources in real-time&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;htop&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# or&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;top&amp;lt;/code&amp;gt;&lt;br /&gt;
 (I prefer btop for better presentation)&lt;br /&gt;
 You would need to install it. sudo apt install btop&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check for disk errors&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo dmesg | grep -i error&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;These are permanent errors due to incomplete/buggy ACPI tables in the BIOS, but they are harmless :&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;0.686554] ACPI Error: No handler for Region [ECRM] (00000000201accc4) [EmbeddedControl] (20250404/evregion-131)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;0.686577] ACPI Error: Region EmbeddedControl (ID=3) has no handler (20250404/exfldio-261)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;0.686594] ACPI Error: Aborting method \_SB.GPIO._EVT due to previous error (AE_NOT_EXIST) (20250404/psparse-529)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. Boot Problems ==&lt;br /&gt;
&lt;br /&gt;
=== Check Boot Process ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# View systemd boot analysis&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;systemd-analyze blame&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# See what failed during boot&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;systemctl --failed&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check specific service status&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;systemctl status &amp;lt;service-name&amp;gt; e.g NetworkManager.service&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Access Recovery Mode ===&lt;br /&gt;
&lt;br /&gt;
# Reboot and hold &amp;lt;code&amp;gt;Shift&amp;lt;/code&amp;gt; to access GRUB menu (depending on your grub timing settings)&lt;br /&gt;
# Select &amp;quot;Advanced options&amp;quot;&lt;br /&gt;
# Choose recovery mode&lt;br /&gt;
# Select &amp;quot;root&amp;quot; for root shell access&lt;br /&gt;
&lt;br /&gt;
=== Common Boot Fixes ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Repair filesystem errors&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;Once you identify a device with lsblk&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo fsck /dev/sdXN&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Reinstall GRUB bootloader&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo grub-install /dev/sdX&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo update-grub&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check fstab for mount errors&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;cat /etc/fstab&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. Network Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Diagnose Network Connection ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Check network interfaces&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;ip addr show&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Test connectivity&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;ping -c 4 8.8.8.8&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;or&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;ping -c 6 2a00:1450:4007:809::200e&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check DNS resolution&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;nslookup google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# View routing table&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;ip route show&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check active connections&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;ss -tuln&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Restart Network Service ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# For systems with NetworkManager&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo systemctl restart NetworkManager&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# For systems with networking service&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo systemctl restart networking&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Bring interface down and up&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo ip link set eth0 down&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo ip link set eth0 up&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;If you need to prove to your server host something that is beyond your control, you can always get out the big guns with MTR.&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= &amp;lt;code&amp;gt;MTR (It’s Traceroute on Steroids)&amp;lt;/code&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
== What is MTR? ==&lt;br /&gt;
MTR combines the functionality of &amp;lt;code&amp;gt;ping&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;traceroute&amp;lt;/code&amp;gt; into a single real-time network diagnostic tool. It continuously monitors the path between your system and a destination, providing detailed statistics about latency and packet loss at each hop.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo apt install mtr&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Basic Usage ==&lt;br /&gt;
 &amp;lt;code&amp;gt;# Basic MTR (interactive mode)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Report mode (run 10 cycles and exit)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Specify number of pings&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 50 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Use TCP instead of ICMP&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --tcp google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Use UDP&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --udp google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# No DNS resolution (faster, shows IPs only)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --no-dns google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Show both hostnames and IPs&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --show-ips google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Understanding MTR Output ==&lt;br /&gt;
&lt;br /&gt;
=== Sample Output ===&lt;br /&gt;
 &amp;lt;code&amp;gt;HOST: hostname                    Loss%   Snt   Last   Avg  Best  Wrst StDev&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;1.|-- 192.168.1.1                0.0%    10    1.2   1.5   1.0   2.3   0.4&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;2.|-- 10.0.0.1                   0.0%    10    8.5   9.2   7.8  12.1   1.3&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;3.|-- isp-gateway.net            0.0%    10   15.3  16.1  14.2  19.8   1.8&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;4.|-- ???                       100.0%   10    0.0   0.0   0.0   0.0   0.0&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;5.|-- google.com                 0.0%    10   25.4  26.8  24.1  32.5   2.4&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Column Meanings ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;HOST&#039;&#039;&#039;: Hostname or IP address of each hop in the route&lt;br /&gt;
* &#039;&#039;&#039;Loss%&#039;&#039;&#039;: Percentage of packets lost at this hop&lt;br /&gt;
* &#039;&#039;&#039;Snt&#039;&#039;&#039;: Number of packets sent to this hop&lt;br /&gt;
* &#039;&#039;&#039;Last&#039;&#039;&#039;: Latency of the most recent packet (milliseconds)&lt;br /&gt;
* &#039;&#039;&#039;Avg&#039;&#039;&#039;: Average latency across all packets (milliseconds)&lt;br /&gt;
* &#039;&#039;&#039;Best&#039;&#039;&#039;: Lowest latency recorded (milliseconds)&lt;br /&gt;
* &#039;&#039;&#039;Wrst&#039;&#039;&#039;: Highest latency recorded (milliseconds)&lt;br /&gt;
* &#039;&#039;&#039;StDev&#039;&#039;&#039;: Standard deviation - measures latency consistency (lower is better)&lt;br /&gt;
&lt;br /&gt;
== Interpreting Results ==&lt;br /&gt;
&lt;br /&gt;
=== Healthy Network ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Loss% = 0%&#039;&#039;&#039; on all hops&lt;br /&gt;
* &#039;&#039;&#039;Stable latency&#039;&#039;&#039; (low StDev values)&lt;br /&gt;
* &#039;&#039;&#039;Gradual latency increase&#039;&#039;&#039; as hop count increases&lt;br /&gt;
* &#039;&#039;&#039;Consistent response times&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Problem Indicators ===&lt;br /&gt;
&lt;br /&gt;
==== 1. High Packet Loss at Specific Hop ====&lt;br /&gt;
 &amp;lt;code&amp;gt;5.|-- problem-router.net        25.0%    10   45.3  48.2  42.1  65.8  8.4&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Analysis:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* If loss continues to destination: Real problem at this router&lt;br /&gt;
* If loss only at this hop but NOT beyond: Router may be rate-limiting ICMP (false positive, not a real problem)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rule of thumb:&#039;&#039;&#039; If packet loss appears at hop N but hops N+1, N+2, etc. show 0% loss, it&#039;s usually just ICMP rate limiting.&lt;br /&gt;
&lt;br /&gt;
==== 2. High Latency at Specific Hop ====&lt;br /&gt;
 &amp;lt;code&amp;gt;3.|-- slow-link.net              0.0%    10  150.3 155.2 148.1 165.8  5.4&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Indicates:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Network bottleneck or congested link&lt;br /&gt;
* Geographical distance (intercontinental hops)&lt;br /&gt;
* Slow routing equipment&lt;br /&gt;
&lt;br /&gt;
==== 3. No Response (???) ====&lt;br /&gt;
 &amp;lt;code&amp;gt;4.|-- ???                       100.0%   10    0.0   0.0   0.0   0.0   0.0&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Possible causes:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Router configured to not respond to ICMP/traceroute packets&lt;br /&gt;
* Firewall blocking diagnostic packets&lt;br /&gt;
* &#039;&#039;&#039;Not necessarily a problem&#039;&#039;&#039; if later hops respond normally&lt;br /&gt;
&lt;br /&gt;
==== 4. High Jitter (StDev) ====&lt;br /&gt;
 &amp;lt;code&amp;gt;6.|-- unstable.net               0.0%    10   35.3  52.8  28.1  95.2  24.7&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Indicates:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Inconsistent latency (high StDev of 24.7ms)&lt;br /&gt;
* Network congestion or instability&lt;br /&gt;
* Poor for real-time applications (VoIP, gaming, video calls)&lt;br /&gt;
&lt;br /&gt;
==== 5. Sudden Latency Spike ====&lt;br /&gt;
 &amp;lt;code&amp;gt;1.|-- 192.168.1.1                0.0%    10    1.2   1.5   1.0   2.3   0.4&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;2.|-- 10.0.0.1                   0.0%    10    8.5   9.2   7.8  12.1   1.3&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;3.|-- problematic-hop.net        0.0%    10  180.5 185.2 178.1 195.8  6.4&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;4.|-- next-hop.net               0.0%    10  182.3 187.8 180.5 198.2  6.8&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Problem identified:&#039;&#039;&#039; Hop 3 introduces ~170ms of latency (jump from 9ms to 180ms)&lt;br /&gt;
&lt;br /&gt;
== Advanced Usage ==&lt;br /&gt;
&lt;br /&gt;
=== Report Mode with Different Output Formats ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# CSV format for logging and analysis&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report --csv google.com &amp;gt; network-report.csv&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# JSON output for parsing&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report --json google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# XML format&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report --xml google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Wide report (no abbreviations)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-wide google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Protocol Selection ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Use ICMP (default, requires no special permissions)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Use UDP (alternative to ICMP)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --udp google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Use TCP (useful for firewall testing)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --tcp google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Test specific TCP port&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo mtr --tcp --port 443 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo mtr --tcp --port 22 remote-server.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Timing and Duration ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Specify interval between pings (default 1 second)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --interval 0.5 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Extended test with 100 cycles&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 100 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Continuous monitoring (Ctrl+C to stop)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Quick 10-cycle report&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 10 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Advanced Options ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Show Autonomous System (AS) numbers&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --aslookup google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Set maximum number of hops&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --max-ttl 20 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Set packet size&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --psize 1000 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Show both IP and hostname&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --show-ips google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Specify source address (multiple network interfaces)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --address 192.168.1.100 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# IPv4 only&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr -4 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# IPv6 only&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr -6 google.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Interactive Mode Commands ==&lt;br /&gt;
When running MTR in interactive mode (just &amp;lt;code&amp;gt;mtr hostname&amp;lt;/code&amp;gt;), use these keys:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Key&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;h&#039;&#039;&#039;&lt;br /&gt;
|Display help&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;d&#039;&#039;&#039;&lt;br /&gt;
|Toggle display mode (cycle through different views)&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;n&#039;&#039;&#039;&lt;br /&gt;
|Toggle between hostnames and IP addresses&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;r&#039;&#039;&#039;&lt;br /&gt;
|Reset all statistics&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;p&#039;&#039;&#039;&lt;br /&gt;
|Pause/unpause the display&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;q&#039;&#039;&#039;&lt;br /&gt;
|Quit MTR&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;u&#039;&#039;&#039;&lt;br /&gt;
|Switch between ICMP, UDP, and TCP modes&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;y&#039;&#039;&#039;&lt;br /&gt;
|Switch between IPv4 and IPv6&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;o&#039;&#039;&#039;&lt;br /&gt;
|Toggle field display options&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;j&#039;&#039;&#039;&lt;br /&gt;
|Toggle latency display&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Practical Troubleshooting Scenarios ==&lt;br /&gt;
&lt;br /&gt;
=== Scenario 1: Diagnosing Slow Website ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Run extended test to get accurate statistics&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 100 --no-dns example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Look for:&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# - High average latency at specific hops&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# - Packet loss at destination&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# - High StDev values (jitter)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scenario 2: Testing if Firewall Blocks SSH ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Test SSH port (22) connectivity&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo mtr --tcp --port 22 --report-cycles 50 remote-server.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# If last hop shows 100% loss but earlier hops are fine:&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# - Port 22 might be filtered&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# - Try standard ICMP test for comparison&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scenario 3: ISP Performance Issues ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Test path to reliable external server&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 100 8.8.8.8&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Compare with another DNS server&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 100 1.1.1.1&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# If issues appear in first 3-4 hops: likely ISP problem&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# If issues appear later: problem is beyond your ISP&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scenario 4: VPN Troubleshooting ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Test before connecting to VPN&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 50 --no-dns google.com &amp;gt; before-vpn.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Test after connecting to VPN&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 50 --no-dns google.com &amp;gt; after-vpn.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Compare the two files to see VPN impact&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;diff before-vpn.txt after-vpn.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scenario 5: Gaming/Streaming Performance ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Test for jitter (important for real-time applications)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 200 game-server.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Look for:&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# - Low average latency (&amp;lt; 50ms for gaming)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# - Low StDev (&amp;lt; 5ms preferred)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# - Zero packet loss&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scenario 6: Intermittent Connectivity ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Long-running test to catch intermittent issues&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report-cycles 500 --interval 1 target.com &amp;gt; long-test.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Monitor in real-time for several minutes&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr target.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# Watch for sudden spikes in Loss% or latency&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Continuous Monitoring ==&lt;br /&gt;
&lt;br /&gt;
=== Log Network Performance Over Time ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Create timestamped reports every hour&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;while true; do&amp;lt;/code&amp;gt;&lt;br /&gt;
     &amp;lt;code&amp;gt;timestamp=$(date +%Y%m%d-%H%M%S)&amp;lt;/code&amp;gt;&lt;br /&gt;
     &amp;lt;code&amp;gt;mtr --report --report-cycles 50 google.com &amp;gt; &amp;quot;mtr-$timestamp.txt&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
     &amp;lt;code&amp;gt;sleep 3600&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;done&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Monitor Multiple Destinations ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Create a simple monitoring script&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;#!/bin/bash&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;echo &amp;quot;=== MTR Report $(date) ===&amp;quot; &amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;echo &amp;quot;&amp;quot; &amp;gt;&amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;echo &amp;quot;Google DNS:&amp;quot; &amp;gt;&amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report --report-cycles 50 --no-dns 8.8.8.8 &amp;gt;&amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;echo &amp;quot;&amp;quot; &amp;gt;&amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;echo &amp;quot;Cloudflare DNS:&amp;quot; &amp;gt;&amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report --report-cycles 50 --no-dns 1.1.1.1 &amp;gt;&amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;echo &amp;quot;&amp;quot; &amp;gt;&amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;echo &amp;quot;Your Server:&amp;quot; &amp;gt;&amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report --report-cycles 50 your-server.com &amp;gt;&amp;gt; daily-network-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Useful Aliases for .bashrc ==&lt;br /&gt;
 &amp;lt;code&amp;gt;# Quick network path analysis&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias mtrreport=&#039;mtr --report --report-cycles 50 --no-dns&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Monitor connection to Google DNS&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias netcheck=&#039;mtr --report-cycles 20 8.8.8.8&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Extended network test&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias mtrlong=&#039;mtr --report-cycles 100&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# TCP port 443 test (HTTPS)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias mtrhttps=&#039;sudo mtr --tcp --port 443 --report-cycles 30&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Quick comparison of major DNS providers&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias dnstest=&#039;echo &amp;quot;Google:&amp;quot; &amp;amp;&amp;amp; mtr --report-cycles 20 8.8.8.8 &amp;amp;&amp;amp; echo -e &amp;quot;\nCloudflare:&amp;quot; &amp;amp;&amp;amp; mtr --report-cycles 20 1.1.1.1&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
After adding to &amp;lt;code&amp;gt;~/.bashrc&amp;lt;/code&amp;gt;:&lt;br /&gt;
 &amp;lt;code&amp;gt;source ~/.bashrc&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting Tips ==&lt;br /&gt;
&lt;br /&gt;
=== 1. Permission Issues ===&lt;br /&gt;
If you get permission errors with TCP mode:&lt;br /&gt;
 &amp;lt;code&amp;gt;# Use sudo for TCP on privileged ports&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo mtr --tcp --port 443 example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Or set capabilities (one-time setup)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo setcap cap_net_raw+ep /usr/bin/mtr-packet&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. False Positives ===&lt;br /&gt;
&#039;&#039;&#039;Common false positive:&#039;&#039;&#039; Packet loss at intermediate hops but NOT at the destination.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;code&amp;gt;3.|-- router.isp.net            20.0%    50   15.3  16.1  14.2  19.8   1.8&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;4.|-- next-hop.net               0.0%    50   18.5  19.2  17.8  22.1   1.3&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;5.|-- destination.com            0.0%    50   25.4  26.8  24.1  32.5   2.4&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;This is OK!&#039;&#039;&#039; Hop 3 shows 20% loss, but hops 4 and 5 show 0% loss. The router at hop 3 is rate-limiting ICMP responses, but actual traffic flows normally.&lt;br /&gt;
&lt;br /&gt;
=== 3. DNS Resolution Delays ===&lt;br /&gt;
If MTR seems slow to start:&lt;br /&gt;
 &amp;lt;code&amp;gt;# Skip DNS resolution for faster results&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --no-dns target.com&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Resolve names afterward if needed&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;host 203.0.113.1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. Comparing Results ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Run multiple tests and compare&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report --report-cycles 50 example.com &amp;gt; test1.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sleep 60&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;mtr --report --report-cycles 50 example.com &amp;gt; test2.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;diff test1.txt test2.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When to Use MTR vs Other Tools ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tool&lt;br /&gt;
!Best For&lt;br /&gt;
!Limitations&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;MTR&#039;&#039;&#039;&lt;br /&gt;
|Continuous monitoring, identifying problem hops, detailed statistics&lt;br /&gt;
|Requires installation&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;ping&#039;&#039;&#039;&lt;br /&gt;
|Quick connectivity test, simple latency check&lt;br /&gt;
|Only tests endpoint&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;traceroute&#039;&#039;&#039;&lt;br /&gt;
|One-time path discovery&lt;br /&gt;
|No continuous monitoring&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;ss/netstat&#039;&#039;&#039;&lt;br /&gt;
|Local connection status&lt;br /&gt;
|Doesn&#039;t test remote paths&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Best Practices ==&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Run enough cycles&#039;&#039;&#039;: Use at least 50-100 cycles for accurate statistics&lt;br /&gt;
# &#039;&#039;&#039;Use --no-dns&#039;&#039;&#039;: Faster and avoids DNS resolution issues during testing&lt;br /&gt;
# &#039;&#039;&#039;Check multiple times&#039;&#039;&#039;: Network conditions vary; test at different times&lt;br /&gt;
# &#039;&#039;&#039;Compare protocols&#039;&#039;&#039;: Try ICMP, UDP, and TCP if one shows issues&lt;br /&gt;
# &#039;&#039;&#039;Document findings&#039;&#039;&#039;: Save reports with timestamps for trend analysis&lt;br /&gt;
# &#039;&#039;&#039;Test known-good hosts&#039;&#039;&#039;: Use 8.8.8.8 or 1.1.1.1 to verify your network first&lt;br /&gt;
# &#039;&#039;&#039;Be patient&#039;&#039;&#039;: Let MTR run for at least 30-60 seconds before drawing conclusions&lt;br /&gt;
&lt;br /&gt;
== Reading Between the Lines ==&lt;br /&gt;
&lt;br /&gt;
=== Good Network Health Example ===&lt;br /&gt;
 &amp;lt;code&amp;gt;HOST: hostname                    Loss%   Snt   Last   Avg  Best  Wrst StDev&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;1.|-- 192.168.1.1                0.0%    50    1.1   1.2   0.9   2.1   0.2&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;2.|-- 10.0.0.1                   0.0%    50    8.2   8.5   7.5  10.2   0.5&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;3.|-- isp-gateway.net            0.0%    50   15.1  15.5  14.0  18.3   0.8&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;4.|-- google.com                 0.0%    50   24.8  25.2  23.5  28.1   1.1&amp;lt;/code&amp;gt;&lt;br /&gt;
✅ No packet loss, consistent latency, low jitter&lt;br /&gt;
&lt;br /&gt;
=== Problem Network Example ===&lt;br /&gt;
 &amp;lt;code&amp;gt;HOST: hostname                    Loss%   Snt   Last   Avg  Best  Wrst StDev&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;1.|-- 192.168.1.1                0.0%    50    1.2   1.5   1.0   2.3   0.3&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;2.|-- 10.0.0.1                   5.0%    50   45.3  52.8  8.1  245.2  45.7&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;3.|-- ???                       100.0%   50    0.0   0.0   0.0   0.0   0.0&amp;lt;/code&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;4.|-- destination.com           15.0%    50   95.4 125.8  48.2 385.5  78.2&amp;lt;/code&amp;gt;&lt;br /&gt;
❌ Packet loss at hop 2 and destination, high jitter, very high worst-case latency&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
MTR is your Swiss Army knife for network diagnostics. Key takeaways:&lt;br /&gt;
&lt;br /&gt;
* Use &amp;lt;code&amp;gt;--report-cycles 50+&amp;lt;/code&amp;gt; for reliable data&lt;br /&gt;
* Watch for packet loss at the &#039;&#039;&#039;destination&#039;&#039;&#039; (intermediate losses may be false positives)&lt;br /&gt;
* High &#039;&#039;&#039;StDev&#039;&#039;&#039; indicates unstable connection&lt;br /&gt;
* High &#039;&#039;&#039;Avg&#039;&#039;&#039; latency shows slow links&lt;br /&gt;
* Use &amp;lt;code&amp;gt;--no-dns&amp;lt;/code&amp;gt; for faster results&lt;br /&gt;
* Compare &#039;&#039;&#039;ICMP&#039;&#039;&#039;, &#039;&#039;&#039;UDP&#039;&#039;&#039;, and &#039;&#039;&#039;TCP&#039;&#039;&#039; modes if issues appear&lt;br /&gt;
* Test at different times of day for comprehensive analysis&lt;br /&gt;
&lt;br /&gt;
== 4. Package Management Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Fix Broken Packages ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Update package lists&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo apt update&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Fix broken dependencies&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo apt --fix-broken install&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Reconfigure packages&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo dpkg --configure -a&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;(if no output, there is nothing to do)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Clean package cache&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo apt clean&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo apt autoclean&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Remove unused packages&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo apt autoremove&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Handle Held or Locked Packages ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# If apt is locked, find the process&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo lsof /var/lib/dpkg/lock-frontend&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Force remove lock (use carefully)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo rm /var/lib/dpkg/lock-frontend&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo rm /var/lib/apt/lists/lock&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Reconfigure dpkg&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo dpkg --configure -a&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. Disk &amp;amp; Filesystem Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Check Disk Health ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Check disk space&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;df -h&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check inode usage&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;df -i&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# View disk I/O statistics&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;iostat -x 1&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;(Make sure you have sysstat which includes useful performance monitoring tools other than iostat - disk I/O statistics&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;mpstat&amp;lt;/code&amp;gt; - CPU statistics&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;sar&amp;lt;/code&amp;gt; - system activity reporter&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;pidstat&amp;lt;/code&amp;gt; - process statistics&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;cifsiostat&amp;lt;/code&amp;gt; - CIFS statistics&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&#039;&#039;# Show stats in MB instead of KB&#039;&#039; iostat -xm 2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&#039;&#039;# Monitor specific device&#039;&#039; iostat -x sda 1&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# Check for disk errors in dmesg&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo dmesg | grep -i &amp;quot;error\|fail&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# SMART disk health (if smartmontools installed)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo smartctl -a /dev/sda&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Repair Filesystem ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Unmount the partition first&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo umount /dev/sdXN&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Run filesystem check&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo fsck /dev/sdXN&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# For ext4 specifically&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo e2fsck -f /dev/sdXN&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6. Performance Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Identify Resource Hogs ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# CPU usage by process&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;top -o %CPU&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Memory usage by process&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;top -o %MEM&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Disk usage by directory&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;du -sh /* | sort -h&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Find large files&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;find / -type f -size +100M 2&amp;gt;/dev/null&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check running processes&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;ps aux --sort=-%mem | head -20&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== System Temperature Monitoring ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Install sensors (if not installed)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo apt install lm-sensors&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo sensors-detect&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# View temperatures&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sensors&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Real-time temperature monitoring&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;watch -n 2 sensors&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;&#039;&#039;I have it as an alias in ~/.bashrc&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;&#039;&#039;Go to 11. Useful Aliases &amp;amp; Shortcuts&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. Service &amp;amp; Application Errors ==&lt;br /&gt;
&lt;br /&gt;
=== Debug Service Problems ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Check service status&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo systemctl status service-name&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# View service logs&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo journalctl -u service-name&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Restart a service&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo systemctl restart service-name&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Enable service at boot&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo systemctl enable service-name&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# View recent service failures&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;journalctl -p err -b&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Application Crash Investigation ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Check for core dumps&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;ls -lh /var/crash/&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# View application-specific logs&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;ls /var/log/&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check syslog for application errors&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo tail -f /var/log/syslog&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 8. Permission &amp;amp; Access Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Fix Common Permission Problems ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Check file ownership&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;ls -l /path/to/file&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Change ownership&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo chown michael:michael /path/to/file&amp;lt;/code&amp;gt;&lt;br /&gt;
 user:group&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Change permissions&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo chmod 644 /path/to/file&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Recursively fix permissions&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo chown -R user:group /path/to/directory&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== User &amp;amp; Authentication Issues ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Check user information&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;id username&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# View user login history&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;last -a&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check failed login attempts&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo journalctl | grep &amp;quot;authentication failure&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Reset user password&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo passwd username&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 9. Hardware Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Identify Hardware ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# List all hardware&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo lshw -short&amp;lt;/code&amp;gt;&lt;br /&gt;
 (May not be installed by default)&lt;br /&gt;
 sudo apt install lshw&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# PCI devices&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;lspci -v&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# USB devices&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;lspci -v&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# CPU information&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;lscpu&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Memory information&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo dmidecode --type memory&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Check Hardware Errors ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Kernel ring buffer (hardware messages)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;dmesg | less&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;(If no output, good, no errors)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;q to quit&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Search for specific hardware issues&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;dmesg | grep -i &amp;quot;error\|fail\|warn&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check for USB issues&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;dmesg | grep -i usb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 10. Quick Diagnostic Commands ==&lt;br /&gt;
&lt;br /&gt;
=== System Information at a Glance ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Uptime and load average&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;uptime&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Kernel version&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;uname -r&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Debian version&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;cat /etc/debian_version&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# System summary&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo inxi -Fxz&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Emergency Toolkit ===&lt;br /&gt;
 &amp;lt;code&amp;gt;# Create a diagnostic report&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo journalctl -b &amp;gt; ~/system-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;dmesg &amp;gt;&amp;gt; ~/system-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;systemctl --failed &amp;gt;&amp;gt; ~/system-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;df -h &amp;gt;&amp;gt; ~/system-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;free -h &amp;gt;&amp;gt; ~/system-report.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Watch logs in real-time&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;sudo journalctl -f&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Monitor system resources continuously&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;watch -n 1 &#039;free -h &amp;amp;&amp;amp; df -h&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 11. Useful Aliases &amp;amp; Shortcuts ==&lt;br /&gt;
Add these to your &amp;lt;code&amp;gt;~/.bashrc&amp;lt;/code&amp;gt; for quick access to common troubleshooting commands:&lt;br /&gt;
 &amp;lt;code&amp;gt;# Monitor system temperatures in real-time&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias temps=&amp;quot;watch -n 2 &#039;for i in /sys/class/hwmon/hwmon*/; do echo -n \&amp;quot;\$(cat \${i}name): \&amp;quot;; cat \${i}temp*_input 2&amp;gt;/dev/null | while read temp; do echo \&amp;quot;scale=1; \$temp/1000\&amp;quot; | bc; done | tr \&amp;quot;\n\&amp;quot; \&amp;quot; \&amp;quot;; echo \&amp;quot;°C\&amp;quot;; done&#039;&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;&#039;&#039;or run the watch command in the shell without the opening and closing double quotes.&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Quick system status&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias sysstat=&#039;echo &amp;quot;=== CPU ===&amp;quot; &amp;amp;&amp;amp; uptime &amp;amp;&amp;amp; echo -e &amp;quot;\n=== Memory ===&amp;quot; &amp;amp;&amp;amp; free -h &amp;amp;&amp;amp; echo -e &amp;quot;\n=== Disk ===&amp;quot; &amp;amp;&amp;amp; df -h &amp;amp;&amp;amp; echo -e &amp;quot;\n=== Top Processes ===&amp;quot; &amp;amp;&amp;amp; ps aux --sort=-%mem | head -10&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;(It’s a messy mayout, but I’m terrible with awk. Feel free to improve the layoput for me)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# View last boot logs&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias lastboot=&#039;journalctl -b -1&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Check failed services&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias failedservices=&#039;systemctl --failed&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Monitor logs in real-time&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias watchlog=&#039;sudo journalctl -f&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;# Quick network status&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;alias netstat=&#039;ip addr show &amp;amp;&amp;amp; echo -e &amp;quot;\n=== Routes ===&amp;quot; &amp;amp;&amp;amp; ip route show&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
After adding these, run:&lt;br /&gt;
 &amp;lt;code&amp;gt;source ~/.bashrc&amp;lt;/code&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Tips for Your Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;First check logs&#039;&#039;&#039;: &amp;lt;code&amp;gt;journalctl&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;dmesg&amp;lt;/code&amp;gt; are your best friends&lt;br /&gt;
# &#039;&#039;&#039;Work through the sections&#039;&#039;&#039;: Change one thing at a time&lt;br /&gt;
# &#039;&#039;&#039;Document changes&#039;&#039;&#039;: Keep notes on what you&#039;ve tried&lt;br /&gt;
# &#039;&#039;&#039;Search for error messages&#039;&#039;&#039;: Copy exact error messages into search engines or AI&lt;br /&gt;
# &#039;&#039;&#039;Check recent changes&#039;&#039;&#039;: What you did before it happened? Install something, update packages, kernel?&lt;br /&gt;
# &#039;&#039;&#039;Make backups&#039;&#039;&#039;: Before major changes, backup important data&lt;br /&gt;
# &#039;&#039;&#039;Use verbose mode&#039;&#039;&#039;: Add &amp;lt;code&amp;gt;-v&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;-vv&amp;lt;/code&amp;gt; flags to commands for more detail&lt;br /&gt;
# &#039;&#039;&#039;Check forums&#039;&#039;&#039;: Debian forum, Reddit, Stack Exchange, and mailing lists&lt;br /&gt;
&lt;br /&gt;
----&#039;&#039;&#039;Remember&#039;&#039;&#039;: If in doubt, search for the specific error message along with &amp;quot;Debian&amp;quot; and the version number. e.g. Debian 13 or point release if needed, Debian 13,1&lt;br /&gt;
&lt;br /&gt;
As usual I welcome any comments, suggestions or resources : &#039;&#039;&#039;dev@divsmart.com&#039;&#039;&#039; or &#039;&#039;&#039;distro-nix&#039;&#039;&#039; on Debian Forum.&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Main_Page&amp;diff=164</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Main_Page&amp;diff=164"/>
		<updated>2026-02-10T03:43:38Z</updated>

		<summary type="html">&lt;p&gt;Donald: /* HowTo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About ==&lt;br /&gt;
About:&lt;br /&gt;
* [[Debian User Forums]]&lt;br /&gt;
* [[The Debian Project]]&lt;br /&gt;
* [[Archive AI Use]]&lt;br /&gt;
* [[Forum jokes, lingo, and memorable quotes]]&lt;br /&gt;
&lt;br /&gt;
== Guides (reference) ==&lt;br /&gt;
&lt;br /&gt;
* [[Sudo|Root, sudo, su, and su -]]&lt;br /&gt;
* [[Fonts and Themes in Cinnamon Desktop]]&lt;br /&gt;
* [[To install Firefox from Mozilla repo|Installing Firefox from Mozilla repo]]&lt;br /&gt;
* [[Security Hardening for Debian Users: Protecting Against Targeted Attacks]]&lt;br /&gt;
&lt;br /&gt;
== HowTo ==&lt;br /&gt;
* [[WiFi Signal Strength and Sharing]]&lt;br /&gt;
* [[REFInd USB Drive (for emergency boot)]]&lt;br /&gt;
* [[Trixie iwd]]&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
Licensing:&lt;br /&gt;
* [[Publish using CC International licencing and your Forum name]].&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Fonts_and_Themes_in_Cinnamon_Desktop&amp;diff=163</id>
		<title>Fonts and Themes in Cinnamon Desktop</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Fonts_and_Themes_in_Cinnamon_Desktop&amp;diff=163"/>
		<updated>2026-02-10T03:38:26Z</updated>

		<summary type="html">&lt;p&gt;Donald: Created page with &amp;quot;== Fonts and Themes in Cinnamon Desktop ==  * Verified on Debian 13.1 (Trixie) / 6.12.43+deb13-amd64 x64_64 * Created : 28/10/2025 21:09:21 * Last Updated : 27/10/2025 23:42:45   A comprehensive reference for managing console fonts, GUI fonts, and theme customization in Debian with Cinnamon DE.  &amp;lt;span id=&amp;quot;table-of-contents&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; == Table of Contents ==  &amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt; &amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;[https://claude.ai/chat/6986fa74-5020-47a2-8736-f9eaf474...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Fonts and Themes in Cinnamon Desktop ==&lt;br /&gt;
&lt;br /&gt;
* Verified on Debian 13.1 (Trixie) / 6.12.43+deb13-amd64 x64_64&lt;br /&gt;
* Created : 28/10/2025 21:09:21&lt;br /&gt;
* Last Updated : 27/10/2025 23:42:45&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A comprehensive reference for managing console fonts, GUI fonts, and theme customization in Debian with Cinnamon DE.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;table-of-contents&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Table of Contents ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;[https://claude.ai/chat/6986fa74-5020-47a2-8736-f9eaf474bfc0#understanding-font-types Understanding Font Types]&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;[https://claude.ai/chat/6986fa74-5020-47a2-8736-f9eaf474bfc0#console-fonts-tty Console Fonts (TTY)]&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;[https://claude.ai/chat/6986fa74-5020-47a2-8736-f9eaf474bfc0#gui-fonts GUI Fonts]&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;[https://claude.ai/chat/6986fa74-5020-47a2-8736-f9eaf474bfc0#cinnamon-system-fonts Cinnamon System Fonts]&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;[https://claude.ai/chat/6986fa74-5020-47a2-8736-f9eaf474bfc0#theme-customization-with-css Theme Customization with CSS]&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;[https://claude.ai/chat/6986fa74-5020-47a2-8736-f9eaf474bfc0#accessibility-and-scaling Accessibility and Scaling]&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;[https://claude.ai/chat/6986fa74-5020-47a2-8736-f9eaf474bfc0#troubleshooting Troubleshooting]&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;understanding-font-types&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Understanding Font Types ==&lt;br /&gt;
&lt;br /&gt;
Linux uses different font systems depending on where text appears:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;console-fonts-tty&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Console Fonts (TTY) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Format&#039;&#039;&#039;: PSF (PC Screen Font) - .psf or .psf.gz&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Location&#039;&#039;&#039;: /usr/share/consolefonts/&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Used by&#039;&#039;&#039;: Text-based virtual consoles (Ctrl+Alt+F2 through F6)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Loaded&#039;&#039;&#039;: Before graphical system starts&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Limitations&#039;&#039;&#039;: No anti-aliasing, fixed character grid&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;gui-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== GUI Fonts ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Formats&#039;&#039;&#039;: TrueType (.ttf), OpenType (.otf)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Location&#039;&#039;&#039;: /usr/share/fonts/truetype/, /usr/share/fonts/opentype/&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Used by&#039;&#039;&#039;: All graphical applications&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Features&#039;&#039;&#039;: Anti-aliasing, scalability, subpixel rendering&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;why-two-systems&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Why Two Systems? ===&lt;br /&gt;
&lt;br /&gt;
The Linux console operates at a lower level than the graphical interface. It needs to display text even if the GUI fails to load, so it uses simpler font formats that don&#039;t require graphics libraries.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;console-fonts-tty-1&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Console Fonts (TTY) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;installing-console-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Installing Console Fonts ===&lt;br /&gt;
&lt;br /&gt;
Install Terminus (popular monospace console font):&lt;br /&gt;
&lt;br /&gt;
sudo apt update&lt;br /&gt;
&lt;br /&gt;
sudo apt install console-setup xfonts-terminus&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;configuring-console-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Configuring Console Fonts ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;method-1-interactive-configuration&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Method 1: Interactive Configuration ====&lt;br /&gt;
&lt;br /&gt;
sudo dpkg-reconfigure console-setup&lt;br /&gt;
&lt;br /&gt;
Follow the prompts:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Encoding&#039;&#039;&#039;: UTF-8&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Character set&#039;&#039;&#039;: Guess optimal character set&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Font&#039;&#039;&#039;: Terminus&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Font size&#039;&#039;&#039;: Choose from available sizes&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Available Terminus sizes: 8x14, 8x16, 10x20, 12x24, 14x28, 16x32&lt;br /&gt;
&lt;br /&gt;
Recommendation: 16x32 for good readability&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;method-2-direct-configuration-file-editing&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Method 2: Direct Configuration File Editing ====&lt;br /&gt;
&lt;br /&gt;
Edit /etc/default/console-setup:&lt;br /&gt;
&lt;br /&gt;
sudo nano /etc/default/console-setup&lt;br /&gt;
&lt;br /&gt;
Add or modify these lines:&lt;br /&gt;
&lt;br /&gt;
FONTFACE=&amp;amp;quot;Terminus&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
FONTSIZE=&amp;amp;quot;16x32&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
Other useful settings you might find:&lt;br /&gt;
&lt;br /&gt;
CHARMAP=&amp;amp;quot;UTF-8&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
CODESET=&amp;amp;quot;guess&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;applying-console-font-changes&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Applying Console Font Changes ===&lt;br /&gt;
&lt;br /&gt;
The changes take effect on boot, but to apply immediately on all consoles:&lt;br /&gt;
&lt;br /&gt;
sudo setupcon&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: This command only works when run from an actual TTY console, not from a terminal emulator in the GUI. If you get &amp;amp;quot;not on the console&amp;amp;quot; error, that&#039;s normal - the configuration is saved and will apply on next boot or when you switch to a TTY.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;testing-console-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Testing Console Fonts ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Switch to virtual console: Ctrl + Alt + F2&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Log in with your credentials&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Check the font - you should see Terminus&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Return to GUI: Ctrl + Alt + F1 or Ctrl + Alt + F7&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;viewing-available-console-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Viewing Available Console Fonts ===&lt;br /&gt;
&lt;br /&gt;
List all available console fonts:&lt;br /&gt;
&lt;br /&gt;
ls /usr/share/consolefonts/&lt;br /&gt;
&lt;br /&gt;
Filter for Terminus fonts:&lt;br /&gt;
&lt;br /&gt;
ls /usr/share/consolefonts/ | grep -i ter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;temporarily-testing-console-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Temporarily Testing Console Fonts ===&lt;br /&gt;
&lt;br /&gt;
To test a font before making it permanent:&lt;br /&gt;
&lt;br /&gt;
setfont /usr/share/consolefonts/Ter16x32n.psf.gz&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: setfont only works when run from a TTY console (Ctrl+Alt+F2), not from GUI terminals.&lt;br /&gt;
&lt;br /&gt;
To check current console font (from TTY):&lt;br /&gt;
&lt;br /&gt;
setfont -v&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;gui-fonts-1&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== GUI Fonts ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;installing-gui-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Installing GUI Fonts ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;system-wide-installation&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== System-wide Installation ====&lt;br /&gt;
&lt;br /&gt;
Install Terminus for graphical applications:&lt;br /&gt;
&lt;br /&gt;
sudo apt install fonts-terminus&lt;br /&gt;
&lt;br /&gt;
Install other popular fonts:&lt;br /&gt;
&lt;br /&gt;
# Programming fonts&lt;br /&gt;
&lt;br /&gt;
sudo apt install fonts-firacode fonts-hack fonts-jetbrains-mono&lt;br /&gt;
&lt;br /&gt;
# General purpose fonts&lt;br /&gt;
&lt;br /&gt;
sudo apt install fonts-liberation fonts-dejavu fonts-noto&lt;br /&gt;
&lt;br /&gt;
# More options&lt;br /&gt;
&lt;br /&gt;
sudo apt install fonts-ubuntu fonts-roboto&lt;br /&gt;
&lt;br /&gt;
After installing, log out and back in, or rebuild font cache:&lt;br /&gt;
&lt;br /&gt;
fc-cache -fv&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;user-only-installation&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== User-only Installation ====&lt;br /&gt;
&lt;br /&gt;
To install fonts just for your user account:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Create fonts directory:&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mkdir -p ~/.local/share/fonts&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol start=&amp;quot;2&amp;quot; style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Copy font files (.ttf or .otf) to this directory:&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cp /path/to/your/font.ttf ~/.local/share/fonts/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol start=&amp;quot;3&amp;quot; style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Rebuild font cache:&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fc-cache -fv&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;font-locations&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Font Locations ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;System-wide fonts&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
/usr/share/fonts/truetype/&lt;br /&gt;
&lt;br /&gt;
/usr/share/fonts/opentype/&lt;br /&gt;
&lt;br /&gt;
/usr/share/fonts/X11/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;User-specific fonts&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
~/.local/share/fonts/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;listing-available-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Listing Available Fonts ===&lt;br /&gt;
&lt;br /&gt;
List all fonts available to GUI applications:&lt;br /&gt;
&lt;br /&gt;
fc-list&lt;br /&gt;
&lt;br /&gt;
Search for specific font:&lt;br /&gt;
&lt;br /&gt;
fc-list | grep -i terminus&lt;br /&gt;
&lt;br /&gt;
fc-list | grep -i dejavu&lt;br /&gt;
&lt;br /&gt;
List fonts with details:&lt;br /&gt;
&lt;br /&gt;
fc-list : family style file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;configuring-terminal-emulator-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Configuring Terminal Emulator Fonts ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;gnome-terminal-default-in-cinnamon&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== GNOME Terminal (default in Cinnamon) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Open GNOME Terminal&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Menu → Preferences&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Select your profile&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Go to &#039;&#039;&#039;Text&#039;&#039;&#039; tab&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Uncheck &amp;amp;quot;Use the system fixed-width font&amp;amp;quot;&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Click font button and select Terminus (or other font)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Choose size (12, 14, or 16 recommended)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;guake-drop-down-terminal&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Guake (Drop-down Terminal) ====&lt;br /&gt;
&lt;br /&gt;
Install GUI version of Terminus first:&lt;br /&gt;
&lt;br /&gt;
sudo apt install fonts-terminus&lt;br /&gt;
&lt;br /&gt;
guake --quit&lt;br /&gt;
&lt;br /&gt;
guake &amp;amp;amp;&lt;br /&gt;
&lt;br /&gt;
Configure via GUI:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Open Guake (F12)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Right-click → Preferences&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Go to &#039;&#039;&#039;Appearance&#039;&#039;&#039; tab&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Uncheck &amp;amp;quot;Use the system fixed width font&amp;amp;quot;&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Select Terminus and size&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure via command line:&lt;br /&gt;
&lt;br /&gt;
gsettings set org.guake.style.font use-system-font false&lt;br /&gt;
&lt;br /&gt;
gsettings set org.guake.style.font font-name &#039;Terminus 12&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;cinnamon-system-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Cinnamon System Fonts ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;quick-font-configuration&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Quick Font Configuration ===&lt;br /&gt;
&lt;br /&gt;
Open &#039;&#039;&#039;System Settings&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
cinnamon-settings&lt;br /&gt;
&lt;br /&gt;
Navigate to: &#039;&#039;&#039;Font Selection&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You&#039;ll see these options:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Default font&#039;&#039;&#039;: Used for menus, buttons, dialogs (recommended: 10-12pt)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Desktop font&#039;&#039;&#039;: Used for desktop icon labels (recommended: 10-11pt)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Document font&#039;&#039;&#039;: Used in document viewers (recommended: 11pt)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Monospace font&#039;&#039;&#039;: Used in terminals and code editors (recommended: Terminus 12pt)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Window title font&#039;&#039;&#039;: Used in window title bars (recommended: 10-11pt bold)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;recommended-configuration-for-better-readability&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Recommended Configuration for Better Readability ===&lt;br /&gt;
&lt;br /&gt;
Default font: Sans 11 or 12&lt;br /&gt;
&lt;br /&gt;
Desktop font: Sans 10 or 11&lt;br /&gt;
&lt;br /&gt;
Document font: Sans 11&lt;br /&gt;
&lt;br /&gt;
Monospace font: Terminus 12 or 14&lt;br /&gt;
&lt;br /&gt;
Window title font: Sans Bold 10 or 11&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;using-command-line-to-change-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Using Command Line to Change Fonts ===&lt;br /&gt;
&lt;br /&gt;
View current settings:&lt;br /&gt;
&lt;br /&gt;
gsettings get org.cinnamon.desktop.interface font-name&lt;br /&gt;
&lt;br /&gt;
gsettings get org.gnome.desktop.interface monospace-font-name&lt;br /&gt;
&lt;br /&gt;
Change default font:&lt;br /&gt;
&lt;br /&gt;
gsettings set org.cinnamon.desktop.interface font-name &#039;Sans 12&#039;&lt;br /&gt;
&lt;br /&gt;
Change monospace font:&lt;br /&gt;
&lt;br /&gt;
gsettings set org.gnome.desktop.interface monospace-font-name &#039;Terminus 12&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;font-recommendations-by-use-case&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Font Recommendations by Use Case ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;For general readability&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Default: DejaVu Sans 11-12&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Monospace: Terminus 12 or DejaVu Sans Mono 11&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;For programming&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Monospace: Fira Code 11, JetBrains Mono 11, or Hack 11&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;For visually impaired users&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Default: Sans 13-14&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Monospace: Terminus 14-16&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Consider UI scaling (see Accessibility section)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;theme-customization-with-css&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Theme Customization with CSS ==&lt;br /&gt;
&lt;br /&gt;
Cinnamon themes use CSS for styling. You can customize any theme to change fonts, colors, spacing, and more.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;finding-your-current-theme&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Finding Your Current Theme ===&lt;br /&gt;
&lt;br /&gt;
Check which theme you&#039;re using:&lt;br /&gt;
&lt;br /&gt;
gsettings get org.cinnamon.theme name&lt;br /&gt;
&lt;br /&gt;
List available themes:&lt;br /&gt;
&lt;br /&gt;
ls /usr/share/themes/&lt;br /&gt;
&lt;br /&gt;
ls ~/.themes/&lt;br /&gt;
&lt;br /&gt;
View your theme in System Settings: &#039;&#039;&#039;System Settings → Themes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;creating-a-custom-theme-copy&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Creating a Custom Theme Copy ===&lt;br /&gt;
&lt;br /&gt;
Always work on a copy to avoid breaking your system:&lt;br /&gt;
&lt;br /&gt;
# Copy system theme to your user directory&lt;br /&gt;
&lt;br /&gt;
cp -r /usr/share/themes/YOUR-THEME-NAME ~/.themes/&lt;br /&gt;
&lt;br /&gt;
# Example:&lt;br /&gt;
&lt;br /&gt;
cp -r /usr/share/themes/Mint-Y ~/.themes/&lt;br /&gt;
&lt;br /&gt;
cp -r /usr/share/themes/Green-Submarine ~/.themes/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;theme-structure&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Theme Structure ===&lt;br /&gt;
&lt;br /&gt;
A typical Cinnamon theme:&lt;br /&gt;
&lt;br /&gt;
~/.themes/YOUR-THEME-NAME/&lt;br /&gt;
&lt;br /&gt;
├── cinnamon/&lt;br /&gt;
&lt;br /&gt;
│ ├── cinnamon.css # Main styling file&lt;br /&gt;
&lt;br /&gt;
│ ├── thumbnail.png&lt;br /&gt;
&lt;br /&gt;
│ └── assets/ # Images, icons&lt;br /&gt;
&lt;br /&gt;
├── gtk-3.0/ # GTK3 application styling&lt;br /&gt;
&lt;br /&gt;
├── gtk-2.0/ # GTK2 application styling&lt;br /&gt;
&lt;br /&gt;
├── metacity-1/ # Window decorations&lt;br /&gt;
&lt;br /&gt;
└── index.theme # Theme metadata&lt;br /&gt;
&lt;br /&gt;
The file you&#039;ll edit most: cinnamon/cinnamon.css&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;editing-theme-css&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Editing Theme CSS ===&lt;br /&gt;
&lt;br /&gt;
Open the CSS file:&lt;br /&gt;
&lt;br /&gt;
nano ~/.themes/YOUR-THEME-NAME/cinnamon/cinnamon.css&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;common-css-selectors&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Common CSS Selectors ====&lt;br /&gt;
&lt;br /&gt;
/* Overall stage - affects most UI elements */&lt;br /&gt;
&lt;br /&gt;
stage {&lt;br /&gt;
&lt;br /&gt;
font-size: 10pt;&lt;br /&gt;
&lt;br /&gt;
font-family: sans-serif;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Main menu */&lt;br /&gt;
&lt;br /&gt;
.menu {&lt;br /&gt;
&lt;br /&gt;
font-size: 10pt;&lt;br /&gt;
&lt;br /&gt;
background-color: rgba(48, 48, 48, 0.95);&lt;br /&gt;
&lt;br /&gt;
border-radius: 8px;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Menu application buttons */&lt;br /&gt;
&lt;br /&gt;
.menu-application-button-label {&lt;br /&gt;
&lt;br /&gt;
font-size: 9pt;&lt;br /&gt;
&lt;br /&gt;
padding-left: 10px;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Panel (taskbar) */&lt;br /&gt;
&lt;br /&gt;
.panel {&lt;br /&gt;
&lt;br /&gt;
font-size: 9pt;&lt;br /&gt;
&lt;br /&gt;
background-color: #2b2b2b;&lt;br /&gt;
&lt;br /&gt;
height: 32px;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Panel applet labels */&lt;br /&gt;
&lt;br /&gt;
.panel-button {&lt;br /&gt;
&lt;br /&gt;
font-size: 9pt;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Notifications */&lt;br /&gt;
&lt;br /&gt;
.notification {&lt;br /&gt;
&lt;br /&gt;
font-size: 10pt;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Window list buttons */&lt;br /&gt;
&lt;br /&gt;
.window-list-item-box {&lt;br /&gt;
&lt;br /&gt;
font-size: 9pt;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tooltips */&lt;br /&gt;
&lt;br /&gt;
.tooltip {&lt;br /&gt;
&lt;br /&gt;
font-size: 9pt;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;example-increasing-menu-font-size&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Example: Increasing Menu Font Size ===&lt;br /&gt;
&lt;br /&gt;
Find the menu section and modify:&lt;br /&gt;
&lt;br /&gt;
.menu {&lt;br /&gt;
&lt;br /&gt;
font-size: 14pt; /* Increase from default 9-10pt */&lt;br /&gt;
&lt;br /&gt;
background-color: rgba(48, 48, 48, 0.95);&lt;br /&gt;
&lt;br /&gt;
border-radius: 8px;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.menu-application-button-label {&lt;br /&gt;
&lt;br /&gt;
font-size: 13pt; /* Increase menu item text */&lt;br /&gt;
&lt;br /&gt;
padding-left: 10px;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Also increase category labels */&lt;br /&gt;
&lt;br /&gt;
.menu-category-button-label {&lt;br /&gt;
&lt;br /&gt;
font-size: 13pt;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;example-changing-font-family&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Example: Changing Font Family ===&lt;br /&gt;
&lt;br /&gt;
stage {&lt;br /&gt;
&lt;br /&gt;
font-family: &amp;amp;quot;DejaVu Sans&amp;amp;quot;, sans-serif;&lt;br /&gt;
&lt;br /&gt;
font-size: 11pt;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Use monospace for specific elements */&lt;br /&gt;
&lt;br /&gt;
.some-element {&lt;br /&gt;
&lt;br /&gt;
font-family: &amp;amp;quot;Terminus&amp;amp;quot;, &amp;amp;quot;DejaVu Sans Mono&amp;amp;quot;, monospace;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;applying-css-changes&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Applying CSS Changes ===&lt;br /&gt;
&lt;br /&gt;
After editing the CSS file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Save the file: Ctrl+O then Enter (in nano)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Exit: Ctrl+X (in nano)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Restart Cinnamon: Press Alt+F2, type r, press Enter&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or reload from command line:&lt;br /&gt;
&lt;br /&gt;
# Ensure theme is set&lt;br /&gt;
&lt;br /&gt;
gsettings set org.cinnamon.theme name &#039;YOUR-THEME-NAME&#039;&lt;br /&gt;
&lt;br /&gt;
# Restart Cinnamon&lt;br /&gt;
&lt;br /&gt;
cinnamon --replace &amp;amp;amp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;css-tips-and-tricks&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== CSS Tips and Tricks ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Finding the right selector&#039;&#039;&#039;: Use Cinnamon&#039;s Looking Glass debugger&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Press Alt+F2&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Type lg and press Enter&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Go to &#039;&#039;&#039;Picker&#039;&#039;&#039; tab&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Click on UI elements to see their CSS classes&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Testing changes quickly&#039;&#039;&#039;: Keep the CSS file open in one workspace, test in another, and use Alt+F2 → r to reload.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Backup before editing&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
cp ~/.themes/YOUR-THEME-NAME/cinnamon/cinnamon.css ~/.themes/YOUR-THEME-NAME/cinnamon/cinnamon.css.backup&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Restore backup if needed&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
cp ~/.themes/YOUR-THEME-NAME/cinnamon/cinnamon.css.backup ~/.themes/YOUR-THEME-NAME/cinnamon/cinnamon.css&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;common-css-properties&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Common CSS Properties ===&lt;br /&gt;
&lt;br /&gt;
/* Fonts */&lt;br /&gt;
&lt;br /&gt;
font-family: &amp;amp;quot;Font Name&amp;amp;quot;, fallback;&lt;br /&gt;
&lt;br /&gt;
font-size: 10pt; /* or 12px, 1.2em */&lt;br /&gt;
&lt;br /&gt;
font-weight: bold; /* or normal, 600 */&lt;br /&gt;
&lt;br /&gt;
font-style: italic;&lt;br /&gt;
&lt;br /&gt;
/* Colors */&lt;br /&gt;
&lt;br /&gt;
color: #ffffff;&lt;br /&gt;
&lt;br /&gt;
background-color: rgba(48, 48, 48, 0.95);&lt;br /&gt;
&lt;br /&gt;
border-color: #444444;&lt;br /&gt;
&lt;br /&gt;
/* Spacing */&lt;br /&gt;
&lt;br /&gt;
padding: 10px;&lt;br /&gt;
&lt;br /&gt;
margin: 5px;&lt;br /&gt;
&lt;br /&gt;
padding-left: 10px;&lt;br /&gt;
&lt;br /&gt;
/* Borders */&lt;br /&gt;
&lt;br /&gt;
border: 1px solid #444444;&lt;br /&gt;
&lt;br /&gt;
border-radius: 8px;&lt;br /&gt;
&lt;br /&gt;
/* Sizing */&lt;br /&gt;
&lt;br /&gt;
width: 300px;&lt;br /&gt;
&lt;br /&gt;
height: 40px;&lt;br /&gt;
&lt;br /&gt;
min-width: 200px;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;accessibility-and-scaling&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Accessibility and Scaling ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;ui-scaling-recommended-for-visual-impairment&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== UI Scaling (Recommended for Visual Impairment) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;via-system-settings&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Via System Settings ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;System Settings → Display → UI Scale&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Options typically: 100%, 125%, 150%, 200%&lt;br /&gt;
&lt;br /&gt;
Start with 125% and adjust as needed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;via-command-line&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Via Command Line ====&lt;br /&gt;
&lt;br /&gt;
# Check current scaling&lt;br /&gt;
&lt;br /&gt;
gsettings get org.cinnamon.desktop.interface scaling-factor&lt;br /&gt;
&lt;br /&gt;
# Set scaling (1 = 100%, 2 = 200%)&lt;br /&gt;
&lt;br /&gt;
gsettings set org.cinnamon.desktop.interface scaling-factor 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Fractional scaling (1.25, 1.5) may not be available on all systems.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;text-scaling-only&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Text Scaling Only ===&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want to scale everything, increase text size:&lt;br /&gt;
&lt;br /&gt;
# Increase text scaling factor&lt;br /&gt;
&lt;br /&gt;
gsettings set org.gnome.desktop.interface text-scaling-factor 1.25&lt;br /&gt;
&lt;br /&gt;
Values: 1.0 = 100%, 1.25 = 125%, 1.5 = 150%&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;high-contrast-themes&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== High Contrast Themes ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;System Settings → Themes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Look for high-contrast themes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;HighContrast (if available)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;HighContrastInverse&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or install:&lt;br /&gt;
&lt;br /&gt;
sudo apt install gnome-themes-extra&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;large-cursor&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Large Cursor ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;System Settings → Mouse and Touchpad → Cursor&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Select a larger cursor size (32px or 48px).&lt;br /&gt;
&lt;br /&gt;
Or via command line:&lt;br /&gt;
&lt;br /&gt;
gsettings set org.cinnamon.desktop.interface cursor-size 32&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;desktop-zoom-magnifier&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Desktop Zoom (Magnifier) ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;System Settings → Accessibility → Zoom&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Enable desktop magnification. Typical shortcut: Alt + Super + 8&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;font-smoothing&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Font Smoothing ===&lt;br /&gt;
&lt;br /&gt;
Ensure font smoothing is enabled for better readability:&lt;br /&gt;
&lt;br /&gt;
gsettings set org.cinnamon.settings-daemon.plugins.xsettings antialiasing &#039;rgba&#039;&lt;br /&gt;
&lt;br /&gt;
gsettings set org.cinnamon.settings-daemon.plugins.xsettings hinting &#039;slight&#039;&lt;br /&gt;
&lt;br /&gt;
Options for antialiasing: none, grayscale, rgba Options for hinting: none, slight, medium, full&lt;br /&gt;
&lt;br /&gt;
Recommended: rgba with slight hinting&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;troubleshooting&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;console-font-issues&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Console Font Issues ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: setupcon says &amp;amp;quot;not on the console&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;: This is normal when running from GUI. The configuration is saved. Test by switching to TTY with Ctrl+Alt+F2.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: Font changes don&#039;t persist after reboot&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;: Verify /etc/default/console-setup has correct settings. Run sudo dpkg-reconfigure console-setup again.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: setfont gives &amp;amp;quot;couldn&#039;t get file descriptor&amp;amp;quot; error&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;: setfont only works from actual TTY console, not GUI terminal emulators.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;gui-font-issues&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== GUI Font Issues ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: Installed font doesn&#039;t appear in applications&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
# Rebuild font cache&lt;br /&gt;
&lt;br /&gt;
fc-cache -fv&lt;br /&gt;
&lt;br /&gt;
# Log out and back in&lt;br /&gt;
&lt;br /&gt;
# Or restart the application&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: Font looks pixelated or ugly&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;: Check antialiasing settings:&lt;br /&gt;
&lt;br /&gt;
gsettings set org.cinnamon.settings-daemon.plugins.xsettings antialiasing &#039;rgba&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: Terminus not showing in Guake&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;: Install the TrueType version:&lt;br /&gt;
&lt;br /&gt;
sudo apt install fonts-terminus&lt;br /&gt;
&lt;br /&gt;
guake --quit&lt;br /&gt;
&lt;br /&gt;
guake &amp;amp;amp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;theme-css-issues&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Theme CSS Issues ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: CSS changes don&#039;t take effect&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Save the CSS file&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Restart Cinnamon: Alt+F2 → r&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Verify you&#039;re editing the active theme&#039;s CSS&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Check for CSS syntax errors&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: Cinnamon crashes after CSS edit&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;: Boot to TTY (Ctrl+Alt+F2), restore backup:&lt;br /&gt;
&lt;br /&gt;
cp ~/.themes/YOUR-THEME/cinnamon/cinnamon.css.backup ~/.themes/YOUR-THEME/cinnamon/cinnamon.css&lt;br /&gt;
&lt;br /&gt;
Then switch back to GUI and restart Cinnamon.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: Can&#039;t find the right CSS selector&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;: Use Looking Glass:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Alt+F2 → type lg → Enter&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Go to Picker tab&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Click UI element to see its classes&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;scaling-issues&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Scaling Issues ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: UI scaling makes everything blurry&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;: Some applications don&#039;t handle scaling well. Try:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Integer scaling only (100%, 200%) instead of fractional&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Increase font sizes instead of UI scaling&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Update graphics drivers&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;: Some applications ignore scaling&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;: Set scaling per-application (for X11 apps):&lt;br /&gt;
&lt;br /&gt;
GDK_SCALE=2 application-name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;quick-reference-commands&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Quick Reference Commands ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;console-fonts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Console Fonts ===&lt;br /&gt;
&lt;br /&gt;
# Configure interactively&lt;br /&gt;
&lt;br /&gt;
sudo dpkg-reconfigure console-setup&lt;br /&gt;
&lt;br /&gt;
# Apply changes&lt;br /&gt;
&lt;br /&gt;
sudo setupcon&lt;br /&gt;
&lt;br /&gt;
# List console fonts&lt;br /&gt;
&lt;br /&gt;
ls /usr/share/consolefonts/&lt;br /&gt;
&lt;br /&gt;
# Test font (from TTY only)&lt;br /&gt;
&lt;br /&gt;
setfont /usr/share/consolefonts/Ter16x32n.psf.gz&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;gui-fonts-2&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== GUI Fonts ===&lt;br /&gt;
&lt;br /&gt;
# Install fonts&lt;br /&gt;
&lt;br /&gt;
sudo apt install fonts-terminus fonts-firacode&lt;br /&gt;
&lt;br /&gt;
# Rebuild font cache&lt;br /&gt;
&lt;br /&gt;
fc-cache -fv&lt;br /&gt;
&lt;br /&gt;
# List all fonts&lt;br /&gt;
&lt;br /&gt;
fc-list&lt;br /&gt;
&lt;br /&gt;
# Search for specific font&lt;br /&gt;
&lt;br /&gt;
fc-list | grep -i terminus&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;cinnamon-settings&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Cinnamon Settings ===&lt;br /&gt;
&lt;br /&gt;
# Open settings&lt;br /&gt;
&lt;br /&gt;
cinnamon-settings&lt;br /&gt;
&lt;br /&gt;
# Check current theme&lt;br /&gt;
&lt;br /&gt;
gsettings get org.cinnamon.theme name&lt;br /&gt;
&lt;br /&gt;
# Set theme&lt;br /&gt;
&lt;br /&gt;
gsettings set org.cinnamon.theme name &#039;YOUR-THEME&#039;&lt;br /&gt;
&lt;br /&gt;
# UI scaling&lt;br /&gt;
&lt;br /&gt;
gsettings set org.cinnamon.desktop.interface scaling-factor 2&lt;br /&gt;
&lt;br /&gt;
# Restart Cinnamon&lt;br /&gt;
&lt;br /&gt;
Alt+F2 → r&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;theme-editing&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Theme Editing ===&lt;br /&gt;
&lt;br /&gt;
# Copy theme&lt;br /&gt;
&lt;br /&gt;
cp -r /usr/share/themes/THEME-NAME ~/.themes/&lt;br /&gt;
&lt;br /&gt;
# Edit CSS&lt;br /&gt;
&lt;br /&gt;
nano ~/.themes/THEME-NAME/cinnamon/cinnamon.css&lt;br /&gt;
&lt;br /&gt;
# Backup CSS&lt;br /&gt;
&lt;br /&gt;
cp ~/.themes/THEME-NAME/cinnamon/cinnamon.css{,.backup}&lt;br /&gt;
&lt;br /&gt;
# Restore backup&lt;br /&gt;
&lt;br /&gt;
cp ~/.themes/THEME-NAME/cinnamon/cinnamon.css{.backup,}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;additional-resources&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Additional Resources ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Official Cinnamon Documentation&#039;&#039;&#039;: https://cinnamon-spices.linuxmint.com/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cinnamon GitHub&#039;&#039;&#039;: https://github.com/linuxmint/cinnamon&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Theme Development Guide&#039;&#039;&#039;: Available in Cinnamon documentation&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Font Configuration&#039;&#039;&#039;: man fonts-conf or man fc-cache&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Console Setup&#039;&#039;&#039;: man console-setup or man setupcon&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Last Updated&#039;&#039;&#039;: October 2025&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Compatible with&#039;&#039;&#039;: Debian 13, Linux Mint 21+, any distribution using Cinnamon DE&lt;br /&gt;
&lt;br /&gt;
Author: distro-nix (url| about}&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Main_Page&amp;diff=162</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Main_Page&amp;diff=162"/>
		<updated>2026-02-09T21:43:54Z</updated>

		<summary type="html">&lt;p&gt;Donald: /* HowTo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About ==&lt;br /&gt;
About:&lt;br /&gt;
* [[Debian User Forums]]&lt;br /&gt;
* [[The Debian Project]]&lt;br /&gt;
* [[Archive AI Use]]&lt;br /&gt;
* [[Forum jokes, lingo, and memorable quotes]]&lt;br /&gt;
&lt;br /&gt;
== HowTo ==&lt;br /&gt;
HowTo:&lt;br /&gt;
&lt;br /&gt;
* [[Sudo|Root, sudo, su, and su -]]&lt;br /&gt;
&lt;br /&gt;
* [[To install Firefox from Mozilla repo|Installing Firefox from Mozilla repo]]&lt;br /&gt;
* [[WiFi Signal Strength and Sharing]]&lt;br /&gt;
* [[REFInd USB Drive (for emergency boot)]]&lt;br /&gt;
* [[Trixie iwd]]&lt;br /&gt;
* [[Security Hardening for Debian Users: Protecting Against Targeted Attacks]]&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
Licensing:&lt;br /&gt;
* [[Publish using CC International licencing and your Forum name]].&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Root,_Sudo,_and_SU&amp;diff=161</id>
		<title>Root, Sudo, and SU</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Root,_Sudo,_and_SU&amp;diff=161"/>
		<updated>2026-02-09T21:42:01Z</updated>

		<summary type="html">&lt;p&gt;Donald: Root and user, su, su-, sudo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== The Concept of Root and User: ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;&#039;root&#039;&#039; is the user name or account that by default has access to all commands and files on a Linux or other Unix-like operating system. It is also referred to as the root account, root user and the superuser. &amp;lt;ref&amp;gt;root Definition &amp;quot;http://www.linfo.org/root.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An ordinary user only has control over files in his/her own &amp;quot;home&amp;quot; directory, though they may be &amp;quot;allowed&amp;quot; access to other files and applications.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;su, su -, and sudo:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;su&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;su -&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt; commands are used in a terminal to give you root access to the system. You can of course log on as root but this is not generally a good idea; once logged on in a particular identity, you tend to continue in that identity until you log off again, and it is bad practice to work as root for long periods.&lt;br /&gt;
&lt;br /&gt;
Instead you should use &amp;lt;code&amp;gt;su&amp;lt;/code&amp;gt; to become root &amp;quot;for the duration&amp;quot;. You will need to give the root password which you set when you installed Debian. Your prompt will change to show that you are now root. When you have done what you need to do as root, type exit to get back to your own identity.&lt;br /&gt;
&lt;br /&gt;
Debian has adopted specific variations for the &#039;&#039;&#039;su&#039;&#039;&#039; command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;su&amp;lt;/code&amp;gt; will give access to all commands except for critical system commands in the &amp;lt;code&amp;gt;/usr/sbin directory&amp;lt;/code&amp;gt;. This is a function of the environment which the &amp;lt;code&amp;gt;su&amp;lt;/code&amp;gt; command invokes - if you switch from user account to root with su, you retain that &#039;&#039;user&#039;s environment&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;su -&amp;lt;/code&amp;gt; will also switch you to &#039;&#039;root&#039;&#039; account but invokes the &#039;&#039;root environment&#039;&#039; which is required for any commands in the &amp;lt;nowiki&amp;gt;/usr/sbin&amp;lt;/nowiki&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
     For example, you can run the &amp;lt;code&amp;gt;chown&amp;lt;/code&amp;gt; command &#039;&#039;&#039;after&#039;&#039;&#039; elevating to root privileges with &amp;lt;code&amp;gt;su&amp;lt;/code&amp;gt;, but to run the &amp;lt;code&amp;gt;adduser&amp;lt;/code&amp;gt; command you need to get root with &amp;lt;code&amp;gt;su -&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt; should also allow running commands which require root environment like those in &amp;lt;nowiki&amp;gt;/usr/sbin/&amp;lt;/nowiki&amp;gt; eg. &amp;lt;code&amp;gt;sudo blkid&amp;lt;/code&amp;gt; (PM me if you have a different experience; it works here).&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt; command is a more selective alternative to su, particularly useful if there are several users of your system. &lt;br /&gt;
&lt;br /&gt;
By editing, as root, the file &amp;lt;nowiki&amp;gt;/etc/sudoers&amp;lt;/nowiki&amp;gt;, you can give root access to a specific individual for specific commands only. This is much safer than letting them know the root password. &lt;br /&gt;
&lt;br /&gt;
The man page for sudoers gives details of the syntax for this file.&lt;br /&gt;
&lt;br /&gt;
The Debian installer will ask if you wish to add your user to &#039;&#039;&#039;sudo&#039;&#039;&#039; and if you wish to create a root password. If you don&#039;t specify a root password, your user will automatically be added to &#039;&#039;&#039;sudo&#039;&#039;&#039;. If you didn&#039;t add you user to &#039;&#039;&#039;sudo&#039;&#039;&#039; during install, you can do it afterwards with the command (run as &amp;lt;code&amp;gt;su -&amp;lt;/code&amp;gt; and entering the root password):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;adduser &amp;lt;username&amp;gt; sudo&amp;lt;/code&amp;gt;&lt;br /&gt;
of course replace &amp;lt;username&amp;gt; with your actual user name.&lt;br /&gt;
&lt;br /&gt;
To use sudo, simply preface the command you wish to execute as root with the word &#039;&#039;&#039;sudo&#039;&#039;&#039;. You will be asked to enter your own user password to prove your identity. &lt;br /&gt;
&lt;br /&gt;
The system will then check whether you have been given permission to execute this particular command as root; if so, it will be executed. sudo &amp;quot;remembers&amp;quot; you for a short time so that you can give a group of sudo commands without entering your password each time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This thread was original posted on the Debian User Forumsm but @sunrat: http://forums.debian.net/viewtopic.php?f=32&amp;amp;t=58557&amp;amp;p=338548&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ref 1: http://www.linfo.org/root.html&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=File:9065951.jpg&amp;diff=160</id>
		<title>File:9065951.jpg</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=File:9065951.jpg&amp;diff=160"/>
		<updated>2026-02-09T20:42:22Z</updated>

		<summary type="html">&lt;p&gt;Donald: test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
test&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=File:5567959.jpg&amp;diff=159</id>
		<title>File:5567959.jpg</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=File:5567959.jpg&amp;diff=159"/>
		<updated>2026-02-09T20:40:09Z</updated>

		<summary type="html">&lt;p&gt;Donald: test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
test&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=File:4013906.jpg&amp;diff=158</id>
		<title>File:4013906.jpg</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=File:4013906.jpg&amp;diff=158"/>
		<updated>2026-02-09T20:37:57Z</updated>

		<summary type="html">&lt;p&gt;Donald: test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
test&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=File:188983.jpg&amp;diff=157</id>
		<title>File:188983.jpg</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=File:188983.jpg&amp;diff=157"/>
		<updated>2026-01-31T20:33:26Z</updated>

		<summary type="html">&lt;p&gt;Donald: tete&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
tete&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=File:188785.jpg&amp;diff=156</id>
		<title>File:188785.jpg</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=File:188785.jpg&amp;diff=156"/>
		<updated>2026-01-31T19:50:40Z</updated>

		<summary type="html">&lt;p&gt;Donald: Wallpaper&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Wallpaper&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Forum_jokes,_lingo,_and_memorable_quotes&amp;diff=144</id>
		<title>Forum jokes, lingo, and memorable quotes</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Forum_jokes,_lingo,_and_memorable_quotes&amp;diff=144"/>
		<updated>2026-01-07T18:41:45Z</updated>

		<summary type="html">&lt;p&gt;Donald: /* Inside Humor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Inside Jokes, Lingo, and Quotes ==&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;u&amp;gt;Memorable Quotes&amp;lt;/u&amp;gt; =====&lt;br /&gt;
* Shiny side facing out ([https://forums.debian.net/viewtopic.php?t=157623 thread])&lt;br /&gt;
** The walls, ceiling and floor of my apartment are papered with heavy duty aluminum foil hung with rubber glue. Shiny side facing out. - Trihexagonal&lt;br /&gt;
* Why is Debian still under development??? ([https://forums.debian.net/viewtopic.php?p=455576#p455576 thread])&lt;br /&gt;
** If Debian is THAT GOOD, why is Debian still under development??? Why are new versions released? IF Debian was that good, we would al been using Debian version 0.() for the past 19 years.... - nomko&lt;br /&gt;
* ,...here, hold my tea&lt;br /&gt;
** Like there&#039;s a Great White swimming around somewhere wondering when he&#039;s going to develop Molars so he can enjoy the health benefits of seaweed. This [presents] a flowery non-specific justification for perpetual shiny new syndrome. ([https://forums.debian.net/viewtopic.php?p=763708#p763708 thread])&lt;br /&gt;
&lt;br /&gt;
===== Inside Humor =====&lt;br /&gt;
The forums about header changes once in a while in some humor and to see who is paying attention. Here are the most recent:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Debian Fish and Animal Emporium&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;16 years of discussion about socks and the people that wear them&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;We have read the manual.&#039;&#039;&#039;&lt;br /&gt;
[[index.php?title=Category:Forums]]&lt;br /&gt;
[[index.php?title=Category:Humor]]&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Forum_jokes,_lingo,_and_memorable_quotes&amp;diff=115</id>
		<title>Forum jokes, lingo, and memorable quotes</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Forum_jokes,_lingo,_and_memorable_quotes&amp;diff=115"/>
		<updated>2025-12-14T01:19:08Z</updated>

		<summary type="html">&lt;p&gt;Donald: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Inside Jokes, Lingo, and Quotes ==&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;u&amp;gt;Memorable Quotes&amp;lt;/u&amp;gt; =====&lt;br /&gt;
* Shiny side facing out ([https://forums.debian.net/viewtopic.php?t=157623 thread])&lt;br /&gt;
** The walls, ceiling and floor of my apartment are papered with heavy duty aluminum foil hung with rubber glue. Shiny side facing out. - Trihexagonal&lt;br /&gt;
* Why is Debian still under development??? ([https://forums.debian.net/viewtopic.php?p=455576#p455576 thread])&lt;br /&gt;
** If Debian is THAT GOOD, why is Debian still under development??? Why are new versions released? IF Debian was that good, we would al been using Debian version 0.() for the past 19 years.... - nomko&lt;br /&gt;
* ,...here, hold my tea&lt;br /&gt;
** Like there&#039;s a Great White swimming around somewhere wondering when he&#039;s going to develop Molars so he can enjoy the health benefits of seaweed. This [presents] a flowery non-specific justification for perpetual shiny new syndrome. ([https://forums.debian.net/viewtopic.php?p=763708#p763708 thread])&lt;br /&gt;
&lt;br /&gt;
===== Inside Humor =====&lt;br /&gt;
The forums about header changes once in a while in some humor and to see who is paying attention. Here are the most recent:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Debian Fish and Animal Emporium&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;16 years of discussion about socks and the people that wear them&#039;&#039;&#039;&lt;br /&gt;
[[Category:Forums]]&lt;br /&gt;
[[Category:Humor]]&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Forum_jokes,_lingo,_and_memorable_quotes&amp;diff=114</id>
		<title>Forum jokes, lingo, and memorable quotes</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Forum_jokes,_lingo,_and_memorable_quotes&amp;diff=114"/>
		<updated>2025-12-13T22:05:35Z</updated>

		<summary type="html">&lt;p&gt;Donald: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Inside Jokes, Lingo, and Quotes ==&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;u&amp;gt;Memorable Quotes&amp;lt;/u&amp;gt; =====&lt;br /&gt;
* Shiny side facing out ([https://forums.debian.net/viewtopic.php?t=157623 thread])&lt;br /&gt;
** The walls, ceiling and floor of my apartment are papered with heavy duty aluminum foil hung with rubber glue. Shiny side facing out. - Trihexagonal&lt;br /&gt;
* Why is Debian still under development???([https://forums.debian.net/viewtopic.php?p=455576#p455576 thread])&lt;br /&gt;
** If Debian is THAT GOOD, why is Debian still under development??? Why are new versions released? IF Debian was that good, we would al been using Debian version 0.() for the past 19 years.... - nomko&lt;br /&gt;
&lt;br /&gt;
===== Inside Humor =====&lt;br /&gt;
The forums about header changes once in a while in some humor and to see who is paying attention. Here are the most recent:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Debian Fish and Animal Emporium&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;16 years of discussion about socks and the people that wear them&#039;&#039;&#039;&lt;br /&gt;
[[Category:Forums]]&lt;br /&gt;
[[Category:Humor]]&lt;br /&gt;
[[Category:About]]&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Category:Licenses&amp;diff=113</id>
		<title>Category:Licenses</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Category:Licenses&amp;diff=113"/>
		<updated>2025-12-13T22:04:13Z</updated>

		<summary type="html">&lt;p&gt;Donald: Created page with &amp;quot;Licensing&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Licensing&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Security_Hardening_for_Debian_Users:_Protecting_Against_Targeted_Attacks&amp;diff=112</id>
		<title>Security Hardening for Debian Users: Protecting Against Targeted Attacks</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Security_Hardening_for_Debian_Users:_Protecting_Against_Targeted_Attacks&amp;diff=112"/>
		<updated>2025-12-13T18:32:18Z</updated>

		<summary type="html">&lt;p&gt;Donald: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Security Hardening for Debian Users: Protecting Against Targeted Attacks ==&lt;br /&gt;
&lt;br /&gt;
==== Cybersecurity Measures Against Targeted Attacks ====&lt;br /&gt;
&lt;br /&gt;
* This guide is based on personal experience with targeted attacks originating from state-sponsored actors associated with a totalitarian regime.&lt;br /&gt;
&lt;br /&gt;
* The goal is to help users strengthen the security posture of Linux systems against advanced persistent threats.&lt;br /&gt;
* This article is intended for private users, owners of laptops and desktop computers, as well as administrators of small private servers. Corporate network security topics are not covered here.&lt;br /&gt;
* Likewise, this article does not address social engineering, psychological, legal, physical, or other important aspects of targeted attacks. It focuses exclusively on the cybersecurity aspects of Linux-based systems.&lt;br /&gt;
&lt;br /&gt;
==== Description of the Threat ====&lt;br /&gt;
Since 2011 (for over 14 years), the author has been targeted by a complex set of attacks that include system intrusions, surveillance, psychological pressure, and blackmail based on personal data obtained through such surveillance.&lt;br /&gt;
&lt;br /&gt;
Attackers can gain full control over a PC and steal personal information, often leaving almost no traces. Occasionally, such activity manifests as sudden cursor movements, system slowdowns, or unexplained network activity.&lt;br /&gt;
&lt;br /&gt;
They also monitor Internet traffic and can compromise passwords when those passwords are weak or when two-factor authentication is not enabled.&lt;br /&gt;
&lt;br /&gt;
Please note that such targeted attacks against individuals — both within and outside of authoritarian states — are a real and growing threat. What author describes is not speculation, but the result of many years of firsthand experience resisting cyberattacks and attempted extortion.&lt;br /&gt;
&lt;br /&gt;
There is a widespread belief that targeted cyberattacks affect only a very small fraction of users — around 0.01% or even less — and that for the overwhelming majority of people such risks are not a real concern. However, events of recent years demonstrate that the level of cyber threats is significantly higher than commonly assumed and is often underestimated by both professionals and ordinary users.&lt;br /&gt;
&lt;br /&gt;
The author, as a citizen of a country that has become a zone of increased interest from external actors employing a wide range of means — from traditional instruments of influence to cyber technologies aimed at compromising and monitoring private devices and servers — considers it necessary to draw the attention of the international community to this issue.&lt;br /&gt;
&lt;br /&gt;
Raising awareness about cyber threats and improving the understanding of modern attack methods are essential steps toward strengthening digital security, protecting personal data, and maintaining trust in open-source infrastructure.&lt;br /&gt;
&lt;br /&gt;
==== Countermeasures ====&lt;br /&gt;
&lt;br /&gt;
===== Tested environment: Debian 12 (Bookworm), kernel 6.1.0-34-amd64 (April 2025 build). =====&lt;br /&gt;
Since early 2025, the author has fully switched to Linux, using the Debian distribution. The author is writing here because, among Linux users, it is possible to discuss real protective measures and digital independence.&lt;br /&gt;
&lt;br /&gt;
At the same time, please share this information with Windows users, explaining how vulnerable Windows systems are to hacking and why switching to Ubuntu or another Linux distribution is a much safer choice.&lt;br /&gt;
&lt;br /&gt;
Linux, due to its modular architecture and open-source nature, enables deeper and more flexible security configurations.&lt;br /&gt;
&lt;br /&gt;
Another significant risk factor is the practice of installing Windows, Microsoft Office, or other user applications from pirated sources. Such unofficial builds &#039;&#039;&#039;may contain embedded backdoors, trojans, rootkits, or other forms of malware&#039;&#039;&#039;, which substantially weaken the security of a Windows system and make various types of attacks easier for an adversary.&lt;br /&gt;
&lt;br /&gt;
Debian and most Linux distributions (Ubuntu, Linux Mint, Mageia, Fedora, etc.) are distributed free of charge and rely on official repositories for downloading and installing software. Packages in these repositories undergo strict verification, which greatly reduces the likelihood of malicious code and provides a more predictable and transparent security model.&lt;br /&gt;
&lt;br /&gt;
However, installing Debian or any other Linux distribution alone does not guarantee protection from surveillance — proper configuration is essential.&lt;br /&gt;
&lt;br /&gt;
The adversary type described in this article is &#039;&#039;&#039;experienced and resourceful&#039;&#039;&#039;. Such actors develop software capable of bypassing default configurations of operating systems — both Linux and Windows. This is profitable: a successful &amp;quot;universal key&amp;quot; or exploit that works against many default deployments can grant stealthy access to a large number of machines.&lt;br /&gt;
&lt;br /&gt;
At the same time, creating such a universal key for systems with complex, individualized security configurations is substantially harder and often impractical: each machine will have a different set of rules, profiles and policies, and the exploit must be adapted per configuration. That significantly raises the attacker&#039;s cost.&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Conclusion: do not leave a freshly installed system with default security settings. Apply deliberate, deep, and individualized hardening — least-privilege policies, properly configured access control mechanisms (AppArmor/SELinux), strict firewall rules, verified update policies and monitoring. This increases the attacker&#039;s cost and complexity and makes automated widespread exploitation much harder.&#039;&#039;&#039;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Carefully and conscientiously harden your system security settings. Prepare the system not only to withstand common, predictable attacks (for example, unauthorized access to a banking account), but also to detect and mitigate non-standard attacks (like those described in this article) &#039;&#039;&#039;so they do not catch you off guard&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Apply the most secure configurations available, especially if you store sensitive personal or professional information.&lt;br /&gt;
&lt;br /&gt;
Below, the author shares methods for configuring Debian 12 (and other Linux systems) to strengthen protection against hacking and unauthorized access.&lt;br /&gt;
&lt;br /&gt;
This article is written both as a security recommendation and as a request for advice on improving system configuration.&lt;br /&gt;
&lt;br /&gt;
If you have suggestions for enhancing the existing configurations or additional cybersecurity recommendations that may not have been considered in this message, the author would greatly appreciate your expertise and feedback.&lt;br /&gt;
&lt;br /&gt;
==== Practical Instructions ====&lt;br /&gt;
&lt;br /&gt;
===== Linux system hardening recommendations: =====&lt;br /&gt;
&lt;br /&gt;
# 1. Use full-disk encryption. If your PC or laptop is stolen, the attacker will face significant difficulties in gaining access to any private data stored on your hard drive.&lt;br /&gt;
# If the OS is installed on a desktop that does not serve as a server, disable and remove all remote access services. They should not merely be password-protected or disabled — completely remove them from the system. If you do need a remote-access service, use strong passwords of 16–20 characters. Also, use complex passwords for both the regular user session and the superuser account — at least 16 characters for the user and at least 20 for the superuser.&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Important&#039;&#039;&#039;: Do not hesitate to type long passwords. Apply them even if your PC or server is physically isolated. If access to the user or superuser session is not protected by strong, lengthy passwords, the entire Linux security architecture becomes meaningless.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
# Use only official repositories of your distribution to install software.  Whenever possible, install packages via the package manager (apt/apt-get in Debian) from official repositories — this ensures automatic security updates and integrity verification of packages. If you connect a third-party repository, make sure it is trustworthy: check who maintains it, whether packages are signed with a GPG key, if it is available via HTTPS, and whenever possible, import and verify trusted keys manually. When installing software manually (downloading .deb packages, binaries, or source code), always verify the source: compare checksums (SHA256), verify digital signatures, and follow official installation instructions from the software provider.&lt;br /&gt;
# Avoid using the superuser account or sudo without a clear necessity — and never execute arbitrary scripts with sudo.  Always carefully review commands before running them in the terminal. The terminal is a powerful administrative tool, but in inexperienced hands it can cause serious system damage or compromise. Practical recommendations:&lt;br /&gt;
## Always read a script fully before running it (less script.sh, cat script.sh).&lt;br /&gt;
## Never paste commands from untrusted or unverified sources into the terminal.&lt;br /&gt;
## Use sudo only when truly necessary; consider using sudoedit for editing configuration files.&lt;br /&gt;
## Follow the principle of least privilege — create separate user accounts and limit access rights where possible Important: Improper or careless use of sudo and manual installation of software from untrusted sources are common causes of data leaks, data loss, and system compromise. Always test any configuration changes in an isolated environment before applying them on a production machine.&lt;br /&gt;
# Use application confinement tools such as AppArmor; do not leave profiles at their defaults — customize and harden profiles to match your actual workflows. You may also consider switching to SELinux. If you have difficulty configuring AppArmor or SELinux, seek help from specialists or use AI-based tools. My SELinux configuration is attached below (I use SELinux on Debian 12 — it works reliably).&lt;br /&gt;
# Use advanced network filtering settings: iptables or nftables, or a commercial firewall. (&#039;&#039;sample&#039;&#039; [[Security Hardening for Debian Users: Protecting Against Targeted Attacks#nftables config:|nftables config]]&lt;br /&gt;
# Configure kernel parameters for maximum security (sysctl hardening). (&#039;&#039;sample&#039;&#039; [[Security Hardening for Debian Users: Protecting Against Targeted Attacks#sysctl config:|sysctl config]])&lt;br /&gt;
# Use IDS/IPS systems — intrusion detection and prevention systems (examples: audit, OSSES, Wazus, AIDE). These tools can detect and log attacker activity within your system or network, as well as block malicious actions (logging each blocking event). (sample [[Security Hardening for Debian Users: Protecting Against Targeted Attacks#auditd rules config:|auditd rules config]]&lt;br /&gt;
# Test the system for vulnerabilities using scanners (for example, DebPkg:lynis, OpenVAS, Nessus). Test results can be analyzed using tools and, if necessary, AI — provide the logs for review.&lt;br /&gt;
# If you suspect that you are being targeted by a focused or targeted attack, start periodically capturing network traffic using tools such as tcpdump, Wireshark, or Zeek. The collected logs can then be sent to security specialists or AI-based analysis tools for further investigation. These measures will significantly complicate a hacker’s task and make the unnoticed collection of personal data more difficult.&lt;br /&gt;
# Follow the principle of Attack Surface Reduction (or Occam&#039;s_razor) — disable all unnecessary daemons, services, and processes that are not required for your workflow.&lt;br /&gt;
## If there is a possibility you might need a service, daemon, or process in the future, disable it and remove it from autostart.&lt;br /&gt;
## If you are certain you will never use it, remove it completely from the system.&lt;br /&gt;
## This practice reduces potential attack vectors and strengthens overall system security.&lt;br /&gt;
## Before removing unnecessary daemons, services, or applications, make sure that their removal will not break dependencies with other system components or applications. Always create a full system backup before making any significant configuration changes or modifications.&lt;br /&gt;
# Perform regular antivirus and anti-rootkit scans of the system. In targeted attacks, adversaries typically rely on passive or covert methods — such as data interception, monitoring, traffic analysis, and minimal system interference that leaves few or no traces. Nevertheless, periodic antivirus and anti-rootkit scanning remains a valuable preventive measure, helping to detect known threats in time and maintain the overall security posture of the system.&lt;br /&gt;
# Always record every change you make in system and application configuration files. Add the note as a comment directly in the configuration file — either above the modified line or after it. Format: # YYYY-MM-DD HH:MM, short description of the change, reason Example: Editing `sshd_config` to disable root login via SSH:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
bash&lt;br /&gt;
&lt;br /&gt;
PermitRootLogin no&lt;br /&gt;
# 2025-11-09 14:35, root login via SSH disabled, system security enhancement&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Why it matters:&lt;br /&gt;
&lt;br /&gt;
* Allows you to quickly understand when and why a change was made.&lt;br /&gt;
* Helps troubleshoot future issues — you can easily identify which change may have caused a failure or conflict.&lt;br /&gt;
* Simplifies system audits and security reviews.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Related Aspects of Internet Security&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are aspects of Internet security which, if neglected, can significantly reduce or completely nullify all your efforts in configuring and securing your operating system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Enable two-factor authentication (2FA) on all your online accounts (email, social networks, etc.) — this means confirming your login through a phone call, SMS, a one-time code in a mobile authenticator app (see [[wikipedia:Authenticator_app|Authenticator_app]]), or a hardware security key such as a [[wikipedia:YubiKey|YubiKey]].&lt;br /&gt;
&lt;br /&gt;
This is a critical cybersecurity measure — neglecting it can completely undermine all your efforts in configuring a secure Linux system.&lt;br /&gt;
&lt;br /&gt;
The YubiKey hardware authenticator (USB/NFC key) offers the following advantages:&lt;br /&gt;
&lt;br /&gt;
* YubiKey helps protect against phishing because the device verifies the website domain and will not work on fake or look-alike sites.&lt;br /&gt;
* It is virtually impossible to hack remotely or over the network, unlike apps, if your phone or backup password is compromised.&lt;br /&gt;
* Additionally, YubiKey is not vulnerable to SIM-swap attacks like SMS-based 2FA, as it is not tied to a phone number. For now, it is one of the most reliable hardware-based options for two-factor authentication.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Using VPN to improve privacy and security&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;If you are a private user&#039;&#039;, you can also configure a system-wide VPN (for example, ProtonVPN) so that all device traffic is routed through it — not only browser traffic or traffic from specific applications.&lt;br /&gt;
&lt;br /&gt;
Enable the “killswitch” mode and disable it only when necessary, re-enabling it immediately afterwards.&lt;br /&gt;
&lt;br /&gt;
It is also recommended to periodically change VPN servers, doing so at different and unpredictable intervals.&lt;br /&gt;
&lt;br /&gt;
Using a VPN increases your privacy: all of your traffic will be encrypted from observers on your local network and from your internet service provider. This makes it more difficult for an attacker to apply certain social-engineering methods based on traffic analysis, and it also helps protect your privacy in the event that your provider’s infrastructure is compromised.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;If you own a server&#039;&#039; and want access to it to be available only to trusted private or legal entities, while also increasing its protection against unauthorized access, you can configure the server so that SSH and other internal services are accessible exclusively through OpenVPN using TLS authentication (tls-auth / tls-crypt) and unique client certificates instead of passwords.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Actively study and apply artificial intelligence to improve security configurations in Debian and other Linux distributions, as well as to address related cybersecurity tasks. A lack of knowledge often becomes the weakest link; AI can provide accurate, structured recommendations interactively and help automate repetitive or complex operations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. If privacy is a priority, consider reducing reliance on the Google ecosystem and switching to more privacy-focused alternatives (for example, proton.me and similar services). Google provides very strong security, but its services collect extensive telemetry for analysis. While this data is encrypted and not accessible to attackers, it may still be undesirable for users who value strict privacy.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Always verify AI-generated recommendations before applying them in production environments. Test any changes in an isolated system, review generated commands or configurations, and ensure that suggestions align with your threat model and security architecture.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;In practice, users who effectively leverage AI tools are significantly better prepared, and the adoption of such technologies makes malicious activity considerably more difficult for attackers.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Note:&#039;&#039;&#039; Artificial intelligence tools are mentioned here as optional technical aids, not as an endorsement of any specific service or vendor.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5. It is also important to consider the possibility of hardware-level attacks.&lt;br /&gt;
&lt;br /&gt;
Although such attacks are significantly less common and typically require more resources than software-based attacks, they remain a potential threat. In certain scenarios, an adversary may exploit vulnerabilities in device firmware or conduct a combined attack targeting both software and hardware layers. Examples include remote injection of malicious code into the firmware of a motherboard, router, optical modem, or other hardware components.&lt;br /&gt;
&lt;br /&gt;
If, after a thorough software-level audit, a security issue remains unresolved, it is advisable &amp;lt;nowiki&amp;gt;&#039;&#039;&#039;&amp;lt;/nowiki&amp;gt;to perform a hardware-level assessment&amp;lt;nowiki&amp;gt;&#039;&#039;&#039;&amp;lt;/nowiki&amp;gt; as well, including verification of device firmware integrity and configuration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;And most importantly — give up the illusion of complete security. We live in conditions of a severe information war, and everyone must make efforts so that malicious actors cannot freely spy on desktops and servers.&#039;&#039;&#039;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Examples of Deep Custom Security Configurations&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Below are examples of strong, individualized configurations for &#039;&#039;&#039;SELinux&#039;&#039;&#039;, &#039;&#039;&#039;nftables&#039;&#039;&#039;, &#039;&#039;&#039;sysctl&#039;&#039;&#039; and &#039;&#039;&#039;auditd&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
These are not universal templates, but references illustrating advanced system hardening.&lt;br /&gt;
&lt;br /&gt;
====== SELinux config: ======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;terminfo&amp;quot;&amp;gt;&lt;br /&gt;
root@user:/home/user# sestatus&lt;br /&gt;
SELinux status:                 enabled&lt;br /&gt;
SELinuxfs mount:                /sys/fs/selinux&lt;br /&gt;
SELinux root directory:         /etc/selinux&lt;br /&gt;
Loaded policy name:             default&lt;br /&gt;
Current mode:                   enforcing&lt;br /&gt;
Mode from config file:          enforcing&lt;br /&gt;
Policy MLS status:              enabled&lt;br /&gt;
Policy deny_unknown status:     allowed&lt;br /&gt;
Memory protection checking:     actual (secure)&lt;br /&gt;
Max kernel policy version:      33&lt;br /&gt;
root@user:/home/user# sestatus -v&lt;br /&gt;
SELinux status:                 enabled&lt;br /&gt;
SELinuxfs mount:                /sys/fs/selinux&lt;br /&gt;
SELinux root directory:         /etc/selinux&lt;br /&gt;
Loaded policy name:             default&lt;br /&gt;
Current mode:                   enforcing&lt;br /&gt;
Mode from config file:          enforcing&lt;br /&gt;
Policy MLS status:              enabled&lt;br /&gt;
Policy deny_unknown status:     allowed&lt;br /&gt;
Memory protection checking:     actual (secure)&lt;br /&gt;
Max kernel policy version:      33&lt;br /&gt;
&lt;br /&gt;
Process contexts:&lt;br /&gt;
Current context:                unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023&lt;br /&gt;
Init context:                   system_u:system_r:init_t:s0&lt;br /&gt;
/sbin/agetty                    system_u:system_r:getty_t:s0&lt;br /&gt;
&lt;br /&gt;
File contexts:&lt;br /&gt;
Controlling terminal:           unconfined_u:object_r:user_devpts_t:s0&lt;br /&gt;
/etc/passwd                     system_u:object_r:etc_t:s0&lt;br /&gt;
/etc/shadow                     system_u:object_r:unlabeled_t:s0&lt;br /&gt;
/bin/bash                       system_u:object_r:shell_exec_t:s0&lt;br /&gt;
/bin/login                      system_u:object_r:login_exec_t:s0&lt;br /&gt;
/bin/sh                         system_u:object_r:bin_t:s0 -&amp;gt; system_u:object_r:shell_exec_t:s0&lt;br /&gt;
/sbin/agetty                    system_u:object_r:getty_exec_t:s0&lt;br /&gt;
/sbin/init                      system_u:object_r:bin_t:s0 -&amp;gt; system_u:object_r:init_exec_t:s0&lt;br /&gt;
/lib/ld-linux.so.2              system_u:object_r:lib_t:s0 -&amp;gt; system_u:object_r:ld_so_t:s0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== nftables config: ======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/sbin/nft -f&lt;br /&gt;
&lt;br /&gt;
flush ruleset&lt;br /&gt;
&lt;br /&gt;
table inet filter {&lt;br /&gt;
  &lt;br /&gt;
  # = Main chain policy =&lt;br /&gt;
  chain input {&lt;br /&gt;
    type filter hook input priority 0;&lt;br /&gt;
    policy drop;&lt;br /&gt;
&lt;br /&gt;
    # = Common rule set =&lt;br /&gt;
    # 🌀 Allow loopback interface (internal system processes)&lt;br /&gt;
    iif &amp;quot;lo&amp;quot; accept&lt;br /&gt;
&lt;br /&gt;
    # == 🔁 Allow established and related connections ==&lt;br /&gt;
    ct state established,related accept&lt;br /&gt;
&lt;br /&gt;
    # == 🔒 Limiting new connections from one IP (anti-DDoS) ==&lt;br /&gt;
    # == 🔒 Limit the rate of NEW connections per source IP (basic anti-DDoS protection) ==&lt;br /&gt;
    #    If you experience issues with slow or failed page loads in your browser,&lt;br /&gt;
    #    try increasing the limit, for example:&lt;br /&gt;
    #    ip saddr 0.0.0.0/0 ct state new limit rate 50/second burst 100 packets accept&lt;br /&gt;
    ip saddr 0.0.0.0/0 ct state new limit rate 25/second burst 50 packets accept&lt;br /&gt;
    ip saddr 0.0.0.0/0 ct state new log prefix &amp;quot;🔥 BAN: too many conn &amp;quot; flags all&lt;br /&gt;
    ip saddr 0.0.0.0/0 ct state new drop&lt;br /&gt;
&lt;br /&gt;
    # == 🛡️ Ping rate limiting ==&lt;br /&gt;
    ip protocol icmp icmp type echo-request limit rate 1/second accept&lt;br /&gt;
    ip protocol icmp icmp type echo-request log prefix &amp;quot;🔥 BAN: ICMP flood &amp;quot; flags all&lt;br /&gt;
    ip protocol icmp icmp type echo-request drop&lt;br /&gt;
&lt;br /&gt;
    # == 🚫 Blocking SSDP and mDNS (local broadcast discovery protocols) ==&lt;br /&gt;
    ip daddr 239.255.255.250 udp dport 1900 drop   # ❌ SSDP (UPnP/device discovery)&lt;br /&gt;
    ip daddr 224.0.0.251 udp dport 5353 drop       # ❌ mDNS (Bonjour, Avahi)&lt;br /&gt;
&lt;br /&gt;
    # == 🛑 Blocking NetBIOS and LLMNR (Windows/systemd internal LAN protocols) ==&lt;br /&gt;
    udp dport 137 drop    # ❌ NetBIOS Name Service (Windows network names)&lt;br /&gt;
    udp dport 138 drop    # ❌ NetBIOS Datagram Service (LAN name discovery)&lt;br /&gt;
    udp dport 5355 drop   # ❌ LLMNR (Link-Local Multicast Name Resolution)&lt;br /&gt;
&lt;br /&gt;
    # = Set of blocked IP addresses and ranges =&lt;br /&gt;
    &lt;br /&gt;
    # == 🧱 Blocking known botnets and proxy networks ==&lt;br /&gt;
    ip saddr {&lt;br /&gt;
      45.9.20.0/24,&lt;br /&gt;
      89.248.160.0/19,&lt;br /&gt;
      185.220.100.0/22,&lt;br /&gt;
      198.96.155.0/24,&lt;br /&gt;
      185.107.56.0/24,&lt;br /&gt;
      185.129.62.0/23&lt;br /&gt;
    } log prefix &amp;quot;🔥 BAN: known bots &amp;quot; flags all&lt;br /&gt;
    ip saddr {&lt;br /&gt;
      45.9.20.0/24,&lt;br /&gt;
      89.248.160.0/19,&lt;br /&gt;
      185.220.100.0/22,&lt;br /&gt;
      198.96.155.0/24,&lt;br /&gt;
      185.107.56.0/24,&lt;br /&gt;
      185.129.62.0/23&lt;br /&gt;
    } drop&lt;br /&gt;
&lt;br /&gt;
    # == 🚫 Blocking strange TCP flags (XMAS, NULL scans and others) ==&lt;br /&gt;
    tcp flags &amp;amp; (fin|syn|rst|psh|ack|urg) == 0 drop        # NULL scan&lt;br /&gt;
    tcp flags &amp;amp; (fin|psh|urg) == (fin|psh|urg) drop          # XMAS scan&lt;br /&gt;
    tcp flags &amp;amp; (fin|syn) == (fin|syn) drop                  # SYN-ACK scan&lt;br /&gt;
    tcp flags &amp;amp; (syn|rst|fin) == (syn|rst|fin) drop          # Xmas scan&lt;br /&gt;
    tcp flags &amp;amp; (syn|fin|rst|psh|ack) == (syn|rst|fin|ack) drop # Xmas scan&lt;br /&gt;
&lt;br /&gt;
    # == 🚫 Blocking fragmented packets — commonly used in filter evasion ==&lt;br /&gt;
    ip frag-off &amp;amp; 0x1fff != 0 drop&lt;br /&gt;
&lt;br /&gt;
    # == 🔒 Blocking spoofed IP packets ==&lt;br /&gt;
    ip saddr 127.0.0.0/8 drop          # localhost&lt;br /&gt;
    ip saddr 10.0.0.0/8 drop           # private network&lt;br /&gt;
    ip saddr 172.16.0.0/12 drop        # private network&lt;br /&gt;
    ip saddr 192.168.0.0/16 drop       # private network&lt;br /&gt;
    ip saddr 169.254.0.0/16 drop       # APIPA&lt;br /&gt;
    ip saddr 0.0.0.0/8 drop            # invalid address&lt;br /&gt;
    ip saddr 224.0.0.0/4 drop          # multicast&lt;br /&gt;
    ip saddr 240.0.0.0/5 drop          # reserved&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  # = Main chain policy =&lt;br /&gt;
  chain forward {&lt;br /&gt;
    type filter hook forward priority 0;&lt;br /&gt;
    policy accept;&lt;br /&gt;
    &lt;br /&gt;
    #  = Blocking various types of attacks =&lt;br /&gt;
    # Required in chain forward only if Docker or Oracle VirtualBox is present.&lt;br /&gt;
    # If needed — uncomment.&lt;br /&gt;
&lt;br /&gt;
    #  == 🔒 Limiting new connections from one IP (anti-DDoS) ==&lt;br /&gt;
    # ip saddr 0.0.0.0/0 ct state new limit rate 25/second burst 50 packets accept&lt;br /&gt;
    # ip saddr 0.0.0.0/0 ct state new log prefix &amp;quot;🔥 BAN: too many conn &amp;quot; flags all&lt;br /&gt;
    # ip saddr 0.0.0.0/0 ct state new drop&lt;br /&gt;
&lt;br /&gt;
    # == 🛡️ Ping rate limiting ==&lt;br /&gt;
    # ip protocol icmp icmp type echo-request limit rate 1/second accept&lt;br /&gt;
    # ip protocol icmp icmp type echo-request log prefix &amp;quot;🔥 BAN: ICMP flood &amp;quot; flags all&lt;br /&gt;
    # ip protocol icmp icmp type echo-request drop&lt;br /&gt;
&lt;br /&gt;
    # = Allowing required TCP/UDP ports and ranges =&lt;br /&gt;
&lt;br /&gt;
    # == Allow TCP ports required for application operation ==&lt;br /&gt;
    tcp dport {&lt;br /&gt;
      53,         # DNS — needed for domain name resolution&lt;br /&gt;
      80,         # HTTP — web traffic, updates and resource loading&lt;br /&gt;
      443,        # HTTPS — secure web traffic, VPN, browser&lt;br /&gt;
      12043,      # Custom 3D Application — specific client port&lt;br /&gt;
      13000-13050 # Custom 3D Application — dynamic client port range&lt;br /&gt;
    } accept&lt;br /&gt;
&lt;br /&gt;
    # == Allow UDP ports required for application operation ==&lt;br /&gt;
    udp dport {&lt;br /&gt;
      53,         # DNS — needed for domain name resolution&lt;br /&gt;
      443,        # HTTPS via QUIC/HTTP3, browser protocols&lt;br /&gt;
      3478,       # STUN/TURN — WebRTC and video calls&lt;br /&gt;
      3479-3481   # STUN/TURN — WebRTC and video calls&lt;br /&gt;
    } accept&lt;br /&gt;
&lt;br /&gt;
    # = Blocking dangerous and unnecessary TCP/UDP ports and ranges =&lt;br /&gt;
    &lt;br /&gt;
    # These blocklists are intended for a DESKTOP / workstation.&lt;br /&gt;
    # They block remote access, outdated services, proxies, DBs, IoT, and ports&lt;br /&gt;
    # often used by malware, scanners, and C2 infrastructures.&lt;br /&gt;
    #&lt;br /&gt;
    # ⚠ If you use the system as a SERVER, enable IP forwarding,&lt;br /&gt;
    # or run services with internal routing&lt;br /&gt;
    # (Docker NAT/bridge, VirtualBox host-only/bridged, VPN clients),&lt;br /&gt;
    # carefully review the blocked ports/ranges in the forward chain —&lt;br /&gt;
    # these services may need extra ports.&lt;br /&gt;
    # Adjust or comment out required items if necessary.&lt;br /&gt;
&lt;br /&gt;
    # == Blocking various suspicious TCP ports ==&lt;br /&gt;
    tcp dport {&lt;br /&gt;
    # === Remote access (high risk) ===&lt;br /&gt;
      22,     # SSH — common brute-force target&lt;br /&gt;
      23,     # Telnet — outdated, no encryption&lt;br /&gt;
      3389,   # RDP — Windows remote desktop&lt;br /&gt;
      5900,   # VNC — remote access, frequent vulnerabilities&lt;br /&gt;
    # === FTP / SMB / NetBIOS (unsafe file-sharing protocols) ===&lt;br /&gt;
      21,     # FTP — insecure protocol&lt;br /&gt;
      137,    # NetBIOS Name Service&lt;br /&gt;
      138,    # NetBIOS Datagram&lt;br /&gt;
      139,    # NetBIOS Session&lt;br /&gt;
      445,    # SMB/CIFS — common exploit target&lt;br /&gt;
    # === Databases (NEVER expose to the Internet) ===&lt;br /&gt;
      3306,   # MySQL/MariaDB&lt;br /&gt;
      1433,   # MS SQL Server&lt;br /&gt;
      1434,   # MS SQL Browser&lt;br /&gt;
    # === HTTP-alt/Proxy/Elasticsearch (exploited frequently) ===&lt;br /&gt;
      8080,   # HTTP proxy / web interfaces — often exposed accidentally&lt;br /&gt;
      9200,   # Elasticsearch API — full remote data access&lt;br /&gt;
    # === UPnP/IoT (insecure by design) ===&lt;br /&gt;
      1900,   # SSDP / UPnP&lt;br /&gt;
    # === Common for malware (RAT, C2, reverse shells) ===&lt;br /&gt;
      4444,   # Metasploit reverse shell&lt;br /&gt;
      5555,   # Android ADB / IoT botnets&lt;br /&gt;
      9001,   # Tor transport (used by malware)&lt;br /&gt;
      1234,   # Netcat / reverse connections&lt;br /&gt;
      1337,   # Common C2 port used by malware&lt;br /&gt;
    # === ⚠️ Scanner ports and potentially vulnerable services === &lt;br /&gt;
      1080,   # SOCKS proxy — used to bypass filtering&lt;br /&gt;
      3128,   # Squid proxy — may be abused as open proxy&lt;br /&gt;
      8000,   # Alternative HTTP ports, dev servers&lt;br /&gt;
      8888,   # Web interfaces, proxies, dev tools&lt;br /&gt;
      10000   # Webmin — remote admin panel, frequent attacks&lt;br /&gt;
    } drop&lt;br /&gt;
&lt;br /&gt;
    # == Blocking various suspicious UDP ports ==&lt;br /&gt;
    udp dport {&lt;br /&gt;
      161,    # SNMP — network monitoring; abused by attackers&lt;br /&gt;
      162     # SNMP Trap — also potentially vulnerable&lt;br /&gt;
    } drop&lt;br /&gt;
&lt;br /&gt;
    # Attention! Blocking wide port ranges — be careful!&lt;br /&gt;
    # Do not break system or application functionality!&lt;br /&gt;
    &lt;br /&gt;
    # == TCP port ranges not used by a workstation during transit routing ==&lt;br /&gt;
    # Blocked to prevent unwanted forwarding, hidden tunnels,&lt;br /&gt;
    # NAT evasion, parasitic flows, and potential forward-path attacks.&lt;br /&gt;
&lt;br /&gt;
    tcp dport {&lt;br /&gt;
      1024-2047,    # System/legacy services; rarely needed in forward&lt;br /&gt;
      2048-4095,    # Proprietary daemons; NFS (2049) — check if used&lt;br /&gt;
      4096-8191,    # Old VPNs, some games, P2P; rarely needed on desktop&lt;br /&gt;
      8192-12287,   # Alternative HTTP/proxy, multimedia; test as needed&lt;br /&gt;
      12288-16383,  # Media/VoIP (TCP fallback); may break calls&lt;br /&gt;
      16384-24575,  # RTP/WebRTC (TCP fallback); block unless AV needed&lt;br /&gt;
      24576-32767,  # Dynamic ranges for games/VPN; may cause issues&lt;br /&gt;
      32768-49151,  # Registered/ephemeral; risky — may break NAT, Docker, VM&lt;br /&gt;
      49152-65535   # High ephemeral; widely used by modern apps&lt;br /&gt;
    } drop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # == 🚫 Blocking UDP ports — high and dynamic ranges ==&lt;br /&gt;
    udp dport {&lt;br /&gt;
      1024-9999,     # low/mid ephemeral ports; used by trojans, P2P, games, VPN&lt;br /&gt;
      10000-65535    # high ephemeral; used by dynamic apps, VPN, Docker&lt;br /&gt;
    } drop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # = 🕷️ Suspicious IPs — large ranges often used by botnets, spam nets, and scanners =&lt;br /&gt;
    ip saddr {&lt;br /&gt;
      185.0.0.0/8,   # abused hosting and proxy networks&lt;br /&gt;
      37.0.0.0/8,    # cheap VPS, frequent scanning sources&lt;br /&gt;
      88.0.0.0/8,    # common brute-force and scanner range&lt;br /&gt;
      77.0.0.0/8,    # TOR/proxy nodes&lt;br /&gt;
      91.0.0.0/8     # botnets and “grey-zone” hosting&lt;br /&gt;
    } drop&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  chain output {&lt;br /&gt;
    # = Main chain policy =&lt;br /&gt;
    type filter hook output priority 0;&lt;br /&gt;
    policy accept;&lt;br /&gt;
&lt;br /&gt;
    #  = Blocking various types of attacks =&lt;br /&gt;
&lt;br /&gt;
    # == 🔒 Limiting new connections from a single IP (anti-DDoS) ==&lt;br /&gt;
    ip saddr 0.0.0.0/0 ct state new limit rate 25/second burst 50 packets accept&lt;br /&gt;
    ip saddr 0.0.0.0/0 ct state new log prefix &amp;quot;🔥 BAN: too many conn &amp;quot; flags all&lt;br /&gt;
    ip saddr 0.0.0.0/0 ct state new drop&lt;br /&gt;
&lt;br /&gt;
    # == 🛡️ Limiting ping requests ==&lt;br /&gt;
    ip protocol icmp icmp type echo-request limit rate 1/second accept&lt;br /&gt;
    ip protocol icmp icmp type echo-request log prefix &amp;quot;🔥 BAN: ICMP flood &amp;quot; flags all&lt;br /&gt;
    ip protocol icmp icmp type echo-request drop&lt;br /&gt;
    &lt;br /&gt;
    # = Allowing required TCP/UDP ports and ranges =&lt;br /&gt;
&lt;br /&gt;
    # == Allow TCP ports and ranges required for application functionality ==&lt;br /&gt;
    tcp dport {&lt;br /&gt;
    53,     # DNS client. Required for Internet to work: domain name resolution (UDP/TCP).&lt;br /&gt;
    80,     # HTTP traffic to unencrypted websites; apps may use it for API/redirects.&lt;br /&gt;
    443,    # HTTPS. Main port for all encrypted web traffic — browsers, API, VPN, updates.&lt;br /&gt;
    3306,   # MySQL client. Needed if you connect to MySQL.&lt;br /&gt;
    3478,   # STUN/TURN WebRTC. Needed for audio/video/Discord.&lt;br /&gt;
    3000,   # Node.js dev servers. Needed for development.&lt;br /&gt;
    3690,   # SVN. If you work with an old repository.&lt;br /&gt;
    4443,   # Alternative HTTPS (some APIs). Also used by some VPN/clients.&lt;br /&gt;
    12043,  # Required for Custom 3D Application.&lt;br /&gt;
    13000-13050   # Required for Custom 3D Application.&lt;br /&gt;
    } accept&lt;br /&gt;
  &lt;br /&gt;
    # == Allow UDP ports and ranges required for applications ==&lt;br /&gt;
    udp dport {&lt;br /&gt;
    443,    # Required for fast and stable operation of modern websites &lt;br /&gt;
            # (Google, YouTube, ChatGPT, Cloudflare)&lt;br /&gt;
    13000-13050   # Required for Custom 3D Application.&lt;br /&gt;
    } accept &lt;br /&gt;
&lt;br /&gt;
    # = Blocking potentially dangerous / unnecessary TCP/UDP ports =&lt;br /&gt;
&lt;br /&gt;
    # These blocks are intended for a DESKTOP / workstation.&lt;br /&gt;
    # ⚠ If you use the system as a SERVER —&lt;br /&gt;
    # adjust or comment out the required ports/ranges as needed.&lt;br /&gt;
&lt;br /&gt;
    # == Blocking various suspicious TCP ports ==&lt;br /&gt;
    tcp dport {&lt;br /&gt;
    # === Remote access (high-risk) ===&lt;br /&gt;
      22,     # SSH — target of brute-force attacks.&lt;br /&gt;
      23,     # Telnet — outdated, unencrypted.&lt;br /&gt;
      3389,   # RDP — Windows remote access.&lt;br /&gt;
      5900,   # VNC — remote access, often vulnerable.&lt;br /&gt;
    # === FTP / SMB / NetBIOS (dangerous file-sharing services) ===&lt;br /&gt;
      21,     # FTP — insecure protocol.&lt;br /&gt;
      137,    # NetBIOS Name Service.&lt;br /&gt;
      138,    # NetBIOS Datagram.&lt;br /&gt;
      139,    # NetBIOS Session.&lt;br /&gt;
      445,    # SMB/CIFS — frequent exploitation target.&lt;br /&gt;
    # === Databases (NEVER open to the Internet) ===&lt;br /&gt;
      3306,   # MySQL/MariaDB.&lt;br /&gt;
      1433,   # MS SQL Server.&lt;br /&gt;
      1434,   # MS SQL Browser.&lt;br /&gt;
    # === HTTP-alt/Proxy/Elasticsearch (dangerous, often attacked) ===&lt;br /&gt;
      8080,   # HTTP proxy / web interfaces — often exposed test interfaces.&lt;br /&gt;
      9200,   # Elasticsearch API — full remote access to data.&lt;br /&gt;
    # === UPnP/IoT (vulnerable by design) ===&lt;br /&gt;
      1900,   # SSDP / UPnP.&lt;br /&gt;
    # === Common malware ports (RAT, C2, reverse shells) ===&lt;br /&gt;
      4444,   # Metasploit reverse shell.&lt;br /&gt;
      5555,   # Android ADB / IoT botnets.&lt;br /&gt;
      9001,   # Tor transport (used by malware).&lt;br /&gt;
      1234,   # Netcat / reverse connections.&lt;br /&gt;
      1337,   # Common C2 malware port.&lt;br /&gt;
    # === ⚠️ Ports of scanners and potentially vulnerable services === &lt;br /&gt;
      1080,   # SOCKS proxy — often abused for bypassing filters.&lt;br /&gt;
      3128,   # Squid HTTP proxy — can be used as open proxy.&lt;br /&gt;
      8000,   # Alternative HTTP ports, web services — potentially vulnerable.&lt;br /&gt;
      8888,   # Alternative web interfaces — test and proxy ports.&lt;br /&gt;
      10000   # Webmin — web admin panel, target of attacks.&lt;br /&gt;
    } drop&lt;br /&gt;
&lt;br /&gt;
    # == Blocking various suspicious UDP ports ==&lt;br /&gt;
    udp dport {&lt;br /&gt;
      161,    # SNMP — network monitoring; can be abused by attackers.&lt;br /&gt;
      162     # SNMP Trap — same, potential vulnerability.&lt;br /&gt;
    } drop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # Warning! ⚠️ Be careful blocking wide port ranges! ⚠️&lt;br /&gt;
    # Do not break system or application functionality!&lt;br /&gt;
    # If you need a range — uncomment.&lt;br /&gt;
    # If you don’t — comment out.&lt;br /&gt;
&lt;br /&gt;
    #  == Blocking “dangerous” and desktop-unnecessary TCP port ranges ==&lt;br /&gt;
    tcp dport {&lt;br /&gt;
      1-1023,	    # 🛑 Privileged ports.&lt;br /&gt;
      1024-2047,	# r-commands (rlogin, rsh, rexec), old RPC, NFS, legacy daemons.&lt;br /&gt;
      2048-3071,    # Rare proprietary protocols and middleware.&lt;br /&gt;
      3072-4999,    # Mostly ports of legacy, server, corporate apps; &lt;br /&gt;
                    # rarely needed on workstations.&lt;br /&gt;
      5000-5999,    # Alternative services, old P2P/admin ports, rarely used on desktops.&lt;br /&gt;
      7000-7999,    # Alternative/test ports, often used by trojans.&lt;br /&gt;
      9000-9999,    # Web services, proxies, possible backdoor ports.&lt;br /&gt;
      10000-19998,  # Dynamic/high service ports; may be required by some apps like Custom 3D Application,&lt;br /&gt;
                    # but not needed by most desktop services.&lt;br /&gt;
      19999-32767   # Old ephemeral port range; used by P2P, games, some VPNs,&lt;br /&gt;
                    # but system services rarely use them.&lt;br /&gt;
    } drop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    #  == Blocking “dangerous” and desktop-unnecessary UDP port ranges ==&lt;br /&gt;
    udp dport {&lt;br /&gt;
      1024-2047,    # Old UNIX services, RPC, NFS, r-commands, legacy daemons.&lt;br /&gt;
                    # Usually safe to block.&lt;br /&gt;
      2048-4095,    # Rarely used standard ports, proprietary services.&lt;br /&gt;
                    # Usually safe to block.&lt;br /&gt;
      4096-8191,    # VPN, games, P2P, WebRTC, VoIP of some clients.&lt;br /&gt;
                    # Can block, but cautiously: may affect VPN/apps.&lt;br /&gt;
      8192-12287,   # QUIC/HTTP3, proxies, multimedia protocols.&lt;br /&gt;
                    # Might cause side effects; better test first.&lt;br /&gt;
      12288-16383,  # Old RTP/VoIP ranges and media streams.&lt;br /&gt;
                    # Can block, but might break video calls.&lt;br /&gt;
      16384-24575,  # Main RTP range (audio/video), WebRTC, VoIP.&lt;br /&gt;
                    # ❗ Do not block if you need video calls/WebRTC/VPN.&lt;br /&gt;
      24576-32767   # Dynamic ports for VPN, P2P, games, streaming data.&lt;br /&gt;
                    # ❗ May break VPN or some apps.&lt;br /&gt;
    } drop&lt;br /&gt;
&lt;br /&gt;
    # == 🕷️ Blocking suspicious IPs —&lt;br /&gt;
    # large ranges often used by botnets, spam networks, and scanners ==&lt;br /&gt;
    ip saddr {&lt;br /&gt;
      185.0.0.0/8,  # Abused hosting and proxy networks.&lt;br /&gt;
      37.0.0.0/8,   # Cheap VPS, scanning sources.&lt;br /&gt;
      88.0.0.0/8,   # Frequent brute-force and scanners.&lt;br /&gt;
      77.0.0.0/8,   # Massive TOR/proxy nodes.&lt;br /&gt;
      91.0.0.0/8    # Botnets and “grey” hosting.&lt;br /&gt;
    } drop&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== sysctl config: ======&lt;br /&gt;
kernel parameters configuration&lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.d/99-protect.conf&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# 1 Ignore ICMP on interfaces&lt;br /&gt;
net.ipv4.icmp_echo_ignore_all = 1&lt;br /&gt;
&lt;br /&gt;
# 2 Do not respond to ICMP broadcast (against Smurf attacks)&lt;br /&gt;
net.ipv4.icmp_echo_ignore_broadcasts = 1&lt;br /&gt;
&lt;br /&gt;
# 3 Enable SYN backlog reduction&lt;br /&gt;
net.ipv4.tcp_syncookies = 1&lt;br /&gt;
&lt;br /&gt;
# 4 Disable source routing&lt;br /&gt;
net.ipv4.conf.all.accept_source_route = 0&lt;br /&gt;
net.ipv4.conf.default.accept_source_route = 0&lt;br /&gt;
&lt;br /&gt;
# 5 Log packets with incorrect routing&lt;br /&gt;
net.ipv4.conf.all.log_martians = 1&lt;br /&gt;
net.ipv4.conf.default.log_martians = 1&lt;br /&gt;
&lt;br /&gt;
# 6 Disable ICMP Redirects&lt;br /&gt;
net.ipv4.conf.all.accept_redirects = 0&lt;br /&gt;
net.ipv4.conf.default.accept_redirects = 0&lt;br /&gt;
&lt;br /&gt;
# 7 Disable packet forwarding&lt;br /&gt;
net.ipv4.ip_forward = 0&lt;br /&gt;
&lt;br /&gt;
# 8 Disable IPv6 support&lt;br /&gt;
net.ipv4.conf.all.disable_ipv6 = 1&lt;br /&gt;
net.ipv4.conf.default.disable_ipv6 = 1&lt;br /&gt;
&lt;br /&gt;
# 9 Prevent sending TCP segments with null windows&lt;br /&gt;
net.ipv4.tcp_rfc1337 = 1&lt;br /&gt;
&lt;br /&gt;
# 10 Disable ARP filtering for automatic routing&lt;br /&gt;
net.ipv4.conf.all.arp_filter = 1&lt;br /&gt;
net.ipv4.conf.default.arp_filter = 1&lt;br /&gt;
&lt;br /&gt;
# 11 Limit the maximum size of the incoming TCP window&lt;br /&gt;
net.ipv4.tcp_rmem = 4096 87380 4194304&lt;br /&gt;
net.ipv4.tcp_wmem = 4096 65536 4194304&lt;br /&gt;
&lt;br /&gt;
# 12 Drop packets with incorrect checksums&lt;br /&gt;
net.ipv4.conf.all.drop_unicast_in_l2_multicast = 1&lt;br /&gt;
net.ipv4.conf.default.drop_unicast_in_l2_multicast = 1&lt;br /&gt;
&lt;br /&gt;
# 13 Disable IPv6 forwarding&lt;br /&gt;
net.ipv6.conf.all.disable_ipv6 = 1&lt;br /&gt;
net.ipv6.conf.default.disable_ipv6 = 1&lt;br /&gt;
&lt;br /&gt;
# 14 Limit the maximum number of SYN packet retries&lt;br /&gt;
net.ipv4.tcp_synack_retries = 2&lt;br /&gt;
&lt;br /&gt;
# 15 Increase routing cache lifetime&lt;br /&gt;
net.ipv4.route.max_size = 32768&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== auditd rules config: ======&lt;br /&gt;
/etc/audit/rules.d/audit.rules&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
## Flush rules&lt;br /&gt;
-D&lt;br /&gt;
&lt;br /&gt;
## Buffers&lt;br /&gt;
-b 8192&lt;br /&gt;
--backlog_wait_time 60000&lt;br /&gt;
-f 1&lt;br /&gt;
&lt;br /&gt;
## Network audit&lt;br /&gt;
-a always,exit -F arch=b64 -S connect -F success=1 -k network_connect&lt;br /&gt;
-a always,exit -F arch=b64 -S accept4 -F success=1 -k network_accept&lt;br /&gt;
-a always,exit -F arch=b32 -S connect -F success=1 -k network_connect&lt;br /&gt;
-a always,exit -F arch=b32 -S accept4 -F success=1 -k network_accept&lt;br /&gt;
&lt;br /&gt;
## Logging execve commands&lt;br /&gt;
-a always,exit -F arch=b64 -S execve -F key=exec_log&lt;br /&gt;
&lt;br /&gt;
## Audit logins and sessions&lt;br /&gt;
-w /var/log/faillog -p wa -k logins&lt;br /&gt;
-w /var/log/lastlog -p wa -k logins&lt;br /&gt;
-w /var/run/utmp -p wa -k session&lt;br /&gt;
-w /var/log/wtmp -p wa -k session&lt;br /&gt;
-w /var/log/btmp -p wa -k session&lt;br /&gt;
&lt;br /&gt;
## sudo / su&lt;br /&gt;
-w /etc/sudoers -p wa -k sudo&lt;br /&gt;
-w /etc/sudoers.d/ -p wa -k sudo&lt;br /&gt;
-w /bin/su -p x -k su_cmd&lt;br /&gt;
&lt;br /&gt;
## Account and configuration changes&lt;br /&gt;
-w /etc/passwd -p wa -k identity&lt;br /&gt;
-w /etc/group -p wa -k identity&lt;br /&gt;
-w /etc/shadow -p wa -k identity&lt;br /&gt;
-w /etc/gshadow -p wa -k identity&lt;br /&gt;
-w /etc/hosts -p wa -k system_conf&lt;br /&gt;
-w /etc/hostname -p wa -k system_conf&lt;br /&gt;
-w /etc/resolv.conf -p wa -k system_conf&lt;br /&gt;
-w /etc/issue -p wa -k system_conf&lt;br /&gt;
-w /etc/network/ -p wa -k system_conf&lt;br /&gt;
&lt;br /&gt;
## Time changes&lt;br /&gt;
-a always,exit -F arch=b64 -S adjtimex -S settimeofday -S clock_settime -F key=time_change&lt;br /&gt;
-a always,exit -F arch=b32 -S adjtimex -S settimeofday -S stime -S clock_settime -F key=time_change&lt;br /&gt;
&lt;br /&gt;
## Audit SSH connections and changes&lt;br /&gt;
-w /etc/ssh/sshd_config -p wa -k ssh_config_change&lt;br /&gt;
-w /var/log/auth.log -p wa -k ssh_login&lt;br /&gt;
&lt;br /&gt;
## Audit usage of remote tools (e.g., SSH, netcat)&lt;br /&gt;
-a always,exit -F arch=b64 -S execve -F exe=/usr/bin/ssh -k ssh_process&lt;br /&gt;
-a always,exit -F arch=b64 -S execve -F exe=/usr/bin/nc -k nc_process&lt;br /&gt;
-a always,exit -F arch=b32 -S execve -F exe=/usr/bin/ssh -k ssh_process&lt;br /&gt;
-a always,exit -F arch=b32 -S execve -F exe=/usr/bin/nc -k nc_process&lt;br /&gt;
&lt;br /&gt;
## Audit privileged access&lt;br /&gt;
-a always,exit -F arch=b64 -S setuid -S setgid -k privilege_escalation&lt;br /&gt;
-a always,exit -F arch=b32 -S setuid -S setgid -k privilege_escalation&lt;br /&gt;
-w /etc/sudoers -p wa -k sudoers_changes&lt;br /&gt;
-w /etc/sudoers.d/ -p wa -k sudoers_changes&lt;br /&gt;
-w /bin/sudo -p x -k sudo_command&lt;br /&gt;
&lt;br /&gt;
## Monitor credential changes&lt;br /&gt;
#-w /root/.ssh/ -p wa -k ssh_keys&lt;br /&gt;
#-w /home/*/.ssh/ -p wa -k ssh_keys&lt;br /&gt;
&lt;br /&gt;
## Audit use of remote network services&lt;br /&gt;
-a always,exit -F arch=b64 -S socket -F success=1 -k socket_connect&lt;br /&gt;
-a always,exit -F arch=b32 -S socket -F success=1 -k socket_connect&lt;br /&gt;
&lt;br /&gt;
# Log package installation and removal via dpkg&lt;br /&gt;
-w /usr/bin/dpkg -p x&lt;br /&gt;
-w /usr/sbin/apt-get -p x&lt;br /&gt;
-w /usr/bin/apt -p x&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;This article was written by blackcat568 on the forums: https://forums.debian.net/viewtopic.php?t=164131, it is initially shared on the Debian Wiki: https://wiki.debian.org/Security/ProtectingAgainstTargetedAttacks&lt;br /&gt;
[[Category:Security]]&lt;br /&gt;
[[Category:Hardening]]&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Security_Hardening_for_Debian_Users:_Protecting_Against_Targeted_Attacks&amp;diff=111</id>
		<title>Security Hardening for Debian Users: Protecting Against Targeted Attacks</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Security_Hardening_for_Debian_Users:_Protecting_Against_Targeted_Attacks&amp;diff=111"/>
		<updated>2025-12-13T03:12:48Z</updated>

		<summary type="html">&lt;p&gt;Donald: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Security Hardening for Debian Users: Protecting Against Targeted Attacks ==&lt;br /&gt;
&lt;br /&gt;
==== Cybersecurity Measures Against Targeted Attacks ====&lt;br /&gt;
&lt;br /&gt;
* This guide is based on personal experience with targeted attacks originating from state-sponsored actors associated with a totalitarian regime.&lt;br /&gt;
&lt;br /&gt;
* The goal is to help users strengthen the security posture of Linux systems against advanced persistent threats.&lt;br /&gt;
* This article is intended for private users, owners of laptops and desktop computers, as well as administrators of small private servers. Corporate network security topics are not covered here.&lt;br /&gt;
* Likewise, this article does not address social engineering, psychological, legal, physical, or other important aspects of targeted attacks. It focuses exclusively on the cybersecurity aspects of Linux-based systems.&lt;br /&gt;
&lt;br /&gt;
==== Description of the Threat ====&lt;br /&gt;
Since 2011 (for over 14 years), the author has been targeted by a complex set of attacks that include system intrusions, surveillance, psychological pressure, and blackmail based on personal data obtained through such surveillance.&lt;br /&gt;
&lt;br /&gt;
Attackers can gain full control over a PC and steal personal information, often leaving almost no traces. Occasionally, such activity manifests as sudden cursor movements, system slowdowns, or unexplained network activity.&lt;br /&gt;
&lt;br /&gt;
They also monitor Internet traffic and can compromise passwords when those passwords are weak or when two-factor authentication is not enabled.&lt;br /&gt;
&lt;br /&gt;
Please note that such targeted attacks against individuals — both within and outside of authoritarian states — are a real and growing threat. What author describes is not speculation, but the result of many years of firsthand experience resisting cyberattacks and attempted extortion.&lt;br /&gt;
&lt;br /&gt;
There is a widespread belief that targeted cyberattacks affect only a very small fraction of users — around 0.01% or even less — and that for the overwhelming majority of people such risks are not a real concern. However, events of recent years demonstrate that the level of cyber threats is significantly higher than commonly assumed and is often underestimated by both professionals and ordinary users.&lt;br /&gt;
&lt;br /&gt;
The author, as a citizen of a country that has become a zone of increased interest from external actors employing a wide range of means — from traditional instruments of influence to cyber technologies aimed at compromising and monitoring private devices and servers — considers it necessary to draw the attention of the international community to this issue.&lt;br /&gt;
&lt;br /&gt;
Raising awareness about cyber threats and improving the understanding of modern attack methods are essential steps toward strengthening digital security, protecting personal data, and maintaining trust in open-source infrastructure.&lt;br /&gt;
&lt;br /&gt;
==== Countermeasures ====&lt;br /&gt;
&lt;br /&gt;
===== Tested environment: Debian 12 (Bookworm), kernel 6.1.0-34-amd64 (April 2025 build). =====&lt;br /&gt;
Since early 2025, the author has fully switched to Linux, using the Debian distribution. The author is writing here because, among Linux users, it is possible to discuss real protective measures and digital independence.&lt;br /&gt;
&lt;br /&gt;
At the same time, please share this information with Windows users, explaining how vulnerable Windows systems are to hacking and why switching to Ubuntu or another Linux distribution is a much safer choice.&lt;br /&gt;
&lt;br /&gt;
Linux, due to its modular architecture and open-source nature, enables deeper and more flexible security configurations.&lt;br /&gt;
&lt;br /&gt;
Another significant risk factor is the practice of installing Windows, Microsoft Office, or other user applications from pirated sources. Such unofficial builds &#039;&#039;&#039;may contain embedded backdoors, trojans, rootkits, or other forms of malware&#039;&#039;&#039;, which substantially weaken the security of a Windows system and make various types of attacks easier for an adversary.&lt;br /&gt;
&lt;br /&gt;
Debian and most Linux distributions (Ubuntu, Linux Mint, Mageia, Fedora, etc.) are distributed free of charge and rely on official repositories for downloading and installing software. Packages in these repositories undergo strict verification, which greatly reduces the likelihood of malicious code and provides a more predictable and transparent security model.&lt;br /&gt;
&lt;br /&gt;
However, installing Debian or any other Linux distribution alone does not guarantee protection from surveillance — proper configuration is essential.&lt;br /&gt;
&lt;br /&gt;
The adversary type described in this article is &#039;&#039;&#039;experienced and resourceful&#039;&#039;&#039;. Such actors develop software capable of bypassing default configurations of operating systems — both Linux and Windows. This is profitable: a successful &amp;quot;universal key&amp;quot; or exploit that works against many default deployments can grant stealthy access to a large number of machines.&lt;br /&gt;
&lt;br /&gt;
At the same time, creating such a universal key for systems with complex, individualized security configurations is substantially harder and often impractical: each machine will have a different set of rules, profiles and policies, and the exploit must be adapted per configuration. That significantly raises the attacker&#039;s cost.&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Conclusion: do not leave a freshly installed system with default security settings. Apply deliberate, deep, and individualized hardening — least-privilege policies, properly configured access control mechanisms (AppArmor/SELinux), strict firewall rules, verified update policies and monitoring. This increases the attacker&#039;s cost and complexity and makes automated widespread exploitation much harder.&#039;&#039;&#039;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Carefully and conscientiously harden your system security settings. Prepare the system not only to withstand common, predictable attacks (for example, unauthorized access to a banking account), but also to detect and mitigate non-standard attacks (like those described in this article) &#039;&#039;&#039;so they do not catch you off guard&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Apply the most secure configurations available, especially if you store sensitive personal or professional information.&lt;br /&gt;
&lt;br /&gt;
Below, the author shares methods for configuring Debian 12 (and other Linux systems) to strengthen protection against hacking and unauthorized access.&lt;br /&gt;
&lt;br /&gt;
This article is written both as a security recommendation and as a request for advice on improving system configuration.&lt;br /&gt;
&lt;br /&gt;
If you have suggestions for enhancing the existing configurations or additional cybersecurity recommendations that may not have been considered in this message, the author would greatly appreciate your expertise and feedback.&lt;br /&gt;
&lt;br /&gt;
==== Practical Instructions ====&lt;br /&gt;
&lt;br /&gt;
===== Linux system hardening recommendations: =====&lt;br /&gt;
&lt;br /&gt;
# 1. Use full-disk encryption. If your PC or laptop is stolen, the attacker will face significant difficulties in gaining access to any private data stored on your hard drive.&lt;br /&gt;
# If the OS is installed on a desktop that does not serve as a server, disable and remove all remote access services. They should not merely be password-protected or disabled — completely remove them from the system. If you do need a remote-access service, use strong passwords of 16–20 characters. Also, use complex passwords for both the regular user session and the superuser account — at least 16 characters for the user and at least 20 for the superuser.&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Important&#039;&#039;&#039;: Do not hesitate to type long passwords. Apply them even if your PC or server is physically isolated. If access to the user or superuser session is not protected by strong, lengthy passwords, the entire Linux security architecture becomes meaningless.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
# Use only official repositories of your distribution to install software.  Whenever possible, install packages via the package manager (apt/apt-get in Debian) from official repositories — this ensures automatic security updates and integrity verification of packages. If you connect a third-party repository, make sure it is trustworthy: check who maintains it, whether packages are signed with a GPG key, if it is available via HTTPS, and whenever possible, import and verify trusted keys manually. When installing software manually (downloading .deb packages, binaries, or source code), always verify the source: compare checksums (SHA256), verify digital signatures, and follow official installation instructions from the software provider.&lt;br /&gt;
# Avoid using the superuser account or sudo without a clear necessity — and never execute arbitrary scripts with sudo.  Always carefully review commands before running them in the terminal. The terminal is a powerful administrative tool, but in inexperienced hands it can cause serious system damage or compromise. Practical recommendations:&lt;br /&gt;
## Always read a script fully before running it (less script.sh, cat script.sh).&lt;br /&gt;
## Never paste commands from untrusted or unverified sources into the terminal.&lt;br /&gt;
## Use sudo only when truly necessary; consider using sudoedit for editing configuration files.&lt;br /&gt;
## Follow the principle of least privilege — create separate user accounts and limit access rights where possible Important: Improper or careless use of sudo and manual installation of software from untrusted sources are common causes of data leaks, data loss, and system compromise. Always test any configuration changes in an isolated environment before applying them on a production machine.&lt;br /&gt;
# Use application confinement tools such as AppArmor; do not leave profiles at their defaults — customize and harden profiles to match your actual workflows. You may also consider switching to SELinux. If you have difficulty configuring AppArmor or SELinux, seek help from specialists or use AI-based tools. My SELinux configuration is attached below (I use SELinux on Debian 12 — it works reliably).&lt;br /&gt;
# Use advanced network filtering settings: iptables or nftables, or a commercial firewall. (&#039;&#039;sample&#039;&#039; [[Security Hardening for Debian Users: Protecting Against Targeted Attacks#nftables config:|nftables config]]&lt;br /&gt;
# Configure kernel parameters for maximum security (sysctl hardening). (&#039;&#039;sample&#039;&#039; [[Security Hardening for Debian Users: Protecting Against Targeted Attacks#sysctl config:|sysctl config]])&lt;br /&gt;
# Use IDS/IPS systems — intrusion detection and prevention systems (examples: audit, OSSES, Wazus, AIDE). These tools can detect and log attacker activity within your system or network, as well as block malicious actions (logging each blocking event). (sample [[Security Hardening for Debian Users: Protecting Against Targeted Attacks#auditd rules config:|auditd rules config]]&lt;br /&gt;
# Test the system for vulnerabilities using scanners (for example, DebPkg:lynis, OpenVAS, Nessus). Test results can be analyzed using tools and, if necessary, AI — provide the logs for review.&lt;br /&gt;
# If you suspect that you are being targeted by a focused or targeted attack, start periodically capturing network traffic using tools such as tcpdump, Wireshark, or Zeek. The collected logs can then be sent to security specialists or AI-based analysis tools for further investigation. These measures will significantly complicate a hacker’s task and make the unnoticed collection of personal data more difficult.&lt;br /&gt;
# Follow the principle of Attack Surface Reduction (or Occam&#039;s_razor) — disable all unnecessary daemons, services, and processes that are not required for your workflow.&lt;br /&gt;
## If there is a possibility you might need a service, daemon, or process in the future, disable it and remove it from autostart.&lt;br /&gt;
## If you are certain you will never use it, remove it completely from the system.&lt;br /&gt;
## This practice reduces potential attack vectors and strengthens overall system security.&lt;br /&gt;
## Before removing unnecessary daemons, services, or applications, make sure that their removal will not break dependencies with other system components or applications. Always create a full system backup before making any significant configuration changes or modifications.&lt;br /&gt;
# Perform regular antivirus and anti-rootkit scans of the system. In targeted attacks, adversaries typically rely on passive or covert methods — such as data interception, monitoring, traffic analysis, and minimal system interference that leaves few or no traces. Nevertheless, periodic antivirus and anti-rootkit scanning remains a valuable preventive measure, helping to detect known threats in time and maintain the overall security posture of the system.&lt;br /&gt;
# Always record every change you make in system and application configuration files. Add the note as a comment directly in the configuration file — either above the modified line or after it. Format: # YYYY-MM-DD HH:MM, short description of the change, reason Example: Editing `sshd_config` to disable root login via SSH:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
bash&lt;br /&gt;
&lt;br /&gt;
PermitRootLogin no&lt;br /&gt;
# 2025-11-09 14:35, root login via SSH disabled, system security enhancement&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Why it matters:&lt;br /&gt;
&lt;br /&gt;
* Allows you to quickly understand when and why a change was made.&lt;br /&gt;
* Helps troubleshoot future issues — you can easily identify which change may have caused a failure or conflict.&lt;br /&gt;
* Simplifies system audits and security reviews.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Related Aspects of Internet Security&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are aspects of Internet security which, if neglected, can significantly reduce or completely nullify all your efforts in configuring and securing your operating system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Enable two-factor authentication (2FA) on all your online accounts (email, social networks, etc.) — this means confirming your login through a phone call, SMS, a one-time code in a mobile authenticator app (see [[wikipedia:Authenticator_app|Authenticator_app]]), or a hardware security key such as a [[wikipedia:YubiKey|YubiKey]].&lt;br /&gt;
&lt;br /&gt;
This is a critical cybersecurity measure — neglecting it can completely undermine all your efforts in configuring a secure Linux system.&lt;br /&gt;
&lt;br /&gt;
The YubiKey hardware authenticator (USB/NFC key) offers the following advantages:&lt;br /&gt;
&lt;br /&gt;
* YubiKey helps protect against phishing because the device verifies the website domain and will not work on fake or look-alike sites.&lt;br /&gt;
* It is virtually impossible to hack remotely or over the network, unlike apps, if your phone or backup password is compromised.&lt;br /&gt;
* Additionally, YubiKey is not vulnerable to SIM-swap attacks like SMS-based 2FA, as it is not tied to a phone number. For now, it is one of the most reliable hardware-based options for two-factor authentication.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Using VPN to improve privacy and security&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;If you are a private user&#039;&#039;, you can also configure a system-wide VPN (for example, ProtonVPN) so that all device traffic is routed through it — not only browser traffic or traffic from specific applications.&lt;br /&gt;
&lt;br /&gt;
Enable the “killswitch” mode and disable it only when necessary, re-enabling it immediately afterwards.&lt;br /&gt;
&lt;br /&gt;
It is also recommended to periodically change VPN servers, doing so at different and unpredictable intervals.&lt;br /&gt;
&lt;br /&gt;
Using a VPN increases your privacy: all of your traffic will be encrypted from observers on your local network and from your internet service provider. This makes it more difficult for an attacker to apply certain social-engineering methods based on traffic analysis, and it also helps protect your privacy in the event that your provider’s infrastructure is compromised.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;If you own a server&#039;&#039; and want access to it to be available only to trusted private or legal entities, while also increasing its protection against unauthorized access, you can configure the server so that SSH and other internal services are accessible exclusively through OpenVPN using TLS authentication (tls-auth / tls-crypt) and unique client certificates instead of passwords.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Actively study and apply artificial intelligence to improve security configurations in Debian and other Linux distributions, as well as to address related cybersecurity tasks. A lack of knowledge often becomes the weakest link; AI can provide accurate, structured recommendations interactively and help automate repetitive or complex operations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. If privacy is a priority, consider reducing reliance on the Google ecosystem and switching to more privacy-focused alternatives (for example, proton.me and similar services). Google provides very strong security, but its services collect extensive telemetry for analysis. While this data is encrypted and not accessible to attackers, it may still be undesirable for users who value strict privacy.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Always verify AI-generated recommendations before applying them in production environments. Test any changes in an isolated system, review generated commands or configurations, and ensure that suggestions align with your threat model and security architecture.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;In practice, users who effectively leverage AI tools are significantly better prepared, and the adoption of such technologies makes malicious activity considerably more difficult for attackers.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Note:&#039;&#039;&#039; Artificial intelligence tools are mentioned here as optional technical aids, not as an endorsement of any specific service or vendor.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5. It is also important to consider the possibility of hardware-level attacks.&lt;br /&gt;
&lt;br /&gt;
Although such attacks are significantly less common and typically require more resources than software-based attacks, they remain a potential threat. In certain scenarios, an adversary may exploit vulnerabilities in device firmware or conduct a combined attack targeting both software and hardware layers. Examples include remote injection of malicious code into the firmware of a motherboard, router, optical modem, or other hardware components.&lt;br /&gt;
&lt;br /&gt;
If, after a thorough software-level audit, a security issue remains unresolved, it is advisable &amp;lt;nowiki&amp;gt;&#039;&#039;&#039;&amp;lt;/nowiki&amp;gt;to perform a hardware-level assessment&amp;lt;nowiki&amp;gt;&#039;&#039;&#039;&amp;lt;/nowiki&amp;gt; as well, including verification of device firmware integrity and configuration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;And most importantly — give up the illusion of complete security. We live in conditions of a severe information war, and everyone must make efforts so that malicious actors cannot freely spy on desktops and servers.&#039;&#039;&#039;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Examples of Deep Custom Security Configurations&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Below are examples of strong, individualized configurations for &#039;&#039;&#039;SELinux&#039;&#039;&#039;, &#039;&#039;&#039;nftables&#039;&#039;&#039;, &#039;&#039;&#039;sysctl&#039;&#039;&#039; and &#039;&#039;&#039;auditd&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
These are not universal templates, but references illustrating advanced system hardening.&lt;br /&gt;
&lt;br /&gt;
====== SELinux config: ======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;terminfo&amp;quot;&amp;gt;&lt;br /&gt;
root@user:/home/user# sestatus&lt;br /&gt;
SELinux status:                 enabled&lt;br /&gt;
SELinuxfs mount:                /sys/fs/selinux&lt;br /&gt;
SELinux root directory:         /etc/selinux&lt;br /&gt;
Loaded policy name:             default&lt;br /&gt;
Current mode:                   enforcing&lt;br /&gt;
Mode from config file:          enforcing&lt;br /&gt;
Policy MLS status:              enabled&lt;br /&gt;
Policy deny_unknown status:     allowed&lt;br /&gt;
Memory protection checking:     actual (secure)&lt;br /&gt;
Max kernel policy version:      33&lt;br /&gt;
root@user:/home/user# sestatus -v&lt;br /&gt;
SELinux status:                 enabled&lt;br /&gt;
SELinuxfs mount:                /sys/fs/selinux&lt;br /&gt;
SELinux root directory:         /etc/selinux&lt;br /&gt;
Loaded policy name:             default&lt;br /&gt;
Current mode:                   enforcing&lt;br /&gt;
Mode from config file:          enforcing&lt;br /&gt;
Policy MLS status:              enabled&lt;br /&gt;
Policy deny_unknown status:     allowed&lt;br /&gt;
Memory protection checking:     actual (secure)&lt;br /&gt;
Max kernel policy version:      33&lt;br /&gt;
&lt;br /&gt;
Process contexts:&lt;br /&gt;
Current context:                unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023&lt;br /&gt;
Init context:                   system_u:system_r:init_t:s0&lt;br /&gt;
/sbin/agetty                    system_u:system_r:getty_t:s0&lt;br /&gt;
&lt;br /&gt;
File contexts:&lt;br /&gt;
Controlling terminal:           unconfined_u:object_r:user_devpts_t:s0&lt;br /&gt;
/etc/passwd                     system_u:object_r:etc_t:s0&lt;br /&gt;
/etc/shadow                     system_u:object_r:unlabeled_t:s0&lt;br /&gt;
/bin/bash                       system_u:object_r:shell_exec_t:s0&lt;br /&gt;
/bin/login                      system_u:object_r:login_exec_t:s0&lt;br /&gt;
/bin/sh                         system_u:object_r:bin_t:s0 -&amp;gt; system_u:object_r:shell_exec_t:s0&lt;br /&gt;
/sbin/agetty                    system_u:object_r:getty_exec_t:s0&lt;br /&gt;
/sbin/init                      system_u:object_r:bin_t:s0 -&amp;gt; system_u:object_r:init_exec_t:s0&lt;br /&gt;
/lib/ld-linux.so.2              system_u:object_r:lib_t:s0 -&amp;gt; system_u:object_r:ld_so_t:s0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== nftables config: ======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/sbin/nft -f&lt;br /&gt;
&lt;br /&gt;
flush ruleset&lt;br /&gt;
&lt;br /&gt;
table inet filter {&lt;br /&gt;
  &lt;br /&gt;
  # = Main chain policy =&lt;br /&gt;
  chain input {&lt;br /&gt;
    type filter hook input priority 0;&lt;br /&gt;
    policy drop;&lt;br /&gt;
&lt;br /&gt;
    # = Common rule set =&lt;br /&gt;
    # 🌀 Allow loopback interface (internal system processes)&lt;br /&gt;
    iif &amp;quot;lo&amp;quot; accept&lt;br /&gt;
&lt;br /&gt;
    # == 🔁 Allow established and related connections ==&lt;br /&gt;
    ct state established,related accept&lt;br /&gt;
&lt;br /&gt;
    # == 🔒 Limiting new connections from one IP (anti-DDoS) ==&lt;br /&gt;
    # == 🔒 Limit the rate of NEW connections per source IP (basic anti-DDoS protection) ==&lt;br /&gt;
    #    If you experience issues with slow or failed page loads in your browser,&lt;br /&gt;
    #    try increasing the limit, for example:&lt;br /&gt;
    #    ip saddr 0.0.0.0/0 ct state new limit rate 50/second burst 100 packets accept&lt;br /&gt;
    ip saddr 0.0.0.0/0 ct state new limit rate 25/second burst 50 packets accept&lt;br /&gt;
    ip saddr 0.0.0.0/0 ct state new log prefix &amp;quot;🔥 BAN: too many conn &amp;quot; flags all&lt;br /&gt;
    ip saddr 0.0.0.0/0 ct state new drop&lt;br /&gt;
&lt;br /&gt;
    # == 🛡️ Ping rate limiting ==&lt;br /&gt;
    ip protocol icmp icmp type echo-request limit rate 1/second accept&lt;br /&gt;
    ip protocol icmp icmp type echo-request log prefix &amp;quot;🔥 BAN: ICMP flood &amp;quot; flags all&lt;br /&gt;
    ip protocol icmp icmp type echo-request drop&lt;br /&gt;
&lt;br /&gt;
    # == 🚫 Blocking SSDP and mDNS (local broadcast discovery protocols) ==&lt;br /&gt;
    ip daddr 239.255.255.250 udp dport 1900 drop   # ❌ SSDP (UPnP/device discovery)&lt;br /&gt;
    ip daddr 224.0.0.251 udp dport 5353 drop       # ❌ mDNS (Bonjour, Avahi)&lt;br /&gt;
&lt;br /&gt;
    # == 🛑 Blocking NetBIOS and LLMNR (Windows/systemd internal LAN protocols) ==&lt;br /&gt;
    udp dport 137 drop    # ❌ NetBIOS Name Service (Windows network names)&lt;br /&gt;
    udp dport 138 drop    # ❌ NetBIOS Datagram Service (LAN name discovery)&lt;br /&gt;
    udp dport 5355 drop   # ❌ LLMNR (Link-Local Multicast Name Resolution)&lt;br /&gt;
&lt;br /&gt;
    # = Set of blocked IP addresses and ranges =&lt;br /&gt;
    &lt;br /&gt;
    # == 🧱 Blocking known botnets and proxy networks ==&lt;br /&gt;
    ip saddr {&lt;br /&gt;
      45.9.20.0/24,&lt;br /&gt;
      89.248.160.0/19,&lt;br /&gt;
      185.220.100.0/22,&lt;br /&gt;
      198.96.155.0/24,&lt;br /&gt;
      185.107.56.0/24,&lt;br /&gt;
      185.129.62.0/23&lt;br /&gt;
    } log prefix &amp;quot;🔥 BAN: known bots &amp;quot; flags all&lt;br /&gt;
    ip saddr {&lt;br /&gt;
      45.9.20.0/24,&lt;br /&gt;
      89.248.160.0/19,&lt;br /&gt;
      185.220.100.0/22,&lt;br /&gt;
      198.96.155.0/24,&lt;br /&gt;
      185.107.56.0/24,&lt;br /&gt;
      185.129.62.0/23&lt;br /&gt;
    } drop&lt;br /&gt;
&lt;br /&gt;
    # == 🚫 Blocking strange TCP flags (XMAS, NULL scans and others) ==&lt;br /&gt;
    tcp flags &amp;amp; (fin|syn|rst|psh|ack|urg) == 0 drop        # NULL scan&lt;br /&gt;
    tcp flags &amp;amp; (fin|psh|urg) == (fin|psh|urg) drop          # XMAS scan&lt;br /&gt;
    tcp flags &amp;amp; (fin|syn) == (fin|syn) drop                  # SYN-ACK scan&lt;br /&gt;
    tcp flags &amp;amp; (syn|rst|fin) == (syn|rst|fin) drop          # Xmas scan&lt;br /&gt;
    tcp flags &amp;amp; (syn|fin|rst|psh|ack) == (syn|rst|fin|ack) drop # Xmas scan&lt;br /&gt;
&lt;br /&gt;
    # == 🚫 Blocking fragmented packets — commonly used in filter evasion ==&lt;br /&gt;
    ip frag-off &amp;amp; 0x1fff != 0 drop&lt;br /&gt;
&lt;br /&gt;
    # == 🔒 Blocking spoofed IP packets ==&lt;br /&gt;
    ip saddr 127.0.0.0/8 drop          # localhost&lt;br /&gt;
    ip saddr 10.0.0.0/8 drop           # private network&lt;br /&gt;
    ip saddr 172.16.0.0/12 drop        # private network&lt;br /&gt;
    ip saddr 192.168.0.0/16 drop       # private network&lt;br /&gt;
    ip saddr 169.254.0.0/16 drop       # APIPA&lt;br /&gt;
    ip saddr 0.0.0.0/8 drop            # invalid address&lt;br /&gt;
    ip saddr 224.0.0.0/4 drop          # multicast&lt;br /&gt;
    ip saddr 240.0.0.0/5 drop          # reserved&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  # = Main chain policy =&lt;br /&gt;
  chain forward {&lt;br /&gt;
    type filter hook forward priority 0;&lt;br /&gt;
    policy accept;&lt;br /&gt;
    &lt;br /&gt;
    #  = Blocking various types of attacks =&lt;br /&gt;
    # Required in chain forward only if Docker or Oracle VirtualBox is present.&lt;br /&gt;
    # If needed — uncomment.&lt;br /&gt;
&lt;br /&gt;
    #  == 🔒 Limiting new connections from one IP (anti-DDoS) ==&lt;br /&gt;
    # ip saddr 0.0.0.0/0 ct state new limit rate 25/second burst 50 packets accept&lt;br /&gt;
    # ip saddr 0.0.0.0/0 ct state new log prefix &amp;quot;🔥 BAN: too many conn &amp;quot; flags all&lt;br /&gt;
    # ip saddr 0.0.0.0/0 ct state new drop&lt;br /&gt;
&lt;br /&gt;
    # == 🛡️ Ping rate limiting ==&lt;br /&gt;
    # ip protocol icmp icmp type echo-request limit rate 1/second accept&lt;br /&gt;
    # ip protocol icmp icmp type echo-request log prefix &amp;quot;🔥 BAN: ICMP flood &amp;quot; flags all&lt;br /&gt;
    # ip protocol icmp icmp type echo-request drop&lt;br /&gt;
&lt;br /&gt;
    # = Allowing required TCP/UDP ports and ranges =&lt;br /&gt;
&lt;br /&gt;
    # == Allow TCP ports required for application operation ==&lt;br /&gt;
    tcp dport {&lt;br /&gt;
      53,         # DNS — needed for domain name resolution&lt;br /&gt;
      80,         # HTTP — web traffic, updates and resource loading&lt;br /&gt;
      443,        # HTTPS — secure web traffic, VPN, browser&lt;br /&gt;
      12043,      # Custom 3D Application — specific client port&lt;br /&gt;
      13000-13050 # Custom 3D Application — dynamic client port range&lt;br /&gt;
    } accept&lt;br /&gt;
&lt;br /&gt;
    # == Allow UDP ports required for application operation ==&lt;br /&gt;
    udp dport {&lt;br /&gt;
      53,         # DNS — needed for domain name resolution&lt;br /&gt;
      443,        # HTTPS via QUIC/HTTP3, browser protocols&lt;br /&gt;
      3478,       # STUN/TURN — WebRTC and video calls&lt;br /&gt;
      3479-3481   # STUN/TURN — WebRTC and video calls&lt;br /&gt;
    } accept&lt;br /&gt;
&lt;br /&gt;
    # = Blocking dangerous and unnecessary TCP/UDP ports and ranges =&lt;br /&gt;
    &lt;br /&gt;
    # These blocklists are intended for a DESKTOP / workstation.&lt;br /&gt;
    # They block remote access, outdated services, proxies, DBs, IoT, and ports&lt;br /&gt;
    # often used by malware, scanners, and C2 infrastructures.&lt;br /&gt;
    #&lt;br /&gt;
    # ⚠ If you use the system as a SERVER, enable IP forwarding,&lt;br /&gt;
    # or run services with internal routing&lt;br /&gt;
    # (Docker NAT/bridge, VirtualBox host-only/bridged, VPN clients),&lt;br /&gt;
    # carefully review the blocked ports/ranges in the forward chain —&lt;br /&gt;
    # these services may need extra ports.&lt;br /&gt;
    # Adjust or comment out required items if necessary.&lt;br /&gt;
&lt;br /&gt;
    # == Blocking various suspicious TCP ports ==&lt;br /&gt;
    tcp dport {&lt;br /&gt;
    # === Remote access (high risk) ===&lt;br /&gt;
      22,     # SSH — common brute-force target&lt;br /&gt;
      23,     # Telnet — outdated, no encryption&lt;br /&gt;
      3389,   # RDP — Windows remote desktop&lt;br /&gt;
      5900,   # VNC — remote access, frequent vulnerabilities&lt;br /&gt;
    # === FTP / SMB / NetBIOS (unsafe file-sharing protocols) ===&lt;br /&gt;
      21,     # FTP — insecure protocol&lt;br /&gt;
      137,    # NetBIOS Name Service&lt;br /&gt;
      138,    # NetBIOS Datagram&lt;br /&gt;
      139,    # NetBIOS Session&lt;br /&gt;
      445,    # SMB/CIFS — common exploit target&lt;br /&gt;
    # === Databases (NEVER expose to the Internet) ===&lt;br /&gt;
      3306,   # MySQL/MariaDB&lt;br /&gt;
      1433,   # MS SQL Server&lt;br /&gt;
      1434,   # MS SQL Browser&lt;br /&gt;
    # === HTTP-alt/Proxy/Elasticsearch (exploited frequently) ===&lt;br /&gt;
      8080,   # HTTP proxy / web interfaces — often exposed accidentally&lt;br /&gt;
      9200,   # Elasticsearch API — full remote data access&lt;br /&gt;
    # === UPnP/IoT (insecure by design) ===&lt;br /&gt;
      1900,   # SSDP / UPnP&lt;br /&gt;
    # === Common for malware (RAT, C2, reverse shells) ===&lt;br /&gt;
      4444,   # Metasploit reverse shell&lt;br /&gt;
      5555,   # Android ADB / IoT botnets&lt;br /&gt;
      9001,   # Tor transport (used by malware)&lt;br /&gt;
      1234,   # Netcat / reverse connections&lt;br /&gt;
      1337,   # Common C2 port used by malware&lt;br /&gt;
    # === ⚠️ Scanner ports and potentially vulnerable services === &lt;br /&gt;
      1080,   # SOCKS proxy — used to bypass filtering&lt;br /&gt;
      3128,   # Squid proxy — may be abused as open proxy&lt;br /&gt;
      8000,   # Alternative HTTP ports, dev servers&lt;br /&gt;
      8888,   # Web interfaces, proxies, dev tools&lt;br /&gt;
      10000   # Webmin — remote admin panel, frequent attacks&lt;br /&gt;
    } drop&lt;br /&gt;
&lt;br /&gt;
    # == Blocking various suspicious UDP ports ==&lt;br /&gt;
    udp dport {&lt;br /&gt;
      161,    # SNMP — network monitoring; abused by attackers&lt;br /&gt;
      162     # SNMP Trap — also potentially vulnerable&lt;br /&gt;
    } drop&lt;br /&gt;
&lt;br /&gt;
    # Attention! Blocking wide port ranges — be careful!&lt;br /&gt;
    # Do not break system or application functionality!&lt;br /&gt;
    &lt;br /&gt;
    # == TCP port ranges not used by a workstation during transit routing ==&lt;br /&gt;
    # Blocked to prevent unwanted forwarding, hidden tunnels,&lt;br /&gt;
    # NAT evasion, parasitic flows, and potential forward-path attacks.&lt;br /&gt;
&lt;br /&gt;
    tcp dport {&lt;br /&gt;
      1024-2047,    # System/legacy services; rarely needed in forward&lt;br /&gt;
      2048-4095,    # Proprietary daemons; NFS (2049) — check if used&lt;br /&gt;
      4096-8191,    # Old VPNs, some games, P2P; rarely needed on desktop&lt;br /&gt;
      8192-12287,   # Alternative HTTP/proxy, multimedia; test as needed&lt;br /&gt;
      12288-16383,  # Media/VoIP (TCP fallback); may break calls&lt;br /&gt;
      16384-24575,  # RTP/WebRTC (TCP fallback); block unless AV needed&lt;br /&gt;
      24576-32767,  # Dynamic ranges for games/VPN; may cause issues&lt;br /&gt;
      32768-49151,  # Registered/ephemeral; risky — may break NAT, Docker, VM&lt;br /&gt;
      49152-65535   # High ephemeral; widely used by modern apps&lt;br /&gt;
    } drop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # == 🚫 Blocking UDP ports — high and dynamic ranges ==&lt;br /&gt;
    udp dport {&lt;br /&gt;
      1024-9999,     # low/mid ephemeral ports; used by trojans, P2P, games, VPN&lt;br /&gt;
      10000-65535    # high ephemeral; used by dynamic apps, VPN, Docker&lt;br /&gt;
    } drop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # = 🕷️ Suspicious IPs — large ranges often used by botnets, spam nets, and scanners =&lt;br /&gt;
    ip saddr {&lt;br /&gt;
      185.0.0.0/8,   # abused hosting and proxy networks&lt;br /&gt;
      37.0.0.0/8,    # cheap VPS, frequent scanning sources&lt;br /&gt;
      88.0.0.0/8,    # common brute-force and scanner range&lt;br /&gt;
      77.0.0.0/8,    # TOR/proxy nodes&lt;br /&gt;
      91.0.0.0/8     # botnets and “grey-zone” hosting&lt;br /&gt;
    } drop&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  chain output {&lt;br /&gt;
    # = Main chain policy =&lt;br /&gt;
    type filter hook output priority 0;&lt;br /&gt;
    policy accept;&lt;br /&gt;
&lt;br /&gt;
    #  = Blocking various types of attacks =&lt;br /&gt;
&lt;br /&gt;
    # == 🔒 Limiting new connections from a single IP (anti-DDoS) ==&lt;br /&gt;
    ip saddr 0.0.0.0/0 ct state new limit rate 25/second burst 50 packets accept&lt;br /&gt;
    ip saddr 0.0.0.0/0 ct state new log prefix &amp;quot;🔥 BAN: too many conn &amp;quot; flags all&lt;br /&gt;
    ip saddr 0.0.0.0/0 ct state new drop&lt;br /&gt;
&lt;br /&gt;
    # == 🛡️ Limiting ping requests ==&lt;br /&gt;
    ip protocol icmp icmp type echo-request limit rate 1/second accept&lt;br /&gt;
    ip protocol icmp icmp type echo-request log prefix &amp;quot;🔥 BAN: ICMP flood &amp;quot; flags all&lt;br /&gt;
    ip protocol icmp icmp type echo-request drop&lt;br /&gt;
    &lt;br /&gt;
    # = Allowing required TCP/UDP ports and ranges =&lt;br /&gt;
&lt;br /&gt;
    # == Allow TCP ports and ranges required for application functionality ==&lt;br /&gt;
    tcp dport {&lt;br /&gt;
    53,     # DNS client. Required for Internet to work: domain name resolution (UDP/TCP).&lt;br /&gt;
    80,     # HTTP traffic to unencrypted websites; apps may use it for API/redirects.&lt;br /&gt;
    443,    # HTTPS. Main port for all encrypted web traffic — browsers, API, VPN, updates.&lt;br /&gt;
    3306,   # MySQL client. Needed if you connect to MySQL.&lt;br /&gt;
    3478,   # STUN/TURN WebRTC. Needed for audio/video/Discord.&lt;br /&gt;
    3000,   # Node.js dev servers. Needed for development.&lt;br /&gt;
    3690,   # SVN. If you work with an old repository.&lt;br /&gt;
    4443,   # Alternative HTTPS (some APIs). Also used by some VPN/clients.&lt;br /&gt;
    12043,  # Required for Custom 3D Application.&lt;br /&gt;
    13000-13050   # Required for Custom 3D Application.&lt;br /&gt;
    } accept&lt;br /&gt;
  &lt;br /&gt;
    # == Allow UDP ports and ranges required for applications ==&lt;br /&gt;
    udp dport {&lt;br /&gt;
    443,    # Required for fast and stable operation of modern websites &lt;br /&gt;
            # (Google, YouTube, ChatGPT, Cloudflare)&lt;br /&gt;
    13000-13050   # Required for Custom 3D Application.&lt;br /&gt;
    } accept &lt;br /&gt;
&lt;br /&gt;
    # = Blocking potentially dangerous / unnecessary TCP/UDP ports =&lt;br /&gt;
&lt;br /&gt;
    # These blocks are intended for a DESKTOP / workstation.&lt;br /&gt;
    # ⚠ If you use the system as a SERVER —&lt;br /&gt;
    # adjust or comment out the required ports/ranges as needed.&lt;br /&gt;
&lt;br /&gt;
    # == Blocking various suspicious TCP ports ==&lt;br /&gt;
    tcp dport {&lt;br /&gt;
    # === Remote access (high-risk) ===&lt;br /&gt;
      22,     # SSH — target of brute-force attacks.&lt;br /&gt;
      23,     # Telnet — outdated, unencrypted.&lt;br /&gt;
      3389,   # RDP — Windows remote access.&lt;br /&gt;
      5900,   # VNC — remote access, often vulnerable.&lt;br /&gt;
    # === FTP / SMB / NetBIOS (dangerous file-sharing services) ===&lt;br /&gt;
      21,     # FTP — insecure protocol.&lt;br /&gt;
      137,    # NetBIOS Name Service.&lt;br /&gt;
      138,    # NetBIOS Datagram.&lt;br /&gt;
      139,    # NetBIOS Session.&lt;br /&gt;
      445,    # SMB/CIFS — frequent exploitation target.&lt;br /&gt;
    # === Databases (NEVER open to the Internet) ===&lt;br /&gt;
      3306,   # MySQL/MariaDB.&lt;br /&gt;
      1433,   # MS SQL Server.&lt;br /&gt;
      1434,   # MS SQL Browser.&lt;br /&gt;
    # === HTTP-alt/Proxy/Elasticsearch (dangerous, often attacked) ===&lt;br /&gt;
      8080,   # HTTP proxy / web interfaces — often exposed test interfaces.&lt;br /&gt;
      9200,   # Elasticsearch API — full remote access to data.&lt;br /&gt;
    # === UPnP/IoT (vulnerable by design) ===&lt;br /&gt;
      1900,   # SSDP / UPnP.&lt;br /&gt;
    # === Common malware ports (RAT, C2, reverse shells) ===&lt;br /&gt;
      4444,   # Metasploit reverse shell.&lt;br /&gt;
      5555,   # Android ADB / IoT botnets.&lt;br /&gt;
      9001,   # Tor transport (used by malware).&lt;br /&gt;
      1234,   # Netcat / reverse connections.&lt;br /&gt;
      1337,   # Common C2 malware port.&lt;br /&gt;
    # === ⚠️ Ports of scanners and potentially vulnerable services === &lt;br /&gt;
      1080,   # SOCKS proxy — often abused for bypassing filters.&lt;br /&gt;
      3128,   # Squid HTTP proxy — can be used as open proxy.&lt;br /&gt;
      8000,   # Alternative HTTP ports, web services — potentially vulnerable.&lt;br /&gt;
      8888,   # Alternative web interfaces — test and proxy ports.&lt;br /&gt;
      10000   # Webmin — web admin panel, target of attacks.&lt;br /&gt;
    } drop&lt;br /&gt;
&lt;br /&gt;
    # == Blocking various suspicious UDP ports ==&lt;br /&gt;
    udp dport {&lt;br /&gt;
      161,    # SNMP — network monitoring; can be abused by attackers.&lt;br /&gt;
      162     # SNMP Trap — same, potential vulnerability.&lt;br /&gt;
    } drop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # Warning! ⚠️ Be careful blocking wide port ranges! ⚠️&lt;br /&gt;
    # Do not break system or application functionality!&lt;br /&gt;
    # If you need a range — uncomment.&lt;br /&gt;
    # If you don’t — comment out.&lt;br /&gt;
&lt;br /&gt;
    #  == Blocking “dangerous” and desktop-unnecessary TCP port ranges ==&lt;br /&gt;
    tcp dport {&lt;br /&gt;
      1-1023,	    # 🛑 Privileged ports.&lt;br /&gt;
      1024-2047,	# r-commands (rlogin, rsh, rexec), old RPC, NFS, legacy daemons.&lt;br /&gt;
      2048-3071,    # Rare proprietary protocols and middleware.&lt;br /&gt;
      3072-4999,    # Mostly ports of legacy, server, corporate apps; &lt;br /&gt;
                    # rarely needed on workstations.&lt;br /&gt;
      5000-5999,    # Alternative services, old P2P/admin ports, rarely used on desktops.&lt;br /&gt;
      7000-7999,    # Alternative/test ports, often used by trojans.&lt;br /&gt;
      9000-9999,    # Web services, proxies, possible backdoor ports.&lt;br /&gt;
      10000-19998,  # Dynamic/high service ports; may be required by some apps like Custom 3D Application,&lt;br /&gt;
                    # but not needed by most desktop services.&lt;br /&gt;
      19999-32767   # Old ephemeral port range; used by P2P, games, some VPNs,&lt;br /&gt;
                    # but system services rarely use them.&lt;br /&gt;
    } drop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    #  == Blocking “dangerous” and desktop-unnecessary UDP port ranges ==&lt;br /&gt;
    udp dport {&lt;br /&gt;
      1024-2047,    # Old UNIX services, RPC, NFS, r-commands, legacy daemons.&lt;br /&gt;
                    # Usually safe to block.&lt;br /&gt;
      2048-4095,    # Rarely used standard ports, proprietary services.&lt;br /&gt;
                    # Usually safe to block.&lt;br /&gt;
      4096-8191,    # VPN, games, P2P, WebRTC, VoIP of some clients.&lt;br /&gt;
                    # Can block, but cautiously: may affect VPN/apps.&lt;br /&gt;
      8192-12287,   # QUIC/HTTP3, proxies, multimedia protocols.&lt;br /&gt;
                    # Might cause side effects; better test first.&lt;br /&gt;
      12288-16383,  # Old RTP/VoIP ranges and media streams.&lt;br /&gt;
                    # Can block, but might break video calls.&lt;br /&gt;
      16384-24575,  # Main RTP range (audio/video), WebRTC, VoIP.&lt;br /&gt;
                    # ❗ Do not block if you need video calls/WebRTC/VPN.&lt;br /&gt;
      24576-32767   # Dynamic ports for VPN, P2P, games, streaming data.&lt;br /&gt;
                    # ❗ May break VPN or some apps.&lt;br /&gt;
    } drop&lt;br /&gt;
&lt;br /&gt;
    # == 🕷️ Blocking suspicious IPs —&lt;br /&gt;
    # large ranges often used by botnets, spam networks, and scanners ==&lt;br /&gt;
    ip saddr {&lt;br /&gt;
      185.0.0.0/8,  # Abused hosting and proxy networks.&lt;br /&gt;
      37.0.0.0/8,   # Cheap VPS, scanning sources.&lt;br /&gt;
      88.0.0.0/8,   # Frequent brute-force and scanners.&lt;br /&gt;
      77.0.0.0/8,   # Massive TOR/proxy nodes.&lt;br /&gt;
      91.0.0.0/8    # Botnets and “grey” hosting.&lt;br /&gt;
    } drop&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== sysctl config: ======&lt;br /&gt;
kernel parameters configuration&lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.d/99-protect.conf&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# 1 Ignore ICMP on interfaces&lt;br /&gt;
net.ipv4.icmp_echo_ignore_all = 1&lt;br /&gt;
&lt;br /&gt;
# 2 Do not respond to ICMP broadcast (against Smurf attacks)&lt;br /&gt;
net.ipv4.icmp_echo_ignore_broadcasts = 1&lt;br /&gt;
&lt;br /&gt;
# 3 Enable SYN backlog reduction&lt;br /&gt;
net.ipv4.tcp_syncookies = 1&lt;br /&gt;
&lt;br /&gt;
# 4 Disable source routing&lt;br /&gt;
net.ipv4.conf.all.accept_source_route = 0&lt;br /&gt;
net.ipv4.conf.default.accept_source_route = 0&lt;br /&gt;
&lt;br /&gt;
# 5 Log packets with incorrect routing&lt;br /&gt;
net.ipv4.conf.all.log_martians = 1&lt;br /&gt;
net.ipv4.conf.default.log_martians = 1&lt;br /&gt;
&lt;br /&gt;
# 6 Disable ICMP Redirects&lt;br /&gt;
net.ipv4.conf.all.accept_redirects = 0&lt;br /&gt;
net.ipv4.conf.default.accept_redirects = 0&lt;br /&gt;
&lt;br /&gt;
# 7 Disable packet forwarding&lt;br /&gt;
net.ipv4.ip_forward = 0&lt;br /&gt;
&lt;br /&gt;
# 8 Disable IPv6 support&lt;br /&gt;
net.ipv4.conf.all.disable_ipv6 = 1&lt;br /&gt;
net.ipv4.conf.default.disable_ipv6 = 1&lt;br /&gt;
&lt;br /&gt;
# 9 Prevent sending TCP segments with null windows&lt;br /&gt;
net.ipv4.tcp_rfc1337 = 1&lt;br /&gt;
&lt;br /&gt;
# 10 Disable ARP filtering for automatic routing&lt;br /&gt;
net.ipv4.conf.all.arp_filter = 1&lt;br /&gt;
net.ipv4.conf.default.arp_filter = 1&lt;br /&gt;
&lt;br /&gt;
# 11 Limit the maximum size of the incoming TCP window&lt;br /&gt;
net.ipv4.tcp_rmem = 4096 87380 4194304&lt;br /&gt;
net.ipv4.tcp_wmem = 4096 65536 4194304&lt;br /&gt;
&lt;br /&gt;
# 12 Drop packets with incorrect checksums&lt;br /&gt;
net.ipv4.conf.all.drop_unicast_in_l2_multicast = 1&lt;br /&gt;
net.ipv4.conf.default.drop_unicast_in_l2_multicast = 1&lt;br /&gt;
&lt;br /&gt;
# 13 Disable IPv6 forwarding&lt;br /&gt;
net.ipv6.conf.all.disable_ipv6 = 1&lt;br /&gt;
net.ipv6.conf.default.disable_ipv6 = 1&lt;br /&gt;
&lt;br /&gt;
# 14 Limit the maximum number of SYN packet retries&lt;br /&gt;
net.ipv4.tcp_synack_retries = 2&lt;br /&gt;
&lt;br /&gt;
# 15 Increase routing cache lifetime&lt;br /&gt;
net.ipv4.route.max_size = 32768&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== auditd rules config: ======&lt;br /&gt;
/etc/audit/rules.d/audit.rules&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
## Flush rules&lt;br /&gt;
-D&lt;br /&gt;
&lt;br /&gt;
## Buffers&lt;br /&gt;
-b 8192&lt;br /&gt;
--backlog_wait_time 60000&lt;br /&gt;
-f 1&lt;br /&gt;
&lt;br /&gt;
## Network audit&lt;br /&gt;
-a always,exit -F arch=b64 -S connect -F success=1 -k network_connect&lt;br /&gt;
-a always,exit -F arch=b64 -S accept4 -F success=1 -k network_accept&lt;br /&gt;
-a always,exit -F arch=b32 -S connect -F success=1 -k network_connect&lt;br /&gt;
-a always,exit -F arch=b32 -S accept4 -F success=1 -k network_accept&lt;br /&gt;
&lt;br /&gt;
## Logging execve commands&lt;br /&gt;
-a always,exit -F arch=b64 -S execve -F key=exec_log&lt;br /&gt;
&lt;br /&gt;
## Audit logins and sessions&lt;br /&gt;
-w /var/log/faillog -p wa -k logins&lt;br /&gt;
-w /var/log/lastlog -p wa -k logins&lt;br /&gt;
-w /var/run/utmp -p wa -k session&lt;br /&gt;
-w /var/log/wtmp -p wa -k session&lt;br /&gt;
-w /var/log/btmp -p wa -k session&lt;br /&gt;
&lt;br /&gt;
## sudo / su&lt;br /&gt;
-w /etc/sudoers -p wa -k sudo&lt;br /&gt;
-w /etc/sudoers.d/ -p wa -k sudo&lt;br /&gt;
-w /bin/su -p x -k su_cmd&lt;br /&gt;
&lt;br /&gt;
## Account and configuration changes&lt;br /&gt;
-w /etc/passwd -p wa -k identity&lt;br /&gt;
-w /etc/group -p wa -k identity&lt;br /&gt;
-w /etc/shadow -p wa -k identity&lt;br /&gt;
-w /etc/gshadow -p wa -k identity&lt;br /&gt;
-w /etc/hosts -p wa -k system_conf&lt;br /&gt;
-w /etc/hostname -p wa -k system_conf&lt;br /&gt;
-w /etc/resolv.conf -p wa -k system_conf&lt;br /&gt;
-w /etc/issue -p wa -k system_conf&lt;br /&gt;
-w /etc/network/ -p wa -k system_conf&lt;br /&gt;
&lt;br /&gt;
## Time changes&lt;br /&gt;
-a always,exit -F arch=b64 -S adjtimex -S settimeofday -S clock_settime -F key=time_change&lt;br /&gt;
-a always,exit -F arch=b32 -S adjtimex -S settimeofday -S stime -S clock_settime -F key=time_change&lt;br /&gt;
&lt;br /&gt;
## Audit SSH connections and changes&lt;br /&gt;
-w /etc/ssh/sshd_config -p wa -k ssh_config_change&lt;br /&gt;
-w /var/log/auth.log -p wa -k ssh_login&lt;br /&gt;
&lt;br /&gt;
## Audit usage of remote tools (e.g., SSH, netcat)&lt;br /&gt;
-a always,exit -F arch=b64 -S execve -F exe=/usr/bin/ssh -k ssh_process&lt;br /&gt;
-a always,exit -F arch=b64 -S execve -F exe=/usr/bin/nc -k nc_process&lt;br /&gt;
-a always,exit -F arch=b32 -S execve -F exe=/usr/bin/ssh -k ssh_process&lt;br /&gt;
-a always,exit -F arch=b32 -S execve -F exe=/usr/bin/nc -k nc_process&lt;br /&gt;
&lt;br /&gt;
## Audit privileged access&lt;br /&gt;
-a always,exit -F arch=b64 -S setuid -S setgid -k privilege_escalation&lt;br /&gt;
-a always,exit -F arch=b32 -S setuid -S setgid -k privilege_escalation&lt;br /&gt;
-w /etc/sudoers -p wa -k sudoers_changes&lt;br /&gt;
-w /etc/sudoers.d/ -p wa -k sudoers_changes&lt;br /&gt;
-w /bin/sudo -p x -k sudo_command&lt;br /&gt;
&lt;br /&gt;
## Monitor credential changes&lt;br /&gt;
#-w /root/.ssh/ -p wa -k ssh_keys&lt;br /&gt;
#-w /home/*/.ssh/ -p wa -k ssh_keys&lt;br /&gt;
&lt;br /&gt;
## Audit use of remote network services&lt;br /&gt;
-a always,exit -F arch=b64 -S socket -F success=1 -k socket_connect&lt;br /&gt;
-a always,exit -F arch=b32 -S socket -F success=1 -k socket_connect&lt;br /&gt;
&lt;br /&gt;
# Log package installation and removal via dpkg&lt;br /&gt;
-w /usr/bin/dpkg -p x&lt;br /&gt;
-w /usr/sbin/apt-get -p x&lt;br /&gt;
-w /usr/bin/apt -p x&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;This article was written by blackcat568 on the forums: https://forums.debian.net/viewtopic.php?t=164131, it is initially shared on the Debian Wiki: https://wiki.debian.org/Security/ProtectingAgainstTargetedAttacks&lt;br /&gt;
[[index.php?title=Category:HowTo]]&lt;br /&gt;
[[index.php?title=Category:Hardening]]&lt;br /&gt;
[[index.php?title=Category:Security]]&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Security_Hardening_for_Debian_Users:_Protecting_Against_Targeted_Attacks&amp;diff=110</id>
		<title>Security Hardening for Debian Users: Protecting Against Targeted Attacks</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Security_Hardening_for_Debian_Users:_Protecting_Against_Targeted_Attacks&amp;diff=110"/>
		<updated>2025-12-13T03:12:26Z</updated>

		<summary type="html">&lt;p&gt;Donald: Undo revision 109 by Donald (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Security Hardening for Debian Users: Protecting Against Targeted Attacks ==&lt;br /&gt;
&lt;br /&gt;
==== Cybersecurity Measures Against Targeted Attacks ====&lt;br /&gt;
&lt;br /&gt;
* This guide is based on personal experience with targeted attacks originating from state-sponsored actors associated with a totalitarian regime.&lt;br /&gt;
&lt;br /&gt;
* The goal is to help users strengthen the security posture of Linux systems against advanced persistent threats.&lt;br /&gt;
* This article is intended for private users, owners of laptops and desktop computers, as well as administrators of small private servers. Corporate network security topics are not covered here.&lt;br /&gt;
* Likewise, this article does not address social engineering, psychological, legal, physical, or other important aspects of targeted attacks. It focuses exclusively on the cybersecurity aspects of Linux-based systems.&lt;br /&gt;
&lt;br /&gt;
==== Description of the Threat ====&lt;br /&gt;
Since 2011 (for over 14 years), the author has been targeted by a complex set of attacks that include system intrusions, surveillance, psychological pressure, and blackmail based on personal data obtained through such surveillance.&lt;br /&gt;
&lt;br /&gt;
Attackers can gain full control over a PC and steal personal information, often leaving almost no traces. Occasionally, such activity manifests as sudden cursor movements, system slowdowns, or unexplained network activity.&lt;br /&gt;
&lt;br /&gt;
They also monitor Internet traffic and can compromise passwords when those passwords are weak or when two-factor authentication is not enabled.&lt;br /&gt;
&lt;br /&gt;
Please note that such targeted attacks against individuals — both within and outside of authoritarian states — are a real and growing threat. What author describes is not speculation, but the result of many years of firsthand experience resisting cyberattacks and attempted extortion.&lt;br /&gt;
&lt;br /&gt;
There is a widespread belief that targeted cyberattacks affect only a very small fraction of users — around 0.01% or even less — and that for the overwhelming majority of people such risks are not a real concern. However, events of recent years demonstrate that the level of cyber threats is significantly higher than commonly assumed and is often underestimated by both professionals and ordinary users.&lt;br /&gt;
&lt;br /&gt;
The author, as a citizen of a country that has become a zone of increased interest from external actors employing a wide range of means — from traditional instruments of influence to cyber technologies aimed at compromising and monitoring private devices and servers — considers it necessary to draw the attention of the international community to this issue.&lt;br /&gt;
&lt;br /&gt;
Raising awareness about cyber threats and improving the understanding of modern attack methods are essential steps toward strengthening digital security, protecting personal data, and maintaining trust in open-source infrastructure.&lt;br /&gt;
&lt;br /&gt;
==== Countermeasures ====&lt;br /&gt;
&lt;br /&gt;
===== Tested environment: Debian 12 (Bookworm), kernel 6.1.0-34-amd64 (April 2025 build). =====&lt;br /&gt;
Since early 2025, the author has fully switched to Linux, using the Debian distribution. The author is writing here because, among Linux users, it is possible to discuss real protective measures and digital independence.&lt;br /&gt;
&lt;br /&gt;
At the same time, please share this information with Windows users, explaining how vulnerable Windows systems are to hacking and why switching to Ubuntu or another Linux distribution is a much safer choice.&lt;br /&gt;
&lt;br /&gt;
Linux, due to its modular architecture and open-source nature, enables deeper and more flexible security configurations.&lt;br /&gt;
&lt;br /&gt;
Another significant risk factor is the practice of installing Windows, Microsoft Office, or other user applications from pirated sources. Such unofficial builds &amp;lt;nowiki&amp;gt;&#039;&#039;&#039;may contain embedded backdoors, trojans, rootkits, or other forms of malware&#039;&#039;&#039;&amp;lt;/nowiki&amp;gt;, which substantially weaken the security of a Windows system and make various types of attacks easier for an adversary.&lt;br /&gt;
&lt;br /&gt;
Debian and most Linux distributions (Ubuntu, Linux Mint, Mageia, Fedora, etc.) are distributed free of charge and rely on official repositories for downloading and installing software. Packages in these repositories undergo strict verification, which greatly reduces the likelihood of malicious code and provides a more predictable and transparent security model.&lt;br /&gt;
&lt;br /&gt;
However, installing Debian or any other Linux distribution alone does not guarantee protection from surveillance — proper configuration is essential.&lt;br /&gt;
&lt;br /&gt;
The adversary type described in this article is experienced and resourceful. Such actors develop software capable of bypassing default configurations of operating systems — both Linux and Windows. This is profitable: a successful &amp;quot;universal key&amp;quot; or exploit that works against many default deployments can grant stealthy access to a large number of machines.&lt;br /&gt;
&lt;br /&gt;
At the same time, creating such a universal key for systems with complex, individualized security configurations is substantially harder and often impractical: each machine will have a different set of rules, profiles and policies, and the exploit must be adapted per configuration. That significantly raises the attacker&#039;s cost.&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Conclusion: do not leave a freshly installed system with default security settings. Apply deliberate, deep, and individualized hardening — least-privilege policies, properly configured access control mechanisms (AppArmor/SELinux), strict firewall rules, verified update policies and monitoring. This increases the attacker&#039;s cost and complexity and makes automated widespread exploitation much harder.&#039;&#039;&#039;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Carefully and conscientiously harden your system security settings. Prepare the system not only to withstand common, predictable attacks (for example, unauthorized access to a banking account), but also to detect and mitigate non-standard attacks (like those described in this article) so they do not catch you off guard.&lt;br /&gt;
&lt;br /&gt;
Apply the most secure configurations available, especially if you store sensitive personal or professional information.&lt;br /&gt;
&lt;br /&gt;
Below, the author shares methods for configuring Debian 12 (and other Linux systems) to strengthen protection against hacking and unauthorized access.&lt;br /&gt;
&lt;br /&gt;
This article is written both as a security recommendation and as a request for advice on improving system configuration.&lt;br /&gt;
&lt;br /&gt;
If you have suggestions for enhancing the existing configurations or additional cybersecurity recommendations that may not have been considered in this message, the author would greatly appreciate your expertise and feedback.&lt;br /&gt;
&lt;br /&gt;
==== Practical Instructions ====&lt;br /&gt;
&lt;br /&gt;
===== Linux system hardening recommendations: =====&lt;br /&gt;
&lt;br /&gt;
# 1. Use full-disk encryption. If your PC or laptop is stolen, the attacker will face significant difficulties in gaining access to any private data stored on your hard drive.&lt;br /&gt;
# If the OS is installed on a desktop that does not serve as a server, disable and remove all remote access services. They should not merely be password-protected or disabled — completely remove them from the system. If you do need a remote-access service, use strong passwords of 16–20 characters. Also, use complex passwords for both the regular user session and the superuser account — at least 16 characters for the user and at least 20 for the superuser. &amp;lt;blockquote&amp;gt;Important: Do not hesitate to type long passwords. Apply them even if your PC or server is physically isolated. If access to the user or superuser session is not protected by strong, lengthy passwords, the entire Linux security architecture becomes meaningless.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
# Use only official repositories of your distribution to install software.  Whenever possible, install packages via the package manager (apt/apt-get in Debian) from official repositories — this ensures automatic security updates and integrity verification of packages. If you connect a third-party repository, make sure it is trustworthy: check who maintains it, whether packages are signed with a GPG key, if it is available via HTTPS, and whenever possible, import and verify trusted keys manually. When installing software manually (downloading .deb packages, binaries, or source code), always verify the source: compare checksums (SHA256), verify digital signatures, and follow official installation instructions from the software provider.&lt;br /&gt;
# Avoid using the superuser account or sudo without a clear necessity — and never execute arbitrary scripts with sudo. Always carefully review commands before running them in the terminal. The terminal is a powerful administrative tool, but in inexperienced hands it can cause serious system damage or compromise. Practical recommendations:&lt;br /&gt;
## Always read a script fully before running it (less script.sh, cat script.sh).&lt;br /&gt;
## Never paste commands from untrusted or unverified sources into the terminal.&lt;br /&gt;
## Use sudo only when truly necessary; consider using sudoedit for editing configuration files.&lt;br /&gt;
## Follow the principle of least privilege — create separate user accounts and limit access rights where possible Important: Improper or careless use of sudo and manual installation of software from untrusted sources are common causes of data leaks, data loss, and system compromise. Always test any configuration changes in an isolated environment before applying them on a production machine.&lt;br /&gt;
# Use application confinement tools such as AppArmor; do not leave profiles at their defaults — customize and harden profiles to match your actual workflows. You may also consider switching to SELinux. If you have difficulty configuring AppArmor or SELinux, seek help from specialists or use AI-based tools. My SELinux configuration is attached below (I use SELinux on Debian 12 — it works reliably).&lt;br /&gt;
# Use advanced network filtering settings: iptables or nftables, or a commercial firewall. My nftables config is attached below.&lt;br /&gt;
# Configure kernel parameters for maximum security (sysctl hardening). My 99-protect.conf config is attached below.&lt;br /&gt;
# Use IDS/IPS systems — intrusion detection and prevention systems (examples: audit, OSSES, Wazus, AIDE). These tools can detect and log attacker activity within your system or network, as well as block malicious actions (logging each blocking event). My auditd config is attached below.&lt;br /&gt;
# Test the system for vulnerabilities using scanners (for example, DebPkg:lynis, OpenVAS, Nessus). Test results can be analyzed using tools and, if necessary, AI — provide the logs for review.&lt;br /&gt;
# If you suspect that you are being targeted by a focused or targeted attack, start periodically capturing network traffic using tools such as tcpdump, Wireshark, or Zeek. The collected logs can then be sent to security specialists or AI-based analysis tools for further investigation. These measures will significantly complicate a hacker’s task and make the unnoticed collection of personal data more difficult.&lt;br /&gt;
# Follow the principle of Attack Surface Reduction (or Occam&#039;s_razor) — disable all unnecessary daemons, services, and processes that are not required for your workflow.&lt;br /&gt;
## If there is a possibility you might need a service, daemon, or process in the future, disable it and remove it from autostart.&lt;br /&gt;
## If you are certain you will never use it, remove it completely from the system.&lt;br /&gt;
## This practice reduces potential attack vectors and strengthens overall system security.&lt;br /&gt;
## Before removing unnecessary daemons, services, or applications, make sure that their removal will not break dependencies with other system components or applications. Always create a full system backup before making any significant configuration changes or modifications.&lt;br /&gt;
# Perform regular antivirus and anti-rootkit scans of the system. In targeted attacks, adversaries typically rely on passive or covert methods — such as data interception, monitoring, traffic analysis, and minimal system interference that leaves few or no traces. Nevertheless, periodic antivirus and anti-rootkit scanning remains a valuable preventive measure, helping to detect known threats in time and maintain the overall security posture of the system.&lt;br /&gt;
# Always record every change you make in system and application configuration files. Add the note as a comment directly in the configuration file — either above the modified line or after it. Format: # YYYY-MM-DD HH:MM, short description of the change, reason Example: Editing `sshd_config` to disable root login via SSH:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
bash&lt;br /&gt;
&lt;br /&gt;
PermitRootLogin no&lt;br /&gt;
# 2025-11-09 14:35, root login via SSH disabled, system security enhancement&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Why it matters:&lt;br /&gt;
&lt;br /&gt;
* Allows you to quickly understand when and why a change was made.&lt;br /&gt;
* Helps troubleshoot future issues — you can easily identify which change may have caused a failure or conflict.&lt;br /&gt;
* Simplifies system audits and security reviews.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Related Aspects of Internet Security&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are aspects of Internet security which, if neglected, can significantly reduce or completely nullify all your efforts in configuring and securing your operating system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Enable two-factor authentication (2FA) on all your online accounts (email, social networks, etc.) — this means confirming your login through a phone call, SMS, a one-time code in a mobile authenticator app (see [[wikipedia:Authenticator_app|Authenticator_app]]), or a hardware security key such as a [[wikipedia:YubiKey|YubiKey]].&lt;br /&gt;
&lt;br /&gt;
This is a critical cybersecurity measure — neglecting it can completely undermine all your efforts in configuring a secure Linux system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The YubiKey hardware authenticator (USB/NFC key) offers the following advantages:&lt;br /&gt;
&lt;br /&gt;
* YubiKey helps protect against phishing because the device verifies the website domain and will not work on fake or look-alike sites.&lt;br /&gt;
* It is virtually impossible to hack remotely or over the network, unlike apps, if your phone or backup password is compromised.&lt;br /&gt;
* Additionally, YubiKey is not vulnerable to SIM-swap attacks like SMS-based 2FA, as it is not tied to a phone number. For now, it is one of the most reliable hardware-based options for two-factor authentication.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Using VPN to improve privacy and security&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;If you are a private user&#039;&#039;, you can also configure a system-wide VPN (for example, ProtonVPN) so that all device traffic is routed through it — not only browser traffic or traffic from specific applications.&lt;br /&gt;
&lt;br /&gt;
Enable the “killswitch” mode and disable it only when necessary, re-enabling it immediately afterwards.&lt;br /&gt;
&lt;br /&gt;
It is also recommended to periodically change VPN servers, doing so at different and unpredictable intervals.&lt;br /&gt;
&lt;br /&gt;
Using a VPN increases your privacy: all of your traffic will be encrypted from observers on your local network and from your internet service provider. This makes it more difficult for an attacker to apply certain social-engineering methods based on traffic analysis, and it also helps protect your privacy in the event that your provider’s infrastructure is compromised.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;If you own a server&#039;&#039; and want access to it to be available only to trusted private or legal entities, while also increasing its protection against unauthorized access, you can configure the server so that SSH and other internal services are accessible exclusively through OpenVPN using TLS authentication (tls-auth / tls-crypt) and unique client certificates instead of passwords.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Actively study and apply artificial intelligence to improve security configurations in Debian and other Linux distributions, as well as to address related cybersecurity tasks. A lack of knowledge often becomes the weakest link; AI can provide accurate, structured recommendations interactively and help automate repetitive or complex operations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. If privacy is a priority, consider reducing reliance on the Google ecosystem and switching to more privacy-focused alternatives (for example, proton.me and similar services). Google provides very strong security, but its services collect extensive telemetry for analysis. While this data is encrypted and not accessible to attackers, it may still be undesirable for users who value strict privacy.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Always verify AI-generated recommendations before applying them in production environments. Test any changes in an isolated system, review generated commands or configurations, and ensure that suggestions align with your threat model and security architecture.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;In practice, users who effectively leverage AI tools are significantly better prepared, and the adoption of such technologies makes malicious activity considerably more difficult for attackers.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Note:&#039;&#039;&#039; Artificial intelligence tools are mentioned here as optional technical aids, not as an endorsement of any specific service or vendor.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5. It is also important to consider the possibility of hardware-level attacks.&lt;br /&gt;
&lt;br /&gt;
Although such attacks are significantly less common and typically require more resources than software-based attacks, they remain a potential threat. In certain scenarios, an adversary may exploit vulnerabilities in device firmware or conduct a combined attack targeting both software and hardware layers. Examples include remote injection of malicious code into the firmware of a motherboard, router, optical modem, or other hardware components.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If, after a thorough software-level audit, a security issue remains unresolved, it is advisable &amp;lt;nowiki&amp;gt;&#039;&#039;&#039;&amp;lt;/nowiki&amp;gt;to perform a hardware-level assessment&amp;lt;nowiki&amp;gt;&#039;&#039;&#039;&amp;lt;/nowiki&amp;gt; as well, including verification of device firmware integrity and configuration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;And most importantly — give up the illusion of complete security. We live in conditions of a severe information war, and everyone must make efforts so that malicious actors cannot freely spy on desktops and servers.&#039;&#039;&#039;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Examples of Deep Custom Security Configurations&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Below are examples of strong, individualized configurations for &#039;&#039;&#039;SELinux&#039;&#039;&#039;, &#039;&#039;&#039;nftables&#039;&#039;&#039;, &#039;&#039;&#039;sysctl&#039;&#039;&#039; and &#039;&#039;&#039;auditd&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
These are not universal templates, but references illustrating advanced system hardening.&lt;br /&gt;
&lt;br /&gt;
====== SELinux config: ======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;terminfo&amp;quot;&amp;gt;&lt;br /&gt;
root@user:/home/user# sestatus&lt;br /&gt;
SELinux status:                 enabled&lt;br /&gt;
SELinuxfs mount:                /sys/fs/selinux&lt;br /&gt;
SELinux root directory:         /etc/selinux&lt;br /&gt;
Loaded policy name:             default&lt;br /&gt;
Current mode:                   enforcing&lt;br /&gt;
Mode from config file:          enforcing&lt;br /&gt;
Policy MLS status:              enabled&lt;br /&gt;
Policy deny_unknown status:     allowed&lt;br /&gt;
Memory protection checking:     actual (secure)&lt;br /&gt;
Max kernel policy version:      33&lt;br /&gt;
root@user:/home/user# sestatus -v&lt;br /&gt;
SELinux status:                 enabled&lt;br /&gt;
SELinuxfs mount:                /sys/fs/selinux&lt;br /&gt;
SELinux root directory:         /etc/selinux&lt;br /&gt;
Loaded policy name:             default&lt;br /&gt;
Current mode:                   enforcing&lt;br /&gt;
Mode from config file:          enforcing&lt;br /&gt;
Policy MLS status:              enabled&lt;br /&gt;
Policy deny_unknown status:     allowed&lt;br /&gt;
Memory protection checking:     actual (secure)&lt;br /&gt;
Max kernel policy version:      33&lt;br /&gt;
&lt;br /&gt;
Process contexts:&lt;br /&gt;
Current context:                unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023&lt;br /&gt;
Init context:                   system_u:system_r:init_t:s0&lt;br /&gt;
/sbin/agetty                    system_u:system_r:getty_t:s0&lt;br /&gt;
&lt;br /&gt;
File contexts:&lt;br /&gt;
Controlling terminal:           unconfined_u:object_r:user_devpts_t:s0&lt;br /&gt;
/etc/passwd                     system_u:object_r:etc_t:s0&lt;br /&gt;
/etc/shadow                     system_u:object_r:unlabeled_t:s0&lt;br /&gt;
/bin/bash                       system_u:object_r:shell_exec_t:s0&lt;br /&gt;
/bin/login                      system_u:object_r:login_exec_t:s0&lt;br /&gt;
/bin/sh                         system_u:object_r:bin_t:s0 -&amp;gt; system_u:object_r:shell_exec_t:s0&lt;br /&gt;
/sbin/agetty                    system_u:object_r:getty_exec_t:s0&lt;br /&gt;
/sbin/init                      system_u:object_r:bin_t:s0 -&amp;gt; system_u:object_r:init_exec_t:s0&lt;br /&gt;
/lib/ld-linux.so.2              system_u:object_r:lib_t:s0 -&amp;gt; system_u:object_r:ld_so_t:s0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== nftables config: ======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/sbin/nft -f&lt;br /&gt;
&lt;br /&gt;
flush ruleset&lt;br /&gt;
&lt;br /&gt;
table inet filter {&lt;br /&gt;
  &lt;br /&gt;
  # = Main chain policy =&lt;br /&gt;
  chain input {&lt;br /&gt;
    type filter hook input priority 0;&lt;br /&gt;
    policy drop;&lt;br /&gt;
&lt;br /&gt;
    # = Common rule set =&lt;br /&gt;
    # 🌀 Allow loopback interface (internal system processes)&lt;br /&gt;
    iif &amp;quot;lo&amp;quot; accept&lt;br /&gt;
&lt;br /&gt;
    # == 🔁 Allow established and related connections ==&lt;br /&gt;
    ct state established,related accept&lt;br /&gt;
&lt;br /&gt;
    # == 🔒 Limiting new connections from one IP (anti-DDoS) ==&lt;br /&gt;
    # == 🔒 Limit the rate of NEW connections per source IP (basic anti-DDoS protection) ==&lt;br /&gt;
    #    If you experience issues with slow or failed page loads in your browser,&lt;br /&gt;
    #    try increasing the limit, for example:&lt;br /&gt;
    #    ip saddr 0.0.0.0/0 ct state new limit rate 50/second burst 100 packets accept&lt;br /&gt;
    ip saddr 0.0.0.0/0 ct state new limit rate 25/second burst 50 packets accept&lt;br /&gt;
    ip saddr 0.0.0.0/0 ct state new log prefix &amp;quot;🔥 BAN: too many conn &amp;quot; flags all&lt;br /&gt;
    ip saddr 0.0.0.0/0 ct state new drop&lt;br /&gt;
&lt;br /&gt;
    # == 🛡️ Ping rate limiting ==&lt;br /&gt;
    ip protocol icmp icmp type echo-request limit rate 1/second accept&lt;br /&gt;
    ip protocol icmp icmp type echo-request log prefix &amp;quot;🔥 BAN: ICMP flood &amp;quot; flags all&lt;br /&gt;
    ip protocol icmp icmp type echo-request drop&lt;br /&gt;
&lt;br /&gt;
    # == 🚫 Blocking SSDP and mDNS (local broadcast discovery protocols) ==&lt;br /&gt;
    ip daddr 239.255.255.250 udp dport 1900 drop   # ❌ SSDP (UPnP/device discovery)&lt;br /&gt;
    ip daddr 224.0.0.251 udp dport 5353 drop       # ❌ mDNS (Bonjour, Avahi)&lt;br /&gt;
&lt;br /&gt;
    # == 🛑 Blocking NetBIOS and LLMNR (Windows/systemd internal LAN protocols) ==&lt;br /&gt;
    udp dport 137 drop    # ❌ NetBIOS Name Service (Windows network names)&lt;br /&gt;
    udp dport 138 drop    # ❌ NetBIOS Datagram Service (LAN name discovery)&lt;br /&gt;
    udp dport 5355 drop   # ❌ LLMNR (Link-Local Multicast Name Resolution)&lt;br /&gt;
&lt;br /&gt;
    # = Set of blocked IP addresses and ranges =&lt;br /&gt;
    &lt;br /&gt;
    # == 🧱 Blocking known botnets and proxy networks ==&lt;br /&gt;
    ip saddr {&lt;br /&gt;
      45.9.20.0/24,&lt;br /&gt;
      89.248.160.0/19,&lt;br /&gt;
      185.220.100.0/22,&lt;br /&gt;
      198.96.155.0/24,&lt;br /&gt;
      185.107.56.0/24,&lt;br /&gt;
      185.129.62.0/23&lt;br /&gt;
    } log prefix &amp;quot;🔥 BAN: known bots &amp;quot; flags all&lt;br /&gt;
    ip saddr {&lt;br /&gt;
      45.9.20.0/24,&lt;br /&gt;
      89.248.160.0/19,&lt;br /&gt;
      185.220.100.0/22,&lt;br /&gt;
      198.96.155.0/24,&lt;br /&gt;
      185.107.56.0/24,&lt;br /&gt;
      185.129.62.0/23&lt;br /&gt;
    } drop&lt;br /&gt;
&lt;br /&gt;
    # == 🚫 Blocking strange TCP flags (XMAS, NULL scans and others) ==&lt;br /&gt;
    tcp flags &amp;amp; (fin|syn|rst|psh|ack|urg) == 0 drop        # NULL scan&lt;br /&gt;
    tcp flags &amp;amp; (fin|psh|urg) == (fin|psh|urg) drop          # XMAS scan&lt;br /&gt;
    tcp flags &amp;amp; (fin|syn) == (fin|syn) drop                  # SYN-ACK scan&lt;br /&gt;
    tcp flags &amp;amp; (syn|rst|fin) == (syn|rst|fin) drop          # Xmas scan&lt;br /&gt;
    tcp flags &amp;amp; (syn|fin|rst|psh|ack) == (syn|rst|fin|ack) drop # Xmas scan&lt;br /&gt;
&lt;br /&gt;
    # == 🚫 Blocking fragmented packets — commonly used in filter evasion ==&lt;br /&gt;
    ip frag-off &amp;amp; 0x1fff != 0 drop&lt;br /&gt;
&lt;br /&gt;
    # == 🔒 Blocking spoofed IP packets ==&lt;br /&gt;
    ip saddr 127.0.0.0/8 drop          # localhost&lt;br /&gt;
    ip saddr 10.0.0.0/8 drop           # private network&lt;br /&gt;
    ip saddr 172.16.0.0/12 drop        # private network&lt;br /&gt;
    ip saddr 192.168.0.0/16 drop       # private network&lt;br /&gt;
    ip saddr 169.254.0.0/16 drop       # APIPA&lt;br /&gt;
    ip saddr 0.0.0.0/8 drop            # invalid address&lt;br /&gt;
    ip saddr 224.0.0.0/4 drop          # multicast&lt;br /&gt;
    ip saddr 240.0.0.0/5 drop          # reserved&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  # = Main chain policy =&lt;br /&gt;
  chain forward {&lt;br /&gt;
    type filter hook forward priority 0;&lt;br /&gt;
    policy accept;&lt;br /&gt;
    &lt;br /&gt;
    #  = Blocking various types of attacks =&lt;br /&gt;
    # Required in chain forward only if Docker or Oracle VirtualBox is present.&lt;br /&gt;
    # If needed — uncomment.&lt;br /&gt;
&lt;br /&gt;
    #  == 🔒 Limiting new connections from one IP (anti-DDoS) ==&lt;br /&gt;
    # ip saddr 0.0.0.0/0 ct state new limit rate 25/second burst 50 packets accept&lt;br /&gt;
    # ip saddr 0.0.0.0/0 ct state new log prefix &amp;quot;🔥 BAN: too many conn &amp;quot; flags all&lt;br /&gt;
    # ip saddr 0.0.0.0/0 ct state new drop&lt;br /&gt;
&lt;br /&gt;
    # == 🛡️ Ping rate limiting ==&lt;br /&gt;
    # ip protocol icmp icmp type echo-request limit rate 1/second accept&lt;br /&gt;
    # ip protocol icmp icmp type echo-request log prefix &amp;quot;🔥 BAN: ICMP flood &amp;quot; flags all&lt;br /&gt;
    # ip protocol icmp icmp type echo-request drop&lt;br /&gt;
&lt;br /&gt;
    # = Allowing required TCP/UDP ports and ranges =&lt;br /&gt;
&lt;br /&gt;
    # == Allow TCP ports required for application operation ==&lt;br /&gt;
    tcp dport {&lt;br /&gt;
      53,         # DNS — needed for domain name resolution&lt;br /&gt;
      80,         # HTTP — web traffic, updates and resource loading&lt;br /&gt;
      443,        # HTTPS — secure web traffic, VPN, browser&lt;br /&gt;
      12043,      # Custom 3D Application — specific client port&lt;br /&gt;
      13000-13050 # Custom 3D Application — dynamic client port range&lt;br /&gt;
    } accept&lt;br /&gt;
&lt;br /&gt;
    # == Allow UDP ports required for application operation ==&lt;br /&gt;
    udp dport {&lt;br /&gt;
      53,         # DNS — needed for domain name resolution&lt;br /&gt;
      443,        # HTTPS via QUIC/HTTP3, browser protocols&lt;br /&gt;
      3478,       # STUN/TURN — WebRTC and video calls&lt;br /&gt;
      3479-3481   # STUN/TURN — WebRTC and video calls&lt;br /&gt;
    } accept&lt;br /&gt;
&lt;br /&gt;
    # = Blocking dangerous and unnecessary TCP/UDP ports and ranges =&lt;br /&gt;
    &lt;br /&gt;
    # These blocklists are intended for a DESKTOP / workstation.&lt;br /&gt;
    # They block remote access, outdated services, proxies, DBs, IoT, and ports&lt;br /&gt;
    # often used by malware, scanners, and C2 infrastructures.&lt;br /&gt;
    #&lt;br /&gt;
    # ⚠ If you use the system as a SERVER, enable IP forwarding,&lt;br /&gt;
    # or run services with internal routing&lt;br /&gt;
    # (Docker NAT/bridge, VirtualBox host-only/bridged, VPN clients),&lt;br /&gt;
    # carefully review the blocked ports/ranges in the forward chain —&lt;br /&gt;
    # these services may need extra ports.&lt;br /&gt;
    # Adjust or comment out required items if necessary.&lt;br /&gt;
&lt;br /&gt;
    # == Blocking various suspicious TCP ports ==&lt;br /&gt;
    tcp dport {&lt;br /&gt;
    # === Remote access (high risk) ===&lt;br /&gt;
      22,     # SSH — common brute-force target&lt;br /&gt;
      23,     # Telnet — outdated, no encryption&lt;br /&gt;
      3389,   # RDP — Windows remote desktop&lt;br /&gt;
      5900,   # VNC — remote access, frequent vulnerabilities&lt;br /&gt;
    # === FTP / SMB / NetBIOS (unsafe file-sharing protocols) ===&lt;br /&gt;
      21,     # FTP — insecure protocol&lt;br /&gt;
      137,    # NetBIOS Name Service&lt;br /&gt;
      138,    # NetBIOS Datagram&lt;br /&gt;
      139,    # NetBIOS Session&lt;br /&gt;
      445,    # SMB/CIFS — common exploit target&lt;br /&gt;
    # === Databases (NEVER expose to the Internet) ===&lt;br /&gt;
      3306,   # MySQL/MariaDB&lt;br /&gt;
      1433,   # MS SQL Server&lt;br /&gt;
      1434,   # MS SQL Browser&lt;br /&gt;
    # === HTTP-alt/Proxy/Elasticsearch (exploited frequently) ===&lt;br /&gt;
      8080,   # HTTP proxy / web interfaces — often exposed accidentally&lt;br /&gt;
      9200,   # Elasticsearch API — full remote data access&lt;br /&gt;
    # === UPnP/IoT (insecure by design) ===&lt;br /&gt;
      1900,   # SSDP / UPnP&lt;br /&gt;
    # === Common for malware (RAT, C2, reverse shells) ===&lt;br /&gt;
      4444,   # Metasploit reverse shell&lt;br /&gt;
      5555,   # Android ADB / IoT botnets&lt;br /&gt;
      9001,   # Tor transport (used by malware)&lt;br /&gt;
      1234,   # Netcat / reverse connections&lt;br /&gt;
      1337,   # Common C2 port used by malware&lt;br /&gt;
    # === ⚠️ Scanner ports and potentially vulnerable services === &lt;br /&gt;
      1080,   # SOCKS proxy — used to bypass filtering&lt;br /&gt;
      3128,   # Squid proxy — may be abused as open proxy&lt;br /&gt;
      8000,   # Alternative HTTP ports, dev servers&lt;br /&gt;
      8888,   # Web interfaces, proxies, dev tools&lt;br /&gt;
      10000   # Webmin — remote admin panel, frequent attacks&lt;br /&gt;
    } drop&lt;br /&gt;
&lt;br /&gt;
    # == Blocking various suspicious UDP ports ==&lt;br /&gt;
    udp dport {&lt;br /&gt;
      161,    # SNMP — network monitoring; abused by attackers&lt;br /&gt;
      162     # SNMP Trap — also potentially vulnerable&lt;br /&gt;
    } drop&lt;br /&gt;
&lt;br /&gt;
    # Attention! Blocking wide port ranges — be careful!&lt;br /&gt;
    # Do not break system or application functionality!&lt;br /&gt;
    &lt;br /&gt;
    # == TCP port ranges not used by a workstation during transit routing ==&lt;br /&gt;
    # Blocked to prevent unwanted forwarding, hidden tunnels,&lt;br /&gt;
    # NAT evasion, parasitic flows, and potential forward-path attacks.&lt;br /&gt;
&lt;br /&gt;
    tcp dport {&lt;br /&gt;
      1024-2047,    # System/legacy services; rarely needed in forward&lt;br /&gt;
      2048-4095,    # Proprietary daemons; NFS (2049) — check if used&lt;br /&gt;
      4096-8191,    # Old VPNs, some games, P2P; rarely needed on desktop&lt;br /&gt;
      8192-12287,   # Alternative HTTP/proxy, multimedia; test as needed&lt;br /&gt;
      12288-16383,  # Media/VoIP (TCP fallback); may break calls&lt;br /&gt;
      16384-24575,  # RTP/WebRTC (TCP fallback); block unless AV needed&lt;br /&gt;
      24576-32767,  # Dynamic ranges for games/VPN; may cause issues&lt;br /&gt;
      32768-49151,  # Registered/ephemeral; risky — may break NAT, Docker, VM&lt;br /&gt;
      49152-65535   # High ephemeral; widely used by modern apps&lt;br /&gt;
    } drop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # == 🚫 Blocking UDP ports — high and dynamic ranges ==&lt;br /&gt;
    udp dport {&lt;br /&gt;
      1024-9999,     # low/mid ephemeral ports; used by trojans, P2P, games, VPN&lt;br /&gt;
      10000-65535    # high ephemeral; used by dynamic apps, VPN, Docker&lt;br /&gt;
    } drop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # = 🕷️ Suspicious IPs — large ranges often used by botnets, spam nets, and scanners =&lt;br /&gt;
    ip saddr {&lt;br /&gt;
      185.0.0.0/8,   # abused hosting and proxy networks&lt;br /&gt;
      37.0.0.0/8,    # cheap VPS, frequent scanning sources&lt;br /&gt;
      88.0.0.0/8,    # common brute-force and scanner range&lt;br /&gt;
      77.0.0.0/8,    # TOR/proxy nodes&lt;br /&gt;
      91.0.0.0/8     # botnets and “grey-zone” hosting&lt;br /&gt;
    } drop&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  chain output {&lt;br /&gt;
    # = Main chain policy =&lt;br /&gt;
    type filter hook output priority 0;&lt;br /&gt;
    policy accept;&lt;br /&gt;
&lt;br /&gt;
    #  = Blocking various types of attacks =&lt;br /&gt;
&lt;br /&gt;
    # == 🔒 Limiting new connections from a single IP (anti-DDoS) ==&lt;br /&gt;
    ip saddr 0.0.0.0/0 ct state new limit rate 25/second burst 50 packets accept&lt;br /&gt;
    ip saddr 0.0.0.0/0 ct state new log prefix &amp;quot;🔥 BAN: too many conn &amp;quot; flags all&lt;br /&gt;
    ip saddr 0.0.0.0/0 ct state new drop&lt;br /&gt;
&lt;br /&gt;
    # == 🛡️ Limiting ping requests ==&lt;br /&gt;
    ip protocol icmp icmp type echo-request limit rate 1/second accept&lt;br /&gt;
    ip protocol icmp icmp type echo-request log prefix &amp;quot;🔥 BAN: ICMP flood &amp;quot; flags all&lt;br /&gt;
    ip protocol icmp icmp type echo-request drop&lt;br /&gt;
    &lt;br /&gt;
    # = Allowing required TCP/UDP ports and ranges =&lt;br /&gt;
&lt;br /&gt;
    # == Allow TCP ports and ranges required for application functionality ==&lt;br /&gt;
    tcp dport {&lt;br /&gt;
    53,     # DNS client. Required for Internet to work: domain name resolution (UDP/TCP).&lt;br /&gt;
    80,     # HTTP traffic to unencrypted websites; apps may use it for API/redirects.&lt;br /&gt;
    443,    # HTTPS. Main port for all encrypted web traffic — browsers, API, VPN, updates.&lt;br /&gt;
    3306,   # MySQL client. Needed if you connect to MySQL.&lt;br /&gt;
    3478,   # STUN/TURN WebRTC. Needed for audio/video/Discord.&lt;br /&gt;
    3000,   # Node.js dev servers. Needed for development.&lt;br /&gt;
    3690,   # SVN. If you work with an old repository.&lt;br /&gt;
    4443,   # Alternative HTTPS (some APIs). Also used by some VPN/clients.&lt;br /&gt;
    12043,  # Required for Custom 3D Application.&lt;br /&gt;
    13000-13050   # Required for Custom 3D Application.&lt;br /&gt;
    } accept&lt;br /&gt;
  &lt;br /&gt;
    # == Allow UDP ports and ranges required for applications ==&lt;br /&gt;
    udp dport {&lt;br /&gt;
    443,    # Required for fast and stable operation of modern websites &lt;br /&gt;
            # (Google, YouTube, ChatGPT, Cloudflare)&lt;br /&gt;
    13000-13050   # Required for Custom 3D Application.&lt;br /&gt;
    } accept &lt;br /&gt;
&lt;br /&gt;
    # = Blocking potentially dangerous / unnecessary TCP/UDP ports =&lt;br /&gt;
&lt;br /&gt;
    # These blocks are intended for a DESKTOP / workstation.&lt;br /&gt;
    # ⚠ If you use the system as a SERVER —&lt;br /&gt;
    # adjust or comment out the required ports/ranges as needed.&lt;br /&gt;
&lt;br /&gt;
    # == Blocking various suspicious TCP ports ==&lt;br /&gt;
    tcp dport {&lt;br /&gt;
    # === Remote access (high-risk) ===&lt;br /&gt;
      22,     # SSH — target of brute-force attacks.&lt;br /&gt;
      23,     # Telnet — outdated, unencrypted.&lt;br /&gt;
      3389,   # RDP — Windows remote access.&lt;br /&gt;
      5900,   # VNC — remote access, often vulnerable.&lt;br /&gt;
    # === FTP / SMB / NetBIOS (dangerous file-sharing services) ===&lt;br /&gt;
      21,     # FTP — insecure protocol.&lt;br /&gt;
      137,    # NetBIOS Name Service.&lt;br /&gt;
      138,    # NetBIOS Datagram.&lt;br /&gt;
      139,    # NetBIOS Session.&lt;br /&gt;
      445,    # SMB/CIFS — frequent exploitation target.&lt;br /&gt;
    # === Databases (NEVER open to the Internet) ===&lt;br /&gt;
      3306,   # MySQL/MariaDB.&lt;br /&gt;
      1433,   # MS SQL Server.&lt;br /&gt;
      1434,   # MS SQL Browser.&lt;br /&gt;
    # === HTTP-alt/Proxy/Elasticsearch (dangerous, often attacked) ===&lt;br /&gt;
      8080,   # HTTP proxy / web interfaces — often exposed test interfaces.&lt;br /&gt;
      9200,   # Elasticsearch API — full remote access to data.&lt;br /&gt;
    # === UPnP/IoT (vulnerable by design) ===&lt;br /&gt;
      1900,   # SSDP / UPnP.&lt;br /&gt;
    # === Common malware ports (RAT, C2, reverse shells) ===&lt;br /&gt;
      4444,   # Metasploit reverse shell.&lt;br /&gt;
      5555,   # Android ADB / IoT botnets.&lt;br /&gt;
      9001,   # Tor transport (used by malware).&lt;br /&gt;
      1234,   # Netcat / reverse connections.&lt;br /&gt;
      1337,   # Common C2 malware port.&lt;br /&gt;
    # === ⚠️ Ports of scanners and potentially vulnerable services === &lt;br /&gt;
      1080,   # SOCKS proxy — often abused for bypassing filters.&lt;br /&gt;
      3128,   # Squid HTTP proxy — can be used as open proxy.&lt;br /&gt;
      8000,   # Alternative HTTP ports, web services — potentially vulnerable.&lt;br /&gt;
      8888,   # Alternative web interfaces — test and proxy ports.&lt;br /&gt;
      10000   # Webmin — web admin panel, target of attacks.&lt;br /&gt;
    } drop&lt;br /&gt;
&lt;br /&gt;
    # == Blocking various suspicious UDP ports ==&lt;br /&gt;
    udp dport {&lt;br /&gt;
      161,    # SNMP — network monitoring; can be abused by attackers.&lt;br /&gt;
      162     # SNMP Trap — same, potential vulnerability.&lt;br /&gt;
    } drop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # Warning! ⚠️ Be careful blocking wide port ranges! ⚠️&lt;br /&gt;
    # Do not break system or application functionality!&lt;br /&gt;
    # If you need a range — uncomment.&lt;br /&gt;
    # If you don’t — comment out.&lt;br /&gt;
&lt;br /&gt;
    #  == Blocking “dangerous” and desktop-unnecessary TCP port ranges ==&lt;br /&gt;
    tcp dport {&lt;br /&gt;
      1-1023,	    # 🛑 Privileged ports.&lt;br /&gt;
      1024-2047,	# r-commands (rlogin, rsh, rexec), old RPC, NFS, legacy daemons.&lt;br /&gt;
      2048-3071,    # Rare proprietary protocols and middleware.&lt;br /&gt;
      3072-4999,    # Mostly ports of legacy, server, corporate apps; &lt;br /&gt;
                    # rarely needed on workstations.&lt;br /&gt;
      5000-5999,    # Alternative services, old P2P/admin ports, rarely used on desktops.&lt;br /&gt;
      7000-7999,    # Alternative/test ports, often used by trojans.&lt;br /&gt;
      9000-9999,    # Web services, proxies, possible backdoor ports.&lt;br /&gt;
      10000-19998,  # Dynamic/high service ports; may be required by some apps like Custom 3D Application,&lt;br /&gt;
                    # but not needed by most desktop services.&lt;br /&gt;
      19999-32767   # Old ephemeral port range; used by P2P, games, some VPNs,&lt;br /&gt;
                    # but system services rarely use them.&lt;br /&gt;
    } drop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    #  == Blocking “dangerous” and desktop-unnecessary UDP port ranges ==&lt;br /&gt;
    udp dport {&lt;br /&gt;
      1024-2047,    # Old UNIX services, RPC, NFS, r-commands, legacy daemons.&lt;br /&gt;
                    # Usually safe to block.&lt;br /&gt;
      2048-4095,    # Rarely used standard ports, proprietary services.&lt;br /&gt;
                    # Usually safe to block.&lt;br /&gt;
      4096-8191,    # VPN, games, P2P, WebRTC, VoIP of some clients.&lt;br /&gt;
                    # Can block, but cautiously: may affect VPN/apps.&lt;br /&gt;
      8192-12287,   # QUIC/HTTP3, proxies, multimedia protocols.&lt;br /&gt;
                    # Might cause side effects; better test first.&lt;br /&gt;
      12288-16383,  # Old RTP/VoIP ranges and media streams.&lt;br /&gt;
                    # Can block, but might break video calls.&lt;br /&gt;
      16384-24575,  # Main RTP range (audio/video), WebRTC, VoIP.&lt;br /&gt;
                    # ❗ Do not block if you need video calls/WebRTC/VPN.&lt;br /&gt;
      24576-32767   # Dynamic ports for VPN, P2P, games, streaming data.&lt;br /&gt;
                    # ❗ May break VPN or some apps.&lt;br /&gt;
    } drop&lt;br /&gt;
&lt;br /&gt;
    # == 🕷️ Blocking suspicious IPs —&lt;br /&gt;
    # large ranges often used by botnets, spam networks, and scanners ==&lt;br /&gt;
    ip saddr {&lt;br /&gt;
      185.0.0.0/8,  # Abused hosting and proxy networks.&lt;br /&gt;
      37.0.0.0/8,   # Cheap VPS, scanning sources.&lt;br /&gt;
      88.0.0.0/8,   # Frequent brute-force and scanners.&lt;br /&gt;
      77.0.0.0/8,   # Massive TOR/proxy nodes.&lt;br /&gt;
      91.0.0.0/8    # Botnets and “grey” hosting.&lt;br /&gt;
    } drop&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== sysctl config: ======&lt;br /&gt;
kernel parameters configuration&lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.d/99-protect.conf&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# 1 Ignore ICMP on interfaces&lt;br /&gt;
net.ipv4.icmp_echo_ignore_all = 1&lt;br /&gt;
&lt;br /&gt;
# 2 Do not respond to ICMP broadcast (against Smurf attacks)&lt;br /&gt;
net.ipv4.icmp_echo_ignore_broadcasts = 1&lt;br /&gt;
&lt;br /&gt;
# 3 Enable SYN backlog reduction&lt;br /&gt;
net.ipv4.tcp_syncookies = 1&lt;br /&gt;
&lt;br /&gt;
# 4 Disable source routing&lt;br /&gt;
net.ipv4.conf.all.accept_source_route = 0&lt;br /&gt;
net.ipv4.conf.default.accept_source_route = 0&lt;br /&gt;
&lt;br /&gt;
# 5 Log packets with incorrect routing&lt;br /&gt;
net.ipv4.conf.all.log_martians = 1&lt;br /&gt;
net.ipv4.conf.default.log_martians = 1&lt;br /&gt;
&lt;br /&gt;
# 6 Disable ICMP Redirects&lt;br /&gt;
net.ipv4.conf.all.accept_redirects = 0&lt;br /&gt;
net.ipv4.conf.default.accept_redirects = 0&lt;br /&gt;
&lt;br /&gt;
# 7 Disable packet forwarding&lt;br /&gt;
net.ipv4.ip_forward = 0&lt;br /&gt;
&lt;br /&gt;
# 8 Disable IPv6 support&lt;br /&gt;
net.ipv4.conf.all.disable_ipv6 = 1&lt;br /&gt;
net.ipv4.conf.default.disable_ipv6 = 1&lt;br /&gt;
&lt;br /&gt;
# 9 Prevent sending TCP segments with null windows&lt;br /&gt;
net.ipv4.tcp_rfc1337 = 1&lt;br /&gt;
&lt;br /&gt;
# 10 Disable ARP filtering for automatic routing&lt;br /&gt;
net.ipv4.conf.all.arp_filter = 1&lt;br /&gt;
net.ipv4.conf.default.arp_filter = 1&lt;br /&gt;
&lt;br /&gt;
# 11 Limit the maximum size of the incoming TCP window&lt;br /&gt;
net.ipv4.tcp_rmem = 4096 87380 4194304&lt;br /&gt;
net.ipv4.tcp_wmem = 4096 65536 4194304&lt;br /&gt;
&lt;br /&gt;
# 12 Drop packets with incorrect checksums&lt;br /&gt;
net.ipv4.conf.all.drop_unicast_in_l2_multicast = 1&lt;br /&gt;
net.ipv4.conf.default.drop_unicast_in_l2_multicast = 1&lt;br /&gt;
&lt;br /&gt;
# 13 Disable IPv6 forwarding&lt;br /&gt;
net.ipv6.conf.all.disable_ipv6 = 1&lt;br /&gt;
net.ipv6.conf.default.disable_ipv6 = 1&lt;br /&gt;
&lt;br /&gt;
# 14 Limit the maximum number of SYN packet retries&lt;br /&gt;
net.ipv4.tcp_synack_retries = 2&lt;br /&gt;
&lt;br /&gt;
# 15 Increase routing cache lifetime&lt;br /&gt;
net.ipv4.route.max_size = 32768&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== auditd rules config: ======&lt;br /&gt;
/etc/audit/rules.d/audit.rules&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
## Flush rules&lt;br /&gt;
-D&lt;br /&gt;
&lt;br /&gt;
## Buffers&lt;br /&gt;
-b 8192&lt;br /&gt;
--backlog_wait_time 60000&lt;br /&gt;
-f 1&lt;br /&gt;
&lt;br /&gt;
## Network audit&lt;br /&gt;
-a always,exit -F arch=b64 -S connect -F success=1 -k network_connect&lt;br /&gt;
-a always,exit -F arch=b64 -S accept4 -F success=1 -k network_accept&lt;br /&gt;
-a always,exit -F arch=b32 -S connect -F success=1 -k network_connect&lt;br /&gt;
-a always,exit -F arch=b32 -S accept4 -F success=1 -k network_accept&lt;br /&gt;
&lt;br /&gt;
## Logging execve commands&lt;br /&gt;
-a always,exit -F arch=b64 -S execve -F key=exec_log&lt;br /&gt;
&lt;br /&gt;
## Audit logins and sessions&lt;br /&gt;
-w /var/log/faillog -p wa -k logins&lt;br /&gt;
-w /var/log/lastlog -p wa -k logins&lt;br /&gt;
-w /var/run/utmp -p wa -k session&lt;br /&gt;
-w /var/log/wtmp -p wa -k session&lt;br /&gt;
-w /var/log/btmp -p wa -k session&lt;br /&gt;
&lt;br /&gt;
## sudo / su&lt;br /&gt;
-w /etc/sudoers -p wa -k sudo&lt;br /&gt;
-w /etc/sudoers.d/ -p wa -k sudo&lt;br /&gt;
-w /bin/su -p x -k su_cmd&lt;br /&gt;
&lt;br /&gt;
## Account and configuration changes&lt;br /&gt;
-w /etc/passwd -p wa -k identity&lt;br /&gt;
-w /etc/group -p wa -k identity&lt;br /&gt;
-w /etc/shadow -p wa -k identity&lt;br /&gt;
-w /etc/gshadow -p wa -k identity&lt;br /&gt;
-w /etc/hosts -p wa -k system_conf&lt;br /&gt;
-w /etc/hostname -p wa -k system_conf&lt;br /&gt;
-w /etc/resolv.conf -p wa -k system_conf&lt;br /&gt;
-w /etc/issue -p wa -k system_conf&lt;br /&gt;
-w /etc/network/ -p wa -k system_conf&lt;br /&gt;
&lt;br /&gt;
## Time changes&lt;br /&gt;
-a always,exit -F arch=b64 -S adjtimex -S settimeofday -S clock_settime -F key=time_change&lt;br /&gt;
-a always,exit -F arch=b32 -S adjtimex -S settimeofday -S stime -S clock_settime -F key=time_change&lt;br /&gt;
&lt;br /&gt;
## Audit SSH connections and changes&lt;br /&gt;
-w /etc/ssh/sshd_config -p wa -k ssh_config_change&lt;br /&gt;
-w /var/log/auth.log -p wa -k ssh_login&lt;br /&gt;
&lt;br /&gt;
## Audit usage of remote tools (e.g., SSH, netcat)&lt;br /&gt;
-a always,exit -F arch=b64 -S execve -F exe=/usr/bin/ssh -k ssh_process&lt;br /&gt;
-a always,exit -F arch=b64 -S execve -F exe=/usr/bin/nc -k nc_process&lt;br /&gt;
-a always,exit -F arch=b32 -S execve -F exe=/usr/bin/ssh -k ssh_process&lt;br /&gt;
-a always,exit -F arch=b32 -S execve -F exe=/usr/bin/nc -k nc_process&lt;br /&gt;
&lt;br /&gt;
## Audit privileged access&lt;br /&gt;
-a always,exit -F arch=b64 -S setuid -S setgid -k privilege_escalation&lt;br /&gt;
-a always,exit -F arch=b32 -S setuid -S setgid -k privilege_escalation&lt;br /&gt;
-w /etc/sudoers -p wa -k sudoers_changes&lt;br /&gt;
-w /etc/sudoers.d/ -p wa -k sudoers_changes&lt;br /&gt;
-w /bin/sudo -p x -k sudo_command&lt;br /&gt;
&lt;br /&gt;
## Monitor credential changes&lt;br /&gt;
#-w /root/.ssh/ -p wa -k ssh_keys&lt;br /&gt;
#-w /home/*/.ssh/ -p wa -k ssh_keys&lt;br /&gt;
&lt;br /&gt;
## Audit use of remote network services&lt;br /&gt;
-a always,exit -F arch=b64 -S socket -F success=1 -k socket_connect&lt;br /&gt;
-a always,exit -F arch=b32 -S socket -F success=1 -k socket_connect&lt;br /&gt;
&lt;br /&gt;
# Log package installation and removal via dpkg&lt;br /&gt;
-w /usr/bin/dpkg -p x&lt;br /&gt;
-w /usr/sbin/apt-get -p x&lt;br /&gt;
-w /usr/bin/apt -p x&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;This article was written by blackcat568 on the forums: https://forums.debian.net/viewtopic.php?t=164131, it is initially shared on the Debian Wiki: https://wiki.debian.org/Security/ProtectingAgainstTargetedAttacks&lt;br /&gt;
[[Category:HowTo]]&lt;br /&gt;
[[Category:Hardening]]&lt;br /&gt;
[[Category:Security]]&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Security_Hardening_for_Debian_Users:_Protecting_Against_Targeted_Attacks&amp;diff=109</id>
		<title>Security Hardening for Debian Users: Protecting Against Targeted Attacks</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Security_Hardening_for_Debian_Users:_Protecting_Against_Targeted_Attacks&amp;diff=109"/>
		<updated>2025-12-13T03:11:09Z</updated>

		<summary type="html">&lt;p&gt;Donald: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Security Hardening for Debian Users: Protecting Against Targeted Attacks ==&lt;br /&gt;
&lt;br /&gt;
==== Cybersecurity Measures Against Targeted Attacks ====&lt;br /&gt;
&lt;br /&gt;
== &lt;br /&gt;
* This guide is based on personal experience with targeted attacks originating from state-sponsored actors associated with a totalitarian regime. &lt;br /&gt;
&lt;br /&gt;
* The goal is to help users strengthen the security posture of Linux systems against advanced persistent threats.&lt;br /&gt;
* This article is intended for private users, owners of laptops and desktop computers, as well as administrators of small private servers. Corporate network security topics are not covered here.&lt;br /&gt;
* Likewise, this article does not address social engineering, psychological, legal, physical, or other important aspects of targeted attacks. It focuses exclusively on the cybersecurity aspects of Linux-based systems.  ==&lt;br /&gt;
&lt;br /&gt;
==== Description of the Threat ====&lt;br /&gt;
&lt;br /&gt;
==  Since 2011 (for over 14 years), the author has been targeted by a complex set of attacks that include system intrusions, surveillance, psychological pressure, and blackmail based on personal data obtained through such surveillance. Attackers can gain full control over a PC and steal personal information, often leaving almost no traces. Occasionally, such activity manifests as sudden cursor movements, system slowdowns, or unexplained network activity. They also monitor Internet traffic and can compromise passwords when those passwords are weak or when two-factor authentication is not enabled. Please note that such targeted attacks against individuals — both within and outside of authoritarian states — are a real and growing threat. What author describes is not speculation, but the result of many years of firsthand experience resisting cyberattacks and attempted extortion. There is a widespread belief that targeted cyberattacks affect only a very small fraction of users — around 0.01% or even less — and that for the overwhelming majority of people such risks are not a real concern. However, events of recent years demonstrate that the level of cyber threats is significantly higher than commonly assumed and is often underestimated by both professionals and ordinary users. The author, as a citizen of a country that has become a zone of increased interest from external actors employing a wide range of means — from traditional instruments of influence to cyber technologies aimed at compromising and monitoring private devices and servers — considers it necessary to draw the attention of the international community to this issue. Raising awareness about cyber threats and improving the understanding of modern attack methods are essential steps toward strengthening digital security, protecting personal data, and maintaining trust in open-source infrastructure.  ==&lt;br /&gt;
&lt;br /&gt;
==== Countermeasures ====&lt;br /&gt;
===== Tested environment: Debian 12 (Bookworm), kernel 6.1.0-34-amd64 (April 2025 build). =====&lt;br /&gt;
&lt;br /&gt;
==  Since early 2025, the author has fully switched to Linux, using the Debian distribution. The author is writing here because, among Linux users, it is possible to discuss real protective measures and digital independence. At the same time, please share this information with Windows users, explaining how vulnerable Windows systems are to hacking and why switching to Ubuntu or another Linux distribution is a much safer choice. Linux, due to its modular architecture and open-source nature, enables deeper and more flexible security configurations. Another significant risk factor is the practice of installing Windows, Microsoft Office, or other user applications from pirated sources. Such unofficial builds &#039;&#039;&#039;may contain embedded backdoors, trojans, rootkits, or other forms of malware&#039;&#039;&#039;, which substantially weaken the security of a Windows system and make various types of attacks easier for an adversary. Debian and most Linux distributions (Ubuntu, Linux Mint, Mageia, Fedora, etc.) are distributed free of charge and rely on official repositories for downloading and installing software. Packages in these repositories undergo strict verification, which greatly reduces the likelihood of malicious code and provides a more predictable and transparent security model. However, installing Debian or any other Linux distribution alone does not guarantee protection from surveillance — proper configuration is essential. The adversary type described in this article is &#039;&#039;&#039;experienced and resourceful&#039;&#039;&#039;. Such actors develop software capable of bypassing default configurations of operating systems — both Linux and Windows. This is profitable: a successful &amp;quot;universal key&amp;quot; or exploit that works against many default deployments can grant stealthy access to a large number of machines.  At the same time, creating such a universal key for systems with complex, individualized security configurations is substantially harder and often impractical: each machine will have a different set of rules, profiles and policies, and the exploit must be adapted per configuration. That significantly raises the attacker&#039;s cost.&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Conclusion: do not leave a freshly installed system with default security settings. Apply deliberate, deep, and individualized hardening — least-privilege policies, properly configured access control mechanisms (AppArmor/SELinux), strict firewall rules, verified update policies and monitoring. This increases the attacker&#039;s cost and complexity and makes automated widespread exploitation much harder.&#039;&#039;&#039;&amp;lt;/blockquote&amp;gt;   Carefully and conscientiously harden your system security settings. Prepare the system not only to withstand common, predictable attacks (for example, unauthorized access to a banking account), but also to detect and mitigate non-standard attacks (like those described in this article) &#039;&#039;&#039;so they do not catch you off guard&#039;&#039;&#039;. Apply the most secure configurations available, especially if you store sensitive personal or professional information.   Below, the author shares methods for configuring Debian 12 (and other Linux systems) to strengthen protection against hacking and unauthorized access.   This article is written both as a security recommendation and as a request for advice on improving system configuration.   If you have suggestions for enhancing the existing configurations or additional cybersecurity recommendations that may not have been considered in this message, the author would greatly appreciate your expertise and feedback.  ==&lt;br /&gt;
&lt;br /&gt;
==== Practical Instructions ====&lt;br /&gt;
===== Linux system hardening recommendations: =====&lt;br /&gt;
&lt;br /&gt;
== &lt;br /&gt;
# 1. Use full-disk encryption. If your PC or laptop is stolen, the attacker will face significant difficulties in gaining access to any private data stored on your hard drive.&lt;br /&gt;
# If the OS is installed on a desktop that does not serve as a server, disable and remove all remote access services. They should not merely be password-protected or disabled — completely remove them from the system. If you do need a remote-access service, use strong passwords of 16–20 characters. Also, use complex passwords for both the regular user session and the superuser account — at least 16 characters for the user and at least 20 for the superuser.&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Important&#039;&#039;&#039;: Do not hesitate to type long passwords. Apply them even if your PC or server is physically isolated. If access to the user or superuser session is not protected by strong, lengthy passwords, the entire Linux security architecture becomes meaningless.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
# Use only official repositories of your distribution to install software.  Whenever possible, install packages via the package manager (apt/apt-get in Debian) from official repositories — this ensures automatic security updates and integrity verification of packages. If you connect a third-party repository, make sure it is trustworthy: check who maintains it, whether packages are signed with a GPG key, if it is available via HTTPS, and whenever possible, import and verify trusted keys manually. When installing software manually (downloading .deb packages, binaries, or source code), always verify the source: compare checksums (SHA256), verify digital signatures, and follow official installation instructions from the software provider.&lt;br /&gt;
# Avoid using the superuser account or sudo without a clear necessity — and never execute arbitrary scripts with sudo.  Always carefully review commands before running them in the terminal. The terminal is a powerful administrative tool, but in inexperienced hands it can cause serious system damage or compromise. Practical recommendations:&lt;br /&gt;
## Always read a script fully before running it (less script.sh, cat script.sh).&lt;br /&gt;
## Never paste commands from untrusted or unverified sources into the terminal.&lt;br /&gt;
## Use sudo only when truly necessary; consider using sudoedit for editing configuration files.&lt;br /&gt;
## Follow the principle of least privilege — create separate user accounts and limit access rights where possible Important: Improper or careless use of sudo and manual installation of software from untrusted sources are common causes of data leaks, data loss, and system compromise. Always test any configuration changes in an isolated environment before applying them on a production machine.&lt;br /&gt;
# Use application confinement tools such as AppArmor; do not leave profiles at their defaults — customize and harden profiles to match your actual workflows. You may also consider switching to SELinux. If you have difficulty configuring AppArmor or SELinux, seek help from specialists or use AI-based tools. My SELinux configuration is attached below (I use SELinux on Debian 12 — it works reliably).&lt;br /&gt;
# Use advanced network filtering settings: iptables or nftables, or a commercial firewall. (&#039;&#039;sample&#039;&#039; [https://archive.forums.debian.net/Security_Hardening_for_Debian_Users:_Protecting_Against_Targeted_Attacks#nftables_config: nftables config]&lt;br /&gt;
# Configure kernel parameters for maximum security (sysctl hardening). (&#039;&#039;sample&#039;&#039; [https://archive.forums.debian.net/Security_Hardening_for_Debian_Users:_Protecting_Against_Targeted_Attacks#sysctl_config: sysctl config])&lt;br /&gt;
# Use IDS/IPS systems — intrusion detection and prevention systems (examples: audit, OSSES, Wazus, AIDE). These tools can detect and log attacker activity within your system or network, as well as block malicious actions (logging each blocking event). (sample [https://archive.forums.debian.net/Security_Hardening_for_Debian_Users:_Protecting_Against_Targeted_Attacks#auditd_rules_config: auditd rules config]&lt;br /&gt;
# Test the system for vulnerabilities using scanners (for example, DebPkg:lynis, OpenVAS, Nessus). Test results can be analyzed using tools and, if necessary, AI — provide the logs for review.&lt;br /&gt;
# If you suspect that you are being targeted by a focused or targeted attack, start periodically capturing network traffic using tools such as tcpdump, Wireshark, or Zeek. The collected logs can then be sent to security specialists or AI-based analysis tools for further investigation. These measures will significantly complicate a hacker’s task and make the unnoticed collection of personal data more difficult.&lt;br /&gt;
# Follow the principle of Attack Surface Reduction (or Occam&#039;s_razor) — disable all unnecessary daemons, services, and processes that are not required for your workflow.&lt;br /&gt;
## If there is a possibility you might need a service, daemon, or process in the future, disable it and remove it from autostart.&lt;br /&gt;
## If you are certain you will never use it, remove it completely from the system.&lt;br /&gt;
## This practice reduces potential attack vectors and strengthens overall system security.&lt;br /&gt;
## Before removing unnecessary daemons, services, or applications, make sure that their removal will not break dependencies with other system components or applications. Always create a full system backup before making any significant configuration changes or modifications.&lt;br /&gt;
# Perform regular antivirus and anti-rootkit scans of the system. In targeted attacks, adversaries typically rely on passive or covert methods — such as data interception, monitoring, traffic analysis, and minimal system interference that leaves few or no traces. Nevertheless, periodic antivirus and anti-rootkit scanning remains a valuable preventive measure, helping to detect known threats in time and maintain the overall security posture of the system.&lt;br /&gt;
# Always record every change you make in system and application configuration files. Add the note as a comment directly in the configuration file — either above the modified line or after it. Format: # YYYY-MM-DD HH:MM, short description of the change, reason Example: Editing `sshd_config` to disable root login via SSH: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
bash&lt;br /&gt;
&lt;br /&gt;
PermitRootLogin no&lt;br /&gt;
# 2025-11-09 14:35, root login via SSH disabled, system security enhancement&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Why it matters: &lt;br /&gt;
&lt;br /&gt;
* Allows you to quickly understand when and why a change was made.&lt;br /&gt;
* Helps troubleshoot future issues — you can easily identify which change may have caused a failure or conflict.&lt;br /&gt;
* Simplifies system audits and security reviews.   &#039;&#039;&#039;Related Aspects of Internet Security&#039;&#039;&#039;    There are aspects of Internet security which, if neglected, can significantly reduce or completely nullify all your efforts in configuring and securing your operating system.    1. Enable two-factor authentication (2FA) on all your online accounts (email, social networks, etc.) — this means confirming your login through a phone call, SMS, a one-time code in a mobile authenticator app (see [[wikipedia:Authenticator_app|Authenticator_app]]), or a hardware security key such as a [[wikipedia:YubiKey|YubiKey]].   This is a critical cybersecurity measure — neglecting it can completely undermine all your efforts in configuring a secure Linux system.    The YubiKey hardware authenticator (USB/NFC key) offers the following advantages: &lt;br /&gt;
&lt;br /&gt;
* YubiKey helps protect against phishing because the device verifies the website domain and will not work on fake or look-alike sites.&lt;br /&gt;
* It is virtually impossible to hack remotely or over the network, unlike apps, if your phone or backup password is compromised.&lt;br /&gt;
* Additionally, YubiKey is not vulnerable to SIM-swap attacks like SMS-based 2FA, as it is not tied to a phone number. For now, it is one of the most reliable hardware-based options for two-factor authentication.    2. Using VPN to improve privacy and security   &#039;&#039;If you are a private user&#039;&#039;, you can also configure a system-wide VPN (for example, ProtonVPN) so that all device traffic is routed through it — not only browser traffic or traffic from specific applications.   Enable the “killswitch” mode and disable it only when necessary, re-enabling it immediately afterwards.   It is also recommended to periodically change VPN servers, doing so at different and unpredictable intervals.   Using a VPN increases your privacy: all of your traffic will be encrypted from observers on your local network and from your internet service provider. This makes it more difficult for an attacker to apply certain social-engineering methods based on traffic analysis, and it also helps protect your privacy in the event that your provider’s infrastructure is compromised.   &#039;&#039;If you own a server&#039;&#039; and want access to it to be available only to trusted private or legal entities, while also increasing its protection against unauthorized access, you can configure the server so that SSH and other internal services are accessible exclusively through OpenVPN using TLS authentication (tls-auth / tls-crypt) and unique client certificates instead of passwords.    3. Actively study and apply artificial intelligence to improve security configurations in Debian and other Linux distributions, as well as to address related cybersecurity tasks. A lack of knowledge often becomes the weakest link; AI can provide accurate, structured recommendations interactively and help automate repetitive or complex operations.    4. If privacy is a priority, consider reducing reliance on the Google ecosystem and switching to more privacy-focused alternatives (for example, proton.me and similar services). Google provides very strong security, but its services collect extensive telemetry for analysis. While this data is encrypted and not accessible to attackers, it may still be undesirable for users who value strict privacy.   &#039;&#039;Always verify AI-generated recommendations before applying them in production environments. Test any changes in an isolated system, review generated commands or configurations, and ensure that suggestions align with your threat model and security architecture.&#039;&#039;   &#039;&#039;In practice, users who effectively leverage AI tools are significantly better prepared, and the adoption of such technologies makes malicious activity considerably more difficult for attackers.&#039;&#039;   &#039;&#039;&#039;&#039;&#039;Note:&#039;&#039;&#039; Artificial intelligence tools are mentioned here as optional technical aids, not as an endorsement of any specific service or vendor.&#039;&#039;    5. It is also important to consider the possibility of hardware-level attacks.   Although such attacks are significantly less common and typically require more resources than software-based attacks, they remain a potential threat. In certain scenarios, an adversary may exploit vulnerabilities in device firmware or conduct a combined attack targeting both software and hardware layers. Examples include remote injection of malicious code into the firmware of a motherboard, router, optical modem, or other hardware components.   If, after a thorough software-level audit, a security issue remains unresolved, it is advisable &amp;lt;nowiki&amp;gt;&#039;&#039;&#039;&amp;lt;/nowiki&amp;gt;to perform a hardware-level assessment&amp;lt;nowiki&amp;gt;&#039;&#039;&#039;&amp;lt;/nowiki&amp;gt; as well, including verification of device firmware integrity and configuration. &amp;lt;blockquote&amp;gt;&#039;&#039;&#039;And most importantly — give up the illusion of complete security. We live in conditions of a severe information war, and everyone must make efforts so that malicious actors cannot freely spy on desktops and servers.&#039;&#039;&#039;&amp;lt;/blockquote&amp;gt;   &#039;&#039;&#039;Examples of Deep Custom Security Configurations&#039;&#039;&#039; Below are examples of strong, individualized configurations for &#039;&#039;&#039;SELinux&#039;&#039;&#039;, &#039;&#039;&#039;nftables&#039;&#039;&#039;, &#039;&#039;&#039;sysctl&#039;&#039;&#039; and &#039;&#039;&#039;auditd&#039;&#039;&#039;.   These are not universal templates, but references illustrating advanced system hardening.  ==&lt;br /&gt;
&lt;br /&gt;
====== SELinux config: ======&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;syntaxhighlight lang=&amp;quot;terminfo&amp;quot;&amp;gt;&lt;br /&gt;
root@user:/home/user# sestatus&lt;br /&gt;
SELinux status:                 enabled&lt;br /&gt;
SELinuxfs mount:                /sys/fs/selinux&lt;br /&gt;
SELinux root directory:         /etc/selinux&lt;br /&gt;
Loaded policy name:             default&lt;br /&gt;
Current mode:                   enforcing&lt;br /&gt;
Mode from config file:          enforcing&lt;br /&gt;
Policy MLS status:              enabled&lt;br /&gt;
Policy deny_unknown status:     allowed&lt;br /&gt;
Memory protection checking:     actual (secure)&lt;br /&gt;
Max kernel policy version:      33&lt;br /&gt;
root@user:/home/user# sestatus -v&lt;br /&gt;
SELinux status:                 enabled&lt;br /&gt;
SELinuxfs mount:                /sys/fs/selinux&lt;br /&gt;
SELinux root directory:         /etc/selinux&lt;br /&gt;
Loaded policy name:             default&lt;br /&gt;
Current mode:                   enforcing&lt;br /&gt;
Mode from config file:          enforcing&lt;br /&gt;
Policy MLS status:              enabled&lt;br /&gt;
Policy deny_unknown status:     allowed&lt;br /&gt;
Memory protection checking:     actual (secure)&lt;br /&gt;
Max kernel policy version:      33&lt;br /&gt;
&lt;br /&gt;
Process contexts:&lt;br /&gt;
Current context:                unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023&lt;br /&gt;
Init context:                   system_u:system_r:init_t:s0&lt;br /&gt;
/sbin/agetty                    system_u:system_r:getty_t:s0&lt;br /&gt;
&lt;br /&gt;
File contexts:&lt;br /&gt;
Controlling terminal:           unconfined_u:object_r:user_devpts_t:s0&lt;br /&gt;
/etc/passwd                     system_u:object_r:etc_t:s0&lt;br /&gt;
/etc/shadow                     system_u:object_r:unlabeled_t:s0&lt;br /&gt;
/bin/bash                       system_u:object_r:shell_exec_t:s0&lt;br /&gt;
/bin/login                      system_u:object_r:login_exec_t:s0&lt;br /&gt;
/bin/sh                         system_u:object_r:bin_t:s0 -&amp;gt; system_u:object_r:shell_exec_t:s0&lt;br /&gt;
/sbin/agetty                    system_u:object_r:getty_exec_t:s0&lt;br /&gt;
/sbin/init                      system_u:object_r:bin_t:s0 -&amp;gt; system_u:object_r:init_exec_t:s0&lt;br /&gt;
/lib/ld-linux.so.2              system_u:object_r:lib_t:s0 -&amp;gt; system_u:object_r:ld_so_t:s0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
====== nftables config: ======&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/sbin/nft -f&lt;br /&gt;
&lt;br /&gt;
flush ruleset&lt;br /&gt;
&lt;br /&gt;
table inet filter {&lt;br /&gt;
  &lt;br /&gt;
  # = Main chain policy =&lt;br /&gt;
  chain input {&lt;br /&gt;
    type filter hook input priority 0;&lt;br /&gt;
    policy drop;&lt;br /&gt;
&lt;br /&gt;
    # = Common rule set =&lt;br /&gt;
    # 🌀 Allow loopback interface (internal system processes)&lt;br /&gt;
    iif &amp;quot;lo&amp;quot; accept&lt;br /&gt;
&lt;br /&gt;
    # == 🔁 Allow established and related connections ==&lt;br /&gt;
    ct state established,related accept&lt;br /&gt;
&lt;br /&gt;
    # == 🔒 Limiting new connections from one IP (anti-DDoS) ==&lt;br /&gt;
    # == 🔒 Limit the rate of NEW connections per source IP (basic anti-DDoS protection) ==&lt;br /&gt;
    #    If you experience issues with slow or failed page loads in your browser,&lt;br /&gt;
    #    try increasing the limit, for example:&lt;br /&gt;
    #    ip saddr 0.0.0.0/0 ct state new limit rate 50/second burst 100 packets accept&lt;br /&gt;
    ip saddr 0.0.0.0/0 ct state new limit rate 25/second burst 50 packets accept&lt;br /&gt;
    ip saddr 0.0.0.0/0 ct state new log prefix &amp;quot;🔥 BAN: too many conn &amp;quot; flags all&lt;br /&gt;
    ip saddr 0.0.0.0/0 ct state new drop&lt;br /&gt;
&lt;br /&gt;
    # == 🛡️ Ping rate limiting ==&lt;br /&gt;
    ip protocol icmp icmp type echo-request limit rate 1/second accept&lt;br /&gt;
    ip protocol icmp icmp type echo-request log prefix &amp;quot;🔥 BAN: ICMP flood &amp;quot; flags all&lt;br /&gt;
    ip protocol icmp icmp type echo-request drop&lt;br /&gt;
&lt;br /&gt;
    # == 🚫 Blocking SSDP and mDNS (local broadcast discovery protocols) ==&lt;br /&gt;
    ip daddr 239.255.255.250 udp dport 1900 drop   # ❌ SSDP (UPnP/device discovery)&lt;br /&gt;
    ip daddr 224.0.0.251 udp dport 5353 drop       # ❌ mDNS (Bonjour, Avahi)&lt;br /&gt;
&lt;br /&gt;
    # == 🛑 Blocking NetBIOS and LLMNR (Windows/systemd internal LAN protocols) ==&lt;br /&gt;
    udp dport 137 drop    # ❌ NetBIOS Name Service (Windows network names)&lt;br /&gt;
    udp dport 138 drop    # ❌ NetBIOS Datagram Service (LAN name discovery)&lt;br /&gt;
    udp dport 5355 drop   # ❌ LLMNR (Link-Local Multicast Name Resolution)&lt;br /&gt;
&lt;br /&gt;
    # = Set of blocked IP addresses and ranges =&lt;br /&gt;
    &lt;br /&gt;
    # == 🧱 Blocking known botnets and proxy networks ==&lt;br /&gt;
    ip saddr {&lt;br /&gt;
      45.9.20.0/24,&lt;br /&gt;
      89.248.160.0/19,&lt;br /&gt;
      185.220.100.0/22,&lt;br /&gt;
      198.96.155.0/24,&lt;br /&gt;
      185.107.56.0/24,&lt;br /&gt;
      185.129.62.0/23&lt;br /&gt;
    } log prefix &amp;quot;🔥 BAN: known bots &amp;quot; flags all&lt;br /&gt;
    ip saddr {&lt;br /&gt;
      45.9.20.0/24,&lt;br /&gt;
      89.248.160.0/19,&lt;br /&gt;
      185.220.100.0/22,&lt;br /&gt;
      198.96.155.0/24,&lt;br /&gt;
      185.107.56.0/24,&lt;br /&gt;
      185.129.62.0/23&lt;br /&gt;
    } drop&lt;br /&gt;
&lt;br /&gt;
    # == 🚫 Blocking strange TCP flags (XMAS, NULL scans and others) ==&lt;br /&gt;
    tcp flags &amp;amp; (fin|syn|rst|psh|ack|urg) == 0 drop        # NULL scan&lt;br /&gt;
    tcp flags &amp;amp; (fin|psh|urg) == (fin|psh|urg) drop          # XMAS scan&lt;br /&gt;
    tcp flags &amp;amp; (fin|syn) == (fin|syn) drop                  # SYN-ACK scan&lt;br /&gt;
    tcp flags &amp;amp; (syn|rst|fin) == (syn|rst|fin) drop          # Xmas scan&lt;br /&gt;
    tcp flags &amp;amp; (syn|fin|rst|psh|ack) == (syn|rst|fin|ack) drop # Xmas scan&lt;br /&gt;
&lt;br /&gt;
    # == 🚫 Blocking fragmented packets — commonly used in filter evasion ==&lt;br /&gt;
    ip frag-off &amp;amp; 0x1fff != 0 drop&lt;br /&gt;
&lt;br /&gt;
    # == 🔒 Blocking spoofed IP packets ==&lt;br /&gt;
    ip saddr 127.0.0.0/8 drop          # localhost&lt;br /&gt;
    ip saddr 10.0.0.0/8 drop           # private network&lt;br /&gt;
    ip saddr 172.16.0.0/12 drop        # private network&lt;br /&gt;
    ip saddr 192.168.0.0/16 drop       # private network&lt;br /&gt;
    ip saddr 169.254.0.0/16 drop       # APIPA&lt;br /&gt;
    ip saddr 0.0.0.0/8 drop            # invalid address&lt;br /&gt;
    ip saddr 224.0.0.0/4 drop          # multicast&lt;br /&gt;
    ip saddr 240.0.0.0/5 drop          # reserved&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  # = Main chain policy =&lt;br /&gt;
  chain forward {&lt;br /&gt;
    type filter hook forward priority 0;&lt;br /&gt;
    policy accept;&lt;br /&gt;
    &lt;br /&gt;
    #  = Blocking various types of attacks =&lt;br /&gt;
    # Required in chain forward only if Docker or Oracle VirtualBox is present.&lt;br /&gt;
    # If needed — uncomment.&lt;br /&gt;
&lt;br /&gt;
    #  == 🔒 Limiting new connections from one IP (anti-DDoS) ==&lt;br /&gt;
    # ip saddr 0.0.0.0/0 ct state new limit rate 25/second burst 50 packets accept&lt;br /&gt;
    # ip saddr 0.0.0.0/0 ct state new log prefix &amp;quot;🔥 BAN: too many conn &amp;quot; flags all&lt;br /&gt;
    # ip saddr 0.0.0.0/0 ct state new drop&lt;br /&gt;
&lt;br /&gt;
    # == 🛡️ Ping rate limiting ==&lt;br /&gt;
    # ip protocol icmp icmp type echo-request limit rate 1/second accept&lt;br /&gt;
    # ip protocol icmp icmp type echo-request log prefix &amp;quot;🔥 BAN: ICMP flood &amp;quot; flags all&lt;br /&gt;
    # ip protocol icmp icmp type echo-request drop&lt;br /&gt;
&lt;br /&gt;
    # = Allowing required TCP/UDP ports and ranges =&lt;br /&gt;
&lt;br /&gt;
    # == Allow TCP ports required for application operation ==&lt;br /&gt;
    tcp dport {&lt;br /&gt;
      53,         # DNS — needed for domain name resolution&lt;br /&gt;
      80,         # HTTP — web traffic, updates and resource loading&lt;br /&gt;
      443,        # HTTPS — secure web traffic, VPN, browser&lt;br /&gt;
      12043,      # Custom 3D Application — specific client port&lt;br /&gt;
      13000-13050 # Custom 3D Application — dynamic client port range&lt;br /&gt;
    } accept&lt;br /&gt;
&lt;br /&gt;
    # == Allow UDP ports required for application operation ==&lt;br /&gt;
    udp dport {&lt;br /&gt;
      53,         # DNS — needed for domain name resolution&lt;br /&gt;
      443,        # HTTPS via QUIC/HTTP3, browser protocols&lt;br /&gt;
      3478,       # STUN/TURN — WebRTC and video calls&lt;br /&gt;
      3479-3481   # STUN/TURN — WebRTC and video calls&lt;br /&gt;
    } accept&lt;br /&gt;
&lt;br /&gt;
    # = Blocking dangerous and unnecessary TCP/UDP ports and ranges =&lt;br /&gt;
    &lt;br /&gt;
    # These blocklists are intended for a DESKTOP / workstation.&lt;br /&gt;
    # They block remote access, outdated services, proxies, DBs, IoT, and ports&lt;br /&gt;
    # often used by malware, scanners, and C2 infrastructures.&lt;br /&gt;
    #&lt;br /&gt;
    # ⚠ If you use the system as a SERVER, enable IP forwarding,&lt;br /&gt;
    # or run services with internal routing&lt;br /&gt;
    # (Docker NAT/bridge, VirtualBox host-only/bridged, VPN clients),&lt;br /&gt;
    # carefully review the blocked ports/ranges in the forward chain —&lt;br /&gt;
    # these services may need extra ports.&lt;br /&gt;
    # Adjust or comment out required items if necessary.&lt;br /&gt;
&lt;br /&gt;
    # == Blocking various suspicious TCP ports ==&lt;br /&gt;
    tcp dport {&lt;br /&gt;
    # === Remote access (high risk) ===&lt;br /&gt;
      22,     # SSH — common brute-force target&lt;br /&gt;
      23,     # Telnet — outdated, no encryption&lt;br /&gt;
      3389,   # RDP — Windows remote desktop&lt;br /&gt;
      5900,   # VNC — remote access, frequent vulnerabilities&lt;br /&gt;
    # === FTP / SMB / NetBIOS (unsafe file-sharing protocols) ===&lt;br /&gt;
      21,     # FTP — insecure protocol&lt;br /&gt;
      137,    # NetBIOS Name Service&lt;br /&gt;
      138,    # NetBIOS Datagram&lt;br /&gt;
      139,    # NetBIOS Session&lt;br /&gt;
      445,    # SMB/CIFS — common exploit target&lt;br /&gt;
    # === Databases (NEVER expose to the Internet) ===&lt;br /&gt;
      3306,   # MySQL/MariaDB&lt;br /&gt;
      1433,   # MS SQL Server&lt;br /&gt;
      1434,   # MS SQL Browser&lt;br /&gt;
    # === HTTP-alt/Proxy/Elasticsearch (exploited frequently) ===&lt;br /&gt;
      8080,   # HTTP proxy / web interfaces — often exposed accidentally&lt;br /&gt;
      9200,   # Elasticsearch API — full remote data access&lt;br /&gt;
    # === UPnP/IoT (insecure by design) ===&lt;br /&gt;
      1900,   # SSDP / UPnP&lt;br /&gt;
    # === Common for malware (RAT, C2, reverse shells) ===&lt;br /&gt;
      4444,   # Metasploit reverse shell&lt;br /&gt;
      5555,   # Android ADB / IoT botnets&lt;br /&gt;
      9001,   # Tor transport (used by malware)&lt;br /&gt;
      1234,   # Netcat / reverse connections&lt;br /&gt;
      1337,   # Common C2 port used by malware&lt;br /&gt;
    # === ⚠️ Scanner ports and potentially vulnerable services === &lt;br /&gt;
      1080,   # SOCKS proxy — used to bypass filtering&lt;br /&gt;
      3128,   # Squid proxy — may be abused as open proxy&lt;br /&gt;
      8000,   # Alternative HTTP ports, dev servers&lt;br /&gt;
      8888,   # Web interfaces, proxies, dev tools&lt;br /&gt;
      10000   # Webmin — remote admin panel, frequent attacks&lt;br /&gt;
    } drop&lt;br /&gt;
&lt;br /&gt;
    # == Blocking various suspicious UDP ports ==&lt;br /&gt;
    udp dport {&lt;br /&gt;
      161,    # SNMP — network monitoring; abused by attackers&lt;br /&gt;
      162     # SNMP Trap — also potentially vulnerable&lt;br /&gt;
    } drop&lt;br /&gt;
&lt;br /&gt;
    # Attention! Blocking wide port ranges — be careful!&lt;br /&gt;
    # Do not break system or application functionality!&lt;br /&gt;
    &lt;br /&gt;
    # == TCP port ranges not used by a workstation during transit routing ==&lt;br /&gt;
    # Blocked to prevent unwanted forwarding, hidden tunnels,&lt;br /&gt;
    # NAT evasion, parasitic flows, and potential forward-path attacks.&lt;br /&gt;
&lt;br /&gt;
    tcp dport {&lt;br /&gt;
      1024-2047,    # System/legacy services; rarely needed in forward&lt;br /&gt;
      2048-4095,    # Proprietary daemons; NFS (2049) — check if used&lt;br /&gt;
      4096-8191,    # Old VPNs, some games, P2P; rarely needed on desktop&lt;br /&gt;
      8192-12287,   # Alternative HTTP/proxy, multimedia; test as needed&lt;br /&gt;
      12288-16383,  # Media/VoIP (TCP fallback); may break calls&lt;br /&gt;
      16384-24575,  # RTP/WebRTC (TCP fallback); block unless AV needed&lt;br /&gt;
      24576-32767,  # Dynamic ranges for games/VPN; may cause issues&lt;br /&gt;
      32768-49151,  # Registered/ephemeral; risky — may break NAT, Docker, VM&lt;br /&gt;
      49152-65535   # High ephemeral; widely used by modern apps&lt;br /&gt;
    } drop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # == 🚫 Blocking UDP ports — high and dynamic ranges ==&lt;br /&gt;
    udp dport {&lt;br /&gt;
      1024-9999,     # low/mid ephemeral ports; used by trojans, P2P, games, VPN&lt;br /&gt;
      10000-65535    # high ephemeral; used by dynamic apps, VPN, Docker&lt;br /&gt;
    } drop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # = 🕷️ Suspicious IPs — large ranges often used by botnets, spam nets, and scanners =&lt;br /&gt;
    ip saddr {&lt;br /&gt;
      185.0.0.0/8,   # abused hosting and proxy networks&lt;br /&gt;
      37.0.0.0/8,    # cheap VPS, frequent scanning sources&lt;br /&gt;
      88.0.0.0/8,    # common brute-force and scanner range&lt;br /&gt;
      77.0.0.0/8,    # TOR/proxy nodes&lt;br /&gt;
      91.0.0.0/8     # botnets and “grey-zone” hosting&lt;br /&gt;
    } drop&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  chain output {&lt;br /&gt;
    # = Main chain policy =&lt;br /&gt;
    type filter hook output priority 0;&lt;br /&gt;
    policy accept;&lt;br /&gt;
&lt;br /&gt;
    #  = Blocking various types of attacks =&lt;br /&gt;
&lt;br /&gt;
    # == 🔒 Limiting new connections from a single IP (anti-DDoS) ==&lt;br /&gt;
    ip saddr 0.0.0.0/0 ct state new limit rate 25/second burst 50 packets accept&lt;br /&gt;
    ip saddr 0.0.0.0/0 ct state new log prefix &amp;quot;🔥 BAN: too many conn &amp;quot; flags all&lt;br /&gt;
    ip saddr 0.0.0.0/0 ct state new drop&lt;br /&gt;
&lt;br /&gt;
    # == 🛡️ Limiting ping requests ==&lt;br /&gt;
    ip protocol icmp icmp type echo-request limit rate 1/second accept&lt;br /&gt;
    ip protocol icmp icmp type echo-request log prefix &amp;quot;🔥 BAN: ICMP flood &amp;quot; flags all&lt;br /&gt;
    ip protocol icmp icmp type echo-request drop&lt;br /&gt;
    &lt;br /&gt;
    # = Allowing required TCP/UDP ports and ranges =&lt;br /&gt;
&lt;br /&gt;
    # == Allow TCP ports and ranges required for application functionality ==&lt;br /&gt;
    tcp dport {&lt;br /&gt;
    53,     # DNS client. Required for Internet to work: domain name resolution (UDP/TCP).&lt;br /&gt;
    80,     # HTTP traffic to unencrypted websites; apps may use it for API/redirects.&lt;br /&gt;
    443,    # HTTPS. Main port for all encrypted web traffic — browsers, API, VPN, updates.&lt;br /&gt;
    3306,   # MySQL client. Needed if you connect to MySQL.&lt;br /&gt;
    3478,   # STUN/TURN WebRTC. Needed for audio/video/Discord.&lt;br /&gt;
    3000,   # Node.js dev servers. Needed for development.&lt;br /&gt;
    3690,   # SVN. If you work with an old repository.&lt;br /&gt;
    4443,   # Alternative HTTPS (some APIs). Also used by some VPN/clients.&lt;br /&gt;
    12043,  # Required for Custom 3D Application.&lt;br /&gt;
    13000-13050   # Required for Custom 3D Application.&lt;br /&gt;
    } accept&lt;br /&gt;
  &lt;br /&gt;
    # == Allow UDP ports and ranges required for applications ==&lt;br /&gt;
    udp dport {&lt;br /&gt;
    443,    # Required for fast and stable operation of modern websites &lt;br /&gt;
            # (Google, YouTube, ChatGPT, Cloudflare)&lt;br /&gt;
    13000-13050   # Required for Custom 3D Application.&lt;br /&gt;
    } accept &lt;br /&gt;
&lt;br /&gt;
    # = Blocking potentially dangerous / unnecessary TCP/UDP ports =&lt;br /&gt;
&lt;br /&gt;
    # These blocks are intended for a DESKTOP / workstation.&lt;br /&gt;
    # ⚠ If you use the system as a SERVER —&lt;br /&gt;
    # adjust or comment out the required ports/ranges as needed.&lt;br /&gt;
&lt;br /&gt;
    # == Blocking various suspicious TCP ports ==&lt;br /&gt;
    tcp dport {&lt;br /&gt;
    # === Remote access (high-risk) ===&lt;br /&gt;
      22,     # SSH — target of brute-force attacks.&lt;br /&gt;
      23,     # Telnet — outdated, unencrypted.&lt;br /&gt;
      3389,   # RDP — Windows remote access.&lt;br /&gt;
      5900,   # VNC — remote access, often vulnerable.&lt;br /&gt;
    # === FTP / SMB / NetBIOS (dangerous file-sharing services) ===&lt;br /&gt;
      21,     # FTP — insecure protocol.&lt;br /&gt;
      137,    # NetBIOS Name Service.&lt;br /&gt;
      138,    # NetBIOS Datagram.&lt;br /&gt;
      139,    # NetBIOS Session.&lt;br /&gt;
      445,    # SMB/CIFS — frequent exploitation target.&lt;br /&gt;
    # === Databases (NEVER open to the Internet) ===&lt;br /&gt;
      3306,   # MySQL/MariaDB.&lt;br /&gt;
      1433,   # MS SQL Server.&lt;br /&gt;
      1434,   # MS SQL Browser.&lt;br /&gt;
    # === HTTP-alt/Proxy/Elasticsearch (dangerous, often attacked) ===&lt;br /&gt;
      8080,   # HTTP proxy / web interfaces — often exposed test interfaces.&lt;br /&gt;
      9200,   # Elasticsearch API — full remote access to data.&lt;br /&gt;
    # === UPnP/IoT (vulnerable by design) ===&lt;br /&gt;
      1900,   # SSDP / UPnP.&lt;br /&gt;
    # === Common malware ports (RAT, C2, reverse shells) ===&lt;br /&gt;
      4444,   # Metasploit reverse shell.&lt;br /&gt;
      5555,   # Android ADB / IoT botnets.&lt;br /&gt;
      9001,   # Tor transport (used by malware).&lt;br /&gt;
      1234,   # Netcat / reverse connections.&lt;br /&gt;
      1337,   # Common C2 malware port.&lt;br /&gt;
    # === ⚠️ Ports of scanners and potentially vulnerable services === &lt;br /&gt;
      1080,   # SOCKS proxy — often abused for bypassing filters.&lt;br /&gt;
      3128,   # Squid HTTP proxy — can be used as open proxy.&lt;br /&gt;
      8000,   # Alternative HTTP ports, web services — potentially vulnerable.&lt;br /&gt;
      8888,   # Alternative web interfaces — test and proxy ports.&lt;br /&gt;
      10000   # Webmin — web admin panel, target of attacks.&lt;br /&gt;
    } drop&lt;br /&gt;
&lt;br /&gt;
    # == Blocking various suspicious UDP ports ==&lt;br /&gt;
    udp dport {&lt;br /&gt;
      161,    # SNMP — network monitoring; can be abused by attackers.&lt;br /&gt;
      162     # SNMP Trap — same, potential vulnerability.&lt;br /&gt;
    } drop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # Warning! ⚠️ Be careful blocking wide port ranges! ⚠️&lt;br /&gt;
    # Do not break system or application functionality!&lt;br /&gt;
    # If you need a range — uncomment.&lt;br /&gt;
    # If you don’t — comment out.&lt;br /&gt;
&lt;br /&gt;
    #  == Blocking “dangerous” and desktop-unnecessary TCP port ranges ==&lt;br /&gt;
    tcp dport {&lt;br /&gt;
      1-1023,	    # 🛑 Privileged ports.&lt;br /&gt;
      1024-2047,	# r-commands (rlogin, rsh, rexec), old RPC, NFS, legacy daemons.&lt;br /&gt;
      2048-3071,    # Rare proprietary protocols and middleware.&lt;br /&gt;
      3072-4999,    # Mostly ports of legacy, server, corporate apps; &lt;br /&gt;
                    # rarely needed on workstations.&lt;br /&gt;
      5000-5999,    # Alternative services, old P2P/admin ports, rarely used on desktops.&lt;br /&gt;
      7000-7999,    # Alternative/test ports, often used by trojans.&lt;br /&gt;
      9000-9999,    # Web services, proxies, possible backdoor ports.&lt;br /&gt;
      10000-19998,  # Dynamic/high service ports; may be required by some apps like Custom 3D Application,&lt;br /&gt;
                    # but not needed by most desktop services.&lt;br /&gt;
      19999-32767   # Old ephemeral port range; used by P2P, games, some VPNs,&lt;br /&gt;
                    # but system services rarely use them.&lt;br /&gt;
    } drop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    #  == Blocking “dangerous” and desktop-unnecessary UDP port ranges ==&lt;br /&gt;
    udp dport {&lt;br /&gt;
      1024-2047,    # Old UNIX services, RPC, NFS, r-commands, legacy daemons.&lt;br /&gt;
                    # Usually safe to block.&lt;br /&gt;
      2048-4095,    # Rarely used standard ports, proprietary services.&lt;br /&gt;
                    # Usually safe to block.&lt;br /&gt;
      4096-8191,    # VPN, games, P2P, WebRTC, VoIP of some clients.&lt;br /&gt;
                    # Can block, but cautiously: may affect VPN/apps.&lt;br /&gt;
      8192-12287,   # QUIC/HTTP3, proxies, multimedia protocols.&lt;br /&gt;
                    # Might cause side effects; better test first.&lt;br /&gt;
      12288-16383,  # Old RTP/VoIP ranges and media streams.&lt;br /&gt;
                    # Can block, but might break video calls.&lt;br /&gt;
      16384-24575,  # Main RTP range (audio/video), WebRTC, VoIP.&lt;br /&gt;
                    # ❗ Do not block if you need video calls/WebRTC/VPN.&lt;br /&gt;
      24576-32767   # Dynamic ports for VPN, P2P, games, streaming data.&lt;br /&gt;
                    # ❗ May break VPN or some apps.&lt;br /&gt;
    } drop&lt;br /&gt;
&lt;br /&gt;
    # == 🕷️ Blocking suspicious IPs —&lt;br /&gt;
    # large ranges often used by botnets, spam networks, and scanners ==&lt;br /&gt;
    ip saddr {&lt;br /&gt;
      185.0.0.0/8,  # Abused hosting and proxy networks.&lt;br /&gt;
      37.0.0.0/8,   # Cheap VPS, scanning sources.&lt;br /&gt;
      88.0.0.0/8,   # Frequent brute-force and scanners.&lt;br /&gt;
      77.0.0.0/8,   # Massive TOR/proxy nodes.&lt;br /&gt;
      91.0.0.0/8    # Botnets and “grey” hosting.&lt;br /&gt;
    } drop&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
====== sysctl config: ======&lt;br /&gt;
&lt;br /&gt;
==  kernel parameters configuration  /etc/sysctl.d/99-protect.conf&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# 1 Ignore ICMP on interfaces&lt;br /&gt;
net.ipv4.icmp_echo_ignore_all = 1&lt;br /&gt;
&lt;br /&gt;
# 2 Do not respond to ICMP broadcast (against Smurf attacks)&lt;br /&gt;
net.ipv4.icmp_echo_ignore_broadcasts = 1&lt;br /&gt;
&lt;br /&gt;
# 3 Enable SYN backlog reduction&lt;br /&gt;
net.ipv4.tcp_syncookies = 1&lt;br /&gt;
&lt;br /&gt;
# 4 Disable source routing&lt;br /&gt;
net.ipv4.conf.all.accept_source_route = 0&lt;br /&gt;
net.ipv4.conf.default.accept_source_route = 0&lt;br /&gt;
&lt;br /&gt;
# 5 Log packets with incorrect routing&lt;br /&gt;
net.ipv4.conf.all.log_martians = 1&lt;br /&gt;
net.ipv4.conf.default.log_martians = 1&lt;br /&gt;
&lt;br /&gt;
# 6 Disable ICMP Redirects&lt;br /&gt;
net.ipv4.conf.all.accept_redirects = 0&lt;br /&gt;
net.ipv4.conf.default.accept_redirects = 0&lt;br /&gt;
&lt;br /&gt;
# 7 Disable packet forwarding&lt;br /&gt;
net.ipv4.ip_forward = 0&lt;br /&gt;
&lt;br /&gt;
# 8 Disable IPv6 support&lt;br /&gt;
net.ipv4.conf.all.disable_ipv6 = 1&lt;br /&gt;
net.ipv4.conf.default.disable_ipv6 = 1&lt;br /&gt;
&lt;br /&gt;
# 9 Prevent sending TCP segments with null windows&lt;br /&gt;
net.ipv4.tcp_rfc1337 = 1&lt;br /&gt;
&lt;br /&gt;
# 10 Disable ARP filtering for automatic routing&lt;br /&gt;
net.ipv4.conf.all.arp_filter = 1&lt;br /&gt;
net.ipv4.conf.default.arp_filter = 1&lt;br /&gt;
&lt;br /&gt;
# 11 Limit the maximum size of the incoming TCP window&lt;br /&gt;
net.ipv4.tcp_rmem = 4096 87380 4194304&lt;br /&gt;
net.ipv4.tcp_wmem = 4096 65536 4194304&lt;br /&gt;
&lt;br /&gt;
# 12 Drop packets with incorrect checksums&lt;br /&gt;
net.ipv4.conf.all.drop_unicast_in_l2_multicast = 1&lt;br /&gt;
net.ipv4.conf.default.drop_unicast_in_l2_multicast = 1&lt;br /&gt;
&lt;br /&gt;
# 13 Disable IPv6 forwarding&lt;br /&gt;
net.ipv6.conf.all.disable_ipv6 = 1&lt;br /&gt;
net.ipv6.conf.default.disable_ipv6 = 1&lt;br /&gt;
&lt;br /&gt;
# 14 Limit the maximum number of SYN packet retries&lt;br /&gt;
net.ipv4.tcp_synack_retries = 2&lt;br /&gt;
&lt;br /&gt;
# 15 Increase routing cache lifetime&lt;br /&gt;
net.ipv4.route.max_size = 32768&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
====== auditd rules config: ======&lt;br /&gt;
&lt;br /&gt;
==  /etc/audit/rules.d/audit.rules &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
## Flush rules&lt;br /&gt;
-D&lt;br /&gt;
&lt;br /&gt;
## Buffers&lt;br /&gt;
-b 8192&lt;br /&gt;
--backlog_wait_time 60000&lt;br /&gt;
-f 1&lt;br /&gt;
&lt;br /&gt;
## Network audit&lt;br /&gt;
-a always,exit -F arch=b64 -S connect -F success=1 -k network_connect&lt;br /&gt;
-a always,exit -F arch=b64 -S accept4 -F success=1 -k network_accept&lt;br /&gt;
-a always,exit -F arch=b32 -S connect -F success=1 -k network_connect&lt;br /&gt;
-a always,exit -F arch=b32 -S accept4 -F success=1 -k network_accept&lt;br /&gt;
&lt;br /&gt;
## Logging execve commands&lt;br /&gt;
-a always,exit -F arch=b64 -S execve -F key=exec_log&lt;br /&gt;
&lt;br /&gt;
## Audit logins and sessions&lt;br /&gt;
-w /var/log/faillog -p wa -k logins&lt;br /&gt;
-w /var/log/lastlog -p wa -k logins&lt;br /&gt;
-w /var/run/utmp -p wa -k session&lt;br /&gt;
-w /var/log/wtmp -p wa -k session&lt;br /&gt;
-w /var/log/btmp -p wa -k session&lt;br /&gt;
&lt;br /&gt;
## sudo / su&lt;br /&gt;
-w /etc/sudoers -p wa -k sudo&lt;br /&gt;
-w /etc/sudoers.d/ -p wa -k sudo&lt;br /&gt;
-w /bin/su -p x -k su_cmd&lt;br /&gt;
&lt;br /&gt;
## Account and configuration changes&lt;br /&gt;
-w /etc/passwd -p wa -k identity&lt;br /&gt;
-w /etc/group -p wa -k identity&lt;br /&gt;
-w /etc/shadow -p wa -k identity&lt;br /&gt;
-w /etc/gshadow -p wa -k identity&lt;br /&gt;
-w /etc/hosts -p wa -k system_conf&lt;br /&gt;
-w /etc/hostname -p wa -k system_conf&lt;br /&gt;
-w /etc/resolv.conf -p wa -k system_conf&lt;br /&gt;
-w /etc/issue -p wa -k system_conf&lt;br /&gt;
-w /etc/network/ -p wa -k system_conf&lt;br /&gt;
&lt;br /&gt;
## Time changes&lt;br /&gt;
-a always,exit -F arch=b64 -S adjtimex -S settimeofday -S clock_settime -F key=time_change&lt;br /&gt;
-a always,exit -F arch=b32 -S adjtimex -S settimeofday -S stime -S clock_settime -F key=time_change&lt;br /&gt;
&lt;br /&gt;
## Audit SSH connections and changes&lt;br /&gt;
-w /etc/ssh/sshd_config -p wa -k ssh_config_change&lt;br /&gt;
-w /var/log/auth.log -p wa -k ssh_login&lt;br /&gt;
&lt;br /&gt;
## Audit usage of remote tools (e.g., SSH, netcat)&lt;br /&gt;
-a always,exit -F arch=b64 -S execve -F exe=/usr/bin/ssh -k ssh_process&lt;br /&gt;
-a always,exit -F arch=b64 -S execve -F exe=/usr/bin/nc -k nc_process&lt;br /&gt;
-a always,exit -F arch=b32 -S execve -F exe=/usr/bin/ssh -k ssh_process&lt;br /&gt;
-a always,exit -F arch=b32 -S execve -F exe=/usr/bin/nc -k nc_process&lt;br /&gt;
&lt;br /&gt;
## Audit privileged access&lt;br /&gt;
-a always,exit -F arch=b64 -S setuid -S setgid -k privilege_escalation&lt;br /&gt;
-a always,exit -F arch=b32 -S setuid -S setgid -k privilege_escalation&lt;br /&gt;
-w /etc/sudoers -p wa -k sudoers_changes&lt;br /&gt;
-w /etc/sudoers.d/ -p wa -k sudoers_changes&lt;br /&gt;
-w /bin/sudo -p x -k sudo_command&lt;br /&gt;
&lt;br /&gt;
## Monitor credential changes&lt;br /&gt;
#-w /root/.ssh/ -p wa -k ssh_keys&lt;br /&gt;
#-w /home/*/.ssh/ -p wa -k ssh_keys&lt;br /&gt;
&lt;br /&gt;
## Audit use of remote network services&lt;br /&gt;
-a always,exit -F arch=b64 -S socket -F success=1 -k socket_connect&lt;br /&gt;
-a always,exit -F arch=b32 -S socket -F success=1 -k socket_connect&lt;br /&gt;
&lt;br /&gt;
# Log package installation and removal via dpkg&lt;br /&gt;
-w /usr/bin/dpkg -p x&lt;br /&gt;
-w /usr/sbin/apt-get -p x&lt;br /&gt;
-w /usr/bin/apt -p x&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;This article was written by blackcat568 on the forums: https://forums.debian.net/viewtopic.php?t=164131, it is initially shared on the Debian Wiki: https://wiki.debian.org/Security/ProtectingAgainstTargetedAttacks   ==&lt;br /&gt;
[[index.php?title=Category:HowTo]]&lt;br /&gt;
[[index.php?title=Category:Hardening]]&lt;br /&gt;
[[index.php?title=Category:Security]]&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Main_Page&amp;diff=108</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Main_Page&amp;diff=108"/>
		<updated>2025-12-13T00:22:06Z</updated>

		<summary type="html">&lt;p&gt;Donald: /* HowTo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About ==&lt;br /&gt;
About:&lt;br /&gt;
* [[Debian User Forums]]&lt;br /&gt;
* [[The Debian Project]]&lt;br /&gt;
* [[Archive AI Use]]&lt;br /&gt;
* [[Forum jokes, lingo, and memorable quotes]]&lt;br /&gt;
&lt;br /&gt;
== HowTo ==&lt;br /&gt;
HowTo:&lt;br /&gt;
&lt;br /&gt;
* [https://forums.debian.net/viewtopic.php?p=338577#p338577 Root, sudo, su, and su -]&lt;br /&gt;
&lt;br /&gt;
* [[To install Firefox from Mozilla repo|Installing Firefox from Mozilla repo]]&lt;br /&gt;
* [[WiFi Signal Strength and Sharing]]&lt;br /&gt;
* [[REFInd USB Drive (for emergency boot)]]&lt;br /&gt;
* [[Trixie iwd]]&lt;br /&gt;
* [[Security Hardening for Debian Users: Protecting Against Targeted Attacks]]&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
Licensing:&lt;br /&gt;
* [[Publish using CC International licencing and your Forum name]].&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
	<entry>
		<id>https://archive.forums.debian.net/index.php?title=Category:Security&amp;diff=106</id>
		<title>Category:Security</title>
		<link rel="alternate" type="text/html" href="https://archive.forums.debian.net/index.php?title=Category:Security&amp;diff=106"/>
		<updated>2025-12-13T00:20:39Z</updated>

		<summary type="html">&lt;p&gt;Donald: Created page with &amp;quot;Security&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Security&lt;/div&gt;</summary>
		<author><name>Donald</name></author>
	</entry>
</feed>