예제 #1
0
        public RsopPot RsopPotsEqual(List <RsopPot> rsopPots, Rsop currentRsop)
        {
            RsopPot foundPot = null;

            foreach (var pot in rsopPots)
            {
                var rsop = pot.Rsops.FirstOrDefault();
                if (rsop == null)
                {
                    continue;
                }

                var auditSettingsEqual = SettingsEqual(rsop.AuditSettings, currentRsop.AuditSettings);
                if (!auditSettingsEqual)
                {
                    continue;
                }

                var policiesEqual = SettingsEqual(rsop.Policies, currentRsop.Policies);
                if (!policiesEqual)
                {
                    continue;
                }

                var registrySettingsEqual = SettingsEqual(rsop.RegistrySettings, currentRsop.RegistrySettings);
                if (!registrySettingsEqual)
                {
                    continue;
                }

                var securityOptionsEqual = SettingsEqual(rsop.SecurityOptions, currentRsop.SecurityOptions);
                if (!securityOptionsEqual)
                {
                    continue;
                }

                var domainsEqual = rsop.Domain.Equals(currentRsop.Domain);
                if (!domainsEqual)
                {
                    continue;
                }

                if (RsopAndRsopPotsOuEqual(currentRsop, rsop))
                {
                    continue;
                }

                pot.Rsops.Add(currentRsop);
                foundPot = pot;
                break;
            }

            return(foundPot);
        }
예제 #2
0
 private static RsopPot RsopPotFactory(Rsop rsop)
 {
     return(new RsopPot
     {
         Name = index++ + ". Group of identical security settings",
         DateTime = DateTime.Now.ToString("g", CultureInfo.InvariantCulture),
         Domain = rsop.Domain,
         Rsops = new List <Rsop> {
             rsop
         }
     });
 }
예제 #3
0
        private void AnalyseEachXml(FileInfo[] rsopXml, List <Rsop> rsops)
        {
            foreach (var xml in rsopXml)
            {
                var doc = new XmlDocument();
                try
                {
                    doc.Load(xml.FullName);
                }
                catch (Exception e)
                {
                    throw new InvalidXmlException("Your provided Xml-File is not an valid", e.Message);
                }
                var rsopJson = XmlToJson(doc);

                var allRsopGpos      = GetAllRsopGpos(rsopJson);
                var auditSettings    = AnalyseAuditSettings(rsopJson);
                var securityOptions  = AnalyseSecurityOptions(rsopJson);
                var policies         = AnalysePolicies(rsopJson);
                var registrySettings = AnalyseRegistrySetting(rsopJson);

                var organisationalUnit = GetOrganisationalUnitOfRsop(rsopJson);
                if (organisationalUnit == null)
                {
                    continue;
                }

                var site = GetSiteOfRsop(rsopJson);
                if (site == null)
                {
                    continue;
                }

                var rsop = new Rsop
                {
                    Domain             = organisationalUnit.ADDomain,
                    OrganizationalUnit = organisationalUnit,
                    Site             = site,
                    AuditSettings    = auditSettings.OrderBy(x => x.SubcategoryName).ToList(),
                    Policies         = policies.OrderBy(x => x.Name).ToList(),
                    RegistrySettings = registrySettings.OrderBy(x => x.Name).ToList(),
                    SecurityOptions  = securityOptions.OrderBy(x => x.Description).ToList(),
                    Gpos             = allRsopGpos
                };

                rsops.Add(rsop);
            }
        }
예제 #4
0
        private static bool RsopAndRsopPotsOuEqual(Rsop rsop, Rsop currentRsop)
        {
            var organisationalUnitsEqual = currentRsop.OrganizationalUnit.Name.Equals(rsop.OrganizationalUnit.Name);

            return(organisationalUnitsEqual);
        }
        public async Task <List <SecuritySettingsParsed> > ParseSecuritySettings(int refId, string type)
        {
            var rsop = new Rsop();

            if (type.Equals("RSoPPot"))
            {
                var rsopPot = unitOfWork.RsopPotRepository.GetByID(refId);
                rsop = rsopPot.Rsops.FirstOrDefault();
            }
            else
            {
                rsop = unitOfWork.RsopRepository.GetByID(refId);
            }

            var GPOs = await unitOfWork.GpoRepository.GetAllEntities();

            var settings = new List <SecuritySettingsParsed>();

            if (rsop != null)
            {
                foreach (var setting in rsop.AuditSettings)
                {
                    var parsedSetting = SecuritySettingFactory(setting.SubcategoryName,
                                                               setting.CurrentSettingValue.ToString(), setting.TargetSettingValue.ToString());
                    var gopId = setting.GpoIdentifier;

                    ParseSecuritySetting(gopId, parsedSetting, GPOs);

                    settings.Add(parsedSetting);
                }

                foreach (var setting in rsop.Policies)
                {
                    var parsedSetting = SecuritySettingFactory(setting.Name, setting.CurrentState, setting.TargetState);
                    var gopId         = setting.GpoIdentifier;

                    ParseSecuritySetting(gopId, parsedSetting, GPOs);

                    settings.Add(parsedSetting);
                }


                foreach (var setting in rsop.RegistrySettings)
                {
                    var parsedSetting = SecuritySettingFactory(setting.Name, setting.CurrentValue.Name,
                                                               setting.TargetValue.Name);
                    var gopId = setting.GpoIdentifier;

                    ParseSecuritySetting(gopId, parsedSetting, GPOs);

                    settings.Add(parsedSetting);
                }

                foreach (var setting in rsop.SecurityOptions)
                {
                    var parsedSetting = SecuritySettingFactory(setting.Description,
                                                               setting.CurrentDisplay.DisplayBoolean, setting.TargetDisplay.DisplayBoolean);
                    var gopId = setting.GpoIdentifier;

                    ParseSecuritySetting(gopId, parsedSetting, GPOs);

                    settings.Add(parsedSetting);
                }
            }


            return(settings);
        }