[ previous ] [ Contents ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ A ] [ B ] [ C ] [ D ] [ E ] [ F ] [ G ] [ H ] [ next ]

Securing Debian Manual
Chapter 12 - Frequently asked Questions (FAQ)

This chapter introduces some of the most common questions from the Debian security mailing list. You should read them before posting there or else people might tell you to RTFM.

12.1 Security in the Debian operating system

12.1.1 Is Debian more secure than X?

A system is only as secure as its administrator is capable of making it. Debian's default installation of services aims to be secure, but may not be as paranoid as some other operating systems which install all services disabled by default. In any case, the system administrator needs to adapt the security of the system to the local security policy.

For a collection of data regarding security vulnerabilities for many operating systems, see the US-CERT stats or generate stats using the National Vulnerability Database (formerly ICAT) Is this data useful? There are several factors to consider when interpreting the data, and it is worth noticing that the data cannot be used to compare the vulnerabilities of one operating system versus another.[78] Also, keep in mind that some reported vulnerabilities regarding Debian apply only to the unstable (i.e. unreleased) branch. Is Debian more secure than other Linux distributions (such as Red Hat, SuSE...)?

There are not really many differences between Linux distributions, with exceptions to the base installation and package management system. Most distributions share many of the same applications, with differences mainly in the versions of these applications that are shipped with the distribution's stable release. For example, the kernel, Bind, Apache, OpenSSH, Xorg, gcc, zlib, etc. are all common across Linux distributions.

For example, Red Hat was unlucky and shipped when foo 1.2.3 was current, which was then later found to have a security hole. Debian, on the other hand, was lucky enough to ship foo 1.2.4, which incorporated the bug fix. That was the case in the big rpc.statd problem from a couple years ago.

There is a lot of collaboration between the respective security teams for the major Linux distributions. Known security updates are rarely, if ever, left unfixed by a distribution vendor. Knowledge of a security vulnerability is never kept from another distribution vendor, as fixes are usually coordinated upstream, or by CERT. As a result, necessary security updates are usually released at the same time, and the relative security of the different distributions is very similar.

One of Debian's main advantages with regards to security is the ease of system updates through the use of apt. Here are some other aspects of security in Debian to consider:

12.1.2 There are many Debian bugs in Bugtraq. Does this mean that it is very vulnerable?

The Debian distribution boasts a large and growing number of software packages, probably more than provided by many proprietary operating systems. The more packages installed, the greater the potential for security issues in any given system.

More and more people are examining source code for flaws. There are many advisories related to source code audits of the major software components included in Debian. Whenever such source code audits turn up security flaws, they are fixed and an advisory is sent to lists such as Bugtraq.

Bugs that are present in the Debian distribution usually affect other vendors and distributions as well. Check the "Debian specific: yes/no" section at the top of each advisory (DSA).

12.1.3 Does Debian have any certification related to security?

Short answer: no.

Long answer: certification costs money (specially a serious security certification), nobody has dedicated the resources in order to certify Debian GNU/Linux to any level of, for example, the Common Criteria. If you are interested in having a security-certified GNU/Linux distribution, try to provide the resources needed to make it possible.

There are currently at least two linux distributions certified at different EAL levels. Notice that some of the CC tests are being integrated into the Linux Testing Project which is available in Debian in the ltp.

12.1.4 Are there any hardening programs for Debian?

Yes. Bastille Linux, originally oriented toward other Linux distributions (Red Hat and Mandrake), it currently works also for Debian. Steps are being taken to integrate the changes made to the upstream version into the Debian package, named bastille.

Some people believe, however, that a hardening tool does not eliminate the need for good administration.

12.1.5 I want to run XYZ service, which one should I choose?

One of Debian's great strengths is the wide variety of choice available between packages that provide the same functionality (DNS servers, mail servers, ftp servers, web servers, etc.). This can be confusing to the novice administrator when trying to determine which package is right for you. The best match for a given situation depends on a balance between your feature and security needs. Here are some questions to ask yourself when deciding between similar packages:

12.1.6 How can I make service XYZ more secure in Debian?

You will find information in this document to make some services (FTP, Bind) more secure in Debian GNU/Linux. For services not covered here, check the program's documentation, or general Linux information. Most of the security guidelines for Unix systems also apply to Debian. In most cases, securing service X in Debian is like securing that service in any other Linux distribution (or Un*x, for that matter).

12.1.7 How can I remove all the banners for services?

If you do not like users connecting to your POP3 daemon, for example, and retrieving information about your system, you might want to remove (or change) the banner the service shows to users. [80] Doing so depends on the software you are running for a given service. For example, in postfix, you can set your SMTP banner in /etc/postfix/main.cf:

       smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)

Other software is not as easy to change. ssh will need to be recompiled in order to change the version that it prints. Take care not to remove the first part (SSH-2.0) of the banner, which clients use to identify which protocol(s) is supported by your package.

12.1.8 Are all Debian packages safe?

The Debian security team cannot possibly analyze all the packages included in Debian for potential security vulnerabilities, since there are just not enough resources to source code audit the whole project. However, Debian does benefit from the source code audits made by upstream developers.

As a matter of fact, a Debian developer could distribute a Trojan in a package, and there is no possible way to check it out. Even if introduced into a Debian branch, it would be impossible to cover all the possible situations in which the Trojan would execute. This is why Debian has a "no guarantees" license clause.

However, Debian users can take confidence in the fact that the stable code has a wide audience and most problems would be uncovered through use. Installing untested software is not recommended in a critical system (if you cannot provide the necessary code audit). In any case, if there were a security vulnerability introduced into the distribution, the process used to include packages (using digital signatures) ensures that the problem can be ultimately traced back to the developer. The Debian project has not taken this issue lightly.

12.1.9 Why are some log files/configuration files world-readable, isn't this insecure?

Of course, you can change the default Debian permissions on your system. The current policy regarding log files and configuration files is that they are world readable unless they provide sensitive information.

Be careful if you do make changes since:

FIXME: Check if this is written in the Policy. Some packages (i.e. ftp daemons) seem to enforce different permissions.

12.1.10 Why does /root/ (or UserX) have 755 permissions?

As a matter of fact, the same questions stand for any other user. Since Debian's installation does not place any file under that directory, there's no sensitive information to protect there. If you feel these permissions are too broad for your system, consider tightening them to 750. For users, read Limiting access to other user's information, Section

This Debian security mailing list thread has more on this issue.

12.1.11 After installing a grsec/firewall, I started receiving many console messages! How do I remove them?

If you are receiving console messages, and have configured /etc/syslog.conf to redirect them to either files or a special TTY, you might be seeing messages sent directly to the console.

The default console log level for any given kernel is 7, which means that any message with lower priority will appear in the console. Usually, firewalls (the LOG rule) and some other security tools log lower that this priority, and thus, are sent directly to the console.

To reduce messages sent to the console, you can use dmesg (-n option, see dmesg(8)), which examines and controls the kernel ring buffer. To fix this after the next reboot, change /etc/init.d/klogd from:



       KLOGD="-c 4"

Use a lower number for -c if you are still seeing them. A description of the different log levels can be found in /usr/include/sys/syslog.h:

       #define LOG_EMERG       0       /* system is unusable */
       #define LOG_ALERT       1       /* action must be taken immediately */
       #define LOG_CRIT        2       /* critical conditions */
       #define LOG_ERR         3       /* error conditions */
       #define LOG_WARNING     4       /* warning conditions */
       #define LOG_NOTICE      5       /* normal but significant condition */
       #define LOG_INFO        6       /* informational */
       #define LOG_DEBUG       7       /* debug-level messages */

12.1.12 Operating system users and groups Are all system users necessary?

Yes and no. Debian comes with some predefined users (user id (UID) < 99 as described in Debian Policy or /usr/share/doc/base-passwd/README) to ease the installation of some services that require that they run under an appropriate user/UID. If you do not intend to install new services, you can safely remove those users who do not own any files in your system and do not run any services. In any case, the default behavior is that UID's from 0 to 99 are reserved in Debian, and UID's from 100 to 999 are created by packages on install (and deleted when the package is purged).

To easily find users who don't own any files, execute the following command[81] (run it as root, since a common user might not have enough permissions to go through some sensitive directories):

       cut -f 1 -d : /etc/passwd | \
       while read i; do find / -user "$i" | grep -q . || echo "$i"; done

These users are provided by base-passwd. Look in its documentation for more information on how these users are handled in Debian. The list of default users (with a corresponding group) follows:

Other groups which have no associated user: I removed a system user! How can I recover?

If you have removed a system user and have not made a backup of your password and group files you can try recovering from this issue using update-passwd (see update-passwd(8)). What is the difference between the adm and the staff group?

The 'adm' group are usually administrators, and this group permission allows them to read log files without having to su. The 'staff' group are usually help-desk/junior sysadmins, allowing them to work in /usr/local and create directories in /home.

12.1.13 Why is there a new group when I add a new user? (or Why does Debian give each user one group?)

The default behavior in Debian is that each user has its own, private group. The traditional UN*X scheme assigned all users to the users group. Additional groups were created and used to restrict access to shared files associated with different project directories. Managing files became difficult when a single user worked on multiple projects because when someone created a file, it was associated with the primary group to which they belong (e.g. 'users').

Debian's scheme solves this problem by assigning each user to their own group; so that with a proper umask (0002) and the SETGID bit set on a given project directory, the correct group is automatically assigned to files created in that directory. This makes it easier for people who work on multiple projects, because they will not have to change groups or umasks when working on shared files.

You can, however, change this behavior by modifying /etc/adduser.conf. Change the USERGROUPS variable to 'no', so that a new group is not created when a new user is created. Also, set USERS_GID to the GID of the users group which all users will belong to.

12.1.14 Questions regarding services and open ports Why are all services activated upon installation?

That's just an approach to the problem of being, on one side, security conscious and on the other side user friendly. Unlike OpenBSD, which disables all services unless activated by the administrator, Debian GNU/Linux will activate all installed services unless deactivated (see Disabling daemon services, Section 3.5.1 for more information). After all you installed the service, didn't you?

There has been much discussion on Debian mailing lists (both at debian-devel and at debian-security) regarding which is the better approach for a standard installation. However, as of this writing (March 2002), there still isn't a consensus. Can I remove inetd?

Inetd is not easy to remove since netbase depends on the package that provides it (netkit-inetd). If you want to remove it, you can either disable it (see Disabling daemon services, Section 3.5.1) or remove the package by using the equivs package. Why do I have port 111 open?

Port 111 is sunrpc's portmapper, and it is installed by default as part of Debian's base installation since there is no need to know when a user's program might need RPC to work correctly. In any case, it is used mostly for NFS. If you do not need it, remove it as explained in Securing RPC services, Section 5.13.

In versions of the portmap package later than 5-5 you can actually have the portmapper installed but listening only on localhost (by modifying /etc/default/portmap) What use is identd (port 113) for?

Identd service is an authentication service that identifies the owner of a specific TCP/IP connection to the remote server accepting the connection. Typically, when a user connects to a remote host, inetd on the remote host sends back a query to port 113 to find the owner information. It is often used by mail, FTP and IRC servers, and can also be used to track down which user in your local system is attacking a remote system.

There has been extensive discussion on the security of identd (See mailing list archives). In general, identd is more helpful on a multi-user system than on a single user workstation. If you don't have a use for it, disable it, so that you are not leaving a service open to the outside world. If you decide to firewall the identd port, please use a reject policy and not a deny policy, otherwise a connection to a server utilizing identd will hang until a timeout expires (see reject or deny issues). I have services using port 1 and 6, what are they and how can I remove them?

If you have run the command netstat -an and receive:

       Active Internet connections (servers and established)
       Proto Recv-Q Send-Q Local Address           Foreign Address         State
       PID/Program name
       raw        0      0     *               7
       raw        0      0     *               7

You are not seeing processes listening on TCP/UDP port 1 and 6. In fact, you are seeing a process listening on a raw socket for protocols 1 (ICMP) and 6 (TCP). Such behavior is common to both legitimate software like intrustion detection systems, such as iplogger and portsentry, but some trojans have also been known yo use them. If you have the mentioned packages simply remove them to close the port. If you do not, try netstat's -p (process) option to see which process is running these listeners. I found the port XYZ open, can I close it?

Yes, of course. The ports you are leaving open should adhere to your individual site's policy regarding public services available to other networks. Check if they are being opened by inetd (see Disabling inetd or its services, Section 3.5.2), or by other installed packages and take the appropriate measures (i.e, configure inetd, remove the package, avoid it running on boot-up). Will removing services from /etc/services help secure my box?

No, /etc/services only provides a mapping between a virtual name and a given port number. Removing names from this file will not (usually) prevent services from being started. Some daemons may not run if /etc/services is modified, but that's not the norm. To properly disable the service, see Disabling daemon services, Section 3.5.1.

12.1.15 Common security issues I have lost my password and cannot access the system!

The steps you need to take in order to recover from this depend on whether or not you have applied the suggested procedure for limiting access to lilo and your system's BIOS.

If you have limited both, you need to disable the BIOS setting that only allows booting from the hard disk before proceeding. If you have also forgotten your BIOS password, you will have to reset your BIOS by opening the system and manually removing the BIOS battery.

Once you have enabled booting from a CD-ROM or diskette enable, try the following:

This will remove the forgotten root password, contained in the first colon separated field after the user name. Save the file, reboot the system and login with root using an empty password. Remember to reset the password. This will work unless you have configured the system more tightly, i.e. if you have not allowed users to have null passwords or not allowed root to login from the console.

If you have introduced these features, you will need to enter into single user mode. If LILO has been restricted, you will need to rerun lilo just after the root reset above. This is quite tricky since your /etc/lilo.conf will need to be tweaked due to the root (/) file system being a ramdisk and not the real hard disk.

Once LILO is unrestricted, try the following:

12.1.16 How do I accomplish setting up a service for my users without giving out shell accounts?

For example, if you want to set up a POP service, you don't need to set up a user account for each user accessing it. It's best to set up directory-based authentication through an external service (like Radius, LDAP or an SQL database). Just install the appropriate PAM library (libpam-radius-auth, libpam-ldap, libpam-pgsql or libpam-mysql), read the documentation (for starters, see User authentication: PAM, Section 4.11.1) and configure the PAM-enabled service to use the back end you have chosen. This is done by editing the files under /etc/pam.d/ for your service and modifying the

       auth   required    pam_unix_auth.so shadow nullok use_first_pass

to, for example, ldap:

       auth   required    pam_ldap.so

In the case of LDAP directories, some services provide LDAP schemas to be included in your directory that are required in order to use LDAP authentication. If you are using a relational database, a useful trick is to use the where clause when configuring the PAM modules. For example, if you have a database with the following table attributes:

       (user_id, user_name, realname, shell, password, UID, GID, homedir, sys, pop, imap, ftp)

By making the services attributes boolean fields, you can use them to enable or disable access to the different services just by inserting the appropriate lines in the following files:

12.2 My system is vulnerable! (Are you sure?)

12.2.1 Vulnerability assessment scanner X says my Debian system is vulnerable!

Many vulnerability assessment scanners give false positives when used on Debian systems, since they only use version checks to determine if a given software package is vulnerable, but do not really test the security vulnerability itself. Since Debian does not change software versions when fixing a package (many times the fix made for newer releases is back ported), some tools tend to think that an updated Debian system is vulnerable when it is not.

If you think your system is up to date with security patches, you might want to use the cross references to security vulnerability databases published with the DSAs (see Debian Security Advisories, Section 7.2) to weed out false positives, if the tool you are using includes CVE references.

12.2.2 I've seen an attack in my system's logs. Is my system compromised?

A trace of an attack does not always mean that your system has been compromised, and you should take the usual steps to determine if the system is indeed compromised (see After the compromise (incident response), Chapter 11). Even if your system was not vulnerable to the attack that was logged, a determined attacker might have used some other vulnerability besides the ones you have detected.

12.2.3 I have found strange 'MARK' lines in my logs: Am I compromised?

You might find the following lines in your system logs:

       Dec 30 07:33:36 debian -- MARK --
       Dec 30 07:53:36 debian -- MARK --
       Dec 30 08:13:36 debian -- MARK --

This does not indicate any kind of compromise, and users changing between Debian releases might find it strange. If your system does not have high loads (or many active services), these lines might appear throughout your logs. This is an indication that your syslogd daemon is running properly. From syslogd(8):

            -m interval
                   The syslogd logs a mark timestamp  regularly.   The
                   default interval between two -- MARK -- lines is 20
                   minutes.  This can be  changed  with  this  option.
                   Setting the interval to zero turns it off entirely.

12.2.4 I found users using 'su' in my logs: Am I compromised?

You might find lines in your logs like:

       Apr  1 09:25:01 server su[30315]: + ??? root-nobody
       Apr  1 09:25:01 server PAM_unix[30315]: (su) session opened for user nobody by (UID=0)

Don't worry too much. Check to see if these entries are due to cron jobs (usually /etc/cron.daily/find or logrotate):

       $ grep 25 /etc/crontab
       25 9    * * *   root    test -e /usr/sbin/anacron || run-parts --report
       $ grep nobody /etc/cron.daily/*
       find:cd / && updatedb --localuser=nobody 2>/dev/null

12.2.5 I have found 'possible SYN flooding' in my logs: Am I under attack?

If you see entries like these in your logs:

       May 1 12:35:25 linux kernel: possible SYN flooding on port X. Sending cookies.
       May 1 12:36:25 linux kernel: possible SYN flooding on port X. Sending cookies.
       May 1 12:37:25 linux kernel: possible SYN flooding on port X. Sending cookies.
       May 1 13:43:11 linux kernel: possible SYN flooding on port X. Sending cookies.

Check if there is a high number of connections to the server using netstat, for example:

       linux:~# netstat -ant | grep SYN_RECV | wc -l

This is an indication of a denial of service (DoS) attack against your system's X port (most likely against a public service such as a web server or mail server). You should activate TCP syncookies in your kernel, see Configuring syncookies, Section 4.18.2. Note, however, that a DoS attack might flood your network even if you can stop it from crashing your systems (due to file descriptors being depleted, the system might become unresponsive until the TCP connections timeout). The only effective way to stop this attack is to contact your network provider.

12.2.6 I have found strange root sessions in my logs: Am I compromised?

You might see these kind of entries in your /var/log/auth.log file:

       May 2 11:55:02 linux PAM_unix[1477]: (cron) session closed for user root
       May 2 11:55:02 linux PAM_unix[1476]: (cron) session closed for user root
       May 2 12:00:01 linux PAM_unix[1536]: (cron) session opened for user root by
       May 2 12:00:02 linux PAM_unix[1536]: (cron) session closed for user root

These are due to a cron job being executed (in this example, every five minutes). To determine which program is responsible for these jobs, check entries under: /etc/crontab, /etc/cron.d, /etc/crond.daily and root's crontab under /var/spool/cron/crontabs.

12.2.7 I have suffered a break-in, what do I do?

There are several steps you might want to take in case of a break-in:

12.2.8 How can I trace an attack?

By watching the logs (if they have not been tampered with), using intrusion detection systems (see Set up Intrusion Detection, Section 10.3), traceroute, whois and similar tools (including forensic analysis), you may be able to trace an attack to the source. The way you should react to this information depends solely on your security policy, and what you consider is an attack. Is a remote scan an attack? Is a vulnerability probe an attack?

12.2.9 Program X in Debian is vulnerable, what do I do?

First, take a moment to see if the vulnerability has been announced in public security mailing lists (like Bugtraq) or other forums. The Debian Security Team keeps up to date with these lists, so they may also be aware of the problem. Do not take any further actions if you see an announcement at http://security.debian.org.

If no information seems to be published, please send e-mail about the affected package(s), as well as a detailed description of the vulnerability (proof of concept code is also OK), to team@security.debian.org. This will get you in touch with Debian's security team.

12.2.10 The version number for a package indicates that I am still running a vulnerable version!

Instead of upgrading to a new release, Debian backports security fixes to the version that was shipped in the stable release. The reason for this is to make sure that the stable release changes as little as possible, so that things will not change or break unexpectedly as a result of a security fix. You can check if you are running a secure version of a package by looking at the package changelog, or comparing its exact (upstream version -slash- debian release) version number with the version indicated in the Debian Security Advisory.

12.2.11 Specific software proftpd is vulnerable to a Denial of Service attack.

Add DenyFilter \*.*/ to your configuration file, and for more information see http://www.proftpd.org/bugs.html. After installing portsentry, there are a lot of ports open.

That's just the way portsentry works. It opens about twenty unused ports to try to detect port scans.

12.3 Questions regarding the Debian security team

The security team keeps its list of Frequently Asked Questions at the Debian Security FAQ. Please refer to that web page for up to date information.

[ previous ] [ Contents ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ A ] [ B ] [ C ] [ D ] [ E ] [ F ] [ G ] [ H ] [ next ]

Securing Debian Manual

Version: 3.17, built on Sun, 08 Apr 2012 02:48:09 +0000

Javier Fernández-Sanguino Peña jfs@debian.org
Authors, Section 1.1