reset hesla na viacerych pc (stary blog z bh)

Podělte se o své zkušenosti, tipy, triky a zlepšováky, které jsou příliš malé na článek na našem webu.
Nehledejte zde odpovědi na obecné dotazy.
Odpovědět
Zpráva
Autor
Uživatelský avatar
redhawk
Guru Mintu
Příspěvky: 3032
Registrován: 12 led 2016, 19:14
Bydliště: ako kedy

reset hesla na viacerych pc (stary blog z bh)

#1 Příspěvek od redhawk » 29 zář 2019, 20:36

Script na reset hesla ROOTa na viacerých linuxových serveroch súčasne.
Tento script v PERL zmení heslá ROOTa na viacerých serveroch. Testované na CentOS, Redhat, Ubuntu server, Debian, Devuan, MX linux, Linux Mint, Slackware, Greenie 2019, antix.

Takže čo k tomu budete potrebovať?
Perl module: Net::SSH::Expect
Na serveri, kde budete script spúšťať, vytvorte súbor serverlist.txt a napíšte zoznam serverových ip adries.

Príklad:

192.168.0.1
192.168.0.2
192.168.0.3


atd.
Následne si napíšte nasledovný script:

Kód: Vybrat vše

#!/usr/bin/perl
use Net::SSH::Expect;
$oldpass = $ARGV[0];
$newpass = $ARGV[1];
chomp $newpass;
sub connect($$)
        {
        $password=shift;
        $server=shift;
        chomp $server;
        chomp $password;
        $ssh = Net::SSH::Expect->new (
                host => $server,
                password=> $password,
                user => 'root',
                raw_pty => 1,
                timeout => 30
        );
        &login($ssh)
}
sub login($)
        {
        eval {  $login_output = $ssh->login(); };  if ($@) {print "$server not found\n"; next; };
                if ($login_output !~ /Last/) {
                        print "Login password error for server $server , please enter the password: ";
                        $inputpass = <STDIN>;
                        &connect($inputpass,$ip)
                }
                else {
        #              &resetpass();
        $ssh->send("passwd");
        $ssh->waitfor(':\s*\z', 10) or warn "$server - Error 'New password:' prompt not found\n";
        $ssh->send("$newpass");
        $ssh->waitfor(':\s*\z', 10) or warn "$server - Error 'Confirm new password:' prompt not found\n";
        $ssh->send("$newpass");
        $ssh->waitfor('#\s*\z', 10) or warn "$server - Error 'Prompt not found after reset:'\n";
        print "$server new password is \t $newpass\n";
        $ssh->close();
                }
}
open (SERV,"serverlist.txt") || die "ERROR: Unable to open Serverlist file $! \n";
while ( $ip = <SERV> ) {
sleep 2;
&connect($oldpass,$ip);
}
Spustite script

Kód: Vybrat vše

./passwordreset.pl <Oldpassword> <Newpassword> 
Script prevedie automatické nalogovanie a zmení heslá ROOTa na serveroch v danom zozname v súbore serverlist.txt

PS: vopred uvediem, že je to použiteľné iba pri tom, ak na každom serveri je rovnaké heslo. Z hľadiska bezpečnosti to nie je najoptimálnejšie ale je to "vzor" ako to napriklad menit doma na viacerych PC.
Ďaľšou možnosťou je použiť Cluster SSH - Cluster Admin Via SSH a bezpečnejšie.
Pravděpodobně kecám.
Hlúposť užívateľa je úmerná jeho právam.
Podstatou pirátstva nie je túžba ľudí kradnúť, ale neschopnosť predať im veci, ktoré chcú.

Odpovědět