Skip to content
Extraits de code Groupes Projets
Valider 7d9b8831 rédigé par LaplongeJunior's avatar LaplongeJunior
Parcourir les fichiers

Added setup script (prototype)

parent 85e6c4ff
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion!11Resolve "Tool to "harden" a server in case of attack"
// Create an ssh user (and an ftp user with an optional argument)
// For the exact effects on permissions, see https://usine.solution-libre.fr/qtg/grey-hack/-/issues/9
"#import includes/utils.inc.src"
"#import includes/file.inc.src"
// build support
"#ifbuild"
if not globals.hasIndex("imports") then
imports = {}
imports.utils = {}
imports.utils.GetProgName = function()
return program_path.split("/")[-1]
end function
imports.utils.IsRoot = function()
return active_user == "root"
end function
imports.utils.Exit = function(reason)
exit(imports.utils.GetProgName()+": "+reason)
end function
imports.utils.ParamLength = function(params)
return params.len
end function
imports.utils.GetParam = function(params, index)
return params[index]
end function
imports.utils.HasFlag = function(params, short, long)
param = params[0]
return param == "-"+short or param == "-"+long
end function
imports.temp = {}
imports.file = {}
imports.temp.AddCmd = function(arr, files)
for file in files
arr.push("/bin/"+file)
end for
end function
imports.temp.AddSoft = function(arr, files)
for file in files
arr.push("/usr/bin/"+file+".exe")
end for
end function
imports.file.USELESS = ["/etc/passwd","/server"]
imports.temp.AddCmd(imports.file.USELESS,["build","whois","nslookup"])
imports.temp.AddSoft(imports.file.USELESS,["CodeEditor", "Mail"])
imports.file.SAFE = []
imports.temp.AddCmd(imports.file.SAFE,["clear","ssh","cd","ls","pwd","cat","rm","mv","cp","mkdir","rmdir","touch","ftp"])
imports.temp.AddSoft(imports.file.SAFE,["Terminal","FileExplorer","Notepad"])
imports.temp = null
end if
"#endif"
//command: setup
if not imports.utils.IsRoot() then imports.utils.Exit("Must be root.")
length = imports.utils.ParamLength(params)
if length < 1 or length > 2 or imports.utils.HasFlag(params, "h", "help") then exit("<b>Usage: "+imports.utils.GetProgName()+" [ssh password] [(opt) ftp password]</b>")
comp = get_shell.host_computer
sshPass = imports.utils.GetParam(params, 0)
ftpPass = imports.utils.GetParam(params, 1)
WipeDir = function(path)
dir = comp.File(path)
if not dir then return
if path[path.len-1] == "/" then
for file in dir.get_files // NOT THE FOLDERS!!!!
file.delete
end for
else
dir.delete
end if
end function
FullWipe = function(file)
if not file then return
for child in file.get_files
child.delete()
end for
for child in file.get_folders
FullWipe(child)
end for
file.delete()
end function
main = comp.File("/")
for mod in ["u-rwx", "g-rwx", "o-rwx"]
main.chmod(mod,1)
end for
NewUser = function(user, pass, grp, erase)
if not comp.create_user(user, pass) then comp.change_password(user, pass)
comp.create_group(user, grp)
dir = comp.File("/home/"+user+"/")
if not dir then return
if erase then
dir.delete()
else
dir.chmod("u+rw",1)
end if
end function
SSH_GROUP = "ssh"
FTP_GROUP = "ftp"
if sshPass then NewUser("proxy", sshPass, SSH_GROUP, false)
if ftpPass then NewUser("files", ftpPass, FTP_GROUP, true)
users = []
for user in comp.File("/home/").get_folders
if user.name == "guest" then
FullWipe(user)
else
users = users.push(user.path)
user.chmod("u+rw",1)
end if
end for
for path in imports.file.USELESS
WipeDir(path)
end for
users = users.push("/root")
for user in users
WipeDir(user+"/Config/")
end for
for path in imports.file.SAFE
file = comp.File(path)
recur=1
file.chmod("g+x",recur)
file.set_group(SSH_GROUP,recur)
end for
comp.File("/").chmod("o+r",0)
SetRead = function(path, group)
file = comp.File(path)
if not file then return
file.set_group(group, 0)
file.chmod("g+r",0)
end function
SetRead("/home/", SSH_GROUP)
SetRead("/Public/", FTP_GROUP)
ftpDir = comp.File("/Public/Downloads/")
if ftpDir then
ftpDir.set_group(FTP_GROUP,1)
ftpDir.chmod("g+rw", 1)
end if
comp.File(program_path).delete
WipeDir("/var/system.log")
comp.touch("/var/", "system.log")
print("Setup is finished")
\ No newline at end of file
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter