Final CS50 project. Program that:
- reviews your ssh config file and provides guidelines
- monitors ssh activity (/var/log/auth.log)
- blacklists attempts to log in with username/password
- provides statistics on login attempts
- Create a daemon process scaffold for the program (2)
- Add
root
checks when program is executed (1) - Add color for output (1)
- Add flag processing (2)
- Add "analyze" flag and functionality (epic)
- Add a bill of health config file (1)
- Generate default bill if file is not found (2)
- Add reading of bouncer config(1)
- Add reading of the sshd_config (1)
- Implement comparison of bill and config file (2)
- Print results of comparison (1)
- Add "defend" flag and functionality (epic)
- read auth.log file (1)
- figure out a way to "tail" the log file (3)
- string match and extract the offending IP addresses (3)
- produce firewall rules based on offending IPs (2)
- log activity for stats! (1)
- Print a general setup guide (2)
- Add health bill check into argv param handling
- Only block subsequent ssh requests for now
- Add a demo of "stats" flag and functionality (epic)
- Setup sqlite3 database (3)
- Figure out a sample query and return results (2)
- Add "stats" flag and functionality (epic)
- Ingest, store, use
country <=> ip
map. (3) - Add download capability to get fresh
country <=> ip
map. (2)
- Ingest, store, use
- Add unit testing framework (2)
- Add support for IPv6
- Creating a Daemon Process in C Language with an Example Program by HIMANSHU ARORA on FEBRUARY 24, 2012
- Check if user is root in C? (Stackoverflow)
- User identifier (Wikipedia)
- Using C/C++, how do you print to stdout in color, but only if the terminal supports it? (Stackoverflow)
- stdlib and colored output in C (Stackoverflow)
- The GNU C Library: Host Address Functions (GNU C Library)
- An Introduction To The SQLite C/C++ Interface
- The GNU C Library: Getopt (GNU C Library)
- Download file using libcurl in C/C++ (Stackoverflow)
- Is there a C project Default Directory Layout? (Stackoverflow)
- How can I add an empty directory to a Git repository? (Stackoverflow)
- SSH Essentials: Working with SSH Servers, Clients, and Keys (DigitalOcean)
- What's the best way to check if a file exists in C? (cross platform) (Stackoverflow)
- How to get size of file in C (LinuxQuestions)
- getline(3) - Linux man page (Die.net)
- fgetpos(), fsetpos() (Beej's Guide to C)
- cstring (string.h) (cplupluc.com)
- INET_PTON(3) (Linux Programmer's Manual)
- Iptables Drop IP Address (nixCraft)
- Initial Server Setup with Ubuntu 14.04 (DigitalOcean)
- how to import .sql into sqlite3 (Stackoverflow)
- Using SQLite in C programs
- ip2nation