Jump to content

Recommended Posts

  • 1 month later...
Posted
This certainly is a popular subject and there isn't really an easy way of doing it (not for free).

 

Not actually true. Check out LanView 3 from MST Software. It has its own Internet Access Manager built in which you can use to disable access to single computers, whole rooms or just certain users. You can also set an over-ride for certain systems or users so that staff can still access the Internet.

 

And just to cap it all off, it's completely free!

 

(And no, I don't get commision from them! :p )

 

That's all well and good, and i have played with it, and it would be really very useful if it wasn't for the fact that anyone with a copy of it coud potentially come into my school and wreak havoc!! or am i missing some hidden security features? cause i can see none.

Posted
It's also possible to get round lanview using explorer. If that could be stopped and the fact, as ken pointed out, anyone can install the server and take control - which could be somewhat problematic!
  • 4 weeks later...
  • 1 month later...
Posted

Having perused this thread I thought I'd have a go at creating such a tool.

Attached is a Python cgi script which creates a view of an Active Directory system, inside which you can manoeuvre, chosing to block/unblock individual PCs or all those in an OU.

 

It needs a little configuring depending on if you are using a proxy server or a firewall.

 

Those who will manage blocking must have sufficient rights on the workstations to do so.

 

If anyone is brave enough then please give it a try and let me know what happens !

 

(I might knock up an asp vbscript version but it won't be quite as nice.)

 

Plus points

1. There is no need for lists of PCs, assuming they are organised into roomful OUs.

 

2. It will work with Firefox as well as IE

 

3. It works if using a proxy server or a firewall

 

4. Settings can be persistent over reboots - or not !

 

Minus Points

1. You need to install Python (with win32 extensions - Activestate Python being simplest) on a web server.

 

2. It will block all network access to a proxy server, so if your proxy is also your email server or a file server then that is not good !

 

3. It's graphically boring !

netblock.zip

Posted
(I might knock up an asp vbscript version but it won't be quite as nice.)

 

Attached is an asp version. The disadvantage over the Python version is that the asp has to call an external vbscript to perfrom the wmi to the remote machines. Without this it would have to wait for each machine (in an OU) before moving to next, which if the machine is not contactable could be a long time (timeout), the Python gets round this by multithreading, which, AFAIUI, vbscript can't do. As a consequence you don't get feedback as to whether a machine was contacted successfully or not.

 

There is also a slightly tweaked Python version in the zip which matches the asp/vbscipt closely.

 

Obviously the Python or vbscript could be used from the command line with a little tweaking - I just like the user friendliness of web versions.

 

Tim

netblock_368.zip

  • 2 weeks later...
Posted

I have a vLAN for each IT room.

 

I then have an access rule in ISA2004 for each of these vLANs.

 

The teachers can load up ISA Management and change the rule to Deny whenever they like.

 

The Deny redirects to a little page with an 'Internet Disabled' message I made.

  • 2 weeks later...
Posted

We are running a thin client network & wanted to do a similar thing. Our proxy server is a Unix box & the firewall & web managment software is on there.

The initial setup can be a pain, but I can disable an intake year or individual users. This is more of a tech job though. I wouldn't trust the teachers to get it right.

Basicaly, we have one port that denies access to the web & this is loaded into the users profile at loggin time. I think that is how it works, I cant really remember, cause I set it up a long time ago. It doesn't get used that much, but I do have to stop some pupils getting internet access.

  • 3 months later...
Posted
I have written a little piece of software for our school which is very simple in how it works, it just scans a text file on a shared server drive and allows or disallows access to IE based on that. If anyone is interested I would be happy to make a few minor alterations to make it installable on other networks.
Posted

Ditto here - missed these posts altogether!

 

@TimH: Thanks so much for that - I can move to an upstream proxy server to keep email access. The ability to block IE and FF is what I really need!

 

@Espada: Yes Id beinterested to see that - again thanks.

Posted

Okay here it is. The program needs installing on each machine. It will currently block both IE and Firefox from opening. If the settings are changed and IE is open, it will close it (unlike NetSupport).

 

As it has been changed somewhat from the previous version to make it more portable, people will need to test it well. Please let me know of any issues with it. I should also mention that until the user opens IE or FF the program is completely invisible.

 

Mark

 

Edit: Suggestions for improvements most welcome. In a future version I hope to be able to control individual PCs rather than an entire room.

closeie.zip

  • 2 weeks later...
Posted
Browse control 2 from codework free useable download 30 day trial £400 for 175 users. We use it to give classroom teachers control of their own group of PCs, you can black list, white list, control applicatioins, shut of one machine or the whole class group, I use it alongside Dameware to keep an eye on pupils and their 'activities' but can also use it for teaching, (OOps let that one slip a traitor in the camp)

 

Yes these are classroom management issues but technical help is a tool for management as well as teaching.

 

BrowaeControl is excellent - we use it at the school I work at and I've just created different containers - i.e. 'Rooms' and placed the PCs that show on the the console in the relevant places. Seems to work a treat and I've also shown a couple of my colleagues about NetOp policies - handy if they just want the kids to access a restricted set of sites for a task.

  • 3 months later...
Posted

just my ha'penneth worth.

 

Another program is AB control from AB consulting, each licence cost around £150 (sliding scale dependent upon how many purchased), however, the licence is for the management side, each client is free, so if you want you only buy one licence and can control the whole school. With this software you can create rules for internet use, email use etc etc and also you can watch was the little darlings are doing if you so wish!!

 

Cheers

 

Manick

Posted
Just to support Manick - we ditched NetOp (after 2 painful years) and took up ABTutor over half term - its just fabulous in comparison to the useless, expensive, bug ridden bit of software it replaced. The clients rarely drop off, the viewing mode is responsive and policies are much better implemented. Well worth the cash imho.
Posted
We are using Lanschool, not free but very worth while we think. We have configured the channels(teacher) to cover each machine OU(pupils) There is also an 'over' channel where all machines can be seen. This allows individual or group net blocking, print screen ie log ect. Remote control, screen broadcast/freeze. Collect and send files. But from my point of view the 'run at...' option saves an age in installation/drive mappings ect you can even send links to force the pupils browser to open to a particular page. Channel 0 is our friend(all machines except teachers-those who control the channels) Definately worth a look ?!
Posted
We are using Lanschool, not free but very worth while we think. We have configured the channels(teacher) to cover each machine OU(pupils) There is also an 'over' channel where all machines can be seen. This allows individual or group net blocking, print screen ie log ect. Remote control, screen broadcast/freeze. Collect and send files. But from my point of view the 'run at...' option saves an age in installation/drive mappings ect you can even send links to force the pupils browser to open to a particular page. Channel 0 is our friend(all machines except teachers-those who control the channels) Definately worth a look ?!
Posted

Just to add a different approach to this subject or (maybe not) we had a company in over the summer to setup Citrix but with the package came one of their own (I think) programs called Netmanager.

 

It seems that its just a linux box with some of their own programs running.

 

But getting back to the disabling internet in one room we can now do that. Each room has been assigned a proxy port i.e room T8 get the proxy port 8008 room S20 gets the port 8020. this is done by way of a logon script and a look up file. As the student logs on to the machine the pc name determines the proxt port so PCs have to be name per room i.e S20-PC01, etc. we then have a web interface that can block or unblock a particular port we have given teachers access to this now they are able to turn the internet off and on as they want.

 

I am not very good with linux but I'm sure the principle of this would be quite simple for some one who understands Linux.

 

If someone wants to try to replicate this and I would imagine that most of it is already built into squid, I am quite happy to work with them and maybe develope a tool for the whole community.

  • 4 months later...
Posted

Another option is Browse Control from Codework, we use it extensively in the school and it is a huge relief to staff whereby they can:

 

Turn the internet on or off

Filter websites and applications

Block CD and floppy drives

Lock keyboard and mouse

Blank screen

Restart

Shutdown

Boot Computer

 

all with a couple of clicks of a mouse which is what they want. Something simple and not time consuming and something that needs constant management!!

  • 1 month later...
Posted
I am now using a combination of tools. At the forefront I use a piece of software which allows the teacher to "turn off" Internet Explorer per room or per PC very easily. Literally just a couple of mouse clicks. It also places a small window at the top of the screen saying who is logged in and what web page they last visited.
Posted
what pieces of software do you use to do this Espada ? If you can post back with each name of software along with the softwares website ( url )

 

Thanks

 

It is bespoke, I coded it myself. The client code is here:

 

#cs ----------------------------------------------------------------------------

AutoIt Version: 3.2.2.0
Author:         Mark Wilson

Script Function:
Checks for whether IE is open when it shouldn't be and also displays the username at the top of the screen.

#ce ----------------------------------------------------------------------------
#Include 
#include 
#include 
#include 
#include 
Opt("WinTitleMatchMode", 2)
Opt("TrayMenuMode",1)
Global $ProxyAbuse = False
Dim $File[1]
$Block = False
TraySetIcon("green.ico")
$IPTrim = 9
$FileLocation = "S:\BlockIE\"
$LogFileLocation = "U:\"
$NewWindowTitle = ""
$OldWindowTitle = ""
$IP = @IPAddress1
$PCNumber = StringRight(@ComputerName, 2)
$LastOctet = StringTrimLeft($IP, $IPTrim)
_DisplayUserName()
Select
Case $LastOctet < 64
	$room = "ICT1"
Case $LastOctet <128 & $LastOctet > 63
	$room = "ICT2"
EndSelect
$InstructionFile = ($FileLocation & $room & ".txt")
If FileExists ($LogFileLocation&"ProxyAbuse") Then _ProxyAbuseWindow()
While 1
Sleep(250)
If WinExists("Internet Explorer") Then
_FileReadToArray($InstructionFile,$File)
While 1
	If $ProxyAbuse = True Then 
		_ProxyAbuseWindow()
		ExitLoop
	EndIf
		If StringRight($File[$PCNumber],5) = "Block" Then
			TraySetIcon("red.ico")
			ProcessClose("IEXPLORE.EXE")
		ElseIf $File[$PCNumber] = StringRight("EndIt", 5) Then
			Exit
		Else
			$NewWindowTitle = WinGetTitle("")
			If $NewWindowTitle <> $OldWindowTitle Then
				$File = ($LogFileLocation&@Year&@MON&@MDAY&".log")
				IF FileExists($File) = 0 Then
					_FileCreate($File)
					FileSetAttrib($File, "+H")
				EndIf
				$OldWindowTitle = $NewWindowTitle
				$HWND = WinGetHandle($NewWindowTitle)
				$oIE = _IEAttach ($HWND,"HWND")
				$URL = _IEPropertyGet ($oIE, "locationurl")
				WinSetTitle("User:","",("User: "&@UserName&" Last Page: "&$URL&" at "&@HOUR&":"&@MIN))
				_FileWriteLog($File,',"'& @UserName & '","'& @ComputerName &'","'& $NewWindowTitle & '","' & $URL &'"')
				;Check for proxy abuse
				If StringRegExp($URL,"proxy") = 1 Then
					_proxyAbuseDetected($URL)
				EndIf
			EndIf
		EndIf
		ExitLoop
WEnd
FileClose($File)

EndIf
_ResetUserNamePosition()
WEnd

Func _proxyAbuseDetected($URL)
$ProxyFile = ($LogFileLocation&"ProxyAbuse")
_FileCreate($ProxyFile)
FileSetAttrib($ProxyFile, "+H")
_FileWriteLog($ProxyFile, $URL)
_ProxyAbuseWindow()
EndFunc

Func _ProxyAbuseWindow()
TraySetState (4)
WinClose ("Internet Explorer")
MsgBox (0, "Possible Proxy Abuse", "Your Internet access has been restricted due to possible proxy abuse. Please speak to a network technician")
$ProxyAbuse = True
EndFunc

Func _DisplayUserName()
$UserNameWindow = GUICreate(("User: "&@UserName),400,20,437,0,$WS_VISIBLE, $WS_EX_TOOLWINDOW)
WinSetOnTop("User: ","",1)
EndFunc

Func _ResetUserNamePosition()
WinMove("User:","", 437, 0)
EndFunc

 

I will post the control code shortly, as I said this is bespoke so you will need to tweak it. At the moment the control is through a hidden folder on the shared area but could easily be done through the registry. This means even if they shut down and restart, it will continue to take effect.

Posted

Here is the control code this bit is very flaky but it does the job just. If you use it you will want to improve it.

 

#include 
#include 

;Opt("TrayMenuMode",1)
; Script Start - Add your code below here
$SettingsLocation = "S:\BlockIE\"
$SettingsFile = "Global.txt"
$ReadSettings = FileOpen(($SettingsLocation & $SettingsFile), 0)
$SettingsLineOne = FileReadLine($ReadSettings)
$SettingsLineTwo = FileReadLine($ReadSettings)
$NumberOfRooms = StringLeft($SettingsLineOne,2)
$LastUpdated = 9999
$LastUpdatedRoom = 9999
$TotalComputers = 0
$CurrenSelection = 9999
Dim $RoomTreeItems [$NumberOfRooms]
Dim $ComputersPerRoom [$NumberOfRooms]
Dim $SaveRoom [$NumberOfRooms]
$RoomNames = StringSplit($SettingsLineTwo,"|")
$LeftCount = 2
$RightCount = (($NumberOfRooms * 2) - 2)
For $a = 1 to $NumberOfRooms
$ComputersPerRoom[$a-1] = StringTrimLeft(StringTrimRight($SettingsLineOne, $RightCount),$LeftCount)
$LeftCount = $LeftCount + 2
$RightCount = $RightCount - 2
;MsgBox (0, $a, $ComputersPerRoom[$a-1])
Next
Dim $ComputerTreeItems[150]
; Create GUI
$MainGui = GUICreate("Control Internet Access", 400, 600)
$Tree = GUICtrlCreateTreeView(10, 10, 190, 550)
For $a = 1 To $NumberOfRooms
$RoomTreeItems[$a-1] = GUICtrlCreateTreeViewItem($RoomNames[$a], $Tree)
For $b = $TotalComputers to ($TotalComputers + $ComputersPerRoom[$a-1])-1
	$ComputerTreeItems[$b] = GUICtrlCreateTreeViewItem($RoomNames[$a]& "-" &(($b-$TotalComputers)+1), $RoomTreeItems[$a-1])
Next
$TotalComputers = $TotalComputers + $ComputersPerRoom[$a-1]
Next
Dim $ComputerStatus [$TotalComputers]
For $a = 0 to $TotalComputers - 1
$ComputerStatus[$a] = "Allow"
Next
$Group = GUICtrlCreateGroup ("Action", 210, 60, 140, 90)
$BlockRadio = GUICtrlCreateRadio ("Block", 220, 75, 50, 20)
$AllowRadio = GUICtrlCreateRadio ("Allow", 220, 95, 60, 20)
$SetButton = GUICtrlCreateButton ("Set", 260, 115, 60)
GUICtrlSetState ($SetButton, $GUI_Hide)
$SetRoomButton = GUICtrlCreateButton ("Set Room", 260, 115, 60)
GUICtrlSetState ($SetRoomButton, $GUI_Hide)
GUICtrlCreateGroup ("",-99,-99,1,1)	
$SaveButton = GUICtrlCreateButton("Save Changes", 255, 550, 90)
GUICtrlSetState ($SaveButton, $GUI_DISABLE)
$SaveLabel = GUICtrlCreateLabel ("Changes will not be applied until they are saved.", 210, 150,180, 40)
GUICtrlSetState ($SaveLabel, $GUI_Hide)
$SaveGroup = GUICtrlCreateGroup("Room to Save Changes to.", 210, 210, 180, ($NumberOfRooms+2) * 20)
For $a = 0 To $NumberOfRooms-1
$SaveRoom[$a] = GUICtrlCreateRadio($RoomNames[$a+1], 220, (230 + ($a*20)))
Next
GUICtrlCreateGroup ("",-99,-99,1,1)

GUISetState(@SW_SHOW, $MainGui)


; Event Handler
While 1
$msg = GUIGetMsg()
Select
	Case $msg = $GUI_EVENT_CLOSE
		Exit
	;Case $msg = $GUI_EVENT_MINIMIZE
	;	GUISetState(@SW_HIDE, $MainGui)
	Case $msg = $SetButton
		;If $LastUpdated < 9999 Then
			;MsgBox(0, "Clicked", $LastUpdated)
			Select 
				Case BitAnd(GUICtrlRead($AllowRadio),$GUI_CHECKED)
					$ComputerStatus[$LastUpdated] = "Allow"
				Case BitAnd(GUICtrlRead($BlockRadio),$GUI_CHECKED)
					$ComputerStatus[$LastUpdated] = "Block"
					;MsgBox(0, "Clicked", "Blocked")
			EndSelect
			GUICtrlSetState ($SaveButton, $GUI_ENABLE)
			GUICtrlSetState ($SaveLabel, $GUI_Show)
		;EndIf
	
	Case $msg = $SetRoomButton
		$ComputerCount = 0
		$LastUpdated = 9999
		For $a = 0 to $NumberOfRooms
			If $a = $LastUpdatedRoom Then
				For $b = $ComputerCount To ($ComputersPerRoom[$a]+$ComputerCount-1)
					Select 
						Case BitAnd(GUICtrlRead($AllowRadio),$GUI_CHECKED)
							$ComputerStatus[$b] = "Allow"
						Case BitAnd(GUICtrlRead($BlockRadio),$GUI_CHECKED)
							$ComputerStatus[$b] = "Block"
							;MsgBox(0, "Clicked", "Blocked")
					EndSelect	
				Next
				ExitLoop
			Else
				$ComputerCount = $ComputerCount + $ComputersPerRoom[$a]
			EndIf
		Next
		GUICtrlSetState ($SaveButton, $GUI_ENABLE)
		GUICtrlSetState ($SaveLabel, $GUI_Show)
	
	Case $msg = $SaveButton
		GUICtrlSetState ($SaveButton, $GUI_DISABLE)
		GUICtrlSetState ($SaveLabel, $GUI_Hide)
		_SaveChanges()
EndSelect
For $c = 0 to $NumberOfRooms-1
	If $msg = $RoomTreeItems[$c] Then
		;ExitLoop
		GUICtrlSetData($Group, (_GUICtrlTreeViewGetText($Tree, $RoomTreeItems[$c])& " Set Room"))
		GUICtrlSetState ($SetButton, $GUI_Hide)
		GUICtrlSetState ($SetRoomButton, $GUI_Show)
		$LastUpdatedRoom = $c
		GUICtrlSetState ($AllowRadio, $GUI_UNCHECKED)
		GUICtrlSetState ($BlockRadio, $GUI_UNCHECKED)
		;MsgBox(0, "Clicked", "You Clicked a room")
	EndIf
Next
For $d = 0 To $TotalComputers - 1
	If $msg = $ComputerTreeItems[$d] Then
	;If _GUICtrlTreeViewGetState($Tree, $ComputerTreeItems[$d]) = 2 Then
		If $LastUpdated <> $d Then
			;MsgBox(0, "Clicked", GUICtrlGetHandle ( $ComputerTreeItems[$d] ))
			GUICtrlSetData($Group, _GUICtrlTreeViewGetText($Tree, $ComputerTreeItems[$d]))
			If $ComputerStatus[$d] = "Allow" Then
				GUICtrlSetState ($AllowRadio, $GUI_CHECKED)
			Else
				GUICtrlSetState ($BlockRadio, $GUI_CHECKED)
			EndIf
			$LastUpdated = $d
			GUICtrlSetState ($SetRoomButton, $GUI_Hide)
			GUICtrlSetState ($SetButton, $GUI_Show)
			
		EndIf
		ExitLoop
	EndIf
Next
WEnd

Func _SaveChanges()
$StartPoint = 0
For $a = 0 to $NumberOfRooms-1
	If BitAnd(GUICtrlRead($SaveRoom[$a]),$GUI_CHECKED) Then
		$File = FileOpen(($SettingsLocation & $RoomNames[$a+1]&".txt"), 2)
		For $b = 0 to ($ComputersPerRoom[$a]-1)
			If $b < 9 Then
				FileWriteLine ($File, ("0"&$b+1&":"&$ComputerStatus[$b+$StartPoint]))
			Else
				FileWriteLine ($File, ($b+1&":"&$ComputerStatus[$b+$StartPoint]))
			EndIf
		Next
		FileClose($File)
	EndIf
	$StartPoint = $StartPoint + $ComputersPerRoom[$a]
Next
EndFunc

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



×
×
  • Create New...