Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
XINETD.CONF(5)		      File Formats Manual		XINETD.CONF(5)

NAME
       xinetd.conf - Extended Internet Services	Daemon configuration file

DESCRIPTION
       xinetd.conf is the configuration	file that determines the services pro-
       vided  by  xinetd.  Any line whose first	non-white-space	character is a
       '#' is considered a comment line. Empty lines are ignored.

       The file	contains entries of the	form:

	      service <service_name>
	      {
		     <attribute> <assign_op> <value> <value> ...
		     ...
	      }

       The assignment operator,	assign_op, can be one of '=', '+=', '-='.  The
       majority	of attributes support only  the	 simple	 assignment  operator,
       '='.   Attributes whose value is	a set of values	support	all assignment
       operators.  For such attributes,	'+=' means adding a value to  the  set
       and  '-=' means removing	a value	from the set.  A list of these attrib-
       utes will be given after	all the	attributes are described.

       Each entry defines a service identified by the service_name.  The  fol-
       lowing is a list	of available attributes:

       id		This attribute is used to uniquely identify a service.
			This  is  useful because there exist services that can
			use different protocols	and need to be described  with
			different  entries  in the configuration file.	By de-
			fault, the service id is the same as the service name.

       type		Any combination	of the following values	may be used:

			RPC	    if this is an RPC service

			INTERNAL    if this is a service provided by xinetd.

			TCPMUX/TCPMUXPLUS
				    if this is a service that will be  started
				    according  to the RFC 1078 protocol	on the
				    TCPMUX well-known port.  See  the  section
				    describing TCPMUX services below.

			UNLISTED    if this is a service not listed in a stan-
				    dard  system  file	(like /etc/rpc for RPC
				    services,  or  /etc/services  for  non-RPC
				    services).

       flags		Any combination	of the following flags may be used:

			INTERCEPT   Intercept  packets or accepted connections
				    in order to	verify that  they  are	coming
				    from  acceptable  locations	 (internal  or
				    multi-threaded services cannot  be	inter-
				    cepted).

			NORETRY	    Avoid retry	attempts in case of fork fail-
				    ure.

			IDONLY	    Accept  connections	 only  when the	remote
				    end	identifies the remote user  (i.e.  the
				    remote  host  must	run  an	identification
				    server).  This flag	applies	only  to  con-
				    nection-based  services.  This flag	is in-
				    effective if the USERID log	option is  not
				    used.

			NAMEINARGS  This  will	cause  the  first  argument in
				    "server_args" to be	argv[0]	when executing
				    the	 server,  as  specified	 in  "server".
				    This  allows  you  to  use tcpd by putting
				    tcpd in  "server"  and  the	 name  of  the
				    server in "server_args" like in normal in-
				    etd.

			NODELAY	    If	the  service  is a tcp service and the
				    NODELAY flag is set, then the  TCP_NODELAY
				    flag  will	be  set	on the socket.	If the
				    service is not a tcp service, this	option
				    has	no effect.

			KEEPALIVE   If	the  service  is a tcp service and the
				    KEEPALIVE	flag   is   set,   then	   the
				    SO_KEEPALIVE  socket  flag	will be	set on
				    the	socket.	 If the	service	is not	a  tcp
				    service, this option has no	effect.

			NOLIBWRAP   This disables internal calling of the tcp-
				    wrap  library  to  determine access	to the
				    service.  This may be needed in  order  to
				    use	libwrap	functionality not available to
				    long-running  processes such as xinetd; in
				    this case, the tcpd	program	can be	called
				    explicitly (see also the NAMEINARGS	flag).
				    For	RPC services using TCP transport, this
				    flag  is  automatically turned on, because
				    xinetd cannot get remote host address  in-
				    formation for the rpc port.

			SENSOR	    This  replaces  the	 service with a	sensor
				    that detects  accesses  to	the  specified
				    port.  NOTE:  It  will  NOT	detect stealth
				    scans. This	flag should be	used  only  on
				    services  that  you	 know  you don't need.
				    When an access is made to  this  service's
				    port,  the IP Address is added to a	global
				    no_access list. This causes	all subsequent
				    accesses from the originating  IP  address
				    to	be  denied  access until the deny_time
				    setting expires. The amount	of time	 spent
				    on	 this  list  is	 configurable  as  the
				    deny_time attribute. The SENSOR flag  will
				    also  cause	 xinetd	to consider the	server
				    attribute to be INTERNAL no	matter what is
				    typed on the same line. Another  important
				    thing   to	 remember   is	 that  if  the
				    socket_type	is set	to  stream,  then  the
				    wait attribute should be set to no.

			IPv4	    Sets  the  service	to  be an IPv4 service
				    (AF_INET).

			IPv6	    Sets the service to	 be  an	 IPv6  service
				    (AF_INET6),	 if  IPv6  is available	on the
				    system.

			LABELED	    The	 LABELED  flag	will  tell  xinetd  to
				    change  the	 child processes SE Linux con-
				    text to match that of the incoming connec-
				    tion as it starts the service.  This  only
				    works for external tcp non-waiting servers
				    and	is an error if applied to an internal,
				    udp, or tcp-wait server.

			REUSE	    The	 REUSE	flag  is deprecated.  All ser-
				    vices now implicitly use the REUSE flag.

       disable		This is	boolean	"yes" or "no".	This  will  result  in
			the  service being disabled and	not starting.  See the
			DISABLE	flag description.

       socket_type	Possible values	for this attribute include:

			stream	    stream-based service

			dgram	    datagram-based service

			raw	    service that requires direct access	to IP

			seqpacket   service that requires reliable  sequential
				    datagram transmission

       protocol		determines  the	 protocol that is employed by the ser-
			vice.  The protocol must exist in /etc/protocols.   If
			this  attribute	 is  not defined, the default protocol
			employed by the	service	will be	used.

       wait		This attribute determines if the  service  is  single-
			threaded  or  multi-threaded and whether or not	xinetd
			accepts	the connection or the server  program  accepts
			the  connection.  If  its value	is yes,	the service is
			single-threaded; this means that xinetd	will start the
			server and then	it will	stop handling requests for the
			service	until the server  dies	and  that  the	server
			software  will accept the connection. If the attribute
			value is no, the service is multi-threaded and	xinetd
			will  keep  handling  new  service requests and	xinetd
			will accept the	connection. It should  be  noted  that
			udp/dgram services normally expect the value to	be yes
			since udp is not connection oriented, while tcp/stream
			servers	normally expect	the value to be	no.

       user		determines  the	 uid  for the server process. The user
			attribute can either be	numeric	or a name. If  a  name
			is  given  (recommended),  the user name must exist in
			/etc/passwd.  This attribute is	ineffective if the ef-
			fective	user ID	of xinetd is not super-user.

       group		determines the gid for the server process.  The	 group
			attribute  can	either be numeric or a name. If	a name
			is given (recommended),	the group name must  exist  in
			/etc/group.  If	a group	is not specified, the group of
			user  will be used (from /etc/passwd).	This attribute
			is ineffective if the effective	user ID	of  xinetd  is
			not  super-user	and if the groups attribute is not set
			to 'yes'.

       instances	determines the number of servers that can be  simulta-
			neously	 active	 for  a	 service  (the	default	 is no
			limit).	The value of this attribute can	 be  either  a
			number	or  UNLIMITED  which  means  that  there is no
			limit.

       nice		determines the server priority.	Its value is a (possi-
			bly negative) number; check nice(3) for	more  informa-
			tion.

       server		determines the program to execute for this service.

       server_args	determines the arguments passed	to the server. In con-
			trast to inetd,	the server name	should not be included
			in server_args.

       libwrap		overrides  the	service	 name passed to	libwrap	(which
			defaults to the	server	name,  the  first  server_args
			component  with	 NAMEINARGS,  the id for internal ser-
			vices and the service name for	redirected  services).
			This  attribute	 is only valid if xinetd has been con-
			figured	with the libwrap option.

       only_from	determines the remote hosts to	which  the  particular
			service	 is  available.	 Its value is a	list of	IP ad-
			dresses	which can be specified in any  combination  of
			the following ways:

			a)   a	numeric	address	in the form of %d.%d.%d.%d. If
			     the rightmost components are 0, they are  treated
			     as	 wildcards  (for example, 128.138.12.0 matches
			     all hosts on  the	128.138.12  subnet).   0.0.0.0
			     matches  all  Internet addresses.	IPv6 hosts may
			     be	specified in the form of abcd:ef01::2345:6789.
			     The rightmost rule	for IPv4  addresses  does  not
			     apply to IPv6 addresses.

			b)   a	  factorized	address	  in   the   form   of
			     %d.%d.%d.{%d,%d,...}.  There is no	need for all 4
			     components	(i.e. %d.%d.{%d,%d,...%d} is also ok).
			     However, the factorized part must be at  the  end
			     of	the address.  This form	does not work for IPv6
			     hosts.

			c)   a	network	 name  (from /etc/networks). This form
			     does not work for IPv6 hosts.

			d)   a host  name.   When  a  connection  is  made  to
			     xinetd,  a	 reverse  lookup is performed, and the
			     canonical name returned is	compared to the	speci-
			     fied host name.  You may also use domain names in
			     the form of .domain.com.  If the  reverse	lookup
			     of	the client's IP	is within .domain.com, a match
			     occurs.

			e)   an	 ip  address/netmask  range  in	 the  form  of
			     1.2.3.4/32.  IPv6 address/netmask ranges  in  the
			     form of 1234::/46 are also	valid.

			Specifying  this  attribute  without a value makes the
			service	available to nobody.

       no_access	determines the remote hosts to	which  the  particular
			service	 is unavailable. Its value can be specified in
			the same way as	the value of the only_from  attribute.
			These  two  attributes	determine  the location	access
			control	enforced by xinetd. If	none  of  the  two  is
			specified  for	a service, the service is available to
			anyone.	If both	are specified for a service,  the  one
			that is	the better match for the address of the	remote
			host  determines  if  the service is available to that
			host (for example,  if	the  only_from	list  contains
			128.138.209.0	and   the   no_access	list  contains
			128.138.209.10	then  the  host	  with	 the   address
			128.138.209.10 can not access the service).

       access_times	determines  the	 time  intervals  when	the service is
			available. An interval has the form  hour:min-hour:min
			(connections  will be accepted at the bounds of	an in-
			terval). Hours can range from 0	to 23 and minutes from
			0 to 59.

       log_type		determines where the service log output	is sent. There
			are two	formats:

			SYSLOG	syslog_facility	[syslog_level]
			       The log output is sent to syslog	at the	speci-
			       fied facility. Possible facility	names include:
			       daemon,	auth, authpriv,	user, mail, lpr, news,
			       uucp, ftp local0-7.  Possible level  names  in-
			       clude:  emerg,  alert,  crit, err, warning, no-
			       tice, info, debug.  If a	level is not  present,
			       the  messages  will  be	recorded  at  the info
			       level.

			FILE  file [soft_limit [hard_limit]]
			       The log output is appended to file  which  will
			       be  created if it does not exist. Two limits on
			       the size	of the	log  file  can	be  optionally
			       specified.   The	 first	limit  is  a soft one;
			       xinetd will log a message the first  time  this
			       limit  is  exceeded  (if	xinetd logs to syslog,
			       the message will	be sent	at the alert  priority
			       level).	 The  second  limit  is	 a hard	limit;
			       xinetd will stop	logging	for the	affected  ser-
			       vice  (if  the  log  file is a common log file,
			       then more than one service may be affected) and
			       will log	a message about	this (if  xinetd  logs
			       to  syslog,  the	 message  will	be sent	at the
			       alert priority level).  If a hard limit is  not
			       specified,  it  defaults	 to the	soft limit in-
			       creased by 1% but the extra size	must be	within
			       the parameters LOG_EXTRA_MIN and	 LOG_EXTRA_MAX
			       which default to	5K and 20K respectively	(these
			       constants are defined in	xconfig.h).

       log_on_success	determines what	information is logged when a server is
			started	 and when that server exits (the service id is
			always included	in the log entry).  Any	combination of
			the following values may be specified:

			PID	    logs the server process id (if the service
				    is implemented by xinetd  without  forking
				    another process the	logged process id will
				    be 0)

			HOST	    logs the remote host address

			USERID	    logs  the user id of the remote user using
				    the	 RFC  1413  identification   protocol.
				    This  option  is available only for	multi-
				    threaded stream services.

			EXIT	    logs the fact that a server	 exited	 along
				    with  the  exit  status or the termination
				    signal (the	process	id is also  logged  if
				    the	PID option is used)

			DURATION    logs the duration of a service session

			TRAFFIC	    logs  the  total  bytes  in	 and out for a
				    redirected service.

       log_on_failure	determines what	information is logged  when  a	server
			cannot	be  started  (either  because of a lack	of re-
			sources	or because of  access  control	restrictions).
			The  service  id  is  always included in the log entry
			along with the reason for failure.  Any	combination of
			the following values may be specified:

			HOST	    logs the remote host address.

			USERID	    logs the user id of	the remote user	 using
				    the	  RFC  1413  identification  protocol.
				    This option	is available only  for	multi-
				    threaded stream services.

			ATTEMPT	    logs  the  fact  that a failed attempt was
				    made (this option is implied by  all  oth-
				    ers).

       rpc_version	determines the RPC version for a RPC service. The ver-
			sion  can  be  a  single number	or a range in the form
			number-number.

       rpc_number	determines the number  for  an	UNLISTED  RPC  service
			(this  attribute  is ignored if	the service is not un-
			listed).

       env		The value of this attribute is a list  of  strings  of
			the form 'name=value'.	These strings will be added to
			the  environment  before  starting a server (therefore
			the server's environment will include  xinetd's	 envi-
			ronment	plus the specified strings).

       passenv		The  value  of this attribute is a list	of environment
			variables  from	 xinetd's  environment	that  will  be
			passed	to  the	server.	 An empty list implies passing
			no variables to	the server except for those explicitly
			defined	using the env attribute.  (notice that you can
			use this attribute in conjunction  with	 the  env  at-
			tribute	 to  specify  exactly what environment will be
			passed to the server).

       port		determines the service	port.  If  this	 attribute  is
			specified  for	a  service listed in /etc/services, it
			must be	equal to the port number listed	in that	file.

       redirect		Allows a tcp service to	be redirected to another host.
			When xinetd receives a tcp connection on this port  it
			spawns	a process that establishes a connection	to the
			host and port number specified,	and forwards all  data
			between	 the  two  hosts.   This option	is useful when
			your internal machines are not visible to the  outside
			world.	 Syntax	 is:  redirect	= (ip address) (port).
			You can	also use a hostname instead of the IP  address
			in  this field.	 The hostname lookup is	performed only
			once, when xinetd is started, and the first IP address
			returned is the	one  that  is  used  until  xinetd  is
			restarted.   The  "server"  attribute  is not required
			when this option is specified.	If  the	 "server"  at-
			tribute	is specified, this attribute takes priority.

       bind		Allows	a  service to be bound to a specific interface
			on the machine.	 This means  you  can  have  a	telnet
			server	listening  on  a local,	secured	interface, and
			not on the external interface.	Or one port on one in-
			terface	can do something, while	the  same  port	 on  a
			different  interface  can do something completely dif-
			ferent.	 Syntax: bind =	(ip address of interface).

       interface	Synonym	for bind.

       banner		Takes the name of a file to be splatted	at the	remote
			host when a connection to that service is established.
			This  banner  is printed regardless of access control.
			It should *always* be printed when  a  connection  has
			been made.  xinetd outputs the file as-is, so you must
			ensure	the  file  is correctly	formatted for the ser-
			vice's protocol.  In paticular,	if  the	 protocol  re-
			quires CR-LF pairs for line termination, you must sup-
			ply them.

       banner_success	Takes  the name	of a file to be	splatted at the	remote
			host when a connection to  that	 service  is  granted.
			This  banner  is  printed as soon as access is granted
			for the	service.  xinetd outputs the  file  as-is,  so
			you  must  ensure  the file is correctly formatted for
			the service's protocol.	 In paticular, if the protocol
			requires CR-LF pairs for line  termination,  you  must
			supply them.

       banner_fail	Takes  the name	of a file to be	splatted at the	remote
			host when a connection	to  that  service  is  denied.
			This  banner is	printed	immediately upon denial	of ac-
			cess.  This is useful for informing  your  users  that
			they are doing something bad and they shouldn't	be do-
			ing it anymore.	 xinetd	outputs	the file as-is,	so you
			must  ensure  the  file	is correctly formatted for the
			service's protocol.  In	paticular, if the protocol re-
			quires CR-LF pairs for line termination, you must sup-
			ply them.

       per_source	Takes an integer or "UNLIMITED"	as an argument.	  This
			specifies  the	maximum	 instances of this service per
			source IP address.  This can also be specified in  the
			defaults section.

       cps		Limits	the  rate  of incoming connections.  Takes two
			arguments.  The	first argument is the number  of  con-
			nections  per second to	handle.	 If the	rate of	incom-
			ing connections	is higher than this, the service  will
			be  temporarily	 disabled.  The	second argument	is the
			number of seconds to wait before re-enabling the  ser-
			vice after it has been disabled.  The default for this
			setting	is 50 incoming connections and the interval is
			10 seconds.

       max_load		Takes  a floating point	value as the load at which the
			service	will stop accepting connections.  For example:
			2 or 2.5.  The service will stop accepting connections
			at this	load.  This is the one	minute	load  average.
			This  is  an  OS dependent feature, and	currently only
			Linux, Solaris,	and FreeBSD are	 supported  for	 this.
			This  feature  is only avaliable if xinetd was config-
			ured with the -with-loadavg option.

       groups		Takes either "yes" or "no".  If	the  groups  attribute
			is  set	to "yes", then the server is executed with ac-
			cess to	the groups that	the server's effective UID has
			access to.  Alternatively, if the group	 attribute  is
			set,  the server is executed with access to the	groups
			specified.  If the groups attribute is	set  to	 "no",
			then  the  server  runs	 with no supplementary groups.
			This attribute must be set to "yes" for	many BSD  sys-
			tems.	This attribute can be set in the defaults sec-
			tion as	well.

       mdns		Takes either "yes" or "no".  On	systems	 that  support
			mdns  registration  of services	(currently only	Mac OS
			X), this will enable or	disable	 registration  of  the
			service.  This defaults	to "yes".

       umask		Sets  the inherited umask for the service.  Expects an
			octal value.  This option may be set in	the "defaults"
			section	to set a umask for all services.  xinetd  sets
			its  own  umask	 to  the previous umask	OR'd with 022.
			This is	the umask that will be inherited by all	 child
			processes if the umask option is not used.

       enabled		Takes a	list of	service	ID's to	enable.	 This will en-
			able only the services listed as arguments to this at-
			tribute; the rest will be disabled.  If	you have 2 ftp
			services, you will need	to list	both of	their ID's and
			not just ftp. (ftp is the service name,	not the	ID. It
			might  accidentally  be	the ID,	but you	better check.)
			Note that the service "disable"	 attribute  and	 "DIS-
			ABLE"  flag  can  prevent a service from being enabled
			despite	being listed in	this attribute.

       include		Takes	a   filename   in   the	  form	 of   "include
			/etc/xinetd/service".	The  file  is then parsed as a
			new configuration file.	 It is not the same  thing  as
			pasting	 the  file  into xinetd.conf where the include
			directive is given.  The included file must be in  the
			same  form  as xinetd.conf.  This may not be specified
			from within a service.	It must	be specified outside a
			service	declaration.

       includedir	Takes a	directory name	in  the	 form  of  "includedir
			/etc/xinetd.d".	 Every file inside that	directory, ex-
			cluding	 files	with  names  containing	a dot ('.') or
			ending with a tilde ('~'), will	be  parsed  as	xinetd
			configuration  files.  The files will be parsed	in al-
			phabetical order according to the C locale.  This  al-
			lows you to specify services one per file within a di-
			rectory.   The	includedir directive may not be	speci-
			fied from within a service declaration.

       rlimit_as	Sets the Address Space resource	limit for the service.
			One parameter is required, which is either a  positive
			integer	 representing  the  number of bytes to set the
			limit to  (K  or  M  may  be  used  to	specify	 kilo-
			bytes/megabytes)  or  "UNLIMITED".   Due  to  the  way
			Linux's	libc malloc is implemented, it is more	useful
			to  set	 this  limit  than rlimit_data,	rlimit_rss and
			rlimit_stack. This resource limit is only  implemented
			on Linux systems.

       rlimit_cpu	Sets  the  maximum number of CPU seconds that the ser-
			vice may use.  One parameter is	required, which	is ei-
			ther a positive	integer	representing the number	of CPU
			seconds	limit to, or "UNLIMITED".

       rlimit_data	Sets the maximum data size resource limit for the ser-
			vice.  One parameter is	required, which	 is  either  a
			positive  integer  representing	the number of bytes or
			"UNLIMITED".

       rlimit_rss	Sets the maximum resident set size limit for the  ser-
			vice.	Setting	this value low will make the process a
			likely candidate for swapping out to disk when	memory
			is  low.  One parameter	is required, which is either a
			positive integer representing the number of  bytes  or
			"UNLIMITED".

       rlimit_stack	Set the	maximum	stack size limit for the service.  One
			parameter  is required,	which is either	a positive in-
			teger representing the number of bytes or "UNLIMITED".

       deny_time	Sets the time span that	access to all services on  all
			IP  addresses  are denied to someone that sets off the
			SENSOR.	The unit of time is in minutes.	 Valid options
			are: FOREVER, NEVER,  and  a  numeric  value.  FOREVER
			causes the IP address not to be	purged until xinetd is
			restarted.  NEVER  has	the effect of just logging the
			offending IP address. A	typical	time value would be 60
			minutes. This should stop most DOS attacks  while  al-
			lowing	IP addresses that come from a pool to be recy-
			cled for legitimate purposes. This option must be used
			in conjunction with the	SENSOR flag.

       You don't need to specify all of	the above attributes for each service.
       The necessary attributes	for a service are:

	      socket_type
	      user		(non-internal services only)
	      server		(non-internal services only)
	      wait
	      protocol		(RPC and unlisted services only)
	      rpc_version	(RPC services only)
	      rpc_number	(unlisted RPC services only)
	      port		(unlisted non-RPC services only)

       The following attributes	support	all assignment operators:

	      only_from
	      no_access
	      log_on_success
	      log_on_failure
	      passenv
	      env		(does not support the '-=' operator)

       These attributes	can also appear	more than once	in  a  service	entry.
       The  remaining  attributes support only the '=' operator	and can	appear
       at most once in a service entry.

       The configuration file may also contain a single	 defaults  entry  that
       has the form

	      defaults
	      {
		     <attribute> = <value> <value> ...
		     ...
	      }

       This  entry  provides default attribute values for service entries that
       don't specify those attributes. Possible	default	attributes:

	      log_type		(cumulative effect)
	      bind
	      per_source
	      umask
	      log_on_success	(cumulative effect)
	      log_on_failure	(cumulative effect)
	      only_from		(cumulative effect)
	      no_access		(cumulative effect)
	      passenv		(cumulative effect)
	      instances
	      disabled		(cumulative effect)
	      enabled		(cumulative effect)
	      banner
	      banner_success
	      banner_fail
	      per_source
	      groups
	      cps
	      max_load
	      Attributes with a	cumulative effect can be specified mul-
	      tiple times
	      with the values specified	each time accumulating (i.e. '='  does
	      the  same	 thing	as '+=').  With	the exception of disabled they
	      all have the same	meaning	as if they were	specified in a service
	      entry.  disabled determines services that	are disabled  even  if
	      they  have  entries  in  the configuration file. This allows for
	      quick reconfiguration by specifying disabled services  with  the
	      disabled attribute instead of commenting them out.  The value of
	      this  attribute  is  a list of space separated service ids.  en-
	      abled has	the same properties as disabled.  The difference being
	      that enabled is a	list of	which services are to be enabled.   If
	      enabled is specified, only the services specified	are available.
	      If  enabled is not specified, all	services are assumed to	be en-
	      abled, except those listed in disabled.

INTERNAL SERVICES
       xinetd provides the following  services	internally  (both  stream  and
       datagram	based):	echo, time, daytime, chargen, and discard.  These ser-
       vices  are under	the same access	restrictions as	all other services ex-
       cept for	the ones that don't require xinetd to fork another process for
       them. Those ones	(time, daytime,	and the	datagram-based echo,  chargen,
       and discard) have no limitation in the number of	instances.

TCPMUX Services
       xinetd  supports	 TCPMUX	 services that conform to RFC 1078. These ser-
       vices may not have a well-known port associated with them, and  can  be
       accessed	via the	TCPMUX well-known port.

       For  each service that is to be accessed	via TCPMUX, a service entry in
       /etc/xinetd.conf	or in a	configuration file in an includedir  directory
       must exist.

       The service_name	field (as defined above	for each service in any	xinetd
       configuration file) must	be identical to	the string that	is passed (ac-
       cording	to  RFC	 1078  protocol) to xinetd when	the remote service re-
       questor first makes the connection on the TCPMUX	well-known port.  Pri-
       vate protocols should use a service name	that has a high	probability of
       being unique. One way is	to prepend the service name with some form  of
       organization ID.

       The  type field can be either TCPMUX or TCPMUXPLUS. If the type is TCP-
       MUXPLUS,	xinetd will handle the initial protocol	handshake (as  defined
       in RFC 1078) with the calling process before initiating the service. If
       the  type is TCPMUX, the	server that is started is responsible for per-
       forming the handshake.

       The type	field should also include  UNLISTED  if	 the  service  is  not
       listed  in  a  standard system file (like /etc/rpc for RPC services, or
       /etc/services for non-RPC services).

       The socket_type for these services must be  stream,  and	 the  protocol
       must be tcp.

       Following is a sample TCPMUX service configuration:

	      service myorg_server
	      {
		     disable		 = no
		     type		 = TCPMUX
		     socket_type	 = stream
		     protocol		 = tcp
		     wait		 = no
		     user		 = root
		     server		 = /usr/etc/my_server_exec
	      }

       Besides	a  service entry for each service that can be accessed via the
       TCPMUX well-known port, a service entry for TCPMUX itself must also  be
       included	in the xinetd configuration. Consider the following sample:

	      service tcpmux
	      {
		     type		 = INTERNAL
		     id			 = tcpmux
		     socket_type	 = stream
		     protocol		 = tcp
		     user		 = root
		     wait		 = no
	      }

NOTES
       1.  The	following service attributes cannot be changed on reconfigura-
	   tion: socket_type, wait, protocol, type.

       2.  When	the attributes only_from and no_access are not specified for a
	   service (either directly or via defaults) the address check is con-
	   sidered successful (i.e. access will	not be denied).

       3.  The address check is	based on the IP	address	of the remote host and
	   not on its domain address. We do this so that we can	 avoid	remote
	   name	 lookups  which	 may take a long time (since xinetd is single-
	   threaded, a name lookup will	prevent	the daemon from	accepting  any
	   other  requests  until  the	lookup is resolved).  The down side of
	   this	scheme is that if the IP address of  a	remote	host  changes,
	   then	 access	 to  that host may be denied until xinetd is reconfig-
	   ured.  Whether access is actually denied  or	 not  will  depend  on
	   whether  the	new host IP address is among those allowed access. For
	   example, if the IP address  of  a  host  changes  from  1.2.3.4  to
	   1.2.3.5  and	only_from is specified as 1.2.3.0 then access will not
	   be denied.

       4.  If the USERID log option is specified and the  remote  host	either
	   does	 not  run  an identification server or the server sends	back a
	   bad reply, access will not be denied	unless the IDONLY service flag
	   is used.

       5.  Interception	works by forking a process which acts as a filter  be-
	   tween  the remote host(s) and the local server.  This obviously has
	   a performance impact	so it is up to you to make the compromise  be-
	   tween security and performance for each service.  The following ta-
	   bles	 show the overhead of interception.  The first table shows the
	   time	overhead-per-datagram for a UDP-based  service	using  various
	   datagram  sizes.   For TCP-based services we	measured the bandwidth
	   reduction because of	interception while sending a certain amount of
	   data	from client to server (the time	overhead should	 the  same  as
	   for UDP-based services but it is "paid" only	by the first packet of
	   a  continuous  data	transmission).	The amount of data is given in
	   the table as	system_callsxdata_sent_per_call,  i.e.	 each  send(2)
	   system  call	 transferred so	many bytes of data.  The bandwidth re-
	   duction is given in terms of	bytes per second and as	 a  percentage
	   of  the bandwidth when interception is not performed.  All measure-
	   ments were done on a	SparcStation IPC running SunOS 4.1.

		  Datagram size	(bytes)	   Latency (msec)
		  ---------------------	   --------------
		  64			   1.19
		  256			   1.51
		  1024			   1.51
		  4096			   3.58

		  Bytes	sent		   Bandwidth reduction
		  ----------		   -------------------
		  10000x64		   941 (1.2%)
		  10000x256		   4,231 (1.8%)
		  10000x1024		   319,300 (39.5%)
		  10000x4096		   824,461 (62.1%)

EXAMPLE
	      #
	      #	Sample configuration file for xinetd
	      #

	      defaults
	      {
		     log_type		 = FILE	/var/log/servicelog
		     log_on_success	 = PID
		     log_on_failure	 = HOST
		     only_from		 = 128.138.193.0 128.138.204.0
		     only_from		 = 128.138.252.1
		     instances		 = 10
		     disabled		 = rstatd
	      }

	      #
	      #	Note 1:	the protocol attribute is not required
	      #	Note 2:	the instances attribute	overrides the default
	      #
	      service login
	      {
		     socket_type	 = stream
		     protocol		 = tcp
		     wait		 = no
		     user		 = root
		     server		 = /usr/etc/in.rlogind
		     instances		 = UNLIMITED
	      }

	      #
	      #	Note 1:	the instances attribute	overrides the default
	      #	Note 2:	the log_on_success flags are augmented
	      #
	      service shell
	      {
		     socket_type	 = stream
		     wait		 = no
		     user		 = root
		     instances		 = UNLIMITED
		     server		 = /usr/etc/in.rshd
		     log_on_success	 += HOST
	      }

	      service ftp
	      {
		     socket_type	 = stream
		     wait		 = no
		     nice		 = 10
		     user		 = root
		     server		 = /usr/etc/in.ftpd
		     server_args	 = -l
		     instances		 = 4
		     log_on_success	 += DURATION HOST USERID
		     access_times	 = 2:00-9:00 12:00-24:00
	      }

	      #	Limit telnet sessions to 8 Mbytes of memory and	a total
	      #	20 CPU seconds for child processes.
	      service telnet
	      {
		     socket_type	 = stream
		     wait		 = no
		     nice		 = 10
		     user		 = root
		     server		 = /usr/etc/in.telnetd
		     rlimit_as		 = 8M
		     rlimit_cpu		 = 20
	      }

	      #
	      #	This entry and the next	one specify internal services. Since
	      #	this is	the same service using a different socket type,	the
	      #	id attribute is	used to	uniquely identify each entry
	      #
	      service echo
	      {
		     id			 = echo-stream
		     type		 = INTERNAL
		     socket_type	 = stream
		     user		 = root
		     wait		 = no
	      }

	      service echo
	      {
		     id			 = echo-dgram
		     type		 = INTERNAL
		     socket_type	 = dgram
		     user		 = root
		     wait		 = no
	      }

	      #
	      #	Sample RPC service
	      #
	      service rstatd
	      {
		     type		 = RPC
		     socket_type	 = dgram
		     protocol		 = udp
		     server		 = /usr/etc/rpc.rstatd
		     wait		 = yes
		     user		 = root
		     rpc_version	 = 2-4
		     env		 = LD_LIBRARY_PATH=/etc/securelib
	      }

	      #
	      #	Sample unlisted	service
	      #
	      service unlisted
	      {
		     type		 = UNLISTED
		     socket_type	 = stream
		     protocol		 = tcp
		     wait		 = no
		     server		 = /home/user/some_server
		     port		 = 20020
	      }

SEE ALSO
       xinetd(1L),

       xinetd.log(5)

       Postel J., Echo Protocol, RFC 862, May 1983

       Postel J., Discard Protocol, RFC	863, May 1983

       Postel J., Character Generator Protocol,	RFC 864, May 1983

       Postel J., Daytime Protocol, RFC	867, May 1983

       Postel J., Harrenstien K., Time Protocol, RFC 868, May 1983

       M. Lottor, TCP Port Service Multiplexer (TCPMUX), RFC 1078 Nov 1988

       StJohns M.,  Identification Protocol, RFC 1413, February	1993

BUGS
       If the INTERCEPT	flag is	not used, access control on the	address	of the
       remote host is not performed  when  wait	 is  yes  and  socket_type  is
       stream.

       The  NOLIBWRAP  flag  is	automatically turned on	for RPC	services whose
       socket_type is stream because xinetd cannot determine  the  address  of
       the remote host.

       If the INTERCEPT	flag is	not used, access control on the	address	of the
       remote  host for	services where wait is yes and socket_type is dgram is
       performed only on the first packet. The server may then accept  packets
       from  hosts  not	 in  the access	control	list. This can happen with RPC
       services.

       There is	no way to put a	SPACE in an environment	variable.

       When wait is yes	and socket_type	is stream, the socket  passed  to  the
       server can only accept connections.

       The  INTERCEPT  flag  is	 not supported for internal services or	multi-
       threaded	services.

				 14 June 2001			XINETD.CONF(5)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=xinetd.conf&manpath=FreeBSD+14.3-RELEASE+and+Ports>

home | help