- key/certificate-based auth; if possible never password-auth, never ever plaintext
- sshd_config AllowUsers, AllowGroups, DenyGroups, AcceptEnv, Ciphers, ClientAlive*, LoginGraceTime, MaxAuthTries, Permit*, X11Forwarding, only ssh v2, _no_ v1
- maybe portknocking
- firewalling for incoming and outgoing traffic, where appropriate based on UID/PID
- when e.g. squid is in use implement sane ACLs which allow only your/internal IP addresses
- tcpwrapper for apps without own ACLs
- minimal rights per process
- no unneeded services listening
- mod_security for apache
- fail2ban/denyhosts
- system hardening - SELinux/RSBAC/hardened kernel+toolchain
- regular system scans both 'on box' like rkhunter/aide and 'off box' like nessus, nmap, etc.
- log everything to a second system, use event correlation (sec), if possible via stunnel
- (when using Cisco) no CDP/VTP, PVLAN per port, dhcp snooping, arp limits per switch port, broadcast controls/limits, prune vlans from trunks, trunks only where really needed
- case intrusion detection
- arpwatch
- full disk encryption (token+passphrase)
- (secure) ntp on all systems
- no unencrypted traffic (neither wired nor wireless)
- normal user without wheel-rights
- root-login disabled
- don't rely on WEP/WPA/WPA2, use an additional VPN 'above'
- use a dedicated authentication host
- snort
- !skype
- ....