Getting Started with the Linux Intrusion Detection System
With increasing usage of Linux in various computing environments, a lot of security vulnerabilities are being discovered in GNU/Linux-based systems. Due to the open nature of application development in the Open Source world, a lot of vulnerabilities are being addressed very quickly. But, it may happen that a patch is not addressed in a timely manner, and in the meantime, all the systems running the application are exposed. Malicious users can possibly gain root privileges and wreak havoc with these systems. This is where the Linux Intrusion Detection System (LIDS) comes to the rescue.
LIDS is a patch to the Linux kernel; it implements access control and a reference monitor. LIDS is configured with its two admin tools, lidsconf and lidsadm.
lidsadm is the utility that allows you to disable LIDS in a terminal, so that you can set various settings, which LIDS, when enabled, won't allow you to do, and you can view the current status of your LIDS installation with this tool.
lidsconf is the tool that allows you to add and remove access control to certain files, which can be binaries or any other files. LIDS refers to these files as objects, and the capabilities we allow or disallow are referred to as subjects. LIDS overrides things like filesystem permissions. You can literally use LIDS to make it impossible to access virtually any object, whether it's a file, raw device, memory or I/O, even if you're trying to access the object as the root user.
In short, LIDS is a complete security model implementation for the Linux kernel.
The developers of LIDS have included installation instructions in the INSTALL file. However, I describe the main tasks in this article.
The stable releases of LIDS are created against a vanilla source of the Linux kernel. It is recommended that the LIDS patch be applied only to the original kernel source, not to the distribution-specific source, as it may lead to various compilation errors, as most distributions customize the kernel for their own use. LIDS is known to have problems when used on non-i386 architectures.
For example, lids-2.2.1-2.6.13.tar.gz should be applied to the 2.6.13 kernel.
After patching the kernel with:
patch -p1 /dir_to_the_patch_file/patch-lids-2.2.1-2.6.13
You can run make [x/menu]config and select the LIDS options from the security section and compile the kernel with:
make make modules_install
(if you configured any parts of the kernel as modules).
Copy the bzImage from /kernelpath/arch/i386/boot to your /boot directory, and re-initialize your bootloader. Restart into your LIDS-enhanced kernel.
You can see the status of your LIDS installation by typing:
If you get an error, LIDS was not installed into the kernel; check your kernel configurations and recompile.
Before we set access controls for various server applications, here is the general syntax of lidsconf:
lidsconf -A [-s subject] -o object [-d] [-t from-to] [-i level] -j ACTION
The subject is a program upon which a capability is added. The object can be a binary, directory, socket name or a capability.
The -d switch tells LIDS that the domain is an exec domain. The -t lets you set a specific time dependency for the capability and -i defines the inheritance level.
The -j switch is an action that can be one of the following:
DENY: denies access to the object.
READONLY: sets the object to read-only.
APPEND: mostly used for logs, this allows a certain program to append only that file, not remove it.
WRITE: allows other binaries to write on the file.
GRANT: used in conjunction with a capability, used to grant the subject a capability.
IGNORE and DISABLE: two options that allow you to disable the setting of any permission on a certain object and disable some extension features, respectively.
The capabilities LIDS supports are the following, as can be seen by typing:
lidsadm -h|grep CAP
CAP_DAC_OVERRIDE: DAC access.
CAP_DAC_READ_SEARCH: DAC read.
CAP_FOWNER: owner ID, not equal user.
ID CAP_FSETID: effective user ID, not equal owner.
ID CAP_KILL: real/effective ID, not equal process.
ID CAP_SETGID: set*gid(2).
CAP_SETPCAP: transfer capability.
CAP_LINUX_IMMUTABLE: immutable and append file attributes.
CAP_NET_BIND_SERVICE: binding to ports below 1024.
CAP_NET_BROADCAST: broadcasting/listening to multicast.
CAP_NET_ADMIN: interface/firewall/routing changes.
CAP_NET_RAW: raw sockets.
CAP_IPC_LOCK: locking of shared memory segments.
CAP_IPC_OWNER: IPC-ownership checks.
CAP_SYS_MODULE: insertion and removal of kernel modules.
CAP_SYS_RAWIO: ioperm(2)/iopl(2) access.
CAP_SYS_PACCT: configuration of process accounting.
CAP_SYS_ADMIN: tons of admin stuff.
CAP_SYS_RESOURCE: sets resource limits.
CAP_SYS_TIME: sets system time.
CAP_SYS_TTY_CONFIG: tty configuration.
CAP_MKNOD: mknod operation.
CAP_LEASE: taking leases on files.
CAP_HIDDEN: hidden process.
CAP_KILL_PROTECTED: kill protected programs.
CAP_PROTECTED: protect the process from signals.
Practical Task Scheduling Deployment
July 20, 2016 12:00 pm CDT
One of the best things about the UNIX environment (aside from being stable and efficient) is the vast array of software tools available to help you do your job. Traditionally, a UNIX tool does only one thing, but does that one thing very well. For example, grep is very easy to use and can search vast amounts of data quickly. The find tool can find a particular file or files based on all kinds of criteria. It's pretty easy to string these tools together to build even more powerful tools, such as a tool that finds all of the .log files in the /home directory and searches each one for a particular entry. This erector-set mentality allows UNIX system administrators to seem to always have the right tool for the job.
Cron traditionally has been considered another such a tool for job scheduling, but is it enough? This webinar considers that very question. The first part builds on a previous Geek Guide, Beyond Cron, and briefly describes how to know when it might be time to consider upgrading your job scheduling infrastructure. The second part presents an actual planning and implementation framework.
Join Linux Journal's Mike Diehl and Pat Cameron of Help Systems.
Free to Linux Journal readers.Register Now!
- SUSE LLC's SUSE Manager
- My +1 Sword of Productivity
- Murat Yener and Onur Dundar's Expert Android Studio (Wrox)
- Managing Linux Using Puppet
- Non-Linux FOSS: Caffeine!
- SuperTuxKart 0.9.2 Released
- Doing for User Space What We Did for Kernel Space
- Google's SwiftShader Released
- Parsing an RSS News Feed with a Bash Script
- SourceClear Open
With all the industry talk about the benefits of Linux on Power and all the performance advantages offered by its open architecture, you may be considering a move in that direction. If you are thinking about analytics, big data and cloud computing, you would be right to evaluate Power. The idea of using commodity x86 hardware and replacing it every three years is an outdated cost model. It doesn’t consider the total cost of ownership, and it doesn’t consider the advantage of real processing power, high-availability and multithreading like a demon.
This ebook takes a look at some of the practical applications of the Linux on Power platform and ways you might bring all the performance power of this open architecture to bear for your organization. There are no smoke and mirrors here—just hard, cold, empirical evidence provided by independent sources. I also consider some innovative ways Linux on Power will be used in the future.Get the Guide