Linux, properly compiled to include the necessary options.
The appropriate version of pppd for your kernel.
A 'getty' program that intelligently handles modem
communications.
We use getty_ps2.0.7h, but mgetty is highly thought of. I understand
that mgetty can detect a call that is using pap/chap (pap is the
standard for Windows95) and invoke pppd automatically, but I have yet to
explore this.
An operational domain name server (DNS) that is accessible to your
dial up users.
You should really be running your own DNS if possible...