wrt54gl, Tomato firmware i SSH tuneliranje

2008-11-27 | Tomato, wrt54gl, mreže

Linksys 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.