Утилита барои пайвасти сояи инсонии ғайриадминистратор ба сеансҳои корбари RDP дар WinServer 2012R2

Мушкилот дар давраи карантини ширкат чунин буд: хеле зарур аст, ки шумораи ташрифҳои мутахассисони хидматрасонӣ ва машваратдиҳӣ оид ба нармафзори барномавӣ ба офисҳо кам карда шавад. Ростӣ, корбарон аксар вақт аз ёрии мутахассисон аз ҳад зиёд истифода мебаранд, намехоҳанд ба худи масъала диққат диҳанд ва мегӯянд: "Онҳо меоянд, кӯмак мекунанд, ин корро мекунанд, дар ҳоле ки ман сигор/қаҳва менӯшам ва ғайра". Машваратҳои телефонӣ бо дастрасии муштарак ба сервер ҳангоми тамошои экрани дурдаст самараноктаранд.

Утилита барои пайвасти сояи инсонии ғайриадминистратор ба сеансҳои корбари RDP дар WinServer 2012R2

Пас аз он ки мо аллакай велосипеди худро "ихтироъ" кардем, ман ба баъзе маълумоти муҳим дар мавзӯи мақола дучор шудам: Сояи RDS – пайвасти сояафкан ба сессияҳои RDP-и корбарон дар Windows Server 2012 R2 ё Режим shadow непривилегированного пользователя в windows server ё Додани идоракунии ҷаласаҳои RDPҲамаи онҳо истифодаи консолро дар бар мегиранд, ҳатто бо унсурҳои муколамаи оддӣ.

Ҳама маълумоти дар поён овардашуда барои онҳое пешбинӣ шудааст, ки ба таври муқаррарӣ таҳрифҳои ғайримуқаррариро таҳаммул мекунад барои ноил шудан ба натиҷаи дилхоҳ, ихтироъ кардани усулҳои нолозим.
Барои пешгирӣ аз мушкилоти зиёд, ман аз қисми охир оғоз мекунам: велосипед барои корбари оддӣ бо истифода аз як утилит кор мекунад. АдмиЛинк, ки барои он аз муаллифаш ташаккур.

I. Консол ва RDP-и сояафкан.

Аз замони истифода бо ҳуқуқҳои маъмурии консоли Server Manager -> QuickSessionCollection -> бо пахш кардани сессияи корбари мавриди таваҷҷӯҳ, интихоби Shadow дар менюи контекстӣ барои кормандоне, ки тарзи истифодаи нармафзорро меомӯзонанд, имконнопазир аст, усули дигари "чӯбӣ" баррасӣ шуд, яъне:

1. ID-и сессияи RDP-ро ёбед:

query user | findstr Administrator

ё:

qwinsta | findstr Administrator 

Ғайр аз ин, "| findstr Administrator"Ин танҳо вақте қулай буд, ки шумо дақиқ медонистед, ки чӣ маъмурӣ Барои дидани ҳамаи онҳое, ки ба сервер ворид шудаанд, шумо бояд танҳо қисми аввалро истифода баред.

Утилита барои пайвасти сояи инсонии ғайриадминистратор ба сеансҳои корбари RDP дар WinServer 2012R2

2. Ба ин сессия пайваст шавед, ба шарте ки дар домен сиёсатҳои гурӯҳӣ Параметри "Қоидаҳои идоракунии дурдастро барои сессияҳои корбарии Хизматрасонии Мизи Кории Дурдаст муқаррар мекунад" ҳадди аққал ба "Назорати сессия бо иҷозати корбар" муқаррар шудааст (бештар маълумот):

mstsc /shadow:127

Лутфан қайд кунед, ки рӯйхат танҳо номҳои корбаронро дар бар мегирад.

Бигзор такрор кунам, ки бе ҳуқуқи администратор шумо инҳоро хоҳед гирифт:

Утилита барои пайвасти сояи инсонии ғайриадминистратор ба сеансҳои корбари RDP дар WinServer 2012R2

Аммо барои ислоҳи пешакии барномаи мавриди назар, ман ҳисоберо бо ҳуқуқи администратор истифода кардам.

II. Барнома

Пас, вазифа эҷоди интерфейси оддии графикӣ буд, то бо иҷозати онҳо ба ҳисси сояи корбар пайваст шавад ва ба корбар паём фиристад. Муҳити барномасозии интихобшуда Lazarus буд.

1. Рӯйхати пурраи корбарони доменро (логин - номи пурра) аз администратор ё боз тавассути консол гиред:

wmic useraccount get Name,FullName 

инро касе манъ намекунад:

wmic useraccount get Name,FullName > c:testusername.txt

Бигзор фавран бигӯям, ки Lazarus ҳангоми коркарди ин файл мушкилӣ дошт, зеро рамзгузории пешфарзии он UCS-2 аст, аз ин рӯ ман маҷбур шудам онро дастӣ ба UTF-8-и стандартӣ табдил диҳам. Сохтори файл дорои бисёр ҷадвалҳо, ё аниқтараш, бисёр фосилаҳо мебошад, ки мо қарор додем, ки онҳоро ба таври барномавӣ идора кунем. Дер ё зуд, мушкили рамзгузорӣ ҳал хоҳад шуд ва файл ба таври барномавӣ навсозӣ хоҳад шуд.

Пас, идея дар он аст, ки папкае эҷод кунем, ки барои корбарони барнома дастрас бошад, масалан, c:\test, ки ду файлро дар бар мегирад: якум бо номи логин ва номи пурра ва дуюм бо номи id_rdp ва номи корбар. Сипас, мо ин маълумотро то ҳадди имкон коркард мекунем.

Дар айни замон, барои пайваст шудан бо рӯйхати сессияҳо, мо ин мундариҷаро (логин ва номи пурра) ба массив интиқол медиҳем:

procedure Tf_rdp.UserF2Array;
var 
  F:TextFile;   i:integer;   f1, line1:String;   fL: TStringList;
begin //f_d глобальный путь к размещению файлов 
f1:=f_d+'user_name.txt';     //задача считать в массив содержимое файла
fL := TStringList.Create; // строку подвергнем метамарфозам с разделителями
fL.Delimiter := '|'; fL.StrictDelimiter := True;
AssignFile(F,f1); 
try // Открыть файл для чтения
  reset(F); ReadLn(F,line1);
  i:=0;
while not eof(F) do // Считываем строки, пока не закончится файл
begin
ReadLn(F,line1);
line1:= StringReplace(line1, '  ', '|',[]); //заменяем первый попавш.2пробела разделителем |
// удаляем все двойные пробелы
while pos('  ',line1)>0 do line1:= StringReplace(line1, '  ', ' ', [rfReplaceAll]);
begin
if (pos('|',line1)>0) then
begin //если разделитель существует заносим его в массив
fL.DelimitedText :=line1; // разбиваем на столбцы
if (fL[0]<>'') then //если учетка имеет имя
begin //вносим ее в массив
 inc(i); // избавляемся от возможных одиночных пробелов в логине
 fam[0,i]:=StringReplace(fL[1],' ','',[rfReplaceall, rfIgnoreCase]);
 fam[1,i]:=fL[0];
 end;end;end;end; // Готово. Закрываем файл.
 CloseFile(F);
 Fl.Free;
 except
 on E: EInOutError do  ShowMessage('Ошибка обработки файла. Детали: '+E.Message);
 end;end;

Барои "коди зиёд" узр мехоҳам, нуктаҳои навбатӣ мухтасартар хоҳанд буд.

2. Монанди усули банди қаблӣ, мо натиҷаи коркарди рӯйхатро ба элементи StringGrid мехонем. Ин қисми "муҳим"-и код аст:

2.1 Мо рӯйхати ҷории сессияҳои RDP-ро дар файл мегирем:

f1:=f_d+'user.txt';
cmdline:='/c query user >'+ f1;
if ShellExecute(0,nil, PChar('cmd'),PChar(cmdline),nil,1)=0 then;
Sleep(500); // можно и подольше ждать пока файл для чтения создается

2.2 Файлро коркард кунед (танҳо сатрҳои назарраси код нишон дода шудаанд):

StringGrid1.Cells[0,i]:=fL[1]; StringGrid1.Cells[2,i]:=fL[3]; //кидаем в цикле в StringGrid1
login1:=StringReplace(fL[1],' ','',[rfReplaceall, rfIgnoreCase]); //убираем из логина пробелы
if (SearchArr(login1)>=0) then //ищем в массиве из п1. логин и записываем в таблицу ФИО
StringGrid1.Cells[1,i]:=fam[1,SearchArr(login1)]
else StringGrid1.Cells[1,i]:='+'; // либо записываем плюсик:)
.... //в зависимости от выбора пользователя сортируем и форматируем по данным
if (b_id.Checked=true) then SortGrid(0) else SortGrid(1);
StringGrid1.AutoSizeColumn(0);StringGrid1.AutoSizeColumn(1); StringGrid1.AutoSizeColumn(2);  

3. Худи пайвастшавӣ бо пахш кардани сатри дорои корбар ва рақами сессияи ӯ муқаррар карда мешавад:

  id:=(StringGrid1.Row);// узнаем номер строки  IntToStr(StringGrid1.Row)
  ids:=StringGrid1.Cells[2,id]; //получаем идентификатор rdp
  cmdline:='/c mstsc /shadow:'+ ids; //и подключаемся....
 if (b_rdp.Checked=True) then  if ShellExecute(0,nil, PChar('cmd'),PChar(cmdline),nil,1) =0 then;       

4. Якчанд беҳбудиҳои дигар ворид карда шуданд, ба монанди ҷудокунӣ бо пахш кардани тугмаи радио ва паёмҳо ба корбар ё ба ҳамаи корбарон.

Утилита барои пайвасти сояи инсонии ғайриадминистратор ба сеансҳои корбари RDP дар WinServer 2012R2

→ Рамзи пурраи сарчашмаро дидан мумкин аст дар ин ҷо

III. Истифодаи AdminLink - Он чизе ки ман дидам:

AdminLink миёнбуреро эҷод мекунад, ки ба макони утилита пайваст мешавад. admilaunch.exe, ва нусхаи шахсии утилитаи оғозкунанда AdmiRun.Exe ки дар папкаи корбар ҷойгир аст, масалан Вася, аз рӯи намуд C:\Истифодабарандагон\ТЕЗАҲОХулоса, ҳамааш бад нест: шумо метавонед бо ҳуқуқҳои дастрасии файли миёнбур ва дигар чизҳо бозӣ кунед, то виҷдони администратори худро тоза кунед.

Манбаъ: will.com

Хостинги боэътимодро барои сайтҳо бо муҳофизати DDoS, серверҳои VPS VDS харед 🔥 Харидани хостинги боэътимоди вебсайт бо муҳофизати DDoS, серверҳои VPS VDS | ProHoster