I am running FC4 with openssh 4.0p1-3.
When I scp a file to the box the transfer completes 100%, but the
connection is held open, i.e. the scp client does not return. The
problem started when I hardened the platform via Bastille v3.0.9-1.0.
If I reverse the bastille hardening (bastille -r) then normal service
is resumed.

It seems clear that Bastille is modifying something in the system that
has this unfortunate side-effect, but what could this be? Any ideas?
Note that in both cases there are no firewall rules applied (i.e.
system completely open).

In an attempt to diagnose I ran both cases with full sshd debug. The
main difference was seen (not surprisingly) at the end where the
connection is closed, as follows:

Good Run (with no Bastille hardening)...
--snip--
debug1: Received SIGCHLD.
debug2: channel 0: output drain -> closed
debug2: notify_done: reading
debug1: session_by_pid: pid 13753
debug1: session_exit_message: session 0 channel 0 pid 13753
debug2: channel 0: request exit-status confirm 0
debug1: session_exit_message: release channel 0
debug1: session_close: session 0 pid 13753
debug2: channel 0: read<=0 rfd 8 len 0
debug2: channel 0: read failed
debug2: channel 0: close_read
debug2: channel 0: input open -> drain
debug2: channel 0: read 0 from efd 10
debug2: channel 0: closing read-efd 10
debug2: channel 0: ibuf empty
debug2: channel 0: send eof
debug2: channel 0: input drain -> closed
debug2: channel 0: send close
debug3: channel 0: will not send data after close
debug2: channel 0: rcvd close
debug3: channel 0: will not send data after close
debug2: channel 0: is dead
debug2: channel 0: garbage collecting
debug1: channel 0: free: server-session, nchannels 1
debug3: channel 0: status: The following connections are open:
#0 server-session (t4 r256 i3/0 o3/0 fd 8/8 cfd -1)

debug3: channel 0: close_fds r 8 w 8 e -1 c -1
Connection closed by 10.13.5.145
debug1: do_cleanup
Closing connection to 10.13.5.145
debug3: mm_request_send entering: type 59
debug3: monitor_read: checking request 59
debug3: mm_answer_term: tearing down sessions
--snip--

Bad Run [connection remains after file transfer] (with Bastille
hardening)
--snip--
debug1: Received SIGCHLD.
debug2: channel 0: output drain -> closed
debug2: notify_done: reading
debug1: session_by_pid: pid 13979
debug1: session_exit_message: session 0 channel 0 pid 13979
debug2: channel 0: request exit-status confirm 0
debug1: session_exit_message: release channel 0
debug1: session_close: session 0 pid 13979
NO MORE OUTPUT IS SEEN
--snip--

Any suggestions much appreciated.