wrt54gl, Tomato firmware i SSH tuneliranje
2008-11-27 | Tomato, wrt54gl, mrežeLinksys wrt54gl je jako dobar i jeftin bežični ruter. Mislim da sam ga platio 500kn. Najveća mu je prednost što se može s lakoćom staviti GNU/Linux na njega. Jedan od boljih firmware-a baziranih na GNU/Linux-u jest Tomato. Obožavam ga zbog moćnog i jednostavnog upravljanja QoS-om.
Uglavnom, ovdje želim pokazati kako se može omogućiti SSH tuneliranje za neke ne root korisnike te im usput zabraniti pristup shell-u.
Omogućimo pristup ruteru kroz ssh. U web sučelju, pod "Administration"->"Admin Access", dio "SSH Daemon", označimo "Enable at Startup", "Remote Access", "Allow Password Login" te pod "Remote Port" i "Port" stavimo, recimo, 2222. Sada imamo ssh server, točnije dropbear, koji sluša port 2222 na ruteru.
Tomato dolazi sa samo jednim korisnikom, root-om. Dodati ćemo ostale korisnike kroz /etc/passwd, /etc/shadow, /etc/group. Budući da korisnik treba home, stvorimo ga.
ruter$ mkdir /tmp/home/tunnel
Korisniku ne želimo omogućiti korištenje shell-a pa ćemo napraviti program koji će glumiti shell. Neka bude c program.
#include <stdio.h>
#include <unistd.h>
int main(){
while(1){
printf(">> Sluzi samo za tunneliranje! "
"Konekciju ubij s Ctrl+C !!\n");
fflush(stdout);
sleep(300);
}
return 0;
}
Sada ga treba jos i kompajlirati za mipsel platformu. To napravite za domaći rad ili skinite ovdje: tunnel_ssh. Snimite program u /home/tmp/tunnel/ na ruteru, dajte mu +x i dodajte ga u /etc/shells.
ruter$ chmod +x /tmp/home/tunnel/tunnel_ssh
ruter$ echo "/bin/sh" > /etc/shells
ruter$ echo "/tmp/home/tunnel/tunnel_ssh" >> /etc/shells
Dodajmo sada novu grupu tunnel kojoj će pripadati korisnici.
ruter$ echo "tunnel:x:100:" >> /etc/group
Zatim, dodajmo korisnika, npr. tester u /etc/passwd.
ruter$ echo "tester:x:1000:100::/tmp/home/tunnel:\
/tmp/home/tunnel/tunnel_ssh" >> /etc/passwd
Budući da u /etc/shadow ide hash korisničke šifre, a tomato nema passwd naredbu generirajte hash na npr. lokalnom računalu. Dodajmo potrebne informacije u /etc/shadow (hash označava pripadni hash korisničke šifre).
ruter$ echo "tester:_hash_:14208:0:99999:7:::" >> /etc/shadow
Pridjelimo odgovarajuće ovlasti na /tmp/home/tunnel.
ruter$ chown -R root:tunnel /tmp/home/tunnel
Za kraj onemogućimo logiranje kao root s passwordom, ali ostavimo mogućnost da se koristi ključ. Ključ možete unijeti pomoću web sučelja pod "Administration"->"Admin Access", dio "SSH Daemon".
ruter$ kill `cat /var/log/dropbear.pid`
ruter$ dropbear -p 2222 -g
Sada biste trebali moći pristupiti ruteru kao korisnik tester bez mogućnosti korištenja shella. Važno je napomenuti da će se poslije reboot-a (i nakon nekih promjena preko web sučelja) ove promjene izbrisati. Jedna od opcija jest da sve naredbe stavite u jednu skriptu koja će se pokretati poslije reboota.