RemoteApp рд╕рд░реНрд╡рд░ рд╕реБрд░рдХреНрд╖рд╛ рдореЗрдВ рд╕реБрдзрд╛рд░

рдпрд╣ рдХреЛрдИ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ 2008 рдореЗрдВ рд╢реБрд░реВ рдХреА рдЧрдИ рд░рд┐рдореЛрдЯрдПрдк рддрдХрдиреАрдХ, рд╕рд╛рдЗрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдПрдХреНрд╕реЗрд╕ рдЯреЗрдХреНрдиреЛрд▓реЙрдЬреАрдЬ рдХреЗ рд▓рд┐рдП рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдХрд╛ рдЬрд╡рд╛рдм рд╣реИред рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рд░реЛрдЬрдорд░реНрд░рд╛ рдХреА рдЬрд┐рдВрджрдЧреА рдореЗрдВ рдЗрд╕ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрд░рдбреА рдЧреЗрдЯрд╡реЗ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд┐рдирд╛, рдЖрдкрдХреЛ рдПрдХ рдЦреБрд▓реЗ рдЬрд╛рд╡рдХ рдЖрд░рдбреАрдкреА рдкреЛрд░реНрдЯ рдЯреАрд╕реАрдкреА / 3389 рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдкрдиреЗ рдЯрд░реНрдорд┐рдирд▓ рд╕рд░реНрд╡рд░реЛрдВ рдХрд╛ рдЕрд╡рд▓реЛрдХрди рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рд╕рд░реНрд╡рд░ рд▓рдЧрд╛рддрд╛рд░ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рдХреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд░реВрд░-рдмрд▓ рдХреЗ рд╣рдорд▓реЛрдВ рдХреЗ рд╕рдВрдкрд░реНрдХ рдореЗрдВ рд╣реИрдВред
рднрд╛рдЧреНрдп рдХреЛ рд▓реБрднрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдореИрдВрдиреЗ рдЖрд░рдбреАрдкреА рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдпреЛрдЬрдирд╛ рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ред



рдЪреВрдВрдХрд┐ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕рд░реНрд╡рд░ рд░рд╛рдЙрдЯрд░ рдХреЗ рдкреАрдЫреЗ рд╕реНрдерд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдкреЛрд░реНрдЯ рдХреЛ рдЯрд░реНрдорд┐рдирд▓ рд╕рд░реНрд╡рд░ рдореЗрдВ рднреЗрдЬ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рдо рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд╛рдЗрдЯ рдЪрд╛рд▓ рдФрд░ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдУрдкрди рдкреЛрд░реНрдЯ 3389 рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд▓реЙрдЧ рдЗрди рдХрд░рддреЗ рд╣реИрдВред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ Windows \ Web \ RDWeb \ Pages \ Default.aspx , рдЗрд╕рдореЗрдВ рдХреБрдЫ рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рддреЗ рд╣реБрдПред

void goToFolder(string getLangVal) { Response.Redirect(getLangVal + "/Default.aspx" + Request.Url.Query,true); } private float getInternetExplorerVersion() { // Returns the version of Internet Explorer or a -1 // (indicating the use of another browser). float rv = -1; System.Web.HttpBrowserCapabilities browser = Request.Browser; if (browser.Browser == "IE") rv = (float)(browser.MajorVersion + browser.MinorVersion); return rv; } void Page_Load(Object sender, EventArgs e) { string UserIPAddress = Request.ServerVariables["REMOTE_ADDR"]; string UserName = Request.ServerVariables["AUTH_USER"]; string safeString = System.Security.SecurityElement.Escape(UserName); string url = "http://myrouter/cgi-bin/open.cgi?ip=" + UserIPAddress + "&user=" + safeString ; HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url); request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; request.AllowAutoRedirect = false; request.KeepAlive = true; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); double ver = getInternetExplorerVersion(); if (ver > 0.0) { if (ver < 7.0) Response.Redirect("TSWeb/Default.asp",true); } else { Response.Redirect("Unsupported/Default.asp",true); } string langCode = null; System.Globalization.CultureInfo culture; // For each request initialize the culture values with // the user language as specified by the browser. 


рд░рд┐рдореЛрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдПрдХ рдкреЛрд░реНрдЯрд▓ рдкреГрд╖реНрда рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп, рдЖрдВрддрд░рд┐рдХ рдЖрдИрдЖрдИрдПрд╕ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддрднреА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреА рдЬрд╛рдПрдЧреА рдЬрдм рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕рд╣реА рд╣реЛрдЧрд╛ред

рд░рд╛рдЙрдЯрд░ рдкрд░, "рдиреЗрдЯ- mgmt / pftabled" рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред
рдПрдХ рдХреБрдВрдЬреА рдмрдирд╛рдПрдБ
 dd if=/dev/random bs=20 count=1 | md5 | cut -c 1-19 > /etc/pftabled.key 

рдФрд░ rc.conf рдореЗрдВ рд╕реЗрд╡рд╛ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВ
 pftabled_enable="YES" pftabled_flags="-d -k /etc/pftabled.key -t 432000" 


рдЗрд╕рдХреЗ рдмрд╛рдж, thttpd рдХреЛ рдмрдврд╝рд╛рдПрдВ рдФрд░ cgi-bin рдореЗрдВ рдПрдХ рдУрдкрди.рдЧреНрд░реАрдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдПрдВ
 #!/usr/bin/perl use strict; use warnings; use CGI qw/:standard/; use IO::Socket; use Digest::HMAC_SHA1 qw(hmac_sha1); use Net::SMTP; use vars qw/%macs $pftabled $key %mac_ip/; use constant PFTBLPORT => 56789; use constant pfip => "127.0.0.1"; use constant PFTBLVERSION => 2; use constant PFTABLED_CMD_ADD => 1; use constant PFTABLED_CMD_DEL => 2; use constant PFTABLED_CMD_FLUSH => 3; use constant PFTBLCOMMAND => 1; use constant PFTBLMASK => 32; use constant SHA1_DIGEST_LENGTH => 20; use constant PFTBLNAME => "RDP"; my $keyfile = "/etc/pftabled.key"; if (! -r $keyfile) { print STDERR "Cannot Read KeyFile $keyfile\n"; exit 1; } open(KEY, "<$keyfile"); sysread KEY, $key, SHA1_DIGEST_LENGTH; close KEY; $pftabled = IO::Socket::INET->new(Proto => 'udp', PeerPort => PFTBLPORT, PeerAddr => pfip) or die "Creating socket: $!\n"; #prepare struct for pftabled my $command = '1'; my $iparray = param("ip"); #print @iparray; my $addr = inet_aton($iparray); my $time = time(); my $block = pack("C1 S1 C1",PFTBLVERSION,$command,PFTBLMASK).$addr.pack("a32 N*",PFTBLNAME,$time); my $digest = hmac_sha1($block, $key); $block .= $digest; $pftabled->send($block); print header(); my $smtp = Net::SMTP->new('mysmtpserver.mydomain.ru'); $smtp->mail('terminal_guard@mydomain.ru'); $smtp->to('account_admin@mydomain.ru'); $smtp->data(); $smtp->datasend("To: account_admin\@mydomain.ru\n"); $smtp->datasend("Subject: Terminal server logon detected\n"); $smtp->datasend("\n"); $smtp->datasend("User ".param("user")." logged on from ".param("ip")."\n"); $smtp->dataend(); $smtp->quit; exit(0); 

рдЕрдм рдЖрдк pf рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

 external_addr="1.1.1.1" terminal_server_addr="192.168.1.1" table <RDP> persist { } rdr on $ext_if proto tcp from <RDP> to $external_addr port 3389 -> $terminal_server_addr port 3389 # terminal pass in on $ext_if proto tcp from <RDP> to { $external_addr, $terminal_server_addr } port { 3389 } flags S/SA keep state 


рдпрджрд┐ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд╛ рдирд╛рдо рдФрд░ рдЖрдИрдкреА рдкрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЖрдИрдкреА тАЛтАЛрдкрддреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЖрд░рдбреАрдкреА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд░рдЦреА рдЧрдИ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЖрд░рдбреАрдкреА рдХрдиреЗрдХреНрд╢рди рддрдХ рдкрд╣реБрдВрдЪ рдорд┐рд▓рддреА рд╣реИред
рдЖрдк рдлрд╝рд╛рдЗрд▓ C: \ Windows \ Web \ RDWeb \ Pages \ Web.config рдореЗрдВ RDP рд╕рд░реНрд╡рд░ рдкрд░ рд╡рд┐рдВрдбреЛрдЬрд╝ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╕рдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдЖрдк рдХрд╕реНрдЯрдо рддреНрд░реБрдЯрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╣реА рддрд░рд╣ рд╕реЗ рдкрд╛рд╕рд╡рд░реНрдб рд▓реЙрдЧрд┐рди рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рдХрдИ рдЕрд╕рдлрд▓ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рд╕рд╛рде рд╣рдорд▓рд╛рд╡рд░реЛрдВ рдХреЗ рдкрддреЗ рдХреЛ рдмреНрд▓реЙрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдЪ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдПрдл.рдкреА. рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдЖрдк рдХрд╣реАрдВ рднреА рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддреЗред

Aborche 2013

Source: https://habr.com/ru/post/In176657/


All Articles