## Documents for linux

Code [lin001w]

A program installed in your system has probably been not installed by a package of your Linux packaging system. If this binary has been installed by the administrator note that /usr/local/ is the place for this files.

Code [lin002i]

Installed processes listening on Internet interfaces must be tightly controlled since they are the "open doors" to the outside.

Code [lin003w]

Processes that have not been run by root are listening on interfaces open to the outside. This processes might have been run by root and changed uids or might be rogue processes. Confirm if their presence is necessary. Notice that sometimes services open sporadic UDP listeners to receive DNS requests, if you receive reports on open UDP services that later on are closed this might be a false positive.

Code [lin004i]

Netstat can be used instead of lsof in order to provide information on listening processes, however it will provide less info since it cannot determine the process (or PID) associated with the open socket or the user that runs it.

Code [lin005f]

In Debian systems, checksums are stored in /var/lib/dpkg/info/ if the md5sum of a file differs from the checksum of installed packages it might be due to changes made by the system administrator (for example, files in /etc) by everyday use of by a possible intruder (who might have placed a trojan instead of the checked file) Be forewarned, an attacker might have modified this info files (they are not protected against this)

Code [lin006w]

A file installed by a package no longer exists in the system and cannot be checked for. An administrator should not remove files from the system, they should be removed uninstalling the packages that provided them. This is an unusual behavior.

Code [lin007w]

In the default configuration of many GNU/Linux distributions users can reboot the machine pressing Ctrl+Alt+Delete while in console mode. This can be considered a security risk if an attacker can easily taken down the server from console.

Code [lin008e]

The /proc pseudo-filesystem is needed to check the network configuration settings in the kernel and determine insecure setups. /proc is available when the kernel is compiled with the CONFIG_PROC_FS=Y option (if you want to modify them you also need to add the CONFIG_SYSCTL=Y option). You also need to have it mounted, if it's not try: 'mount -t proc proc /proc'. This is usually done in most distributions per default.

Code [lin009i]

The kernel will answer (per configuration) to ICMP echo requests in any interface. You might want to configure it to not answer to this requests and thus make it more "invisible". Do it with: # sysctl -w net.ipv4.icmp_echo_ignore_all=1 Note, however, that this violates RFCs.

Code [lin010f]

The system will answer to ICMP broadcast echo messages. This is considered a problem since ICMP broadcasts can cause network denial of service as the same time as giving away the location of the hosts. To remove this do: # sysctl -w net.ipv4.icmp_echo_ignore_broadcasts = 1

Code [lin011f]

The system is configured to answer to bad formatted ICMP messages. This behavior is not recommended, please unconfigure it with: # sysctl -w net.ipv4.icmp_ignore_bogus_error_responses = 1

Code [lin012w]

The system is configured to accept ICMP redirects, this might or might not be necessary in your network topology. If you have multiple routers to which connect through to outside locations it might be necessary, otherwise remote it since an attacker could send bogus ICMP redirection messages to try to route the outgoing network packets to other systems (including his own) and thus allowing for man in the middle or denial of service attacks: # sysctl -w net.ipv4.conf.all.accept_redirects = 0 # sysctl -w net.ipv4.conf.default.accept_redirects = 0

Code [lin013f]

It is common to protect systems against Denial of Service attacks using SYN packets (commonly known as "SYN flooding") by activating support of TCP syncookies. Note, however, that activating this violates some RFCS: # sysctl -w net.ipv4.tcp_syncookies = 1

Code [lin014f]

It is possible to send IP spoofed packets from this machine. Spoofed packets are commonly used by trojans that make use of compromised hosts to deliver denial of service, man in the middle or conection hijacking. You should consider configuring your kernel to not permit this: # sysctl -w net.ipv4.conf.all.rp_filter = 2 # sysctl -w net.ipv4.conf.default.rp_filter = 2

Code [lin015w]

IP forwarding is the option that permits the system to act as a router and thus resend packets from one network interface to another. If your system is not acting as such this option should be disabled: # sysctl -w net.ipv4.ip_forward = 0

Code [lin016f]

Source routing might permit an attacker to send packets through your host (if routing is enabled) to other hosts without following your network topology setup. It should be enabled only under very special circumstances or otherwise an attacker could try to bypass the traffic filtering that is done on the network: # sysctl -w net.ipv4.conf.all.accept_source_route = 0 # sysctl -w net.ipv4.conf.default.accept_source_route = 0

Code [lin017w]

Suspicious packets recieved by the kernel should be logged to detect incoming attacks. To activate this logging capability: # sysctl -w net.ipv4.conf.all.log_martians = 1 # sysctl -w net.ipv4.conf.default.log_martians = 1

Code [lin018w]

The "weak end host" description in the RFC1122 permits multihomed systems to receive packets for a network interface from another network interface. This, as a matter of fact, removes the benefit of configuring services and binding them to a single IP address (not to all IP addresses). For 2.2 kernels remove this option with: # echo 1 > /proc/sys/net/ipv4/conf/eth1/hidden For 2.4 and later kernels you might need to patch the kernel or configure your firewalling rules properly.