Detecting Suspicious Processes in Linux: How to Investigate Unknown Services, Network Connections and Startup Tasks
Linux administrators often encounter situations where a server suddenly consumes more resources, unknown network connections appear, or a previously stopped process restarts after reboot. This does not always indicate a compromise and may result from faulty applications, incorrect service configurations, backup operations, or routine maintenance tasks.
Starting with Processes
Each running program instance receives a unique PID. To list processes sorted by CPU usage, run ps aux --sort=-%cpu | head -20. For memory consumption, use ps aux --sort=-%mem | head -20. Interactive monitoring is available via top or htop when installed.
High resource usage by an unexpected binary such as /opt/unknown/worker warrants further investigation. Useful details include the parent process ID, start time, and command line obtained with ps -p 1842 -o pid,ppid,user,lstart,etime,cmd.
Examining the Executable File
The actual binary path is revealed by readlink -f /proc/1842/exe. Command-line arguments are shown with ps -p 1842 -o args=. File metadata including owner and modification time can be checked using stat. On Debian-based systems, dpkg -S identifies the package owning a file when applicable.
Reviewing Network Connections
Listening TCP and UDP sockets are displayed with sudo ss -lntup, while established connections use sudo ss -tnp. The lsof -i command provides additional process-to-port mapping when available. LISTEN and ESTAB states indicate listening services and active connections respectively.
Checking systemd Services
Running services are listed via systemctl list-units --type=service --state=running. Unit files and failed services are examined with systemctl list-unit-files --type=service and systemctl --failed. Detailed status and configuration are retrieved using systemctl status and systemctl cat, paying special attention to the ExecStart directive.
Investigating Scheduled Tasks
User cron jobs are viewed with crontab -l. System-wide schedules reside in /etc/cron.d/, /etc/cron.hourly/, and similar directories. systemctl list-timers --all shows systemd timers. Each discovered job should be verified against system documentation and file ownership.
Auditing User Accounts and SSH Keys
Local users are enumerated with getent passwd. Accounts possessing UID 0 are identified by awk -F: '$3 == 0 {print $1 ":" $3}' /etc/passwd. Authorized SSH keys are typically stored in ~/.ssh/authorized_keys and should be compared against approved lists.
Correlating Events and Preserving Evidence
System logs are queried with sudo journalctl --since "today" or filtered by service name. When multiple indicators align, such as an unusual SSH login followed by new service creation and unexpected outbound connections, further investigation is warranted. If compromise is suspected, first record timestamps and preserve logs before remediation.
Related articles
Rostelecom Refactors InfoSec Careers: Matching Employee Skills to Evolving Business Priorities
Rostelecom's information security block developed a systematic approach to reassess employee expertise and redirect talent to new roles when business structures change rapidly. In one case, an architect hired for a specific team was reassigned after the unit was disbanded, initially moving to a similar position that did not fully align with his broader competencies. HR-business partner Olga Lapshina examined the specialist's full background, including prior work in audits, methodology development, regulatory documentation, university teaching, and scientific research, plus strong mentoring abilities with younger staff. These skills matched the needs of the methodology department, leading to a transfer supported by an individual development plan and a mentor via the internal Tochka Rosta platform. Within two months the employee contributed improvements that accelerated preliminary InfoSec audits by 30 percent and risk assessments by 20 percent while expanding threat scenario coverage by 10 percent. The initiative demonstrates Rostelecom's emphasis on horizontal career movement and retention of experienced professionals through structured career tracks.
How to Avoid Becoming the Hero of 'My Program Deleted 800 GB': Safe Recursive Deletion in Bash and Python
A recent Habr article examines dangerous patterns in recursive file deletion scripts that have caused massive data loss incidents, including an 800 GB wipe triggered by Telegram Desktop on Windows. The piece analyzes classic mistakes such as empty variables in rm commands and extra spaces that turned single paths into multiple destructive arguments, referencing the 2015 Steam Linux bug and the 2011 Bumblebee installer error. It provides hardened Bash templates using set -euo pipefail, ${VAR:?} checks, realpath validation, and --one-file-system flags to prevent deletion of forbidden directories or symlinked targets. The Python section introduces a safe_rmtree wrapper that enforces root boundaries, rejects symlinks, uses resolve(strict=True), and checks shutil.rmtree.avoids_symlink_attacks before proceeding. Additional recommendations include dry-run modes, marker files, temporary directory usage, and logging to make deletion operations auditable and reversible where possible.
Hackers tamper with refrigeration units in European supermarkets, setting temperatures to +50 °C
Attackers gained unauthorized access to refrigeration and freezer control systems in supermarkets across several European countries, including Sweden, Belgium, Luxembourg, and Estonia. In multiple locations they altered temperature settings to +50 °C, risking widespread spoilage of perishable goods. The incidents primarily affected older, unpatched Danfoss controllers that had been connected to networks for remote maintenance. Estonian manufacturer Kitman Coldtech reported that one attack on a legacy Danfoss system was detected and stopped within approximately ten minutes, preventing any damage. Similar intrusions were confirmed by Swedish chains ICA and Coop, following earlier incidents in French supermarkets in October that resulted in product losses. Experts note that legacy industrial controllers remain attractive targets because they are often left exposed once placed online for convenience.
AmneziaWG Container for MikroTik Routers Delivers Top Performance Six Months After Launch
A developer released an AmneziaWG container for MikroTik devices in February 2026 and has since added major improvements in speed, protocol support, and stability. The lightweight container leverages the router's native WireGuard implementation for cryptography while handling AmneziaWG obfuscation in software. Performance now reaches 250-350 Mbit/s on models such as Hap Ax3 and RB5009B after switching to C code and increasing buffer sizes with RouterOS 7.24. New features include server mode for connecting multiple MikroTik devices, random port hopping, IPv6 support, dynamic DNS, and offline configuration. The project survived an early GitHub ban caused by test scripts and has grown to over 370 stars while remaining fully offline and privacy-focused.