I work on an old AIX 5.1:
# oslevel -r
5100-03
By default it has only telnet preinstalled. Which works out of the box without additional configuration. However, there are several recommended steps to do.
Telnet
Firstly check if you have stable network connection. I had problems connecting to AIX box after connection timeout. It seemed that telnet session somehow hang on the OS side and didn’t allow me to reconnect. To prevent that, you have two options. If you use PuTTY then go to Settings->Connection and set amount of seconds between keepalive packets to say 60 seconds. And PuTTY will maintain connection automatically. Another workaround is to edit TMOUT variable in /etc/profile. By default AIX uses ksh shell which uses this parameter to detect idle sessions. If set this variable to 120, then after two minutes ksh will throw a warning that session will be closed in 60 seconds. This means that if your telnet session breaks, ksh will automatically terminate its shell. (I checked that and it turned out that TMOUT doesn’t help here.)
TCP Wrapper
By default telnet access in AIX is opened for everyone. It’s not what you want for sure. AIX has built-in firewall (called AIX TCP/IP Filters) but it’s rather cumbersome to use it just to restrict telnet access. I’d prefer TCP Wrapper, which is standard for Linux, but optional for AIX. You can get AIX LPP package from Bull AIX freeware site here: http://www.bullfreeware.com/index2.php?page=lppaix51. Then simply:
chmod +x tcp_wrappers-7.6.1.0.exe
Extract package contents by running the executable. Then run smit from directory where you extracted files and go to Software Installation and Maintenance -> Install and Update Software -> Install Software. Set current directory in “INPUT device / directory for software”. You can view software available, if you press F4 in “SOFTWARE to install” field. Change “ACCEPT new license agreements?” to yes and press Enter.
When package is installed, edit /etc/inetd.conf. Find telnet line and change it:
#telnet stream tcp6 nowait root /usr/sbin/telnetd telnetd -a
telnet stream tcp6 nowait root /usr/local/bin/tcpd telnetd -a
And restart inetd service:
stopsrc -s inetd && startsrc -s inetd
Now to limit telnet access create /etc/hosts.allow:
telnetd: 123.234.123.234 234.123.234.123
and /etc/hosts.deny:
ALL:ALL
Secure Shell
Telnet is completely outdated and insecure protocol. So you’d probably prefer ssh on the server side. I believe SSH is bundled with AIX 5.1, but I simply downloaded it from Bull site. Additionally to OpenSSH package you will have to setup OpenSSL prerequisite. Here are the links:
http://www.bullfreeware.com/affichage.php?id=779
http://sourceforge.net/projects/openssh-aix/files/openssh-aix51/4.1p1/
Install OpenSSL simply by:
rpm -i openssl-0.9.7l-1.aix5.1.ppc.rpm
In case of OpenSSH you will need to gunzip it, untar it and setup using smit. But if you work on AIX with old maintenance level (ML3 in my case) you can run into the following error when running ssh service:
getnameinfo failed: Invalid argument
You can see it if you run sshd with -D and -d flags. Solution here is to download AIX 5.1 ML9 and POSTML9 fixes from IBM Fix Central, extract them and setup in Software Installation and Maintenance -> Install and Update Software -> Update Installed Software to Latest Level (Update All).
SSH is a standalone service, so you do not need to edit /etc/inetd.conf. Just add new sshd line to /etc/hosts.allow and you are good to go. However, if your ssh was built without wrapper support, then you have a problem. You can check that by calling:
# dump -H /usr/sbin/sshd
/usr/sbin/sshd:
***Loader Section***
Loader Header Information
VERSION# #SYMtableENT #RELOCent LENidSTR
0x00000001 0x00000115 0x00000601 0x00000096
#IMPfilID OFFidSTR LENstrTBL OFFstrTBL
0x00000006 0x00006224 0x0000075a 0x000062ba
***Import File Strings***
INDEX PATH BASE MEMBER
0 /usr/lib:/lib:/opt/freeware/lib
1 libc.a shr.o
2 libpthreads.a shr_comm.o
3 libpthreads.a shr_xpg5.o
4 libcrypto.a libcrypto.so.0.9.7
5 libz.a libz.so.1
If there is no libwrap.a, then the only option you have is to run sshd under tcpd which is run by inetd. To accomplish that add the first line into /etc/services and second into /etc/inetd.conf:
ssh 22/tcp
ssh stream tcp6 nowait root /usr/local/bin/tcpd sshd -i
Switch ‘-i’ tells sshd to generate smaller keys. Otherwise you will wait significant amount of time for login prompts. Also don’t forget to remove sshd startup and shutdown scripts from /etc/rc.d/rc2.d.