Penguin
Diff: HowToSecurityHOWTO
EditPageHistoryDiffInfoLikePages

Differences between version 3 and predecessor to the previous major change of HowToSecurityHOWTO.

Other diffs: Previous Revision, Previous Author, or view the Annotated Edit History

Newer page: version 3 Last edited on Thursday, October 21, 2004 5:41:56 pm by AristotlePagaltzis Revert
Older page: version 2 Last edited on Friday, June 7, 2002 1:07:31 am by perry Revert
@@ -1,4912 +1 @@
-  
-  
-  
-Security-HOWTO  
-  
-  
-  
-----  
-  
-!!!Linux Security HOWTO  
-  
-!!Kevin Fenzi, kevin-securityhowto@tummy.com & Dave Wreski, dave@linuxsecurity.comv1.3.1, 11 February 2002  
-  
-  
-----  
-''This document is a general overview of security issues that face the  
-administrator of Linux systems. It covers general security philosophy  
-and a number of specific examples of how to better secure your Linux  
-system from intruders. Also included are pointers to security-related  
-material and programs. Improvements, constructive criticism, additions and corrections are  
-gratefully accepted. Please mail your feedback to both authors,  
-with "Security HOWTO" in the subject.''  
-----  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-!!1. Introduction  
-  
-  
-*1.1 New Versions of this Document  
-  
-*1.2 Feedback  
-  
-*1.3 Disclaimer  
-  
-*1.4 Copyright Information  
-  
-  
-  
-  
-  
-!!2. Overview  
-  
-  
-*2.1 Why Do We Need Security?  
-  
-*2.2 How Secure Is Secure?  
-  
-*2.3 What Are You Trying to Protect?  
-  
-*2.4 Developing A Security Policy  
-  
-*2.5 Means of Securing Your Site  
-  
-*2.6 Organization of This Document  
-  
-  
-  
-  
-  
-!!3. Physical Security  
-  
-  
-*3.1 Computer locks  
-  
-*3.2 BIOS Security  
-  
-*3.3 Boot Loader Security  
-  
-*3.4 xlock and vlock  
-  
-*3.5 Security of local devices  
-  
-*3.6 Detecting Physical Security Compromises  
-  
-  
-  
-  
-  
-!!4. Local Security  
-  
-  
-*4.1 Creating New Accounts  
-  
-*4.2 Root Security  
-  
-  
-  
-  
-  
-!!5. Files and File system Security  
-  
-  
-*5.1 Umask Settings  
-  
-*5.2 File Permissions  
-  
-*5.3 Integrity Checking  
-  
-*5.4 Trojan Horses  
-  
-  
-  
-  
-  
-!!6. Password Security and Encryption  
-  
-  
-*6.1 PGP and Public-Key Cryptography  
-  
-*6.2 SSL, S-HTTP and S/MIME  
-  
-*6.3 Linux IPSEC Implementations  
-  
-*6.4 ssh (Secure Shell) and stelnet  
-  
-*6.5 PAM - Pluggable Authentication Modules  
-  
-*6.6 Cryptographic IP Encapsulation (CIPE)  
-  
-*6.7 Kerberos  
-  
-*6.8 Shadow Passwords.  
-  
-*6.9 "Crack" and "John the Ripper"  
-  
-*6.10 CFS - Cryptographic File System and TCFS - Transparent Cryptographic File System  
-  
-*6.11 X11, SVGA and display security  
-  
-  
-  
-  
-  
-!!7. Kernel Security  
-  
-  
-*7.1 2.0 Kernel Compile Options  
-  
-*7.2 2.2 Kernel Compile Options  
-  
-*7.3 Kernel Devices  
-  
-  
-  
-  
-  
-!!8. Network Security  
-  
-  
-*8.1 Packet Sniffers  
-  
-*8.2 System services and tcp_wrappers  
-  
-*8.3 Verify Your DNS Information  
-  
-*8.4 identd  
-  
-*8.5 Configuring and Securing the Postfix MTA  
-  
-*8.6 SATAN, ISS, and Other Network Scanners  
-  
-*8.7 sendmail, qmail and MTA's  
-  
-*8.8 Denial of Service Attacks  
-  
-*8.9 NFS (Network File System) Security.  
-  
-*8.10 NIS (Network Information Service) (formerly YP).  
-  
-*8.11 Firewalls  
-  
-*8.12 IP Chains - Linux Kernel 2.2.x Firewalling  
-  
-*8.13 Netfilter - Linux Kernel 2.4.x Firewalling  
-  
-*8.14 VPNs - Virtual Private Networks  
-  
-  
-  
-  
-  
-!!9. Security Preparation (before you go on-line)  
-  
-  
-*9.1 Make a Full Backup of Your Machine  
-  
-*9.2 Choosing a Good Backup Schedule  
-  
-*9.3 Testing your backups  
-  
-*9.4 Backup Your RPM or Debian File Database  
-  
-*9.5 Keep Track of Your System Accounting Data  
-  
-*9.6 Apply All New System Updates.  
-  
-  
-  
-  
-  
-!!10. What To Do During and After a Breakin  
-  
-  
-*10.1 Security Compromise Underway.  
-  
-*10.2 Security Compromise has already happened  
-  
-  
-  
-  
-  
-!!11. Security Sources  
-  
-  
-*11.1 !LinuxSecurity.com References  
-  
-*11.2 FTP Sites  
-  
-*11.3 Web Sites  
-  
-*11.4 Mailing Lists  
-  
-*11.5 Books - Printed Reading Material  
-  
-  
-  
-  
-  
-!!12. Glossary  
-  
-  
-  
-  
-!!13. Frequently Asked Questions  
-  
-  
-  
-  
-!!14. Conclusion  
-  
-  
-  
-  
-!!15. Acknowledgments  
-----  
-  
-!!1. Introduction  
-  
-  
-This document covers some of the main issues that affect  
-Linux security. General philosophy and net-born resources are  
-discussed.  
-  
-  
-A number of other HOWTO documents overlap with security issues, and  
-those documents have been pointed to wherever appropriate.  
-  
-  
-This document is ''not'' meant to be a up-to-date exploits document. Large  
-numbers of new exploits happen all the time. This document will tell  
-you where to look for such up-to-date information, and will give some general  
-methods to prevent such exploits from taking place.  
-  
-  
-  
-  
-  
-  
-  
-!!1.1 New Versions of this Document  
-  
-  
-  
-New versions of this document will be periodically posted to  
-''comp.os.linux.answers''. They will also be added to the  
-various sites that archive such information, including:  
-  
-  
-  
-http://www.linuxdoc.org/  
-  
-  
-The very latest version of this document should also be  
-available in various formats from:  
-  
-  
-  
-  
-  
-*  
-http://scrye.com/~kevin/lsh/  
-  
-  
-  
-  
-*  
-  
-*  
-http://www.linuxsecurity.com/docs/Security-HOWTO  
-  
-  
-  
-  
-*  
-  
-*  
-http://www.tummy.com/security-howto  
-*  
-  
-  
-  
-  
-  
-  
-  
-  
-!!1.2 Feedback  
-  
-  
-  
-All comments, error reports, additional information and criticism  
-of all sorts should be directed to:  
-  
-  
-  
-kevin-securityhowto@tummy.com  
-  
-  
-and  
-  
-  
-  
-dave@linuxsecurity.com  
-  
-  
-''Note'': Please send your feedback to ''both'' authors. Also, be sure and  
-include "Linux" "security", or "HOWTO" in your subject to avoid Kevin's  
-spam filter.  
-  
-  
-  
-  
-!!1.3 Disclaimer  
-  
-  
-  
-No liability for the contents of this document can be accepted.  
-Use the concepts, examples and other content at your own risk.  
-Additionally, this is an early version, possibly with many  
-inaccuracies or errors.  
-  
-  
-A number of the examples and descriptions use the !RedHat(tm) package  
-layout and system setup. Your mileage may vary.  
-  
-  
-As far as we know, only programs that, under certain terms may be  
-used or evaluated for personal purposes will be described. Most  
-of the programs will be available, complete with source, under  
-GNU terms.  
-  
-  
-  
-  
-!!1.4 Copyright Information  
-  
-  
-  
-This document is copyrighted (c)1998-2000 Kevin Fenzi and Dave Wreski,  
-and distributed under the following terms:  
-  
-  
-  
-  
-  
-* Linux HOWTO documents may be reproduced and distributed in  
-whole or in part, in any medium, physical or electronic, as long  
-as this copyright notice is retained on all copies. Commercial  
-redistribution is allowed and encouraged; however, the authors  
-would like to be notified of any such distributions.  
-*  
-  
-* All translations, derivative works, or aggregate works  
-incorporating any Linux HOWTO documents must be covered under  
-this copyright notice. That is, you may not produce a derivative  
-work from a HOWTO and impose additional restrictions on its  
-distribution. Exceptions to these rules may be granted under  
-certain conditions; please contact the Linux HOWTO coordinator at  
-the address given below.  
-*  
-  
-* If you have questions, please contact Tim Bynum, the  
-Linux HOWTO coordinator, at  
-*  
-  
-  
-  
-  
-tjbynum@metalab.unc.edu  
-  
-  
-  
-----  
-  
-!!2. Overview  
-  
-  
-This document will attempt to explain some procedures and commonly-used  
-software to help your Linux system be more secure. It is  
-important to discuss some of the basic concepts first, and create a  
-security foundation, before we get started.  
-  
-!!2.1 Why Do We Need Security?  
-  
-  
-  
-In the ever-changing world of global data communications, inexpensive  
-Internet connections, and fast-paced software development, security is  
-becoming more and more of an issue. Security is now a basic  
-requirement because global computing is inherently insecure. As your  
-data goes from point A to point B on the Internet, for example, it may  
-pass through several other points along the way, giving other users  
-the opportunity to intercept, and even alter, it. Even other  
-users on your system may maliciously transform your data into  
-something you did not intend. Unauthorized access to your system may  
-be obtained by intruders, also known as "crackers", who then use  
-advanced knowledge to impersonate you, steal information from you, or  
-even deny you access to your own resources. If you're wondering  
-what the difference is between a "Hacker" and a "Cracker", see Eric  
-Raymond's document, "How to Become A Hacker", available at  
-http://www.tuxedo.org/~esr/faqs/hacker-howto.html.  
-  
-  
-  
-  
-!!2.2 How Secure Is Secure?  
-  
-  
-  
-First, keep in mind that no computer system can ever be completely  
-secure. All you can do is make it increasingly difficult for someone  
-to compromise your system. For the average home Linux user, not much  
-is required to keep the casual cracker at bay. However, for  
-high-profile Linux users (banks, telecommunications companies, etc),  
-much more work is required.  
-  
-  
-Another factor to take into account is that the more secure your  
-system is, the more intrusive your security becomes. You need to  
-decide where in this balancing act your system will still be usable,  
-and yet secure for your purposes. For instance, you could require  
-everyone dialing into your system to use a call-back modem to call  
-them back at their home number. This is more secure, but if someone is  
-not at home, it makes it difficult for them to login. You could also  
-setup your Linux system with no network or connection to the Internet,  
-but this limits its usefulness.  
-  
-  
-If you are a medium to large-sized site, you should establish a  
-security policy stating how much security is required by your site  
-and what auditing is in place to check it. You can find a well-known  
-security policy example at  
-http://www.faqs.org/rfcs/rfc2196.html. It has been recently  
-updated, and contains a great framework for establishing a security  
-policy for your company.  
-  
-  
-  
-  
-  
-  
-  
-!!2.3 What Are You Trying to Protect?  
-  
-  
-  
-Before you attempt to secure your system, you should determine what  
-level of threat you have to protect against, what risks you should or  
-should not take, and how vulnerable your system is as a result. You  
-should analyze your system to know what you're protecting,  
-why you're protecting it, what value it has, and who has  
-responsibility for your data and other assets.  
-  
-  
-  
-  
-  
-*''Risk'' is the possibility that an intruder may be successful in  
-attempting to access your computer. Can an intruder read or write  
-files, or execute programs that could cause damage? Can they delete  
-critical data? Can they prevent you or your company from getting important work  
-done? Don't forget: someone gaining access to your account, or your  
-system, can also impersonate you.  
-  
-  
-Additionally, having one insecure account on your system can result in  
-your entire network being compromised. If you allow a single user  
-to login using a .rhosts file, or to use an insecure  
-service such as tftp, you risk an intruder getting 'his  
-foot in the door'. Once the intruder has a user account on your  
-system, or someone else's system, it can be used to gain access to  
-another system, or another account.  
-  
-  
-  
-  
-*  
-  
-*''Threat'' is typically from someone with motivation to gain unauthorized  
-access to your network or computer. You must decide whom you trust to  
-have access to your system, and what threat they could pose.  
-  
-  
-There are several types of intruders, and it is useful to keep their  
-different characteristics in mind as you are securing your systems.  
-  
-  
-  
-  
-  
-**__The Curious__ - This type of intruder is basically  
-interested in finding out what type of system and data you have.  
-**  
-  
-**__The Malicious__ - This type of intruder is out to either  
-bring down your systems, or deface your web page, or otherwise force you  
-to spend time and money recovering from the damage he has caused.  
-**  
-  
-**__The High-Profile Intruder__ - This type of intruder is  
-trying to use your system to gain popularity and infamy. He might use  
-your high-profile system to advertise his abilities.  
-**  
-  
-**__The Competition__ - This type of intruder is interested in  
-what data you have on your system. It might be someone who thinks you  
-have something that could benefit him, financially or otherwise.  
-**  
-  
-**__The Borrowers__ - This type of intruder is interested in  
-setting up shop on your system and using its resources for their own  
-purposes. He typically will run chat or irc servers, porn archive  
-sites, or even DNS servers.  
-**  
-  
-**__The Leapfrogger__ - This type of intruder is only  
-interested in your system to use it to get into other systems. If your  
-system is well-connected or a gateway to a number of internal hosts,  
-you may well see this type trying to compromise your system.  
-**  
-  
-  
-  
-  
-  
-*  
-  
-*Vulnerability describes how well-protected your computer is from  
-another network, and the potential for someone to gain unauthorized  
-access.  
-  
-  
-What's at stake if someone breaks into your system? Of course the  
-concerns of a dynamic PPP home user will be different from those of a  
-company connecting their machine to the Internet, or another large  
-network.  
-  
-  
-How much time would it take to retrieve/recreate any data that was  
-lost? An initial time investment now can save ten times more time  
-later if you have to recreate data that was lost. Have you checked  
-your backup strategy, and verified your data lately?  
-  
-*  
-  
-  
-  
-  
-  
-!!2.4 Developing A Security Policy  
-  
-  
-  
-Create a simple, generic policy for your system that your users can  
-readily understand and follow. It should protect the data you're  
-safeguarding as well as the privacy of the users. Some things to  
-consider adding are: who has access to the system (Can my friend use my  
-account?), who's allowed to install software on the system, who owns  
-what data, disaster recovery, and appropriate use of the system.  
-  
-  
-A generally-accepted security policy starts with the phrase  
-  
-  
-  
-  
-__ That which is not permitted is prohibited__  
-  
-  
-  
-This means that unless you grant access to a service for a user, that  
-user shouldn't be using that service until you do grant access. Make  
-sure the policies work on your regular user account. Saying, "Ah, I  
-can't figure out this permissions problem, I'll just do it as root"  
-can lead to security holes that are very obvious, and even ones that  
-haven't been exploited yet.  
-  
-  
-  
-rfc1244  
-is a document that describes how to create your own network security  
-policy.  
-  
-  
-  
-rfc1281  
-is a document that shows an example security policy with detailed  
-descriptions of each step.  
-  
-  
-Finally, you might want to look at the COAST policy archive at  
-ftp://coast.cs.purdue.edu/pub/doc/policy to see what some  
-real-life security policies look like.  
-  
-  
-  
-  
-!!2.5 Means of Securing Your Site  
-  
-  
-  
-This document will discuss various means with which you can secure  
-the assets you have worked hard for: your local machine,  
-your data, your users, your network, even your reputation. What would  
-happen to your reputation if an intruder deleted some of your users'  
-data? Or defaced your web site? Or published your company's  
-corporate project plan for next quarter? If you are planning a network  
-installation, there are many factors you must take into account before  
-adding a single machine to your network.  
-  
-  
-Even if you have a single dial up PPP account, or just a small site,  
-this does not mean intruders won't be interested in your systems.  
-Large, high-profile sites are not the only targets -- many intruders  
-simply want to exploit as many sites as possible, regardless of their  
-size. Additionally, they may use a security hole in your site to gain  
-access to other sites you're connected to.  
-  
-  
-Intruders have a lot of time on their hands, and can avoid guessing  
-how you've obscured your system just by trying all the  
-possibilities. There are also a number of reasons an intruder may be  
-interested in your systems, which we will discuss later.  
-  
-  
-  
-  
-  
-  
-  
-!Host Security  
-  
-  
-Perhaps the area of security on which administrators concentrate most is  
-host-based security. This typically involves making sure your own  
-system is secure, and hoping everyone else on your network does the  
-same. Choosing good passwords, securing your host's local network  
-services, keeping good accounting records, and upgrading programs with  
-known security exploits are among the things the local security  
-administrator is responsible for doing. Although this is absolutely  
-necessary, it can become a daunting task once your network becomes  
-larger than a few machines.  
-  
-  
-  
-  
-!Local Network Security  
-  
-  
-Network security is as necessary as local host security. With  
-hundreds, thousands, or more computers on the same network,  
-you can't rely on each one of those systems being secure. Ensuring  
-that only authorized users can use your network,  
-building firewalls, using strong encryption, and ensuring  
-there are no "rogue" (that is, unsecured) machines on your network are all  
-part of the network security administrator's duties.  
-  
-  
-This document will discuss some of the techniques used to secure your  
-site, and hopefully show you some of the ways to prevent an intruder  
-from gaining access to what you are trying to protect.  
-  
-  
-  
-  
-!Security Through Obscurity  
-  
-  
-  
-  
-  
-One type of security that must be discussed is "security through  
-obscurity". This means, for example, moving a service that has known  
-security vulnerabilities to a non-standard port in hopes that attackers  
-won't notice it's there and thus won't exploit it. Rest assured that  
-they can determine that it's there and will exploit it. Security  
-through obscurity is no security at all. Simply because you may have a  
-small site, or a relatively low profile, does not mean an intruder  
-won't be interested in what you have. We'll discuss what you're  
-protecting in the next sections.  
-  
-  
-  
-  
-!!2.6 Organization of This Document  
-  
-  
-  
-This document has been divided into a number of sections. They cover  
-several broad security issues. The first,  
-Physical Security,  
-covers how you need to protect your physical machine from  
-tampering. The second,  
-Local Security, describes how to  
-protect your system from tampering by local users. The third,  
-Files and Filesystem Security,  
-shows you how to setup your file systems and permissions on your  
-files. The next,  
-Password Security and Encryption, discusses how to use encryption to better secure  
-your machine and network.  
-Kernel Security discusses what kernel  
-options you should set or be aware of for a more secure system.  
-Network Security, describes how to  
-better secure your Linux system from network attacks.  
-Security Preparation, discusses how to  
-prepare your machine(s) before bringing them on-line. Next,  
-What To Do During and After a Break-in,  
-discusses what to do when you detect a system compromise in progress  
-or detect one that has recently happened. In  
-Security Resources, some primary security resources are enumerated.  
-The Q and A section  
-Frequently Asked Questions,  
-answers some frequently-asked questions, and finally a conclusion in  
-Conclusion.  
-  
-  
-The two main points to realize when reading this document are:  
-  
-  
-  
-  
-  
-*Be aware of your system. Check system logs such as  
-/var/log/messages and keep an eye on your system, and  
-*  
-  
-*Keep your system up-to-date by making sure you have installed the  
-current versions of software and have upgraded per security alerts.  
-Just doing this will help make your system markedly more secure.  
-*  
-  
-  
-  
-  
-----  
-  
-!! 3. Physical Security  
-  
-  
-The first layer of security you need to take into account is the  
-physical security of your computer systems. Who has direct physical  
-access to your machine? Should they? Can you protect your machine from  
-their tampering? Should you?  
-  
-  
-How much physical security you need on your system is very dependent  
-on your situation, and/or budget.  
-  
-  
-If you are a home user, you probably don't need a lot (although you  
-might need to protect your machine from tampering by children or  
-annoying relatives). If you are in a lab, you need  
-considerably more, but users will still need to be able to get work  
-done on the machines. Many of the following sections will help out. If  
-you are in an office, you may or may not need to secure your machine  
-off-hours or while you are away. At some companies, leaving your  
-console unsecured is a termination offense.  
-  
-  
-Obvious physical security methods such as locks on doors, cables,  
-locked cabinets, and video surveillance are all good ideas, but beyond  
-the scope of this document. :)  
-  
-  
-  
-  
-!!3.1 Computer locks  
-  
-  
-  
-Many modern PC cases include a "locking" feature. Usually this  
-will be a socket on the front of the case that allows you to turn an  
-included key to a locked or unlocked position. Case locks can help  
-prevent someone from stealing your PC, or opening up the case and  
-directly manipulating/stealing your hardware. They can also sometimes  
-prevent someone from rebooting your computer from their own floppy or  
-other hardware.  
-  
-  
-These case locks do different things according to the support in the  
-motherboard and how the case is constructed. On many PC's they make it  
-so you have to break the case to get the case open. On some others,  
-they will not let you plug in new keyboards or  
-mice. Check your motherboard or case instructions for more  
-information. This can sometimes be a very useful feature, even though  
-the locks are usually very low-quality and can easily be defeated by  
-attackers with locksmithing.  
-  
-  
-Some machines (most notably SPARC's and macs) have a dongle on the back  
-that, if you put a cable through, attackers would have to cut the cable  
-or break the case to get into it. Just putting a padlock or combo lock  
-through these can be a good deterrent to someone stealing your  
-machine.  
-  
-  
-  
-  
-  
-  
-  
-!!3.2 BIOS Security  
-  
-  
-  
-The BIOS is the lowest level of software that configures or  
-manipulates your x86-based hardware. LILO and other Linux boot methods  
-access the BIOS to determine how to boot up your Linux machine. Other  
-hardware that Linux runs on has similar software (Open Firmware on Macs  
-and new Suns, Sun boot PROM, etc...). You can use your BIOS to prevent  
-attackers from rebooting your machine and manipulating your Linux  
-system.  
-  
-  
-Many PC BIOSs let you set a boot password. This  
-doesn't provide all that much security (the BIOS can be reset, or removed  
-if someone can get into the case), but might be a good deterrent (i.e. it  
-will take time and leave traces of tampering). Similarly, on  
-S/Linux (Linux for SPARC(tm) processor machines), your EEPROM  
-can be set to require a boot-up password. This might slow attackers down.  
-  
-  
-Another risk of trusting BIOS passwords to secure your system is the  
-default password problem. Most BIOS makers don't expect people to  
-open up their computer and disconnect batteries if they forget their  
-password and have equipped their BIOSes with default passwords that  
-work regardless of your chosen password. Some of the more common  
-passwords include:  
-  
-  
-j262  
-AWARD_SW  
-AWARD_PW  
-lkwpeter  
-Biostar  
-AMI  
-Award  
-bios  
-BIOS  
-setup  
-cmos  
-AMI!SW1  
-AMI?SW1  
-password  
-hewittrand  
-shift + s y x z  
-  
-  
-I tested an Award BIOS and AWARD_PW worked. These passwords are quite  
-easily available from manufacturers' websites and  
-http://astalavista.box.sk  
-and as such a BIOS password cannot be considered adequate protection  
-from a knowledgeable attacker.  
-  
-  
-Many x86 BIOSs also allow you to specify various other good security  
-settings. Check your BIOS manual or look at it the next time you boot  
-up. For example, some BIOSs disallow booting from floppy drives and some  
-require passwords to access some BIOS features.  
-  
-  
-''Note'': If you have a server machine, and you set up a boot password,  
-your machine will not boot up unattended. Keep in mind that you will  
-need to come in and supply the password in the event of a power  
-failure. ;(  
-  
-  
-  
-  
-!!3.3 Boot Loader Security  
-  
-  
-  
-The various Linux boot loaders also can have a boot password set.  
-LILO, for example, has password and restricted  
-settings; password requires password at boot time,  
-whereas restricted requires a boot-time password only if you  
-specify options (such as single) at the LILO prompt.  
-  
-  
->From the lilo.conf man page:  
-  
-  
-password=password  
-The per-image option `password=...' (see below) applies to all images.  
-restricted  
-The per-image option `restricted' (see below) applies to all images.  
-password=password  
-Protect the image by a password.  
-restricted  
-A password is only required to boot the image if  
-parameters are specified on the command line  
-(e.g. single).  
-  
-  
-  
-  
-Keep in mind when setting all these passwords that you need to  
-remember them. :) Also remember that these passwords will merely slow  
-the determined attacker. They won't prevent someone from booting from  
-a floppy, and mounting your root partition. If you are using security  
-in conjunction with a boot loader, you might as well disable booting  
-from a floppy in your computer's BIOS, and password-protect the BIOS.  
-  
-  
-Also keep in mind that the /etc/lilo.conf will need to be mode "600"  
-(readable and writing for root only), or others will be able to read  
-your passwords!  
-  
-  
-If anyone has security-related information from a different boot  
-loader, we would love to hear it. (grub, silo, milo, linload, etc).  
-  
-  
-''Note'': If you have a server machine, and you set up a boot password,  
-your machine will ''not'' boot up unattended. Keep in mind that you will  
-need to come in and supply the password in the event of a power  
-failure. ;(  
-  
-  
-  
-  
-!!3.4 xlock and vlock  
-  
-  
-  
-If you wander away from your machine from time to time, it is nice to  
-be able to "lock" your console so that no one can tamper with, or look at,  
-your work. Two programs that do this are: xlock and vlock.  
-  
-  
-xlock is a X display locker. It should be included in any Linux  
-distributions that support X. Check out the man page for it for more  
-options, but in general you can run xlock from any xterm on your  
-console and it will lock the display and require your password to  
-unlock.  
-  
-  
-vlock is a simple little program that allows you to lock some or all  
-of the virtual consoles on your Linux box. You can lock just the one  
-you are working in or all of them. If you just lock one, others can  
-come in and use the console; they will just not be able to use your  
-virtual console until you unlock it. vlock ships with !RedHat  
-Linux, but your mileage may vary.  
-  
-  
-Of course locking your console will prevent someone from tampering  
-with your work, but won't prevent them from rebooting your machine  
-or otherwise disrupting your work. It also does not prevent them from  
-accessing your machine from another machine on the network and causing  
-problems.  
-  
-  
-More importantly, it does not prevent someone from switching out of  
-the X Window System entirely, and going to a normal virtual console  
-login prompt, or to the VC that X11 was started from, and suspending  
-it, thus obtaining your privileges. For this reason, you might  
-consider only using it while under control of xdm.  
-  
-  
-  
-  
-!!3.5 Security of local devices  
-  
-  
-  
-If you have a webcam or a microphone attached to your system, you  
-should consider if there is some danger of a attacker gaining access  
-to those devices. When not in use, unplugging or removing such devices  
-might be an option. Otherwise you should carefully read and look at  
-any software with provides access to such devices.  
-  
-  
-  
-  
-!!3.6 Detecting Physical Security Compromises  
-  
-  
-  
-The first thing to always note is when your machine was  
-rebooted. Since Linux is a robust and stable OS, the only times your  
-machine should reboot is when ''you'' take it down for OS upgrades,  
-hardware swapping, or the like. If your machine has rebooted without  
-you doing it, that may be a sign that an intruder has compromised  
-it. Many of the ways that your machine can be compromised require the  
-intruder to reboot or power off your machine.  
-  
-  
-Check for signs of tampering on the case and computer area. Although  
-many intruders clean traces of their presence out of logs, it's a good  
-idea to check through them all and note any discrepancy.  
-  
-  
-It is also a good idea to store log data at a secure location, such as  
-a dedicated log server within your well-protected network. Once a  
-machine has been compromised, log data becomes of little use as it  
-most likely has also been modified by the intruder.  
-  
-  
-The syslog daemon can be configured to automatically send log data to  
-a central syslog server, but this is typically sent unencrypted,  
-allowing an intruder to view data as it is being transferred. This  
-may reveal information about your network that is not intended to be  
-public. There are syslog daemons available that encrypt the data as  
-it is being sent.  
-  
-  
-Also be aware that faking syslog messages is easy -- with an exploit  
-program having been published. Syslog even accepts net log entries  
-claiming to come from the local host without indicating their true origin.  
-  
-  
-Some things to check for in your logs:  
-  
-  
-*Short or incomplete logs.  
-*  
-  
-*Logs containing strange timestamps.  
-*  
-  
-*Logs with incorrect permissions or ownership.  
-*  
-  
-*Records of reboots or restarting of services.  
-*  
-  
-*missing logs.  
-*  
-  
-*su entries or logins from strange places.  
-*  
-  
-  
-  
-We will discuss system log data  
-later in the HOWTO.  
-  
-  
-  
-----  
-  
-!! 4. Local Security  
-  
-  
-The next thing to take a look at is the security in your system  
-against attacks from local users. Did we just say ''local'' users? Yes!  
-  
-  
-Getting access to a local user account is one of the first things that system  
-intruders attempt while on their way to exploiting the root  
-account. With lax local security, they can then "upgrade" their normal  
-user access to root access using a variety of bugs and poorly setup  
-local services. If you make sure your local security is tight, then  
-the intruder will have another hurdle to jump.  
-  
-  
-Local users can also cause a lot of havoc with your system even  
-(especially) if they really are who they say they are. Providing  
-accounts to people you don't know or for whom you have no contact information  
-is a very bad idea.  
-  
-  
-  
-  
-!!4.1 Creating New Accounts  
-  
-  
-  
-You should make sure you provide user accounts with only the minimal  
-requirements for the task they need to do. If you provide your son  
-(age 10) with an account, you might want him to only have access to a  
-word processor or drawing program, but be unable to delete data that  
-is not his.  
-  
-  
-Several good rules of thumb when allowing other people legitimate  
-access to your Linux machine:  
-  
-  
-  
-  
-  
-*Give them the minimal amount of privileges they need.  
-*  
-  
-*Be aware when/where they login from, or should be logging in from.  
-*  
-  
-*Make sure you remove inactive accounts, which you can determine by  
-using the 'last' command and/or checking log files for any activity by  
-the user.  
-*  
-  
-*The use of the same userid on all computers and networks is advisable  
-to ease account maintenance, and permits easier analysis of log  
-data.  
-*  
-  
-*The creation of group user-id's should be absolutely prohibited. User  
-accounts also provide accountability, and this is not possible with  
-group accounts.  
-*  
-  
-  
-  
-Many local user accounts that are used in security compromises have  
-not been used in months or years. Since no one is using  
-them they, provide the ideal attack vehicle.  
-  
-  
-  
-  
-!! 4.2 Root Security  
-  
-  
-  
-The most sought-after account on your machine is the root (superuser)  
-account. This account has authority over the entire machine, which  
-may also include authority over other machines on the network.  
-Remember that you should only use the root account for very short,  
-specific tasks, and should mostly run as a normal user. Even small  
-mistakes made while logged in as the root user can cause problems. The  
-less time you are on with root privileges, the safer you will be.  
-  
-  
-Several tricks to avoid messing up your own box as root:  
-  
-  
-*When doing some complex command, try running it first in a  
-non-destructive way...especially commands that use globing: e.g., if  
-you want to do rm foo*.bak, first do ls foo*.bak and make  
-sure you are going to delete the files you think you are. Using echo  
-in place of destructive commands also sometimes works.  
-*  
-  
-*Provide your users with a default alias to the rm command to ask for  
-confirmation for deletion of files.  
-*  
-  
-*  
-Only become root to do single specific tasks. If you find yourself  
-trying to figure out how to do something, go back to a normal user  
-shell until you are ''sure'' what needs to be done by root.  
-*  
-  
-*The command path for the root user is very important. The command  
-path (that is, the PATH environment variable) specifies the  
-directories in which the shell searches for programs. Try to limit  
-the command path for the root user as much as possible, and ''never''  
-include . (which means "the current directory") in your PATH.  
-Additionally, never have writable directories in your search path, as  
-this can allow attackers to modify or place new binaries in your  
-search path, allowing them to run as root the next time you run that  
-command.  
-*  
-  
-*Never use the rlogin/rsh/rexec suite of tools (called the r-utilities)  
-as root. They are subject to many sorts of attacks, and are downright  
-dangerous when run as root. Never create a .rhosts file for root.  
-*  
-  
-*The /etc/securetty file contains a list of terminals that root can  
-login from. By default (on Red Hat Linux) this is set to only the local  
-virtual consoles(vtys). Be very wary of adding anything else to  
-this file. You should be able to login remotely as your regular user  
-account and then su if you need to (hopefully over  
-ssh or other encrypted channel), so there is no  
-need to be able to login directly as root.  
-*  
-  
-*Always be slow and deliberate running as root. Your actions could  
-affect a lot of things. Think before you type!  
-*  
-  
-  
-  
-If you absolutely positively need to allow someone (hopefully very  
-trusted) to have root access to your machine, there are a few  
-tools that can help. sudo allows users to use their password to access  
-a limited set of commands as root. This would allow you to, for  
-instance, let a user be able to eject and mount removable media on  
-your Linux box, but have no other root privileges. sudo also keeps a  
-log of all successful and unsuccessful sudo attempts, allowing you to  
-track down who used what command to do what. For this reason sudo  
-works well even in places where a number of people have root access,  
-because it helps you keep track of changes made.  
-  
-  
-Although sudo can be used to give specific users specific privileges  
-for specific tasks, it does have several shortcomings. It should be  
-used only for a limited set of tasks, like restarting a server, or  
-adding new users. Any program that offers a shell escape will give  
-root access to a user invoking it via sudo. This includes  
-most editors, for example. Also, a program as innocuous as  
-/bin/cat can be used to overwrite files, which could allow  
-root to be exploited. Consider sudo as a means for  
-accountability, and don't expect it to replace the root user and still  
-be secure.  
-  
-  
-  
-----  
-  
-!! 5. Files and File system Security  
-  
-  
-A few minutes of preparation and planning ahead before putting your  
-systems on-line can help to protect them and the data  
-stored on them.  
-  
-  
-*There should never be a reason for users' home directories to allow  
-SUID/SGID programs to be run from there. Use the nosuid option in  
-/etc/fstab for partitions that are writable by others than root. You  
-may also wish to use nodev and noexec on users' home partitions,  
-as well as /var, thus prohibiting execution of programs, and  
-creation of character or block devices, which should never be  
-necessary anyway.  
-*  
-  
-*If you are exporting file-systems using NFS, be sure to configure  
-/etc/exports with the most restrictive access possible. This means  
-not using wild cards, not allowing root write access, and exporting  
-read-only wherever possible.  
-*  
-  
-*Configure your users' file-creation umask to be as restrictive as  
-possible. See  
-umask settings.  
-*  
-  
-*If you are mounting file systems using a network file system such as  
-NFS, be sure to configure /etc/exports with suitable restrictions.  
-Typically, using `nodev', `nosuid', and perhaps `noexec', are  
-desirable.  
-*  
-  
-*Set file system limits instead of allowing unlimited as is the  
-default. You can control the per-user limits using the  
-resource-limits PAM module and /etc/pam.d/limits.conf. For example,  
-limits for group users might look like this:  
-  
-  
-  
-  
-  
-@users hard core  
-@users hard nproc 50  
-@users hard rss 5000  
-  
-  
-  
-  
-This says to prohibit the creation of core files, restrict the  
-number of processes to 50, and restrict memory usage per user to  
-5M.  
-  
-  
-You can also use the /etc/login.defs configuration file to set the  
-same limits.  
-  
-  
-  
-  
-*  
-  
-*The /var/log/wtmp and /var/run/utmp files contain the login records  
-for all users on your system. Their integrity must be maintained  
-because they can be used to determine when and from where a user (or  
-potential intruder) has entered your system. These files should  
-also have 644 permissions, without affecting normal system  
-operation.  
-  
-  
-  
-  
-*  
-  
-*The immutable bit can be used to prevent accidentally deleting or  
-overwriting a file that must be protected. It also prevents someone  
-from creating a hard link to the file. See the chattr(1)  
-man page for information on the immutable bit.  
-  
-  
-  
-  
-*  
-  
-*  
-SUID and SGID files on your system are a potential security risk, and  
-should be monitored closely. Because these programs grant special  
-privileges to the user who is executing them, it is necessary to  
-ensure that insecure programs are not installed. A favorite trick of  
-crackers is to exploit SUID-root programs, then leave a SUID  
-program as a back door to get in the next time, even if the original  
-hole is plugged.  
-  
-  
-Find all SUID/SGID programs on your system, and keep track of what  
-they are, so you are aware of any changes which could indicate a  
-potential intruder. Use the following command to find all SUID/SGID  
-programs on your system:  
-  
-  
-  
-  
-  
-root# find / -type f \( -perm -04000 -o -perm -02000 \)  
-  
-  
-  
-  
-The Debian distribution runs a job each night to determine what SUID  
-files exist. It then compares this to the previous night's run. You can  
-look in /var/log/setuid* for this log.  
-  
-  
-You can remove the SUID or SGID permissions on a  
-suspicious program with chmod, then restore them back if you  
-absolutely feel it is necessary.  
-  
-  
-  
-  
-*  
-  
-*World-writable files, particularly system files, can be a security  
-hole if a cracker gains access to your system and modifies them.  
-Additionally, world-writable directories are dangerous, since they  
-allow a cracker to add or delete files as he wishes. To locate all  
-world-writable files on your system, use the following command:  
-  
-  
-  
-  
-root# find / -perm -2 ! -type l -ls  
-  
-  
-and be sure you know why those files are writable. In the normal  
-course of operation, several files will be world-writable, including some  
-from /dev, and symbolic links, thus the ! -type l  
-which excludes these from the previous find command.  
-  
-*  
-  
-*  
-  
-Unowned files may also be an indication an intruder has accessed your  
-system. You can locate files on your system that have no  
-owner, or belong to no group with the command:  
-  
-  
-  
-  
-  
-root# find / -nouser -o -nogroup -print  
-  
-  
-  
-  
-  
-  
-*  
-  
-*Finding .rhosts files should be a part of your regular system  
-administration duties, as these files should not be permitted on your  
-system. Remember, a cracker only needs one insecure account to  
-potentially gain access to your entire network. You can locate all  
-.rhosts files on your system with the following command:  
-  
-  
-root# find /home -name .rhosts -print  
-  
-  
-  
-*  
-  
-*  
-  
-Finally, before changing permissions on any system files, make sure  
-you understand what you are doing. Never change permissions on a file  
-because it seems like the easy way to get things working. Always  
-determine why the file has that permission before changing it.  
-  
-  
-  
-  
-*  
-  
-  
-!! 5.1 Umask Settings  
-  
-  
-  
-The umask command can be used to determine the default file creation  
-mode on your system. It is the octal complement of the desired file  
-mode. If files are created without any regard to their permissions  
-settings, the user could inadvertently give read or write permission  
-to someone that should not have this permission. Typical umask  
-settings include 022, 027, and 077 (which is the most  
-restrictive). Normally the umask is set in /etc/profile, so it applies  
-to all users on the system. The file creation mask can be calculated  
-by subtracting the desired value from 777. In other words, a umask of  
-777 would cause newly-created files to contain no read, write or execute  
-permission for anyone. A mask of 666 would cause newly-created files  
-to have a mask of 111. For example, you may have a line that  
-looks like this:  
-  
-  
-  
-  
-  
-# Set the user's default umask  
-umask 033  
-  
-  
-Be sure to make root's umask 077, which will disable read, write, and  
-execute permission for other users, unless explicitly changed using  
-chmod. In this case, newly-created directories would have 744  
-permissions, obtained by subtracting 033 from 777. Newly-created files  
-using the 033 umask would have permissions of 644.  
-  
-  
-If you are using Red Hat, and adhere to their user and group ID  
-creation scheme (User Private Groups), it is only necessary to use 002  
-for a umask. This is due to the fact that the default configuration  
-is one user per group.  
-  
-  
-  
-  
-!!5.2 File Permissions  
-  
-  
-  
-It's important to ensure that your system files are not open for  
-casual editing by users and groups who shouldn't be doing such system  
-maintenance.  
-  
-  
-Unix separates access control on files and directories according to  
-three characteristics: owner, group, and other. There is always  
-exactly one owner, any number of members of the group, and everyone  
-else.  
-  
-  
-A quick explanation of Unix permissions:  
-  
-  
-Ownership - Which user(s) and group(s) retain(s) control of the  
-permission settings of the node and parent of the node  
-  
-  
-Permissions - Bits capable of being set or reset to allow certain  
-types of access to it. Permissions for directories may have a  
-different meaning than the same set of permissions on files.  
-  
-  
-__Read:__  
-  
-  
-*To be able to view contents of a file  
-*  
-  
-*To be able to read a directory  
-*  
-  
-  
-  
-__Write:__  
-  
-  
-*To be able to add to or change a file  
-*  
-  
-*To be able to delete or move files in a directory  
-*  
-  
-  
-  
-__Execute:__  
-  
-  
-*To be able to run a binary program or shell script  
-*  
-  
-*To be able to search in a directory, combined with read permission  
-*  
-  
-  
-  
-  
-  
-; __Save Text Attribute: (For directories)__:  
-  
-The "sticky bit" also has a different meaning when  
-applied to directories than when applied to files. If the sticky bit is set on a directory, then  
-a user may only delete files that the he owns or for which he has  
-explicit write permission granted, even when he has write access to  
-the directory. This is designed for directories like /tmp, which are  
-world-writable, but where it may not be desirable to allow any user to  
-delete files at will. The sticky bit is seen as a t in a long  
-directory listing.  
-  
-  
-  
-  
-  
-; __SUID Attribute: (For Files)__:  
-  
-This describes set-user-id permissions on the file. When the set user  
-ID access mode is set in the owner permissions, and the file is  
-executable, processes which run it are granted access to system  
-resources based on user who owns the file, as opposed to the user who  
-created the process. This is the cause of many "buffer overflow" exploits.  
-  
-  
-; __SGID Attribute: (For Files)__:  
-  
-If set in the group permissions, this bit controls the "set group id"  
-status of a file. This behaves the same way as SUID, except the group  
-is affected instead. The file must be executable for this to  
-have any effect.  
-  
-  
-  
-  
-  
-; __SGID Attribute: (For directories)__:  
-  
-If you set the SGID bit on a directory (with chmod g+s ''directory''),  
-files created in that directory will have their group set to the  
-directory's group.  
-  
-  
-  
-You - The owner of the file  
-  
-  
-Group - The group you belong to  
-  
-  
-Everyone - Anyone on the system that is not the owner or a member  
-of the group  
-  
-  
-  
-  
-  
-__File Example:__  
-  
-  
-  
-  
-  
--rw-r--r-- 1 kevin users 114 Aug 28 1997 .zlogin  
-1st bit - directory? (no)  
-2nd bit - read by owner? (yes, by kevin)  
-3rd bit - write by owner? (yes, by kevin)  
-4th bit - execute by owner? (no)  
-5th bit - read by group? (yes, by users)  
-6th bit - write by group? (no)  
-7th bit - execute by group? (no)  
-8th bit - read by everyone? (yes, by everyone)  
-9th bit - write by everyone? (no)  
-10th bit - execute by everyone? (no)  
-  
-  
-  
-  
-The following lines are examples of the minimum sets of permissions  
-that are required to perform the access described. You may want to  
-give more permission than what's listed here, but this should  
-describe what these minimum permissions on files do:  
-  
-  
-  
-  
-  
--r-------- Allow read access to the file by owner  
---w------- Allows the owner to modify or delete the file  
-(Note that anyone with write permission to the directory  
-the file is in can overwrite it and thus delete it)  
----x------ The owner can execute this program, but not shell scripts,  
-which still need read permission  
----s------ Will execute with effective User ID = to owner  
---------s- Will execute with effective Group ID = to group  
--rw------T No update of "last modified time". Usually used for swap  
-files  
----t------ No effect. (formerly sticky bit)  
-  
-  
-__Directory Example:__  
-  
-  
-drwxr-xr-x 3 kevin users 512 Sep 19 13:47 .public_html/  
-1st bit - directory? (yes, it contains many files)  
-2nd bit - read by owner? (yes, by kevin)  
-3rd bit - write by owner? (yes, by kevin)  
-4th bit - execute by owner? (yes, by kevin)  
-5th bit - read by group? (yes, by users  
-6th bit - write by group? (no)  
-7th bit - execute by group? (yes, by users)  
-8th bit - read by everyone? (yes, by everyone)  
-9th bit - write by everyone? (no)  
-10th bit - execute by everyone? (yes, by everyone)  
-  
-  
-  
-  
-The following lines are examples of the minimum sets of permissions  
-that are required to perform the access described. You may want to  
-give more permission than what's listed, but this should describe what  
-these minimum permissions on directories do:  
-  
-  
-  
-  
-  
-dr-------- The contents can be listed, but file attributes can't be read  
-d--x------ The directory can be entered, and used in full execution  
-paths  
-dr-x------ File attributes can be read by owner  
-d-wx------ Files can be created/deleted, even if the directory  
-isn't the current one  
-d------x-t Prevents files from deletion by others with write  
-access. Used on /tmp  
-d---s--s-- No effect  
-  
-  
-  
-  
-System configuration files (usually in /etc) are usually mode 640  
-(-rw-r-----), and owned by root. Depending on your site's security  
-requirements, you might adjust this. Never leave any system files  
-writable by a group or everyone. Some configuration files, including  
-/etc/shadow, should only be readable by root, and directories in /etc  
-should at least not be accessible by others.  
-  
-  
-  
-  
-; __SUID Shell Scripts__:  
-  
-SUID shell scripts are a serious security risk, and for this reason  
-the kernel will not honor them. Regardless of how secure you think  
-the shell script is, it can be exploited to give the cracker a root  
-shell.  
-  
-  
-  
-  
-  
-!!5.3 Integrity Checking  
-  
-  
-  
-Another very good way to detect local (and also network) attacks on  
-your system is to run an integrity checker like Tripwire,  
-Aide or Osiris.  
-These integrety checkers run a number of checksums on all your important  
-binaries and config files and compares them against a database of former,  
-known-good values as a reference. Thus, any changes in the files will  
-be flagged.  
-  
-  
-It's a good idea to install these sorts of programs onto a floppy, and then  
-physically set the write protect on the floppy. This way intruders  
-can't tamper with the integrety checker itself or change the database. Once you  
-have something like this setup, it's a good idea to run it as part of your normal  
-security administration duties to see if anything has changed.  
-  
-  
-You can even add a crontab entry to run the checker from your floppy  
-every night and mail you the results in the morning. Something like:  
-  
-  
-# set mailto  
-MAILTO=kevin  
-# run Tripwire  
-15 05 * * * root /usr/local/adm/tcheck/tripwire  
-  
-  
-will mail you a report each morning at 5:15am.  
-  
-  
-Integrity checkers can be a godsend to detecting intruders before you would  
-otherwise notice them. Since a lot of files change on the average  
-system, you have to be careful what is cracker activity and what is  
-your own doing.  
-  
-  
-You can find the freely available unsusported version of  
-Tripwire at  
-http://www.tripwire.org,  
-free of charge. Manuals and support can be purchased.  
-  
-  
-Aide can be found at  
-http://www.cs.tut.fi/~rammer/aide.html.  
-  
-  
-Osiris can be found at  
-http://www.shmoo.com/osiris/.  
-  
-  
-  
-  
-!!5.4 Trojan Horses  
-  
-  
-  
-"Trojan Horses" are named after the fabled ploy in Homer's "Iliad".  
-The idea is that a cracker distributes a program or binary that sounds  
-great, and encourages other people to download it and run it as root. Then  
-the program can compromise their system while they are not paying  
-attention. While they think the binary they just pulled down does one  
-thing (and it might very well), it also compromises their security.  
-  
-  
-You should take care of what programs you install on your  
-machine. !RedHat provides MD5 checksums and PGP signatures on its RPM  
-files so you can verify you are installing the real thing. Other  
-distributions have similar methods. You should never run any unfamiliar  
-binary, for which you don't have the source, as root! Few attackers are  
-willing to release source code to public scrutiny.  
-  
-  
-Although it can be complex, make sure you are getting the source for  
-a program from its real distribution site. If the program is going to  
-run as root, make sure either you or someone you trust has looked over  
-the source and verified it.  
-  
-  
-  
-----  
-  
-!! 6. Password Security and Encryption  
-  
-  
-One of the most important security features used today are  
-passwords. It is important for both you and all your users to have  
-secure, unguessable passwords. Most of the more recent Linux  
-distributions include passwd programs that do not allow you to set a  
-easily guessable password. Make sure your passwd program is up to date  
-and has these features.  
-  
-  
-In-depth discussion of encryption is beyond the scope of this  
-document, but an introduction is in order. Encryption is very useful,  
-possibly even necessary in this day and age. There are all sorts of  
-methods of encrypting data, each with its own set of  
-characteristics.  
-  
-  
-Most Unicies (and Linux is no exception) primarily use a one-way  
-encryption algorithm, called DES (Data Encryption Standard) to encrypt  
-your passwords. This encrypted password is then stored in (typically)  
-/etc/passwd (or less commonly) /etc/shadow. When you attempt to login,  
-the password you type in is encrypted again and compared with the entry in  
-the file that stores your passwords. If they match, it must be the  
-same password, and you are allowed access. Although DES is a two-way  
-encryption algorithm (you can code and then decode a message, given  
-the right keys), the variant that most Unixes use is one-way. This  
-means that it should not be possible to reverse the encryption to get  
-the password from the contents of /etc/passwd (or /etc/shadow).  
-  
-  
-Brute force attacks, such as "Crack" or "John the Ripper" (see Section  
-crack  
-) can often guess passwords unless your password is sufficiently  
-random. PAM modules (see below) allow you to use a different  
-encryption routine with your passwords (MD5 or the like). You can use  
-Crack to your advantage, as well. Consider periodically running Crack  
-against your own password database, to find insecure passwords. Then  
-contact the offending user, and instruct him to change his password.  
-  
-  
-You can go to  
-http://consult.cern.ch/writeup/security/security_3.html for  
-information on how to choose a good password.  
-  
-  
-  
-  
-!!6.1 PGP and Public-Key Cryptography  
-  
-  
-  
-  
-  
-  
-Public-key cryptography, such as that used for PGP,  
-uses one key for encryption, and one key for  
-decryption. Traditional cryptography, however, uses the same key  
-for encryption and decryption; this key must  
-be known to both parties, and thus somehow transferred from one to the other  
-securely.  
-  
-  
-To alleviate the need to securely transmit the encryption  
-key, public-key encryption uses two separate keys: a public key  
-and a private key. Each person's public key is available by anyone to  
-do the encryption, while at the same time each person keeps his or her  
-private key to decrypt messages encrypted with the correct public key.  
-  
-  
-There are advantages to both public key and private key cryptography,  
-and you can read about those differences in  
-the RSA Cryptography FAQ,  
-listed at the end of this section.  
-  
-  
-PGP (Pretty Good Privacy) is well-supported on Linux. Versions 2.6.2  
-and 5.0 are known to work well. For a good primer on PGP and how to  
-use it, take a look at the PGP FAQ:  
-http://www.pgp.com/service/export/faq/55faq.cgi  
-  
-Be sure to use the version that is applicable to your country. Due  
-to export restrictions by the US Government, strong-encryption is  
-prohibited from being transferred in electronic form outside the  
-country.  
-  
-  
-US export controls are now managed by EAR (Export Administration  
-Regulations). They are no longer governed by ITAR.  
-  
-  
-There is also a step-by-step guide for configuring PGP on Linux  
-available at  
-http://mercury.chem.pitt.edu/~angel/!LinuxFocus/English/November1997/article7.html.  
-It was written for the international version of PGP, but is easily  
-adaptable to the United States version. You may also need a patch for  
-some of the latest versions of Linux; the patch is available at  
-ftp://metalab.unc.edu/pub/Linux/apps/crypto.  
-  
-  
-There is a project maintaining a free re-implementation of pgp with  
-open source. GnuPG is a complete and free replacement for PGP. Because  
-it does not use IDEA or RSA it can be used without any  
-restrictions. GnuPG is in compliance with  
-OpenPGP.  
-See the GNU Privacy Guard web page for more information:  
-http://www.gnupg.org/.  
-  
-  
-More information on cryptography can be found in the RSA cryptography  
-FAQ, available at  
-http://www.rsa.com/rsalabs/newfaq/. Here you will find  
-information on such terms as "Diffie-Hellman", "public-key  
-cryptography", "digital certificates", etc.  
-  
-  
-  
-  
-  
-  
-  
-!!6.2 SSL, S-HTTP and S/MIME  
-  
-  
-  
-Often users ask about the differences between the various  
-security and encryption protocols, and how to use them. While this  
-isn't an encryption document, it is a good idea to explain briefly  
-what each protocol is, and where to find more information.  
-  
-  
-*__SSL:__ - SSL, or Secure Sockets Layer, is an encryption  
-method developed by Netscape to provide security over the Internet.  
-It supports several different encryption protocols, and provides  
-client and server authentication. SSL operates at the transport  
-layer, creates a secure encrypted channel of data, and thus can  
-seamlessly encrypt data of many types. This is most commonly seen  
-when going to a secure site to view a secure online document with  
-Communicator, and serves as the basis for secure communications with  
-Communicator, as well as many other Netscape Communications data  
-encryption. More information can be found at  
-http://www.consensus.com/security/ssl-talk-faq.html.  
-Information on Netscape's other security implementations, and a good  
-starting point for these protocols is available at  
-http://home.netscape.com/info/security-doc.html. It's also  
-worth noting that the SSL protocol can be used to pass many other  
-common protocols, "wrapping" them for security. See  
-http://www.quiltaholic.com/rickk/sslwrap/  
-  
-  
-  
-  
-  
-  
-  
-*  
-  
-*__S-HTTP:__ - S-HTTP is another protocol that provides  
-security services across the Internet. It was designed to provide  
-confidentiality, authentication, integrity, and non-repudiability [[cannot be mistaken for someone else ] while supporting multiple  
-key-management mechanisms and cryptographic algorithms via option  
-negotiation between the parties involved in each transaction. S-HTTP  
-is limited to the specific software that is implementing it, and  
-encrypts each message individually. [[ From RSA Cryptography FAQ,  
-page 138]  
-  
-  
-  
-  
-*  
-  
-*__S/MIME:__ - S/MIME, or Secure Multipurpose Internet Mail  
-Extension, is an encryption standard used to encrypt electronic mail  
-and other types of messages on the Internet. It is an open standard  
-developed by RSA, so it is likely we will see it on Linux one day  
-soon. More information on S/MIME can be found at  
-http://home.netscape.com/assist/security/smime/overview.html.  
-*  
-  
-  
-  
-  
-  
-!!6.3 Linux IPSEC Implementations  
-  
-  
-  
-Along with CIPE, and other forms of data encryption, there are also  
-several other implementations of IPSEC for Linux. IPSEC is an effort  
-by the IETF to create cryptographically-secure communications at the  
-IP network level, and to provide authentication, integrity, access control,  
-and confidentiality. Information on IPSEC and Internet draft can be  
-found at  
-http://www.ietf.org/html.charters/ipsec-charter.html. You can  
-also find links to other protocols involving key management, and an  
-IPSEC mailing list and archives.  
-  
-  
-The x-kernel Linux implementation, which is being developed at the University  
-of Arizona, uses an object-based framework for implementing network  
-protocols called x-kernel, and can be found at  
-http://www.cs.arizona.edu/xkernel/hpcc-blue/linux.html. Most  
-simply, the x-kernel is a method of passing messages at the kernel  
-level, which makes for an easier implementation.  
-  
-  
-Another freely-available IPSEC implementation is the Linux FreeS/WAN  
-IPSEC. Their web page states,  
-  
-"These services allow you to build  
-secure tunnels through untrusted networks. Everything passing through  
-the untrusted net is encrypted by the IPSEC gateway machine and  
-decrypted by the gateway at the other end. The result is Virtual  
-Private Network or VPN. This is a network which is effectively private  
-even though it includes machines at several different sites connected  
-by the insecure Internet."  
-  
-  
-  
-It's available for download from  
-http://www.xs4all.nl/~freeswan/, and has just reached 1.0 at the  
-time of this writing.  
-  
-  
-As with other forms of cryptography, it is not distributed with the  
-kernel by default due to export restrictions.  
-  
-  
-  
-  
-!! 6.4 ssh (Secure Shell) and stelnet  
-  
-  
-  
-ssh and stelnet are suites of programs that  
-allow you to login to remote systems and have a encrypted connection.  
-  
-  
-openssh is a suite of programs used as a secure replacement  
-for rlogin, rsh and rcp. It uses public-key  
-cryptography to encrypt communications between two hosts, as well as to  
-authenticate users. It can be used to securely login to a remote host  
-or copy data between hosts, while preventing man-in-the-middle attacks  
-(session hijacking) and DNS spoofing. It will perform data compression  
-on your connections, and secure X11 communications between hosts.  
-  
-  
-There are several ssh implementiations now. The original commercial  
-implementation by Data Fellows can be found at  
-The ssh home page can be found at  
-http://www.datafellows.com.  
-  
-  
-The excellent Openssh implementation is based on a early version of  
-the datafellows ssh and has been totally reworked to not include any  
-patented or proprietary pieces. It is free and under a BSD  
-license. It can be found at:  
-http://www.openssh.com.  
-  
-  
-There is also a open source  
-project to re-implement ssh from the ground up called "psst...". For  
-more information see:  
-http://www.net.lut.ac.uk/psst/  
-  
-  
-You can also use ssh from your Windows workstation to your  
-Linux ssh  
-server. There are several freely available Windows client  
-implementations, including the one at  
-http://guardian.htu.tuwien.ac.at/therapy/ssh/ as well as a  
-commercial implementation from !DataFellows, at  
-http://www.datafellows.com.  
-  
-  
-SSLeay is a free implementation of Netscape's Secure Sockets Layer  
-protocol, developed by Eric Young. It includes several applications,  
-such as Secure telnet, a module for Apache, several databases, as well  
-as several algorithms including DES, IDEA and Blowfish.  
-  
-  
-Using this library, a secure telnet replacement has been created that  
-does encryption over a telnet connection. Unlike SSH, stelnet uses  
-SSL, the Secure Sockets Layer protocol developed by Netscape. You can  
-find Secure telnet and Secure FTP by starting with the SSLeay FAQ,  
-available at  
-http://www.psy.uq.oz.au/~ftp/Crypto/.  
-  
-  
-SRP is another secure telnet/ftp implementation. From their web page:  
-  
-  
-  
-  
-"The SRP project is developing secure Internet software for free  
-worldwide use. Starting with a fully-secure Telnet and FTP  
-distribution, we hope to supplant weak networked authentication  
-systems with strong replacements that do not sacrifice  
-user-friendliness for security. Security should be the default, not an  
-option!"  
-  
-  
-  
-For more information, go to  
-http://www-cs-students.stanford.edu/~tjw/srp/  
-  
-  
-  
-!!6.5 PAM - Pluggable Authentication Modules  
-  
-  
-  
-Newer versions of the Red Hat Linux and Debian Linux distributions ship with a unified  
-authentication scheme called "PAM". PAM allows you to change  
-your authentication methods and requirements on the  
-fly, and encapsulate all  
-local authentication methods without recompiling any of your  
-binaries. Configuration of PAM is beyond the scope of this document,  
-but be sure to take a look at the PAM web site for more  
-information.  
-http://www.kernel.org/pub/linux/libs/pam/index.html.  
-  
-  
-Just a few of the things you can do with PAM:  
-  
-  
-  
-  
-  
-*Use encryption other than DES for your passwords. (Making them harder to  
-brute-force decode)  
-*  
-  
-*Set resource limits on all your users so they can't perform  
-denial-of-service attacks (number of processes, amount of memory, etc)  
-*  
-  
-*Enable shadow passwords (see below) on the fly  
-*  
-  
-*allow specific users to login only at specific times from specific  
-places  
-*  
-  
-  
-  
-Within a few hours of installing and configuring your system, you can  
-prevent many attacks before they even occur. For example, use PAM to  
-disable the system-wide usage of .rhosts files in user's home  
-directories by adding these lines to /etc/pam.d/rlogin:  
-  
-  
-#  
-# Disable rsh/rlogin/rexec for users  
-#  
-login auth required pam_rhosts_auth.so no_rhosts  
-  
-  
-  
-  
-  
-  
-!!6.6 Cryptographic IP Encapsulation (CIPE)  
-  
-  
-  
-The primary goal of this software is to provide a facility for secure  
-(against eavesdropping, including traffic analysis, and faked message  
-injection) subnetwork interconnection across an insecure packet  
-network such as the Internet.  
-  
-  
-CIPE encrypts the data at the network level. Packets traveling  
-between hosts on the network are encrypted. The encryption engine is  
-placed near the driver which sends and receives packets.  
-  
-  
-This is unlike SSH, which encrypts the data by connection, at the  
-socket level. A logical connection between programs running on  
-different hosts is encrypted.  
-  
-  
-CIPE can be used in tunnelling, in order to create a Virtual Private  
-Network. Low-level encryption has the advantage that it can be made  
-to work transparently between the two networks connected in the VPN,  
-without any change to application software.  
-  
-  
-Summarized from the CIPE documentation:  
-  
-  
-  
-  
-The IPSEC standards define a set of protocols which can be used (among  
-other things) to build encrypted VPNs. However, IPSEC is a rather  
-heavyweight and complicated protocol set with a lot of options,  
-implementations of the full protocol set are still rarely used and  
-some issues (such as key management) are still not fully resolved.  
-CIPE uses a simpler approach, in which many things which can be  
-parameterized (such as the choice of the actual encryption algorithm  
-used) are an install-time fixed choice. This limits flexibility, but  
-allows for a simple (and therefore efficient, easy to debug...)  
-implementation.  
-  
-  
-  
-Further information can be found at  
-http://www.inka.de/~bigred/devel/cipe.html  
-  
-As with other forms of cryptography, it is not distributed with the  
-kernel by default due to export restrictions.  
-  
-  
-  
-  
-  
-  
-  
-!!6.7 Kerberos  
-  
-  
-  
-Kerberos is an authentication system developed by the Athena Project  
-at MIT. When a user logs in, Kerberos authenticates that user (using a  
-password), and provides the user with a way to prove her identity to  
-other servers and hosts scattered around the network.  
-  
-  
-This authentication is then used by programs such as rlogin to allow  
-the user to login to other hosts without a password (in place of the  
-.rhosts file). This authentication method can also used by the mail  
-system in order to guarantee that mail is delivered to the correct  
-person, as well as to guarantee that the sender is who he claims to  
-be.  
-  
-  
-Kerberos and the other  
-programs that come with it, prevent users from "spoofing" the system  
-into believing they are someone else.  
-Unfortunately, installing Kerberos is very intrusive, requiring the  
-modification or replacement of numerous standard programs.  
-  
-  
-You can find more information about kerberos by looking at  
-the kerberos FAQ, and the code can be found at  
-http://nii.isi.edu/info/kerberos/.  
-  
-  
-[[From: Stein, Jennifer G., Clifford Neuman, and Jeffrey L. Schiller.  
-"Kerberos: An Authentication Service for Open Network Systems." USENIX  
-Conference Proceedings, Dallas, Texas, Winter 1998.]  
-  
-  
-Kerberos should not be your first step in improving security of your  
-host. It is quite involved, and not as widely used as, say, SSH.  
-  
-  
-  
-  
-!!6.8 Shadow Passwords.  
-  
-  
-  
-Shadow passwords are a means of keeping your encrypted password  
-information secret from normal users. Recent versions of both Red Hat  
-and Debian Linux use shadow passwords by default, but on other  
-systems, encrypted passwords  
-are stored in /etc/passwd file for all to read. Anyone can then run  
-password-guesser programs on them and attempt to determine what they are.  
-Shadow passwords, by contrast, are saved in /etc/shadow, which  
-only privileged users can read. In order to use shadow passwords, you  
-need to make sure all your utilities that need access to password  
-information are recompiled to support them. PAM (above) also allows you  
-to just plug in a shadow module; it doesn't require re-compilation of  
-executables. You can refer to the Shadow-Password HOWTO for further  
-information if necessary. It is available at  
-http://metalab.unc.edu/LDP/HOWTO/Shadow-Password-HOWTO.html  
-It is rather dated now, and will not be required for distributions  
-supporting PAM.  
-  
-  
-  
-  
-!! 6.9 "Crack" and "John the Ripper"  
-  
-  
-  
-If for some reason your passwd program is not enforcing hard-to-guess  
-passwords, you might want to run a password-cracking program  
-and make sure your users' passwords are secure.  
-  
-  
-Password cracking programs work on a simple idea: they try every word  
-in the dictionary, and then variations on those words, encrypting  
-each one and checking it against your encrypted password. If they get a  
-match they know what your password is.  
-  
-  
-There are a number of programs out there...the two most notable of  
-which are "Crack" and "John the Ripper"  
-(  
-http://www.openwall.com/john/) . They will take  
-up a lot of your CPU time, but you should be able to tell if an  
-attacker could get in using them by running them first yourself and  
-notifying users with weak passwords. Note that an attacker would have  
-to use some other hole first in order to read your  
-/etc/passwd file, but such holes are more common than you might think.  
-  
-  
-Because security is only as strong as the most insecure host, it is worth  
-mentioning that if you have any Windows machines on your network, you should  
-check out L0phtCrack, a Crack implementation for Windows. It's available  
-from  
-http://www.l0pht.com  
-  
-  
-  
-!!6.10 CFS - Cryptographic File System and TCFS - Transparent Cryptographic File System  
-  
-  
-  
-CFS is a way of encrypting entire directory trees and allowing users  
-to store encrypted files on them. It uses an NFS server running on the  
-local machine. RPMS are available at  
-http://www.zedz.net/redhat/, and more information on how it  
-all works is at  
-ftp://ftp.research.att.com/dist/mab/.  
-  
-  
-TCFS improves on CFS by adding more integration with the file system, so  
-that it's transparent to users that the file system that is  
-encrypted. More information at:  
-http://www.tcfs.it/.  
-  
-  
-It also need not be used on entire file systems. It works on  
-directory trees as well.  
-  
-  
-  
-  
-!!6.11 X11, SVGA and display security  
-  
-  
-  
-  
-  
-!X11  
-  
-  
-It's important for you to secure your graphical display to prevent  
-attackers from grabbing your passwords as you type  
-them, reading documents or information you are  
-reading on your screen, or even using a hole to gain root  
-access. Running remote X applications over a network also can be  
-fraught with peril, allowing sniffers to see all your interaction with  
-the remote system.  
-  
-  
-X has a number of access-control mechanisms. The simplest of them is  
-host-based: you use xhost to specify the hosts that are allowed access  
-to your display. This is not very secure at all, because if someone has access  
-to your machine, they can xhost + ''their machine'' and get in  
-easily. Also, if you have to allow access from an untrusted machine,  
-anyone there can compromise your display.  
-  
-  
-When using xdm (X Display Manager) to log in, you get a much better  
-access method: MIT-MAGIC-COOKIE-1. A 128-bit "cookie" is generated and  
-stored in your .Xauthority file. If you need to allow a remote machine  
-access to your display, you can use the xauth command and the  
-information in your .Xauthority file to provide access to only that connection.  
-See the Remote-X-Apps mini-howto, available at  
-http://metalab.unc.edu/LDP/HOWTO/mini/Remote-X-Apps.html.  
-  
-  
-You can also use ssh (see  
-ssh  
-, above) to allow secure X  
-connections. This has the advantage of also being transparent to the  
-end user, and means that no unencrypted data flows across the  
-network.  
-  
-  
-You can also disable any remote connections to your X server by using  
-the '-nolisten tcp' options to your X server. This will prevent any  
-network connections to your server over tcp sockets.  
-  
-  
-Take a look at the Xsecurity man page for more information on X  
-security. The safe bet is to use xdm to login to your console and then  
-use ssh to go to remote sites on which you wish to run X programs.  
-  
-  
-  
-  
-!SVGA  
-  
-  
-SVGAlib programs are typically SUID-root in order to access all your  
-Linux machine's video hardware. This makes them very dangerous. If they  
-crash, you typically need to reboot your machine to get a usable  
-console back. Make sure any SVGA programs you are running are  
-authentic, and can at least be somewhat trusted. Even better, don't  
-run them at all.  
-  
-  
-  
-  
-!GGI (Generic Graphics Interface project)  
-  
-  
-The Linux GGI project is trying to solve several of the problems with  
-video interfaces on Linux. GGI will move a small piece of the video  
-code into the Linux kernel, and then control access to the video  
-system. This means GGI will be able to restore your console at any  
-time to a known good state. They will also allow a secure attention  
-key, so you can be sure that there is no Trojan horse login program  
-running on your console.  
-http://synergy.caltech.edu/~ggi/  
-  
-  
-  
-----  
-  
-!! 7. Kernel Security  
-  
-  
-This is a description of the kernel configuration options that relate  
-to security, and an explanation of what they do, and how to use them.  
-  
-  
-As the kernel controls your computer's networking, it is important  
-that it be very secure, and not be  
-compromised. To prevent some of the latest networking attacks, you  
-should try to keep your kernel version current. You can find new  
-kernels at  
-ftp://ftp.kernel.org or from your distribution  
-vendor.  
-  
-  
-There is also a international group providing a single unified crypto  
-patch to the mainstream Linux kernel. This patch provides support for  
-a number of cryptographic subsystems and things that cannot be  
-included in the mainstream kernel due to export restrictions. For more  
-information, visit their web page at:  
-http://www.kerneli.org  
-  
-  
-  
-!!7.1 2.0 Kernel Compile Options  
-  
-  
-  
-For 2..x kernels, the following options apply. You should see these  
-options during the kernel configuration process. Many of the comments  
- here are from ./linux/Documentation/Configure.help, which is  
-the same document that is referenced while using the Help facility during  
-the make config stage of compiling the kernel.  
-  
-  
-  
-  
-  
-*Network Firewalls  
-(CONFIG_FIREWALL)  
-  
-  
-This option should be on if you intend to run any firewalling or  
-masquerading on your Linux machine. If it's just going to be a regular  
-client machine, it's safe to say no.  
-  
-  
-  
-  
-*  
-  
-*IP: forwarding/gatewaying  
-(CONFIG_IP_FORWARD)  
-  
-  
-If you enable IP forwarding, your Linux box essentially becomes a  
-router. If your machine is on a network, you could be forwarding data  
-from one network to another, and perhaps subverting a firewall that  
-was put there to prevent this from happening. Normal dial-up users  
-will want to disable this, and other users should concentrate on the  
-security implications of doing this. Firewall machines will want this  
-enabled, and used in conjunction with firewall software.  
-  
-  
-You can enable IP forwarding dynamically using the following command:  
-  
-  
-  
-  
-  
-root# echo 1 > /proc/sys/net/ipv4/ip_forward  
-  
-  
-and disable it with the command:  
-  
-  
-root# echo 0 > /proc/sys/net/ipv4/ip_forward  
-  
-  
-Keep in mind the files in /proc are "virtual" files and the shown size  
-of the file might not reflect the data output from it.  
-  
-  
-  
-  
-*  
-  
-*IP: syn cookies  
-(CONFIG_SYN_COOKIES)  
-  
-  
-a "SYN Attack" is a denial of service (DoS) attack that consumes all the  
-resources on your machine, forcing you to reboot. We can't think of a  
-reason you wouldn't normally enable this. In the 2.2.x kernel series  
-this config option merely allows syn cookies, but does not enable  
-them. To enable them, you have to do:  
-  
-  
-  
-  
-  
-root# echo 1 > /proc/sys/net/ipv4/tcp_syncookies <P>  
-  
-  
-  
-  
-  
-  
-*  
-  
-*IP: Firewalling  
-(CONFIG_IP_FIREWALL)  
-  
-  
-This option is necessary if you are going to configure your machine as  
-a firewall, do masquerading, or wish to protect your dial-up  
-workstation from someone entering via your PPP dial-up interface.  
-  
-  
-  
-  
-  
-  
-  
-*  
-  
-*IP: firewall packet logging  
-(CONFIG_IP_FIREWALL_VERBOSE)  
-  
-  
-This option gives you information about packets your firewall  
-received, like sender, recipient, port, etc.  
-  
-*  
-  
-*IP: Drop source routed frames  
-(CONFIG_IP_NOSR)  
-  
-  
-This option should be enabled. Source routed frames contain the  
-entire path to their destination inside of the packet. This means  
-that routers through which the packet goes do not need to inspect it,  
-and just forward it on. This could lead to data entering your system  
-that may be a potential exploit.  
-  
-  
-  
-  
-*  
-  
-*IP: masquerading  
-(CONFIG_IP_MASQUERADE)  
-If one of the computers on your local network for which your Linux  
-box acts as a firewall wants to send something to the outside, your  
-box can "masquerade" as that host, i.e., it forewords the traffic  
-to the intended destination, but makes it look like it came from the  
-firewall box itself. See  
-http://www.indyramp.com/masq for more information.  
-  
-  
-  
-  
-*  
-  
-*IP: ICMP masquerading  
-(CONFIG_IP_MASQUERADE_ICMP)  
-This option adds ICMP masquerading to the previous option of only  
-masquerading TCP or UDP traffic.  
-  
-  
-  
-  
-*  
-  
-*IP: transparent proxy support  
-(CONFIG_IP_TRANSPARENT_PROXY)  
-This enables your Linux firewall to transparently redirect any  
-network traffic originating from the local network and  
-destined for a remote host to a local server, called a "transparent  
-proxy server". This makes the local computers think they are talking  
-to the remote end, while in fact they are connected to the local proxy.  
-See the IP-Masquerading HOWTO and  
-http://www.indyramp.com/masq for more information.  
-  
-  
-  
-  
-*  
-  
-*IP: always defragment  
-(CONFIG_IP_ALWAYS_DEFRAG)  
-  
-  
-Generally this option is disabled, but if you are building a firewall  
-or a masquerading host, you will want to enable it. When data is sent  
-from one host to another, it does not always get sent as a single  
-packet of data, but rather it is fragmented into several pieces. The  
-problem with this is that the port numbers are only stored in the  
-first fragment. This means that someone can insert information into  
-the remaining packets that isn't supposed to be there.  
-It could also prevent a teardrop attack against an internal  
-host that is not yet itself patched against it.  
-  
-  
-  
-  
-*  
-  
-*Packet Signatures  
-(CONFIG_NCPFS_PACKET_SIGNING)  
-  
-  
-This is an option that is available in the 2.2.x kernel series that will  
-sign NCP packets for stronger security. Normally you can leave it  
-off, but it is there if you do need it.  
-  
-  
-  
-  
-*  
-  
-*IP: Firewall packet netlink device  
-(CONFIG_IP_FIREWALL_NETLINK)  
-  
-  
-This is a really neat option that allows you to analyze the first 128  
-bytes of the packets in a user-space program, to determine if you would  
-like to accept or deny the packet, based on its validity.  
-  
-*  
-  
-  
-  
-  
-  
-!!7.2 2.2 Kernel Compile Options  
-  
-  
-  
-For 2.2.x kernels, many of the options are the same, but a few new  
-ones have been developed. Many of the comments here are from  
-./linux/Documentation/Configure.help, which is the same  
-document that is referenced while using the Help facility during  
-the make config stage of compiling the kernel. Only the newly-  
-added options are listed below. Consult the 2.0 description for a  
-list of other necessary options. The most significant change in the  
-2.2 kernel series is the IP firewalling code. The ipchains  
-program is now used to install IP firewalling, instead of the  
-ipfwadm program used in the 2.0 kernel.  
-  
-  
-  
-  
-  
-*Socket Filtering  
-(CONFIG_FILTER)  
-  
-  
-For most people, it's safe to say no to this option. This option  
-allows you to connect a user-space filter to any socket and determine  
-if packets should be allowed or denied. Unless you have a very  
-specific need and are capable of programming such a filter, you should  
-say no. Also note that as of this writing, all protocols were  
-supported except TCP.  
-  
-  
-  
-  
-*  
-  
-*Port Forwarding  
-  
-  
-Port Forwarding is an addition to IP Masquerading which allows some  
-forwarding of packets from outside to inside a firewall on given  
-ports. This could be useful if, for example, you want to run a web  
-server behind the firewall or masquerading host and that web server  
-should be accessible from the outside world. An external client  
-sends a request to port 80 of the firewall, the firewall forwards  
-this request to the web server, the web server handles the request  
-and the results are sent through the firewall to the original  
-client. The client thinks that the firewall machine itself is  
-running the web server. This can also be used for load balancing if  
-you have a farm of identical web servers behind the firewall.  
-  
-  
-Information about this feature is available from  
-http://www.monmouth.demon.co.uk/ipsubs/portforwarding.html (to  
-browse the WWW, you need to have access to a machine on the Internet  
-that has a program like lynx or Netscape). For general info, please  
-see ftp://ftp.compsoc.net/users/steve/ipportfw/linux21/  
-  
-  
-  
-  
-*  
-  
-*Socket Filtering  
-(CONFIG_FILTER)  
-  
-  
-Using this option, user-space programs can attach a filter to any  
-socket and thereby tell the kernel that it should allow or disallow  
-certain types of data to get through the socket. Linux socket  
-filtering works on all socket types except TCP for now. See the  
-text file ./linux/Documentation/networking/filter.txt for  
-more information.  
-  
-  
-  
-  
-*  
-  
-*IP: Masquerading  
-  
-  
-The 2.2 kernel masquerading has been improved. It provides additional  
-support for masquerading special protocols, etc. Be sure to read  
-the IP Chains HOWTO for more information.  
-  
-*  
-  
-  
-  
-  
-  
-!!7.3 Kernel Devices  
-  
-  
-  
-There are a few block and character devices available on Linux that  
-will also help you with security.  
-  
-  
-The two devices /dev/random and /dev/urandom are provided by the  
-kernel to provide random data at any time.  
-  
-  
-Both /dev/random and /dev/urandom should be secure enough to use in  
-generating PGP keys, ssh challenges, and other applications where  
-secure random numbers are required. Attackers should be unable to  
-predict the next number given any initial sequence of numbers from these  
-sources. There has been a lot of effort put in to ensuring that the  
-numbers you get from these sources are random in every sense of the word.  
-  
-  
-The only difference between the two devices, is that /dev/random runs out of random bytes  
-and it makes you wait for more to be accumulated. Note that on some  
-systems, it can block for a long time waiting for new user-generated  
-entropy to be entered into the system. So you have to use care before  
-using /dev/random. (Perhaps the best thing to do is to use it when  
-you're generating sensitive keying information, and you tell the user to  
-pound on the keyboard repeatedly until you print out "OK, enough".)  
-  
-  
-/dev/random is high quality entropy, generated from measuring the  
-inter-interrupt times etc. It blocks until enough bits of random data  
-are available.  
-  
-  
-/dev/urandom is similar, but when the store of entropy is running low,  
-it'll return a cryptographically strong hash of what there is. This  
-isn't as secure, but it's enough for most applications.  
-  
-  
-You might read from the devices using something like:  
-  
-  
-  
-  
-  
-root# head -c 6 /dev/urandom | mimencode  
-  
-  
-This will print six random characters on the console, suitable for  
-password generation. You can find mimencode in the metamail  
-package.  
-  
-  
-See /usr/src/linux/drivers/char/random.c for a description of the  
-algorithm.  
-  
-  
-Thanks to Theodore Y. Ts'o, Jon Lewis, and others from Linux-kernel  
-for helping me (Dave) with this.  
-  
-  
-  
-----  
-  
-!! 8. Network Security  
-  
-  
-Network security is becoming more and more important as people spend  
-more and more time connected. Compromising network security is often  
-much easier than compromising physical or local security, and is much more common.  
-  
-  
-There are a number of good tools to assist with network security, and  
-more and more of them are shipping with Linux distributions.  
-  
-  
-  
-  
-!!8.1 Packet Sniffers  
-  
-  
-  
-One of the most common ways intruders gain access to more systems on  
-your network is by employing a packet sniffer on a already compromised  
-host. This "sniffer" just listens on the Ethernet port for things like  
-passwd and login and su in the packet stream  
-and then logs the traffic after that. This way, attackers gain passwords  
-for systems they are not even attempting to break into. Clear-text  
-passwords are very vulnerable to this attack.  
-  
-  
-Example: Host A has been compromised. Attacker installs a  
-sniffer. Sniffer picks up admin logging into Host B from Host C. It  
-gets the admins personal password as they login to B. Then, the admin  
-does a su to fix a problem. They now have the root password for Host  
-B. Later the admin lets someone telnet from his account to Host Z on  
-another site. Now the attacker has a password/login on Host Z.  
-  
-  
-In this day and age, the attacker doesn't even need to compromise a  
-system to do this: they could also bring a laptop or pc into a  
-building and tap into your net.  
-  
-  
-Using ssh or other encrypted password methods thwarts this  
-attack. Things like APOP for POP accounts also prevents this  
-attack. (Normal POP logins are very vulnerable to this, as is anything  
-that sends clear-text passwords over the network.)  
-  
-  
-  
-  
-!!8.2 System services and tcp_wrappers  
-  
-  
-  
-Before you put your Linux system on ''ANY'' network the first thing to  
-look at is what services you need to offer. Services that you do not  
-need to offer should be disabled so that you have one less thing to  
-worry about and attackers have one less place to look for a hole.  
-  
-  
-There are a number of ways to disable services under Linux. You can  
-look at your /etc/inetd.conf file and see what services are being  
-offered by your inetd. Disable any that you do not need by commenting  
-them out (# at the beginning of the line), and then sending  
-your inetd process a SIGHUP.  
-  
-  
-You can also remove (or comment out) services in your /etc/services  
-file. This will mean that local clients will also be unable to find  
-the service (i.e., if you remove ftp, and try and ftp to a remote site  
-from that machine it will fail with an "unknown service" message). It's  
-usually not worth the trouble to remove services from /etc/services, since it provides no  
-additional security. If a local person wanted to use ftp even though  
-you had commented it out, they would make their own client that used  
-the common FTP port and would still work fine.  
-  
-  
-Some of the services you might want to leave enabled are:  
-  
-  
-  
-  
-  
-*ftp  
-*  
-  
-*telnet (or ssh)  
-*  
-  
-*mail, such as pop-3 or imap  
-*  
-  
-*identd  
-*  
-  
-  
-  
-If you know you are not going to use some particular package, you can  
-also delete it entirely. rpm -e ''packagename'' under  
-the Red Hat distribution will erase an entire package. Under Debian  
-dpkg --remove does the same thing.  
-  
-  
-Additionally, you really want to disable the rsh/rlogin/rcp utilities,  
-including login (used by rlogin), shell (used by rcp),  
-and exec (used  
-by rsh) from being started in /etc/inetd.conf.  
-These protocols are extremely insecure and have been the cause of exploits  
-in the past.  
-  
-  
-You should check /etc/rc.d/rc[[-9].d (on Red Hat;  
-/etc/rc[[-9].d on Debian), and see if any of the servers started in those  
-directories are not needed. The files in those directories are  
-actually symbolic links to files in the directory  
-/etc/rc.d/init.d (on Red Hat; /etc/init.d on Debian).  
-Renaming the files in the init.d directory  
-disables all the symbolic links that point to that file. If you  
-only wish to disable a service for a particular run level, rename the  
-appropriate symbolic link by replacing the upper-case S with a lower-case  
-s, like this:  
-  
-  
-  
-  
-  
-root# cd /etc/rc6.d  
-root# mv S45dhcpd s45dhcpd  
-  
-  
-  
-  
-If you have BSD-style rc files, you will want to check  
-/etc/rc* for programs you don't need.  
-  
-  
-Most Linux distributions ship with tcp_wrappers "wrapping" all your  
-TCP services. A tcp_wrapper (tcpd) is invoked from inetd instead of  
-the real server. tcpd then checks the host that is requesting the  
-service, and either executes the real server, or denies access from that  
-host. tcpd allows you to restrict access to your TCP services. You  
-should make a /etc/hosts.allow and add in only those hosts that need  
-to have access to your machine's services.  
-  
-  
-If you are a home dial up user, we suggest you deny ALL. tcpd also logs  
-failed attempts to access services, so this can alert you if  
-you are under attack. If you add new services, you should be sure to  
-configure them to use tcp_wrappers if they are TCP-based. For example, a normal  
-dial-up user can prevent outsiders from connecting to his machine,  
-yet still have the ability to retrieve mail, and make network  
-connections to the Internet. To do this, you might add the following  
-to your /etc/hosts.allow:  
-  
-  
-ALL: 127.  
-  
-  
-And of course /etc/hosts.deny would contain:  
-  
-  
-ALL: ALL  
-  
-  
-which will prevent external connections to your machine, yet still  
-allow you from the inside to connect to servers on the Internet.  
-  
-  
-Keep in mind that tcp_wrappers only protects services executed from  
-inetd, and a select few others. There very well may be other  
-services running on your machine. You can use netstat -ta to  
-find a list of all the services your machine is offering.  
-  
-  
-  
-  
-!!8.3 Verify Your DNS Information  
-  
-  
-  
-Keeping up-to-date DNS information about all hosts on your network can  
-help to increase security. If an unauthorized host  
-becomes connected to your network, you can recognize it by its lack of  
-a DNS entry. Many services can be configured to not accept  
-connections from hosts that do not have valid DNS entries.  
-  
-  
-  
-  
-!!8.4 identd  
-  
-  
-  
-identd is a small program that typically runs out of your  
-inetd server. It keeps track of what user is running what TCP  
-service, and then reports this to whoever requests it.  
-  
-  
-Many people misunderstand the usefulness of identd, and so disable it  
-or block all off site requests for it. identd is not there to help out  
-remote sites. There is no way of knowing if the data you get from the  
-remote identd is correct or not. There is no authentication in identd  
-requests.  
-  
-  
-Why would you want to run it then? Because it helps ''you'' out, and is  
-another data-point in tracking. If your identd is un compromised, then  
-you know it's telling remote sites the user-name or uid of people using  
-TCP services. If the admin at a remote site comes back to you and  
-tells you user so-and-so was trying to hack into their site, you can  
-easily take action against that user. If you are not running identd,  
-you will have to look at lots and lots of logs, figure out who was on  
-at the time, and in general take a lot more time to track down the  
-user.  
-  
-  
-The identd that ships with most distributions is more configurable  
-than many people think. You can disable it for specific users  
-(they can make a .noident file), you can log all  
-identd requests (We recommend it), you can even have identd  
-return a uid instead of a user name or even NO-USER.  
-  
-  
-  
-  
-!!8.5 Configuring and Securing the Postfix MTA  
-  
-  
-  
-  
-  
-  
-The Postfix mail server was written by Wietse Venema, author of  
-Postfix and several other staple Internet security products, as an "attempt to  
-provide an alternative to the widely-used Sendmail program. Postfix attempts  
-to be fast, easy to administer, and hopefully secure, while at the same time  
-being sendmail compatible enough to not upset your users."  
-  
-  
-  
-  
-  
-Further information on postfix can be found at the  
-Postfix home and in the  
-Configuring and Securing Postfix.  
-  
-  
-  
-  
-  
-  
-  
-!!8.6 SATAN, ISS, and Other Network Scanners  
-  
-  
-  
-There are a number of different software packages out there that do  
-port and service-based scanning of machines or networks. SATAN, ISS,  
-SAINT, and Nessus are some of the more well-known ones. This software  
-connects to the target machine (or all the target machines on a  
-network) on all the ports they can, and try to determine what service  
-is running there. Based on this information, you can tell if the  
-machine is vulnerable to a specific exploit on that server.  
-  
-  
-SATAN (Security Administrator's Tool for Analyzing Networks) is a port  
-scanner with a web interface. It can be configured to do light,  
-medium, or strong checks on a machine or a network of machines. It's a  
-good idea to get SATAN and scan your machine or network, and fix the  
-problems it finds. Make sure you get the copy of SATAN from  
-metalab or a reputable FTP or web site. There was a Trojan  
-copy of SATAN that was distributed out on the net.  
-http://www.trouble.org/~zen/satan/satan.html. Note that SATAN  
-has not been updated in quite a while, and some of the other tools  
-below might do a better job.  
-  
-  
-ISS (Internet Security Scanner) is another port-based scanner. It is  
-faster than Satan, and thus might be better for large  
-networks. However, SATAN tends to provide more information.  
-  
-  
-Abacus is a suite of tools to provide host-based security and  
-intrusion detection. Look at it's home page on the web for more  
-information.  
-http://www.psionic.com/abacus/  
-  
-  
-SAINT is a updated version of SATAN. It is web-based and has many more  
-up-to-date tests than SATAN. You can find out more about it at:  
-http://www.wwdsi.com/~saint  
-  
-Nessus is a free security scanner. It has a GTK graphical interface  
-for ease of use. It is also designed with a very nice plug in setup for  
-new port-scanning tests. For more information, take a look at:  
-http://www.nessus.org  
-  
-  
-  
-!Detecting Port Scans  
-  
-  
-There are some tools designed to alert you to probes by SATAN and ISS  
-and other scanning software. However, if you liberally use tcp_wrappers, and  
-look over your log files regularly, you should be able  
-to notice such probes. Even on the lowest setting, SATAN still leaves  
-traces in the logs on a stock Red Hat system.  
-  
-  
-There are also "stealth" port scanners. A packet with the TCP ACK bit  
-set (as is done with established connections) will likely get through  
-a packet-filtering firewall. The returned RST packet from a port that  
-''_had no established session_'' can be taken as proof of life on  
-that port. I don't think TCP wrappers will detect this.  
-  
-  
-You might also look at SNORT, which is a free IDS (Intrusion Detection  
-System), which can detect other network intrusions.  
-http://www.snort.org  
-  
-  
-  
-!!8.7 sendmail, qmail and MTA's  
-  
-  
-  
-One of the most important services you can provide is a mail  
-server. Unfortunately, it is also one of the most vulnerable to attack,  
-simply due to the number of tasks it must perform and the privileges it  
-typically needs.  
-  
-  
-If you are using sendmail it is very important to keep up on current  
-versions. sendmail has a long long history of security  
-exploits. Always make sure you are running the most recent version from  
-http://www.sendmail.org.  
-  
-  
-Keep in mind that sendmail does not have to be running in order for you  
-to send mail. If you are a home user, you can disable sendmail entirely,  
-and simply use your mail client to send mail. You might also choose to  
-remove the "-bd" flag from the sendmail startup file, thereby disabling  
-incoming requests for mail. In other words, you can execute sendmail  
-from your startup script using the following instead:  
-  
-  
-# /usr/lib/sendmail -q15m  
-  
-  
-This will cause sendmail to flush the mail queue every fifteen minutes  
-for any messages that could not be successfully delivered on the first  
-attempt.  
-  
-  
-Many administrators choose not to use sendmail, and instead choose one  
-of the other mail transport agents. You might consider switching over  
-to qmail. qmail was designed with security in mind  
-from the ground up. It's fast, stable, and secure. Qmail can be found at  
-http://www.qmail.org  
-  
-In direct competition to qmail is "postfix", written by Wietse Venema,  
-the author of tcp_wrappers and other security tools. Formerly called  
-vmailer, and sponsored by IBM, this is also a mail transport agent  
-written from the ground up with security in mind. You can find more  
-information about postfix at  
-http://www.postfix.org  
-  
-  
-  
-!!8.8 Denial of Service Attacks  
-  
-  
-  
-A "Denial of Service" (DoS) attack is one where the attacker tries to make  
-some resource too busy to answer legitimate requests, or to deny  
-legitimate users access to your machine.  
-  
-  
-Denial of service attacks have increased greatly in recent years. Some  
-of the more popular and recent ones are listed below. Note that new  
-ones show up all the time, so this is just a few examples. Read the  
-Linux security lists and the bugtraq list and archives for more  
-current information.  
-  
-  
-  
-  
-  
-*__SYN Flooding__ - SYN flooding is a network  
-denial of service attack. It takes advantage of a "loophole" in the  
-way TCP connections are created. The newer Linux kernels (2..30 and  
-up) have several configurable options to prevent SYN flood attacks  
-from denying people access to your machine or services. See  
-Kernel Security for proper kernel  
-protection options.  
-  
-  
-  
-  
-*  
-  
-*__Pentium "F00F" Bug__ - It was recently discovered that a series of  
-assembly codes sent to a genuine Intel Pentium processor would reboot  
-the machine. This affects every machine with a Pentium processor (not  
-clones, not Pentium Pro or PII), no matter what operating system it's  
-running. Linux kernels 2..32 and up contain a work around for this  
-bug, preventing it from locking your machine. Kernel 2..33 has an  
-improved version of the kernel fix, and is suggested over 2..32. If  
-you are running on a Pentium, you should upgrade now!  
-  
-  
-  
-  
-*  
-  
-*__Ping Flooding__ - Ping flooding is a simple brute-force denial  
-of service attack. The attacker sends a "flood" of ICMP packets to  
-your machine. If they are doing this from a host with better bandwidth  
-than yours, your machine will be unable to send anything on the  
-network. A variation on this attack, called "smurfing", sends ICMP  
-packets to a host with ''your'' machine's return IP, allowing them to  
-flood you less detectably. You can find more information about the  
-"smurf" attack at  
- http://www.quadrunner.com/~chuegen/smurf.txt  
-  
-  
-If you are ever under a ping flood attack, use a tool like tcpdump to  
-determine where the packets are coming from (or appear to be coming  
-from), then contact your provider with this information. Ping floods  
-can most easily be stopped at the router level or by using a firewall.  
-  
-  
-  
-  
-*  
-  
-*__Ping o' Death__ - The Ping o' Death attack sends  
-ICMP ECHO REQUEST packets that are too large to fit in the kernel data  
-structures intended to store them. Because sending a  
-single, large (65,510 bytes) "ping" packet to many systems will cause  
-them to hang or even crash, this problem was quickly dubbed the "Ping  
-o' Death." This one has long been fixed, and is no longer anything to  
-worry about.  
-  
-  
-  
-  
-*  
-  
-*__Teardrop / New Tear__ - One of the most recent exploits  
-involves a bug present in the IP fragmentation code on Linux and  
-Windows platforms. It is fixed in kernel version 2..33, and does not  
-require selecting any kernel compile-time options to utilize the fix.  
-Linux is apparently not vulnerable to the "newtear" exploit.  
-  
-  
-  
-  
-*  
-  
-You can find code for most exploits, and a more in-depth description of how  
-they work, at  
-http://www.rootshell.com using their search engine.  
-  
-  
-  
-  
-!!8.9 NFS (Network File System) Security.  
-  
-  
-  
-NFS is a very widely-used file sharing protocol. It allows servers  
-running nfsd and mountd to "export" entire file systems  
-to other machines using NFS filesystem support built in to their kernels  
-(or some other client support if they are not Linux machines).  
-mountd keeps track of mounted file systems in /etc/mtab,  
-and can display them with showmount.  
-  
-  
-Many sites use NFS to serve home directories to users, so that  
-no matter what machine in the cluster they login to, they will have  
-all their home files.  
-  
-  
-There is some small amount of security allowed in exporting  
-file systems. You can make your nfsd map the remote root user (uid=)  
-to the nobody user, denying them total access to the files  
-exported. However, since individual users have access to their own (or  
-at least the same uid) files, the remote root user can login or su to  
-their account and have total access to their files. This is only a  
-small hindrance to an attacker that has access to mount your remote  
-file systems.  
-  
-  
-If you must use NFS, make sure you export to only those machines that  
-you really need to. Never export your entire root  
-directory; export only directories you need to export.  
-  
-  
-See the NFS HOWTO for more information on NFS, available at  
-http://metalab.unc.edu/mdw/HOWTO/NFS-HOWTO.html  
-  
-  
-  
-!!8.10 NIS (Network Information Service) (formerly YP).  
-  
-  
-  
-Network Information service (formerly YP) is a means of distributing  
-information to a group of machines. The NIS master holds the  
-information tables and converts them into NIS map files. These maps  
-are then served over the network, allowing NIS client machines to get  
-login, password, home directory and shell information (all the  
-information in a standard /etc/passwd file). This allows users to  
-change their password once and have it take effect on all the machines  
-in the NIS domain.  
-  
-  
-NIS is not at all secure. It was never meant to be. It was meant to be  
-handy and useful. Anyone that can guess the name of your NIS domain  
-(anywhere on the net) can get a copy of your passwd file, and use  
-"crack" and "John the Ripper" against your users' passwords. Also, it is  
-possible to spoof NIS and do all sorts of nasty tricks. If you must  
-use NIS, make sure you are aware of the dangers.  
-  
-  
-There is a much more secure replacement for NIS, called NIS+.  
-Check out the NIS HOWTO for more information:  
-http://metalab.unc.edu/mdw/HOWTO/NIS-HOWTO.html  
-  
-  
-  
-  
-!!8.11 Firewalls  
-  
-  
-  
-Firewalls are a means of controlling what information is allowed into  
-and out of your local network. Typically the firewall host is  
-connected to the Internet and your local LAN, and the only access from  
-your LAN to the Internet is through the firewall. This way the  
-firewall can control what passes back and forth from the Internet and  
-your LAN.  
-  
-  
-There are a number of types of firewalls and methods of setting them up. Linux  
-machines make pretty good firewalls. Firewall code can be  
-built right into 2.0 and higher kernels. The user-space tools ipfwadm for 2.  
-kernels and ipchains for 2.2 kernels,  
-allows you to change, on the fly, the types of network traffic you allow.  
-You can also log particular types of network traffic.  
-  
-  
-Firewalls are a very useful and important technique in securing your  
-network. However, never think that because you have a firewall, you don't  
-need to secure the machines behind it. This is a fatal mistake. Check  
-out the very good Firewall-HOWTO at your latest metalab archive for  
-more information on firewalls and Linux.  
-http://metalab.unc.edu/mdw/HOWTO/Firewall-HOWTO.html  
-  
-More information can also be found in the IP-Masquerade  
-mini-howto:  
-http://metalab.unc.edu/mdw/HOWTO/mini/IP-Masquerade.html  
-  
-  
-More information on ipfwadm (the tool that lets you change settings on  
-your firewall, can be found at it's home page:  
-http://www.xos.nl/linux/ipfwadm/  
-  
-If you have no experience with firewalls, and plan to set up one for  
-more than just a simple security policy, the Firewalls book by O'Reilly  
-and Associates or other online firewall document is mandatory reading.  
-Check out  
-http://www.ora.com  
-for more information. The National Institute of Standards and Technology  
-have put together an excellent document on firewalls. Although dated 1995,  
-it is still quite good. You can find it at  
-http://csrc.nist.gov/nistpubs/800-10/main.html. Also of interest:  
-  
-  
-  
-  
-  
-* The Freefire Project -- a list of freely-available firewall tools,  
-available at  
-http://sites.inka.de/sites/lina/freefire-l/index_en.html  
-*  
-  
-* !SunWorld Firewall Design -- written by the authors of the O'Reilly  
-book, this provides a rough introduction to the different firewall types.  
-It's available at  
-http://www.sunworld.com/swol-01-1996/swol-01-firewall.html  
-*  
-  
-*Mason - the automated firewall builder for Linux. This is a  
-firewall script that learns as you do the things you need to do on  
-your network! More info at:  
-http://www.pobox.com/~wstearns/mason/  
-*  
-  
-  
-  
-  
-  
-!!8.12 IP Chains - Linux Kernel 2.2.x Firewalling  
-  
-  
-  
-Linux IP Firewalling Chains is an update to the 2.0 Linux firewalling  
-code for the 2.2 kernel. It has many more features than  
-previous implementations, including:  
-  
-  
-* More flexible packet manipulations  
-*  
-  
-* More complex accounting  
-*  
-  
-* Simple policy changes possible atomically  
-*  
-  
-* Fragments can be explicitly blocked, denied, etc.  
-*  
-  
-* Logs suspicious packets.  
-*  
-  
-* Can handle protocols other than ICMP/TCP/UDP.  
-*  
-  
-  
-  
-If you are currently using ipfwadm on your 2.0 kernel, there are scripts  
-available to convert the ipfwadm command format to the format ipchains uses.  
-  
-  
-Be sure to read the IP Chains HOWTO for further information. It is  
-available at  
-http://www.adelaide.net.au/~rustcorp/ipfwchains/ipfwchains.html  
-  
-  
-  
-!!8.13 Netfilter - Linux Kernel 2.4.x Firewalling  
-  
-  
-  
-In yet another set of advancements to the kernel IP packet filtering code,  
-netfilter allows users to set up, maintain, and inspect the packet filtering  
-rules in the new 2.4 kernel.  
-  
-  
-  
-  
-  
-The netfilter subsystem is a complete rewrite of previous packet filtering  
-implementations including ipchains and ipfwadm. Netfilter provides a large  
-number of improvements, and it has now become an even more mature and robust  
-solution for protecting corporate networks.  
-  
-  
-  
-  
-  
-  
-----  
-  
-iptables  
-  
-----  
-is the command-line interface used to manipulate  
-the firewall tables within the kernel.  
-  
-  
-  
-  
-  
-Netfilter provides a raw framework for manipulating packets as they traverse  
-through various parts of the kernel. Part of this framework includes support for  
-masquerading, standard packet filtering, and now more complete network  
-address translation. It even includes improved support for load balancing  
-requests for a particular service among a group of servers behind the  
-firewall.  
-  
-  
-  
-  
-  
-The stateful inspection features are especially powerful. Stateful inspection  
-provides the ability to track and control the flow of communication passing  
-through the filter. The ability to keep track of state and context information  
-about a session makes rules simpler and tries to interpret higher-level protocols.  
-  
-  
-  
-  
-  
-Additionally, small modules can be developed to perform additional specific  
-functions, such as passing packets to programs in userspace for processing  
-then reinjecting back into the normal packet flow. The ability to develop these  
-programs in userspace reduces the level of complexity that was previously  
-associated with having to make changes directly at the kernel level.  
-  
-  
-  
-  
-  
-Other IP Tables references include:  
-  
-  
-  
-  
-  
-  
-  
-  
-*''  
-Oskar Andreasson IP Tables Tutorial'' -- Oskar Andreasson speaks  
-with !LinuxSecurity.com about his comprehensive IP Tables tutorial and  
-how this document can be used to build a robust firewall for your organization.  
-  
-  
-  
-  
-  
-  
-  
-*  
-  
-*''  
-Hal Burgiss Introduces Linux Security Quick-Start Guides'' -- Hal Burgiss has written two authoritative guides on securing Linux,  
-including managing firewalling.  
-  
-  
-  
-  
-  
-  
-*  
-  
-*''  
-Netfilter Homepage'' -- The netfilter/iptables homepage.  
-  
-  
-  
-  
-  
-  
-*  
-  
-*''  
-Linux Kernel 2.4 Firewalling Matures: netfilter'' -- This  
-!LinuxSecurity.com article describes the basics of packet filtering, how to  
-get started using iptables, and a list of the new features available in  
-the latest generation of firewalling for Linux.  
-  
-  
-  
-*  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-!!8.14 VPNs - Virtual Private Networks  
-  
-  
-  
-VPN's are a way to establish a "virtual" network on top of some  
-already-existing network. This virtual network often is encrypted and  
-passes traffic only to and from some known entities that have joined  
-the network. VPNs are often used to connect someone working at home  
-over the public Internet to an internal company network.  
-  
-  
-If you are running a Linux masquerading firewall and need to pass MS  
-PPTP (Microsoft's VPN point-to-point product) packets, there is a  
-Linux kernel patch out to do just that. See:  
-ip-masq-vpn.  
-  
-  
-There are several Linux VPN solutions available:  
-  
-  
-* vpnd. See the  
-http://sunsite.auc.dk/vpnd/.  
-*  
-  
-* Free S/Wan, available at  
-http://www.xs4all.nl/~freeswan/  
-*  
-  
-* ssh can be used to construct a VPN. See the VPN mini-howto  
-for more information.  
-*  
-  
-* vps (virtual private server) at  
-http://www.strongcrypto.com.  
-*  
-  
-*yawipin at  
-http://yavipin.sourceforge.net  
-*  
-  
-  
-  
-See also the section on IPSEC for pointers and more information.  
-  
-  
-  
-----  
-  
-!! 9. Security Preparation (before you go on-line)  
-  
-  
-Ok, so you have checked over your system, and determined it's as secure  
-as feasible, and you're ready to put it online. There are a few things  
-you should now do in order to prepare for an intrusion,  
-so you can quickly disable the intruder, and get  
-back up and running.  
-  
-  
-  
-  
-!!9.1 Make a Full Backup of Your Machine  
-  
-  
-  
-Discussion of backup methods and storage is beyond the scope of this  
-document, but here are a few words relating to backups and security:  
-  
-  
-If you have less than 650mb of data to store on a partition, a CD-R  
-copy of your data is a good way to go (as it's hard to tamper with  
-later, and if stored properly can last a long time), you will of  
-course need at least 650MB of space to make the image. Tapes and other  
-re-writable media should be write-protected as soon as your backup is  
-complete, and then verified to prevent tampering. Make sure you store your  
-backups in a secure off-line area. A good backup will ensure that you  
-have a known good point to restore your system from.  
-  
-  
-  
-  
-!!9.2 Choosing a Good Backup Schedule  
-  
-  
-  
-A six-tape cycle is easy to maintain. This includes four tapes  
-for during the week, one tape for even Fridays, and one tape for odd  
-Fridays. Perform an incremental backup every day, and a full backup  
-on the appropriate Friday tape. If you make some particularly important  
-changes or add some important data to your system, a full backup might  
-well be in order.  
-  
-  
-  
-  
-!!9.3 Testing your backups  
-  
-  
-  
-You should do periodic tests of your backups to make sure they are  
-working as you might expect them to. Restores of files and checking  
-against the real data, sizes and listings of backups, and reading old  
-backups should be done on a regular basis.  
-  
-  
-  
-  
-!!9.4 Backup Your RPM or Debian File Database  
-  
-  
-  
-In the event of an intrusion, you can use your RPM database like you  
-would use tripwire, but only if you can be sure it too hasn't been  
-modified. You should copy the RPM database to a floppy, and keep this  
-copy off-line at all times. The Debian distribution likely has  
-something similar.  
-  
-  
-The files /var/lib/rpm/fileindex.rpm and  
-/var/lib/rpm/packages.rpm most likely won't fit on a single floppy.  
-But if compressed, each should fit on a seperate floppy.  
-  
-  
-Now, when your system is compromised, you can use the command:  
-  
-  
-  
-  
-  
-root# rpm -Va  
-  
-  
-to verify each file on the system. See the rpm man page, as there are  
-a few other options that can be included to make it less verbose.  
-Keep in mind you must also be sure your RPM binary has not been  
-compromised.  
-  
-  
-This means that every time a new RPM is added to the system, the RPM  
-database will need to be rearchived. You will have to decide the  
-advantages versus drawbacks.  
-  
-  
-  
-  
-!! 9.5 Keep Track of Your System Accounting Data  
-  
-  
-  
-It is very important that the information that comes from syslog  
-not be compromised. Making the files in /var/log readable and  
-writable by only a limited number of users is a good start.  
-  
-  
-Be sure to keep an eye on what gets written there, especially under  
-the auth facility. Multiple login failures, for example, can  
-indicate an attempted break-in.  
-  
-  
-Where to look for your log file will depend on your distribution. In a  
-Linux system that conforms to the "Linux Filesystem Standard", such as  
-Red Hat, you will want to look in /var/log and check messages,  
-mail.log, and others.  
-  
-  
-You can find out where your distribution is logging to by looking at  
-your /etc/syslog.conf file. This is the file that tells  
-syslogd (the system logging daemon) where to log various messages.  
-  
-  
-You might also want to configure your log-rotating script or daemon to  
-keep logs around longer so you have time to examine them. Take a look  
-at the logrotate package on recent Red Hat distributions. Other  
-distributions likely have a similar process.  
-  
-  
-If your log files have been tampered with, see if you can determine  
-when the tampering started, and what sort of things appeared to be  
-tampered with. Are there large periods of time that cannot be accounted  
-for? Checking backup tapes (if you have any) for untampered log files  
-is a good idea.  
-  
-  
-Intruders typically modify log files in order to cover their  
-tracks, but they should still be checked for strange happenings. You  
-may notice the intruder attempting to gain entrance, or exploit a  
-program in order to obtain the root account. You might see log entries  
-before the intruder has time to modify them.  
-  
-  
-You should also be sure to separate the auth facility from other log  
-data, including attempts to switch users using su, login attempts,  
-and other user accounting information.  
-  
-  
-If possible, configure syslog to send a copy of the most important  
-data to a secure system. This will prevent an intruder from covering  
-his tracks by deleting his login/su/ftp/etc attempts. See the  
-syslog.conf man page, and refer to the @ option.  
-  
-  
-There are several more advanced syslogd programs out  
-there. Take a look at  
-http://www.core-sdi.com/ssyslog/ for Secure Syslog. Secure  
-Syslog allows you to encrypt your syslog entries and make sure no one  
-has tampered with them.  
-  
-  
-Another syslogd with more features is  
-syslog-ng. It allows you a lot more flexibility in your  
-logging and also can has your remote syslog streams to prevent  
-tampering.  
-  
-  
-Finally, log files are much less useful when no one is reading  
-them. Take some time out every once in a while to look over your log  
-files, and get a feeling for what they look like on a normal  
-day. Knowing this can help make unusual things stand out.  
-  
-  
-  
-  
-!!9.6 Apply All New System Updates.  
-  
-  
-  
-Most Linux users install from a CD-ROM. Due to the fast-paced nature of  
-security fixes, new (fixed) programs are always being released. Before  
-you connect your machine to the network, it's a good idea to check with your  
-distribution's ftp site and get all the updated packages since you  
-received your distribution CD-ROM. Many times these packages contain  
-important security fixes, so it's a good idea to get them installed.  
-  
-  
-  
-----  
-  
-!! 10. What To Do During and After a Breakin  
-  
-  
-So you have followed some of the advice here (or elsewhere) and have  
-detected a break-in? The first thing to do is to remain calm. Hasty  
-actions can cause more harm than the attacker would have.  
-  
-  
-  
-  
-!!10.1 Security Compromise Underway.  
-  
-  
-  
-Spotting a security compromise under way can be a tense  
-undertaking. How you react can have large consequences.  
-  
-  
-If the compromise you are seeing is a physical one, odds are you have  
-spotted someone who has broken into your home, office or lab. You  
-should notify your local authorities. In a lab, you might have  
-spotted someone trying to open a case or reboot a machine. Depending  
-on your authority and procedures, you might ask them to stop, or  
-contact your local security people.  
-  
-  
-If you have detected a local user trying to compromise your security,  
-the first thing to do is confirm they are in fact who you think they  
-are. Check the site they are logging in from. Is it the site they  
-normally log in from? No? Then use a non-electronic means of getting in  
-touch. For instance, call them on the phone or walk over to their  
-office/house and talk to them. If they agree that they are on, you can  
-ask them to explain what they were doing or tell them to cease doing  
-it. If they are not on, and have no idea what you are talking about,  
-odds are this incident requires further investigation. Look into such  
-incidents , and have lots of information before making any  
-accusations.  
-  
-  
-If you have detected a network compromise, the first thing to do (if  
-you are able) is to disconnect your network. If they are connected via  
-modem, unplug the modem cable; if they are connected via Ethernet,  
-unplug the Ethernet cable. This will prevent them from doing any  
-further damage, and they will probably see it as a network problem  
-rather than detection.  
-  
-  
-If you are unable to disconnect the network (if you have a busy site,  
-or you do not have physical control of your machines), the next best  
-step is to use something like tcp_wrappers or ipfwadm  
-to deny access from the intruder's site.  
-  
-  
-If you can't deny all people from the same site as the intruder,  
-locking the user's account will have to do. Note that locking an  
-account is not an easy thing. You have to keep in mind .rhosts files,  
-FTP access, and a host of possible backdoors.  
-  
-  
-After you have done one of the above (disconnected the network, denied  
-access from their site, and/or disabled their account), you need to  
-kill all their user processes and log them off.  
-  
-  
-You should monitor your site well for the next few minutes, as the  
-attacker will try to get back in. Perhaps using a different account,  
-and/or from a different network address.  
-  
-  
-  
-  
-!!10.2 Security Compromise has already happened  
-  
-  
-  
-So you have either detected a compromise that has already happened or  
-you have detected it and locked (hopefully) the offending attacker out  
-of your system. Now what?  
-  
-  
-  
-  
-!Closing the Hole  
-  
-  
-If you are able to determine what means the attacker used to get into  
-your system, you should try to close that hole. For instance, perhaps  
-you see several FTP entries just before the user logged in. Disable  
-the FTP service and check and see if there is an updated version, or  
-if any of the lists know of a fix.  
-  
-  
-Check all your log files, and make a visit to your security lists and  
-pages and see if there are any new common exploits you can fix. You  
-can find Caldera security fixes at  
-http://www.caldera.com/tech-ref/security/. Red Hat has not  
-yet separated their security fixes from bug fixes, but their  
-distribution errata is available at  
-http://www.redhat.com/errata  
-  
-Debian now has a security mailing list and web page. See:  
-http://www.debian.org/security/ for more information.  
-  
-  
-It is very likely that if one vendor has released a security update,  
-that most other Linux vendors will as well.  
-  
-  
-There is now a Linux security auditing project. They are methodically  
-going through all the user-space utilities and looking for possible  
-security exploits and overflows. From their announcement:  
-  
-  
-  
-  
-"We are attempting a systematic audit of Linux sources with a view to  
-being as secure as OpenBSD. We have already uncovered (and fixed) some  
-problems, but more help is welcome. The list is unmoderated and also a  
-useful resource for general security discussions. The list address  
-is: security-audit@ferret.lmh.ox.ac.uk To subscribe, send a mail to:  
-security-audit-subscribe@ferret.lmh.ox.ac.uk"  
-  
-  
-  
-If you don't lock the attacker out, they will likely be back. Not just  
-back on your machine, but back somewhere on your network. If they were  
-running a packet sniffer, odds are good they have access to other  
-local machines.  
-  
-  
-  
-  
-!Assessing the Damage  
-  
-  
-The first thing is to assess the damage. What has been compromised?  
-If you are running an integrity checker like Tripwire, you  
-can use it to perform an integrity check; it should help to tell you  
-what has been compromised.  
-If not, you will have to look around at all your important data.  
-  
-  
-Since Linux systems are getting easier and easier to install, you  
-might consider saving your config files, wiping your disk(s),  
-reinstalling, then restoring your user files and your  
-config files from backups. This will ensure that you have a new, clean system. If  
-you have to restore files from the compromised system, be especially  
-cautious of any binaries that you restore, as they may be Trojan horses  
-placed there by the intruder.  
-  
-  
-Re-installation should be considered mandatory upon an intruder  
-obtaining root access. Additionally, you'd like to keep any evidence  
-there is, so having a spare disk in the safe may make sense.  
-  
-  
-Then you have to worry about how long ago the compromise happened, and  
-whether the backups hold any damaged work. More on backups later.  
-  
-  
-  
-  
-!Backups, Backups, Backups!  
-  
-  
-Having regular backups is a godsend for security matters. If your  
-system is compromised, you can restore the data you need from  
-backups. Of course, some data is valuable to the attacker too, and they  
-will not only destroy it, they will steal it and have their own  
-copies; but at least you will still have the data.  
-  
-  
-You should check several backups back into the past before restoring a  
-file that has been tampered with. The intruder could have compromised  
-your files long ago, and you could have made many successful backups  
-of the compromised file!  
-  
-  
-Of course, there are also a raft of security concerns with  
-backups. Make sure you are storing them in a secure place. Know who  
-has access to them. (If an attacker can get your backups, they can  
-have access to all your data without you ever knowing it.)  
-  
-  
-  
-  
-!Tracking Down the Intruder.  
-  
-  
-Ok, you have locked the intruder out, and recovered your system, but  
-you're not quite done yet. While it is unlikely that most intruders  
-will ever be caught, you should report the attack.  
-  
-  
-You should report the attack to the admin contact at  
-the site from which the attacker attacked your system. You can look up this  
-contact with whois or the Internic database. You might send them an  
-email with all applicable log entries and dates and times. If you  
-spotted anything else distinctive about your intruder, you might  
-mention that too. After sending the email, you should (if you are so  
-inclined) follow up with a phone call. If that admin in turn spots  
-your attacker, they might be able to talk to the admin of the site  
-where they are coming from and so on.  
-  
-  
-Good crackers often use many intermediate systems, some (or many) of  
-which may not even know they have been compromised. Trying to track a  
-cracker back to their home system can be difficult. Being polite to  
-the admins you talk to can go a long way to getting help from them.  
-  
-  
-You should also notify any security organizations you are a part of  
-(  
-CERT or similar), as well as your Linux system vendor.  
-  
-  
-  
-----  
-  
-!! 11. Security Sources  
-  
-  
-There are a LOT of good sites out there for Unix security in general  
-and Linux security specifically. It's very important to subscribe to  
-one (or more) of the security mailing lists and keep current on  
-security fixes. Most of these lists are very low volume, and very  
-informative.  
-  
-  
-  
-  
-  
-  
-  
-!! 11.1 !LinuxSecurity.com References  
-  
-  
-  
-The !LinuxSecurity.com web site has numerous Linux and open source security  
-references written by the !LinuxSecurity staff and people collectively around  
-the world.  
-  
-  
-  
-  
-  
-  
-  
-  
-*''  
-Linux Advisory Watch'' -- A comprehensive newsletter that outlines the security  
-vulnerabilities that have been announced throughout the week. It includes  
-pointers to updated packages and descriptions of each vulnerability.  
-  
-  
-  
-  
-  
-  
-*  
-  
-*''  
-Linux Security Week'' --  
-The purpose of this document is to provide our readers with a quick summary  
-of each week's most relevant Linux security headlines.  
-  
-  
-  
-  
-  
-  
-*  
-  
-*''  
-Linux Security Discussion List'' -- This mailing list is for general security-related questions and comments.  
-  
-  
-  
-  
-  
-  
-*  
-  
-*''  
-Linux Security Newsletters'' -- Subscription information for all newsletters.  
-  
-  
-  
-  
-  
-  
-*  
-  
-*''  
-comp.os.linux.security FAQ'' -- Frequently Asked Questions with answers for the comp.os.linux.security newsgroup.  
-  
-  
-  
-  
-  
-  
-*  
-  
-*''  
-Linux Security Documentation'' -- A great starting point for information pertaining to Linux and Open Source security.  
-  
-  
-  
-  
-  
-  
-*  
-  
-  
-  
-  
-  
-!! 11.2 FTP Sites  
-  
-  
-  
-CERT is the Computer Emergency Response Team. They often send out  
-alerts of current attacks and fixes. See  
-ftp://ftp.cert.org for more information.  
-  
-  
-ZEDZ (formerly Replay) (  
-http://www.zedz.net)  
-has archives of many security programs. Since they are outside  
-the US, they don't need to obey US crypto restrictions.  
-  
-  
-Matt Blaze is the author of CFS and a great security advocate. Matt's  
-archive is available at  
-ftp://ftp.research.att.com/pub/mab  
-  
-tue.nl is a great security FTP site in the Netherlands.  
-ftp.win.tue.nl  
-  
-  
-  
-!! 11.3 Web Sites  
-  
-  
-  
-  
-  
-  
-*The Hacker FAQ is a FAQ about hackers:  
-The Hacker FAQ  
-*  
-  
-*The COAST archive has a large number of Unix security programs and  
-information:  
-COAST  
-*  
-  
-* !SuSe Security Page:  
-http://www.suse.de/security/  
-*  
-  
-*Rootshell.com is a great site for seeing what exploits are currently  
-being used by crackers:  
-http://www.rootshell.com/  
-*  
-  
-*BUGTRAQ puts out advisories on security issues:  
-BUGTRAQ archives  
-*  
-  
-*CERT, the Computer Emergency Response Team, puts out advisories on  
-common attacks on Unix platforms:  
-CERT home  
-*  
-  
-*Dan Farmer is the author of SATAN and many other security tools. His  
-home site has some interesting security survey information, as well as  
-security tools:  
-http://www.trouble.org  
-*  
-  
-*The Linux security WWW is a good site for Linux security information:  
-Linux Security WWW  
-*  
-  
-*Infilsec has a vulnerability engine that can tell you what  
-vulnerabilities affect a specific platform:  
-http://www.infilsec.com/vulnerabilities/  
-*  
-  
-*CIAC sends out periodic security bulletins on common exploits:  
-http://ciac.llnl.gov/cgi-bin/index/bulletins  
-*  
-  
-*A good starting point for Linux Pluggable Authentication modules can  
-be found at  
-http://www.kernel.org/pub/linux/libs/pam/.  
-*  
-  
-*The Debian project has a web page for their security fixes and  
-information. It is at  
-http://www.debian.com/security/.  
-*  
-  
-* WWW Security FAQ, written by Lincoln Stein, is a great web  
-security reference. Find it at  
-http://www.w3.org/Security/Faq/www-security-faq.html  
-*  
-  
-  
-  
-  
-  
-  
-  
-  
-!!11.4 Mailing Lists  
-  
-  
-  
-Bugtraq: To subscribe to bugtraq, send mail to listserv@netspace.org  
-containing the message body subscribe bugtraq. (see links above for  
-archives).  
-  
-  
-CIAC: Send e-mail to majordomo@tholia.llnl.gov. In the BODY (not  
-subject) of the message put (either or both):  
-  
-subscribe ciac-bulletin  
-  
-  
-  
-  
-Red Hat has a number of mailing lists, the most important of which is  
-the redhat-announce list. You can read about security (and other)  
-fixes as soon as they come out. Send email to  
-redhat-announce-list-request@redhat.com with the Subject  
-  
-Subscribe  
-  
-See  
-https://listman.redhat.com/mailman/listinfo/ for  
-more info and archives.  
-  
-  
-The Debian project has a security mailing list that covers their  
-security fixes. See  
-http://www.debian.com/security/ for more information.  
-  
-  
-  
-  
-  
-  
-  
-!!11.5 Books - Printed Reading Material  
-  
-  
-  
-There are a number of good security books out there. This section  
-lists a few of them. In addition to the security specific books,  
-security is covered in a number of other books on system  
-administration.  
-  
-  
-  
-  
-  
-*Building Internet Firewalls By D. Brent Chapman & Elizabeth D. Zwicky,  
-1st Edition September 1995,  
-ISBN: 1-56592-124-  
-  
-  
-  
-  
-*  
-  
-*Practical UNIX & Internet Security, 2nd Edition By Simson Garfinkel & Gene Spafford, 2nd Edition April 1996, ISBN: 1-56592-148-8  
-  
-  
-  
-  
-*  
-  
-*Computer Security Basics By Deborah Russell & G.T. Gangemi, Sr., 1st  
-Edition July 1991, ISBN: -937175-71-4  
-  
-  
-  
-  
-*  
-  
-*Linux Network Administrator's Guide By Olaf Kirch, 1st Edition January  
-1995, ISBN: 1-56592-087-2  
-  
-  
-  
-  
-*  
-  
-*PGP: Pretty Good Privacy By Simson Garfinkel, 1st Edition December 1994,  
-ISBN: 1-56592-098-8  
-  
-  
-  
-  
-*  
-  
-*Computer Crime A Crimefighter's Handbook By David Icove, Karl  
-Seger & William !VonStorch (Consulting Editor Eugene H. Spafford),  
-1st Edition August 1995, ISBN: 1-56592-086-4  
-  
-  
-  
-  
-*  
-  
-*Linux Security By John S. Flowers, New Riders; ISBN: 0735700354, March 1999  
-  
-  
-  
-  
-*  
-  
-*Maximum Linux Security : A Hacker's Guide to Protecting Your Linux Server  
-and Network, Anonymous, Paperback - 829 pages, Sams; ISBN: 0672313413, July  
-1999  
-  
-  
-  
-  
-*  
-  
-*Intrusion Detection By Terry Escamilla, Paperback - 416 pages  
-(September 1998), John Wiley and Sons; ISBN: 0471290009  
-  
-  
-  
-  
-*  
-  
-*Fighting Computer Crime, Donn Parker, Paperback - 526 pages (September  
-1998), John Wiley and Sons; ISBN: 0471163783  
-*  
-  
-  
-  
-  
-----  
-  
-!!12. Glossary  
-  
-  
-Included below are several of the most frequently used terms in computer  
-security. A comprehensive dictionary of computer security terms is available  
-in the  
-!LinuxSecurity.com Dictionary  
-  
-  
-  
-  
-  
-  
-  
-*__authentication:__ The process of knowing that the data  
-received is the same as the data that was sent, and that the claimed  
-sender is in fact the actual sender.  
-  
-  
-  
-  
-*  
-  
-*__bastion Host:__ A computer system that must be highly  
-secured because it is vulnerable to attack, usually because it is  
-exposed to the Internet and is a main point of contact for users of  
-internal networks. It gets its name from the highly fortified  
-projects on the outer walls of medieval castles. Bastions overlook  
-critical areas of defense, usually having strong walls, room for  
-extra troops, and the occasional useful tub of boiling hot oil for  
-discouraging attackers.  
-  
-  
-  
-  
-*  
-  
-*__buffer overflow:__ Common coding style is to never  
-allocate large enough buffers, and to not check for overflows. When  
-such buffers overflow, the executing program (daemon or set-uid  
-program) can be tricked in doing some other things. Generally this  
-works by overwriting a function's return address on the stack to point  
-to another location.  
-  
-  
-  
-  
-*  
-  
-*__denial of service:__ An attack that consumes the  
-resources on your computer for things it was  
-not intended to be doing, thus preventing normal use of your network  
-resources for legitimate purposes.  
-  
-  
-  
-  
-*  
-  
-*__dual-homed Host:__ A general-purpose computer system that  
-has at least two network interfaces.  
-  
-  
-  
-  
-*  
-  
-*__firewall:__ A component or set of components that restricts  
-access between a protected network and the Internet, or between other  
-sets of networks.  
-  
-  
-  
-  
-*  
-  
-*__host:__ A computer system attached to a network.  
-  
-  
-  
-  
-*  
-  
-*__IP spoofing:__ IP Spoofing is a complex technical attack  
-that is made up of several components. It is a security exploit that  
-works by tricking computers in a trust relationship into thinking that  
-you are someone that you really aren't. There is an extensive paper  
-written by daemon9, route, and infinity in the Volume Seven, Issue  
-Forty-Eight issue of Phrack Magazine.  
-  
-  
-  
-  
-*  
-  
-*__non-repudiation:__ The property of a receiver being able  
-to prove that the sender of some data did in fact send the data even  
-though the sender might later deny ever having sent it.  
-  
-  
-  
-  
-*  
-  
-*__packet:__ The fundamental unit of communication on the  
-Internet.  
-  
-  
-  
-  
-*  
-  
-*__packet filtering:__ The action a device takes to  
-selectively control the flow of data to and from a network. Packet  
-filters allow or block packets, usually while routing them from one  
-network to another (most often from the Internet to an internal  
-network, and vice-versa). To accomplish packet filtering, you set up  
-rules that specify what types of packets (those to or from a  
-particular IP address or port) are to be allowed and what types are to  
-be blocked.  
-  
-  
-  
-  
-*  
-  
-*__perimeter network:__ A network added between a protected  
-network and an external network, in order to provide an additional  
-layer of security. A perimeter network is sometimes called a DMZ.  
-  
-  
-  
-  
-*  
-  
-*__proxy server:__ A program that deals with external  
-servers on behalf of internal clients. Proxy clients talk to proxy  
-servers, which relay approved client requests to real servers, and  
-relay answers back to clients.  
-  
-  
-  
-  
-*  
-  
-*__superuser:__ An informal name for root.  
-  
-  
-  
-  
-*  
-  
-----  
-  
-!! 13. Frequently Asked Questions  
-  
-  
-  
-  
-  
-# Is it more secure to compile driver support directly into the  
-kernel, instead of making it a module?  
-  
-  
-Answer: Some people think it is better to disable the ability to load  
-device drivers using modules, because an intruder could load a Trojan  
-module or a module that could affect system security.  
-  
-  
-However, in order to load modules, you must be root. The module  
-object files are also only writable by root. This means the intruder  
-would need root access to insert a module. If the intruder gains root  
-access, there are more serious things to worry about than whether he  
-will load a module.  
-  
-  
-Modules are for dynamically loading support for a particular device  
-that may be infrequently used. On server machines, or firewalls for  
-instance, this is very unlikely to happen. For this reason, it would  
-make more sense to compile support directly into the kernel for  
-machines acting as a server. Modules are also slower than support  
-compiled directly in the kernel.  
-  
-  
-  
-  
-#  
-  
-# Why does logging in as root from a remote machine always fail?  
-  
-  
-Answer: See  
-Root Security. This is done  
-intentionally to prevent remote users from attempting to connect via  
-telnet to your machine as root, which is a serious  
-security  
-vulnerability, because then the root password would be transmitted, in  
-clear text, across the network. Don't forget: potential intruders have time on their  
-side, and can run automated programs to find your  
-password. Additionally, this is done to keep a clear record of who  
-logged in, not just root.  
-  
-  
-  
-  
-#  
-  
-# How do I enable shadow passwords on my Linux box?  
-  
-  
-Answer:  
-  
-  
-To enable shadow passwords, run pwconv as root, and  
-/etc/shadow should now exist, and be used by applications.  
-If you are using RH 4.2 or above, the PAM modules will automatically  
-adapt to the change from using normal /etc/passwd to shadow  
-passwords without any other change.  
-  
-  
-Some background: shadow passwords is a mechanism for storing your  
-password in a file other than the normal /etc/passwd file. This has  
-several advantages. The first one is that the shadow file,  
-/etc/shadow, is only readable by root, unlike /etc/passwd,  
-which must remain readable by everyone. The other advantage is that as the  
-administrator, you can enable or disable accounts without everyone  
-knowing the status of other users' accounts.  
-  
-  
-The /etc/passwd file is then used to store user and group names, used  
-by programs like /bin/ls to map the user ID to the proper user name  
-in a directory listing.  
-  
-  
-The /etc/shadow file then only contains the user name and his/her  
-password, and perhaps accounting information, like when the account  
-expires, etc.  
-  
-  
-To enable shadow passwords, run pwconv as root, and  
-/etc/shadow should now exist, and be used by applications.  
-Since you are using RH 4.2 or above, the PAM modules will automatically  
-adapt to the change from using normal /etc/passwd to shadow  
-passwords without any other change.  
-  
-  
-Since you're interested in securing your passwords, perhaps you would  
-also be interested in generating good passwords to begin with. For  
-this you can use the pam_cracklib module, which is part of PAM. It  
-runs your password against the Crack libraries to help you decide if  
-it is too-easily guessable by password-cracking programs.  
-  
-  
-  
-  
-#  
-  
-# How can I enable the Apache SSL extensions?  
-  
-  
-Answer:  
-  
-  
-  
-  
-  
-##Get SSLeay .8.0 or later from  
-ftp://ftp.psy.uq.oz.au/pub/Crypto/SSL  
-  
-  
-  
-##  
-  
-##Build and test and install it!  
-  
-  
-  
-##  
-  
-##Get Apache source  
-  
-  
-  
-##  
-  
-##Get Apache SSLeay extensions from  
-here  
-  
-  
-  
-##  
-  
-##Unpack it in the apache source directory and patch Apache as  
-per the README.  
-  
-  
-  
-##  
-  
-##Configure and build it.  
-  
-  
-  
-##  
-  
-  
-  
-You might also try  
-ZEDZ net  
-which has many pre-built packages, and is located outside of the United States.  
-  
-  
-  
-  
-#  
-  
-# How can I manipulate user accounts, and still retain security?  
-  
-  
-Answer: most distributions contain a great number of tools to change  
-the properties of user accounts.  
-  
-  
-  
-  
-  
-#*The pwconv and unpwconv programs can be used to convert  
-between shadow and non-shadowed passwords.  
-#*  
-  
-#*The pwck and grpck programs can be used to verify proper  
-organization of the passwd and group files.  
-#*  
-  
-#*The useradd, usermod, and userdel programs can be used to  
-add, delete and modify user accounts. The groupadd,  
-groupmod, and groupdel programs will do the same for groups.  
-#*  
-  
-#*Group passwords can be created using gpasswd.  
-#*  
-  
-  
-  
-All these programs are "shadow-aware" -- that is, if you enable shadow  
-they will use /etc/shadow for password information, otherwise they won't.  
-  
-  
-See the respective man pages for further information.  
-  
-  
-  
-  
-#  
-  
-# How can I password-protect specific HTML documents using  
-Apache?  
-  
-  
-I bet you didn't know about  
-http://www.apacheweek.org, did you?  
-  
-  
-You can find information on user authentication at  
-http://www.apacheweek.com/features/userauth as well as other  
-web server security tips from  
-http://www.apache.org/docs/misc/security_tips.html  
-#  
-  
-----  
-  
-!! 14. Conclusion  
-  
-  
-By subscribing to the security alert mailing lists, and keeping  
-current, you can do a lot towards securing your machine. If you pay  
-attention to your log files and run something like tripwire regularly,  
-you can do even more.  
-  
-  
-A reasonable level of computer security is not difficult to maintain  
-on a home machine. More effort is required on business machines, but  
-Linux can indeed be a secure platform. Due to the nature of Linux  
-development, security fixes often come out much faster than they do on  
-commercial operating systems, making Linux an ideal platform when  
-security is a requirement.  
-  
-  
-  
-  
-  
-  
-----  
-  
-!!15. Acknowledgments  
-  
-  
-Information here is collected from many sources. Thanks to the  
-following who either indirectly or directly have contributed:  
-  
-Rob Riggs  
-rob@!DevilsThumb.com  
-  
-  
-S. Coffin  
-scoffin@netcom.com  
-  
-Viktor Przebinda  
-viktor@CRYSTAL.MATH.ou.edu  
-  
-  
-Roelof Osinga  
-roelof@eboa.com  
-  
-Kyle Hasselbacher  
-kyle@carefree.quux.soltc.net  
-  
-David S. Jackson  
-dsj@dsj.net  
-  
-Todd G. Ruskell  
-ruskell@boulder.nist.gov  
-  
-  
-Rogier Wolff  
-R.E.Wolff@!BitWizard.nl  
-  
-Antonomasia  
-ant@notatla.demon.co.uk  
-  
-  
-Nic Bellamy  
-sky@wibble.net  
-  
-  
-Eric Hanchrow  
-offby1@blarg.net  
-  
-  
-Robert J. Berger  
-rberger@ibd.com  
-  
-  
-Ulrich Alpers  
-lurchi@cdrom.uni-stuttgart.de  
-  
-  
-David Noha  
-dave@c-c-s.com  
-  
-  
-Pavel Epifanov.  
-epv@ibm.net  
-  
-Joe Germuska.  
-joe@germuska.com  
-  
-Franklin S. Werren  
-fswerren@bagpipes.net  
-  
-  
-Paul Rusty Russell  
-<Paul.Russell@rustcorp.com.au>  
-  
-  
-Christine Gaunt  
-<cgaunt@umich.edu>  
-  
-  
-lin  
-bhewitt@refmntutl01.afsc.noaa.gov  
-  
-  
-A. Steinmetz  
-astmail@yahoo.com  
-  
-  
-Jun Morimoto  
-morimoto@xantia.citroen.org  
-  
-  
-Xiaotian Sun  
-sunx@newton.me.berkeley.edu  
-  
-  
-Eric Hanchrow  
-offby1@blarg.net  
-  
-  
-Camille Begnis  
-camille@mandrakesoft.com  
-  
-Neil D  
-neild@sympatico.ca  
-  
-Michael Tandy  
-Michael.Tandy@BTInternet.com  
-  
-Tony Foiani  
-tkil@scrye.com  
-  
-Matt Johnston  
-<mattj@flashmail.com>  
-  
-Geoff Billin  
-gbillin@turbonet.com  
-  
-Hal Burgiss  
-hburgiss@bellsouth.net  
-  
-Ian Macdonald  
-<ian@linuxcare.com>  
-  
-M.Kiesel  
-<m.kiesel@iname.com>  
-  
-Mario Kratzer  
-kratzer@mathematik.uni-marburg.de  
-  
-Othmar Pasteka  
-pasteka@kabsi.at  
-  
-Robert M  
-rom@romab.com  
-  
-Cinnamon Lowe  
-clowe@cinci.rr.com  
-  
-The following have translated this HOWTO into various other languages!  
-  
-  
-A special thank you to all of them for help spreading the Linux word...  
-  
-  
-Polish: Ziemek Borowski  
-ziembor@FAQ-bot.!ZiemBor.Waw.PL  
-  
-  
-Japanese: FUJIWARA Teruyoshi  
-fjwr@mtj.biglobe.ne.jp  
-  
-  
-Indonesian: Tedi Heriyanto  
-22941219@students.ukdw.ac.id  
-  
-  
-Korean: Bume Chang  
-Boxcar0001@aol.com  
-  
-  
-Spanish: Juan Carlos Fernandez  
-piwiman@visionnetware.com  
-  
-Dutch: "Nine Matthijssen"  
-nine@matthijssen.nl  
-  
-  
-Norwegian: ketil@vestby.com  
-ketil@vestby.com  
-  
-Turkish: tufan karadere  
-tufank@metu.edu .tr  
-  
-  
-  
-----  
+Describe [HowToSecurityHOWTO ] here.