Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 

Repository files navigation

🛡️ Linux System Security Checker

A lightweight and powerful Bash script designed to perform a quick security audit of your Linux system. This tool checks for firewall status, sensitive file permissions, inactive users, running services, and available updates, then generates a detailed security report in both text and HTML formats.

Features

  • Firewall Status: Checks if UFW is active and lists current rules.
  • Sensitive File Permissions: Verifies permissions for critical files like /etc/passwd, /etc/shadow, and /etc/hosts.
  • Inactive User Accounts: Lists users with no login shell (e.g. /bin/false, nologin).
  • Users with Login Shells: Lists users who can log in (security audit).
  • Service Monitoring: Lists top 10 running services by memory usage.
  • System Updates: Checks for available package updates (supports apt, dnf, yum).
  • Detailed Report: Automatically generates a comprehensive security report in both text and HTML formats for better visualization.

Directory Structure

linux-system-security-checker/
├── security-checker.sh
├── README.md
├── LICENSE
├── security-report.txt
├── security-report.html
└── example-report.txt

Usage

  1. Clone this repository:

    git clone https://github.com/m-ah07/linux-system-security-checker.git
    cd linux-system-security-checker
  2. Make the script executable:

    chmod +x security-checker.sh
  3. Run the script:

    ./security-checker.sh
  4. View the generated report:

    • Text Report:
      cat security-report.txt
    • HTML Report: Open security-report.html in your favorite browser.

Example Report

Here's an example of the output generated by the script:

Security Report - Thu Dec 21 2024
---------------------------------------
Firewall Status:
Status: active

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere
---------------------------------------
File Permissions:
/etc/passwd -rw-r--r--
/etc/shadow -rw-------
/etc/hosts -rw-r--r--
---------------------------------------
Inactive Users (cannot login):
daemon
bin
sys
...
---------------------------------------
Users with Login Shells (can login):
root
admin
---------------------------------------
Top 10 Running Services by Memory Usage:
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1 102400  9280 ?       Ss   12:00   0:03 /sbin/init
mysql      172  0.5  1.5 125000 11000 ?       Ssl  12:00   0:30 /usr/sbin/mysqld
---------------------------------------
System Updates:
System is up-to-date.

HTML Format:

Open security-report.html for a visually styled version of the report with structured sections and improved readability.

Contributing

We welcome contributions to improve this tool! Here's how you can help:

  • Report issues: Found a bug? Open an issue and let us know.
  • Suggest features: Have an idea for improvement? We'd love to hear it.
  • Submit pull requests: Contribute code directly to the repository.

Future Improvements

  • Task Scheduling: Add cron job integration for automated periodic checks.
  • Vulnerability Scanner: Integrate CVE vulnerability scanning.
  • Enhanced HTML Report: Include charts and visual statistics.
  • Customizable Rules: Allow users to define custom rules for security checks.

Show Your Support

If you found this project helpful, please consider giving it a ⭐ on GitHub. Your support means the world to us!

About

A simple Bash script for performing quick security audits on Linux systems, including checks for firewall status, sensitive file permissions, inactive user accounts, and running services. Generates detailed security reports.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages