Linux Intranet Configuration

Introduction

Linux provides a stable and cost efficient solution in many situations and it supports an unparalleled amount of network configurations, protocols, and services. Basic Linux intranet configuration suitable for a small or medium-sized network can be done within an hour providing a secure and reliable network infrastructure. Additional features can be added later if a need arises without disturbing the existing network or its users. This document explains a general purpose intranet infrastructure design, configurations for firewall, DNS, DHCP, NFS, NIS, SSH, NTP, and lists needed services to enable the configured features in the network. Such a network is suitable for software development, office application use, and many other tasks.

Reader is expected to be familiar with basic terms and concepts of networked Linux/Unix environments. The purpose of this document is to provide a compact and quick guide for setting up a Linux intranet, not to explain in detail each service and feature. More detailed instructions about each service can be found from the referenced documents. Provided configuration files have been tested on Red Hat based distributions (Red Hat Enterprise Linux, CentOS, and Fedora Core) but most of them are suitable for any distribution. Each configuration file is well commented and has a header specifying its location, permissions, and purpose. If a service depends on several configuration files and not all of them are mentioned here it indicates that the other configuration files provided with Red Hat based distributions are suitable to be used alongside with the provided ones. It is expected that needed software packages are installed prior configuration of a service. All RPMs related to configured services are mentioned.

Network Infrastructure

This section specifies the basics of the network and its most essential configurations. The following sections expect the network being built and configured as specified in this section if relevant for a particular service or functionality.

The intranet has one server that is connected to a outer network 10.0.0.0/255.0.0.0 and all workstations are connected to the outer network via this server. The server provides NAT (Network Address Translation) and IP packet forwarding for the workstations to allow them to access the outer network. This scheme is sometimes referred as IP masquerading. The intranet where all the workstations are connected to has domain name intra and it uses private address space 192.168.1.0/255.255.255.0. The server has two NICs (Network Interface Cards), one (eth0) connected to the outer network and one (eth1) to the intra intranet. One NIC, eth0, is needed per workstation. It is crucial that the only physical connection between the intranet and the outer network is the server so that the workstations cannot bypass the server when connecting to other networks and, more importantly, no connections from other networks are allowed into the intranet without proper authentication and authorization at the server. The server and the workstations shall all be connected to a common switch that provides needed physical connections for the intranet. The workstations use the server both as a gateway and as a nameserver. Should the outer network environment ever change only the server's network settings need to be adjusted for the changes, the intranet and the workstations' configurations do not require any modifications in such a situation.

Configuration files: network, ifcfg-eth0, ifcfg-eth1 for the server and network, ifcfg-eth0 for the workstations. Note that the server eth0 and gateway settings must match your outer network environment and on each workstation eth0 configuration must use unique IP address. Please note that all these files provide only basic network settings; firewall and routing will be configured in the next section.

Required services to be started: network at the server and the workstations. Related RPMs: several, all required ones should be available by default after installation of the operating system.

Firewall Configuration

Firewall set up in the intranet relies, of course, on the netfilter packet filtering framework. The iptables command is used to configure the packet filtering ruleset. The configuration provides both routing/NAT functionality and also protection against DoS attacks. The configuration implements what was described in the section Network Infrastructure. Each rule has a comment explaining its meaning and some rules that additionally might be needed are in comments. For additional information about netfilter and iptables(8) please refer to netfilter/iptables documentation.

Configuration files: iptables, sysctl.conf for the server and iptables, sysctl.conf for the workstations. With other than Red Hat based distributions the provided iptables configuration can easily be used with the iptables-restore(8) utility.

Required services to be started: iptables at the server and the workstations. Related RPMs: iptables.

DNS Configuration

DNS configuration in a smaller intranet is most easily done by using dnsmasq, a lightweight and easy to configure DNS forwarder. The DNS configuration is actually done just by maintaining the file /etc/hosts at the server and dnsmasq will automatically take care of everything else. dnsmasq itself requires no special configuration but it is recommended to set it to listen only to the intranet interface eth1. dnsmasq binaries for Red Hat based distributions can found for example from Dag Wieers' RPM repository.

Other required configurations are for the file /etc/resolv.conf that defines name servers to be used and for the file /etc/host.conf that specifies how names are resolved. No additional services will be required for resolver since the functionality is part of the standard C library.

Note that it is important that the first line in the /etc/hosts configuration for the host 127.0.0.1 contains only the entry localhost.localdomain localhost, other entries are invalid and may cause unexpected behavior in when resolving 127.0.0.1.

Configuration files: hosts, dnsmasq.conf, resolv.conf for the server and hosts, resolv.conf for the workstations. Note that the server resolv.conf must match your outer network environment. Common configuration file: host.conf.

Required services to be started: dnsmasq at the server. Related RPMs: dnsmasq.

At this stage network connections from the intranet to the outer network should be working properly. If not so, you must investigate the problem. Most useful network diagnostic utilities include ping(8), ifconfig(8), route(8), traceroute(8), and netstat(8), among others.

DHCP Configuration

To support mobile hosts that are not permanently connected to the intranet DHCP server is set up. On Red Hat based distributions, two files are configured: one for controlling on which interfaces the DHCP daemon is listening to and one for the actual daemon configuration. eth0 at the server is connected to the outer network where no DHCP daemon should be run so only eth1 will be listened by the daemon. Daemon configuration uses the intranet address space specified in the section Network Infrastructure.

Server configuration files: interface, daemon.

Required services to be started: dhcpd at the server. Related RPMs: dhcp.

NFS Configuration

Configuring NFS server is done by editing the file /etc/exports at the server. For the workstations NFS mount points must be defined in the file /etc/fstab. The presented configuration relies on version 3 of the NFS protocol.

The provided server configuration file exports users' home directories from the directory /home and miscellaneous shared files from the directory /net. The directory /net must be created at the server before exporting it and at the workstations before mounting it. The directory /home exported from the server will be mounted over the existing directory /home at the workstations. This is no problem since no local users are added at the workstations, as all user administration will be done at the server as will be described in the next section.

Configuration files: server, workstation. Note that the workstation configuration must be appended to the existing /etc/fstab file, do not overwrite the existing file with this one.

Required services to be started: portmap, nfslock, nfs at the server and portmap, nfslock, netfs at the workstations. Related RPMs: portmap, nfs-utils. rpcbind is used instead of portmap on newer distributions.

NIS/YP Configuration

Users and groups are centrally and easily administrated at the server by using NIS/YP. At the server administrator creates users normally and then updates the NIS maps that are used by the NIS server. The user accounts created can then be used from the server and the workstations. Users are added at the server with useradd(8) command and the NIS maps are updated by issuing the command make -C /var/yp while the service ypserv is running.

Setting up NIS server requires that both portmap and ypserv services are running at the server and NISDOMAIN is set before starting the service ypserv. (Newer distributions use rpcbind instead of portmap.) It is not recommended to use the DNS domain name for NISDOMAIN for security reasons so a different name should be chosen. To set NISDOMAIN on Red Hat based distributions the following line must be added to the file /etc/sysconfig/network if not already present:

NISDOMAIN=intranis

The main ypserv configuration file is /etc/ypserv.conf. Shadow password usage with NIS should be enabled by adjusting the file /var/yp/Makefile by preventing merging of shadow data to other maps. All the needed modifications are included in this file. For security reason also the file /var/yp/securenets should be configured before starting ypserv. After ypserv is finally running, the command /usr/lib/yp/ypinit -m must be run. Follow the given instructions (you probably just want to hit Control-D followed by Enter) and you should see how NIS maps are being built. After that the remaining configuration files mentioned below should be placed in correct locations and yppasswdd and ypbind services can be started. Note that NISDOMAIN must be set also at the workstations before starting the service ypbind.

By default NIS/YP does not allow users to change their shells but the provided yppasswdd configuration will enable the usage of the command ypchsh(1). ypbind is configured and run also at the server so that the command yppasswd(1) can be used at all hosts by users to change their passwords. To also make the command passwd(1) NIS aware a small change in PAM configuration is needed: in the main PAM configuration file /etc/pam.d/system-auth one must add into the password section for module pam_unix.so the additional parameter nis. After this change passwd(1) will change NIS password if no local password for the user is present. An administrator may also instruct users to always use the command yppasswd(1) to change their passwords or perhaps even force this by using a small wrapper script in place of real /usr/bin/passwd.

One final important configuration file that needs to be adjusted is /etc/nsswitch.conf that is used by NSS. NSS defines databases for user and group information, network protocols, and mail aliases, to name a few. If the file is not properly updated, NIS will not be used even if all required NIS related services would be running. No additional services will be required for NSS since the functionality is part of the standard C library.

Server configuration files: ypserv.conf, Makefile, securenets, yppasswdd. Common configuration files: yp.conf, nsswitch.conf. If NISDOMAIN was added earlier to the file /etc/sysconfig/network then there is no need for these files but there are provided here for reference: server, workstation.

Required services to be started: portmap, ypserv, yppasswdd, ypbind at the server and portmap, ypbind at the workstations. Related RPMs: portmap, ypserv, ypbind, yp-tools. rpcbind is used instead of portmap on newer distributions.

SSH Configuration

SSH configuration is easily done by adjusting two files at the server and the workstations. At the server the SSH daemon configuration is slightly more restricted as the server is connected to the outer network that may have rogue users. Specifically, root logins into the workstations are permitted but into the server, they are not. Only protocol version 2 is supported at the server and the workstations. X11 traffic is enabled everywhere. Users can naturally use the file ~/.ssh/config to further control their ssh(1) settings. Users may also find ssh-agent(1) and keychain(1) to be useful utilities in many occasions.

Configuration files: server, workstation, common.

Required services to be started: sshd at the server and the workstations. Related RPMs: openssh, openssh-server, openssh-clients.

NTP Configuration

In many situations it is essential that clocks in a network are set precisely to the same time, e.g., to prevent build errors caused by clock skews with make(1). This can easily be done with NTP. The server is used as the time source and the workstations adjust their clocks with the server. If needed, the server could easily be configured to adjust its clock with some external NTP server.

Please note that if the NTP server at the server has just been started, starting ntpd at the workstations immediately after that may cause synchronization with the timeserver to fail as the server clock is still calibrating itself. This is harmless, as the synchronization will happen later when the server clock is ready for it.

Server configuration file: ntp.conf. Workstation configuration files: ntp.conf, step-tickers.

Required services to be started: ntpd at the server and the workstations. Related RPMs: ntp.

Services Configuration

The lists below contain all the required services that need to be running on Red Hat based distributions to support all the services that have been configured above and also some other basic functionality. The services are explained briefly. It is recommended to disable services that are not necessarily needed.

Common services:

  • acpi (for ACPI functionality)
  • anacron (for scheduled jobs)
  • atd (for scheduled jobs)
  • crond (for scheduled jobs)
  • gpm (for console mouse support)
  • haldaemon (for hardware support)
  • iptables (for firewall support)
  • messagebus (for application messaging support)
  • network (for basic networking support)
  • nfslock (for NFS file locking support)
  • nscd (for name service caching support)
  • ntpd (for NTP support)
  • portmap (for NFS/NIS support, rpcbind on newer distributions)
  • sendmail (for MTA support)
  • sshd (for SSH server support)
  • syslog (for system logging facilities support, rsyslog on newer distributions)
  • ypbind (for NIS client support)

Workstation specific services:

  • netfs (for mounting remote filesystems)

Server specific services:

  • dhcpd (for DHCP server support)
  • dnsmasq (for DNS server support)
  • nfs (for NFS server support)
  • yppasswdd (for NIS password changing support)
  • ypserv (for NIS server support)

Enabled services can be checked using the chkconfig(8) utility or by examining symbolic links in the /etc/rcX.d/ directory where X is the current runlevel. Current runlevel may be checked with the command runlevel(8) and the runlevel to which the system is started after boot can be checked from the file /etc/inittab.

Conclusion

This document provided a guide to design, set up, and configure a Linux intranet providing all essential services as well as centralized user administration and basic security features. The presented configuration is suitable for small and medium-sized networks and many individual configuration files can also be utilized in larger networks or at a standalone host. There are numerous enhancements and customizations that could be made depending on the size of a network or special needs for a particular network. List of possible enhancements and improvements could include some of the following: VPN support, LDAP authentication, printing support, Windows connectivity, better laptop and mobility support, IPv6 support, enhanced security, tuning server and workstations for better performance depending on applications used, thin clients support, automated backups, automated software installations and updates, local web portal for intranet users, and so forth. These kinds of configurations are, however, outside of scope of this document.

All the configuration files mentioned are browsable and available for download.

Comments and feedback can be sent to oss(at)segetech.com. We would kindly like to note that we cannot promise a personal reply to all e-mails received, especially to those asking for help in some unrelated configuration problems. Inquiries about possible cooperation should be done via addresses listed at our Contact page.

This document was last updated on 2009-03-10.