묻고 답해요
131만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨롱런하는 슈퍼 개발자가 되기 위한 필수 지식, IT 인프라 기초 총정리
포워드 프록시 서버 문의
안녕하세요 포워드 프록시 서버 문의드립니다. 보여주신 강의 자료에는 웹 서버가 캐시 서버보다 앞에 존재하는 그려져 있는데 포워드 프록시 서버에 대해 찾다 보니깐 포워드 프록시 서버는 웹 서버보다 앞에 존재하는 걸로 나와있는데 어떤게 맞는걸까요?ㅠㅠㅠㅠㅠ
-
해결됨[보안] Wazuh+ELK(SIEM)를 활용한 위협헌팅(Threat Hunting) 시스템 구축 및 운영실습 (기초)
virustotal 코덱 문제 해결 요청합니다.
안녕하세요 이번 실습부터 갑자기 wazuh 서버로 이벤트 로그를 잘 보내던 Windows 클라이언트로부터 더 이상 이벤트를 받지 못하고 있습니다. 도와주셨으면 합니다.둘이 서로 네트워크 연결 문제 및 설정이 제대로 되어있는지 확인 및 에이전트 / 서비스 재시작을 다수 해봤으며, 에러로그는 아래와 virus total codec 문제인것을 볼 수 있었습니다. 지금 alerts.log는 virustotal 다른 사람들의 결과물에 비해 좀 부실하게 작성되어서 나와있길레 가져왔습니다. (해당 로그에서 시스템 무결성 체크나 netstat 명령을 가져오는건 잘 보입니다.) 또한, 강좌에서 나온것 처럼 sysmon 이벤트로그에서 calc, vss 관련로그도 정상적으로 등장하는것을 확인했습니다. -wazuh server-/var/ossec/logs/ossec.log2024/01/25 03:07:15 wazuh-integratord: ERROR: Unable to run integration for virustotal -> integrations2024/01/25 03:07:15 wazuh-integratord: ERROR: While running virustotal -> integrations. Output: UnicodeDecodeError: 'utf-8' codec can't decode byte 0xbb in position 1481: invalid start bytevar/ossec/logs/alerts/alerts.log** Alert 1706119676.269841153: - virustotal,2024 Jan 25 03:07:56 (DESKTOP-8KIVUDS) 윈도우IP->virustotalRule: 87103 (level 3) -> 'VirusTotal: Alert - No records in VirusTotal database'{"virustotal": {"found": 0, "malicious": 0, "source": {"alert_id": "1706119670.269839011", "file": "HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Services\\bam\\State\\UserSettings\\S-1-5-21-2409306197-2214590480-1851912469-1000", "md5": "a1d87ba945282fbbd3276dc1b9918a23", "sha1": "4b6965b3c854f07763683c778774221fecf263b4"}}, "integration": "virustotal"}virustotal.found: 0virustotal.malicious: 0virustotal.source.alert_id: 1706119670.269839011virustotal.source.file: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\bam\State\UserSettings\S-1-5-21-2409306197-2214590480-1851912469-1000virustotal.source.md5: a1d87ba945282fbbd3276dc1b9918a23virustotal.source.sha1: 4b6965b3c854f07763683c778774221fecf263b4integration: virustotallocal_rules.xml 파일 설정 내용은 아래와 같습니다. <!-- Sysmon Wazuh Rules version 1.0--><group name="local,syscheck,"> <!-- Rule for ZEROMINI_RANSOM_NOTE.txt --> <rule id="100001" level="10"> <decoded_as>json</decoded_as> <field name="syscheck.path">C:\\Users\\User\\Desktop\\ransom_test\\ZEROMINI_RANSOM_NOTE.txt</field> <description>ZEROMINI_RANSOM_NOTE.txt file detected.</description> </rule> <!-- Rule for .koyange extension --> <rule id="100002" level="10"> <decoded_as>json</decoded_as> <field name="syscheck.path">\.koyange$</field> <description>File with .koyange extension detected.</description> </rule></group><group name="sysmon,sysmon_process-anomalies,"><rule id="300001" level="13"> <if_group>sysmon_event1</if_group> <field name="win.eventdata.Image">calc.exe</field> <description>Calc process started (possible ransomware simulation)</description></rule><rule id="300002" level="13"> <if_group>sysmon_event1</if_group> <field name="win.eventdata.CommandLine">vssadmin delete shadows</field> <description>Shadow copy deletion command detected (possible ransomware simulation)</description></rule><rule id="300003" level="13"> <if_group>sysmon_event1</if_group> <field name="win.eventdata.TargetFilename">ZEROMINI_RANSOM_NOTE.txt</field> <description>Ransom note detected (possible ransomware activity)</description></rule><rule id="300004" level="13"> <if_group>sysmon_event1</if_group> <field name="win.eventdata.parentImage">python.exe</field> <description>File with python extension detected (possible ransomware activity)</description></rule><rule id="300005" level="13"> <if_group>sysmon_event1</if_group> <field name="win.eventdata.CommandLine">ping 8.8.8.8</field> <description>Ping to 8.8.8.8 detected (possible network test or exfiltration attempt)</description></rule></group>
-
해결됨[보안] Wazuh+ELK(SIEM)를 활용한 위협헌팅(Threat Hunting) 시스템 구축 및 운영실습 (기초)
맨마지막 agenetless 제거 시도 시 .passlist가 보이지 않던 이유
28:26 터미널에 ls -al 결과물 보면 zeromini_malware 파일이 있는걸 보면 해당 터미널은 wazuh server 보여주는게 아니라 ssh로 wazuh Linux 가상 머신을 보여주고 있던것 같습니다. 그래서 .passlist 파일이 안보였던것 같습니다.
-
해결됨CPPG 개인정보관리사 자격증 취득하기 (개정안 반영)
cppg 참고자료 업데이트
혹시 cppg 참고 자료https://smartstore.naver.com/csroadmap/products/6394915947여기에 있는 자료는 업데이트 예정 없으신가요?
-
해결됨[보안] Wazuh+ELK(SIEM)를 활용한 위협헌팅(Threat Hunting) 시스템 구축 및 운영실습 (기초)
해상도 개선 요청
안녕하세요, 강사님위협헌팅 시스템 수강중인 수강생입니다. 영상 강의가 너무 떨어져서 인프런 문의에 문의 드렸더니인프런측에서는 강사님이 540P로 제공하셔서 개선이 어렵다고 합니다. 강의 내용은 참 좋은데, 강의 영상 화질이 떨어지다보니학습 집중도가 떨어지고, 주변에 강의 추천하기가 어렵습니다.강의 해상도 높아 질 수 있도록 개선 부탁 드립니다.*데스크탑 PC, 노브툭, 테블릿(아이패드 프로 11인치 4세대, 겔럭시탭s6) 모두 화질이 떨어져서 보입니다.[해상도 540P]감사합니다. ✨ 질의 안내선수 지식이 부족하더라도 걱정하지 마세요. 강의를 통해 필요한 내용을 차근차근 배워나갈 수 있습니다.각 항목별 추천 자료를 통해 기본 지식을 탄탄히 하면 강의 내용을 더 깊이 있게 이해하고 활용할 수 있습니다.디스코드 또는 인프런으로 질문주시면 바로 답변드리겠습니다디스코드 채널 :https://discord.gg/uCQEnRaSMG
-
해결됨[보안] Wazuh+ELK(SIEM)를 활용한 위협헌팅(Threat Hunting) 시스템 구축 및 운영실습 (기초)
local_rules.xml 설정했는데 "Microsoft Office Product Spawning Windows Shell" 로만 뜹니다
<!-- Rules from https://github.com/Neo23x0/sigma/tree/master/rules/windows/sysmon @smtszk updated by @nissy34 --> <!-- Sysmon Wazuh Rules version 1.0--> <group name="local,syscheck,"> <!-- Rule for ZEROMINI_RANSOM_NOTE.txt --> <rule id="100001" level="10"> <decoded_as>json</decoded_as> <field name="syscheck.path">>/ZEROMINI_RANSOM_NOTE.txt</field> <description>ZEROMINI_RANSOM_NOTE.txt file detected.</description> </rule> <!-- Rule for .koyange extension --> <rule id="100002" level="10"> <decoded_as>json</decoded_as> <field name="syscheck.path">\.koyange$</field> <description>File with .koyange extension detected.</description> </rule> </group> <group name="sysmon,sysmon_process-anomalies,"> <rule id="300001" level="13"> <if_group>sysmon_event1</if_group> <field name="win.eventdata.Image">calc.exe</field> <description>Calc process started (possible ransomware simulation)</description> </rule> <rule id="300002" level="13"> <if_group>sysmon_event1</if_group> <field name="win.eventdata.CommandLine">vssadmin delete shadows</field> <description>Shadow copy deletion command detected (possible ransomware simulation)</description> </rule> <rule id="300003" level="13"> <if_group>sysmon_event1</if_group> <field name="win.eventdata.TargetFilename">ZEROMINI_RANSOM_NOTE.txt</field> <description>Ransom note detected (possible ransomware activity)</description> </rule> <rule id="300004" level="13"> <if_group>sysmon_event1</if_group> <field name="win.eventdata.parentImage">python.exe</field> <description>File with python extension detected (possible ransomware activity)</description> </rule> <rule id="300005" level="13"> <if_group>sysmon_event1</if_group> <field name="win.eventdata.CommandLine">ping 8.8.8.8</field> <description>Ping to 8.8.8.8 detected (possible network test or exfiltration attempt)</description> </rule> </group>이대로 추가 하고 재기동 후 정상작동 확인했는데Windows에서 실행하고 나서 wazuh에서 확인해보니 선생님처럼 "Ping to 8.8.8.8 detected"로 뜨는게 아니라 그냥 "Microsoft Office Product Spawning Windows Shell"로 뜨네요 ㅠㅠ 뭐가 문제일까요
-
해결됨CPPG 개인정보관리사 자격증 취득하기 (개정안 반영)
1분 54초 정보주체와 관련된 제3자의 '주관적 평가' 또한 개인정보가 될 수 있음에 대한 예시는 무엇인가요?
제목 그대로입니다. 개인정보의 개요 - 1분 54초정보주체와 관련된 제3자의 '주관적 평가' 또한 개인정보가 될 수 있다는 것에 대한 예문이 없어 정확이 어떤 의미인지 유추해야하는 상황인데, 검색을 해봐도 잘 나오지 않아서 여쭤봅니다.
-
해결됨롱런하는 슈퍼 개발자가 되기 위한 필수 지식, IT 인프라 기초 총정리
포워드 프록시(캐시) 서버에 대한 질문이 있습니다.
안녕하세요, 클라이언트에서 서버로 한 번 더 정보를 요청하는 경우 캐시 서버에서 데이터를 조회하여 데이터를 보여준다고 하셨는데그렇다면 클라이언트에서 처음으로 요청하는 데이터의 경우에도 캐시 서버에서 조회하는 과정을 항상 거치나요? 아니면 캐시 서버에 조회하려는 데이터가 있다는 사실을 알 수 있는 방법이 있나요?
-
해결됨CPPG 개인정보관리사 자격증 취득하기 (개정안 반영)
동의를 받는 방법 강의에서 잘못된 내용이 있는 것 같습니다.
동의를 받는 방법 강의 3분15초에서 설명하시는 행정규칙(개인정보 처리 방법에 관한 고시)에서 개정 전 내용으로 설명해주시는 것 같아서 혼란이 있을 것 같습니다.현재 제가 확인해볼 때는 아래 내용으로 확인됩니다.제4조(서면 동의 시 중요한 내용의 표시 방법) 법 제22조제2항에서 "보호위원회가 고시로 정하는 방법"이란 다음 각 호의 방법을 통해 종이 인쇄물, 컴퓨터 표시화면 등 서면 동의를 요구하는 매체의 특성과 정보주체의 이용환경 등을 고려하여 정보주체가 쉽게 알아볼 수 있도록 표시하는 방법을 말한다. 1. 글씨의 크기, 색깔, 굵기 또는 밑줄 등을 통하여 그 내용이 명확히 표시되도록 할 것 2. 동의 사항이 많아 중요한 내용이 명확히 구분되기 어려운 경우에는 중요한 내용이 쉽게 확인될 수 있도록 그 밖의 내용과 별도로 구분하여 표시할 것 강의에서는 최소 9포인트 이상으로서 다른 내용보다 20퍼센트 이상 크게하여 알아보기 쉽게 하라는 내용으로 강의를 진행하시는 것 같습니다. 개정된 내용으로 반영이 되면 학습하는데 혼선을 줄일 수 있을 것 같습니다
-
해결됨CPPG 개인정보관리사 자격증 취득하기 (개정안 반영)
강의에서 사용하시는 강의자료 제공 문의
강의에서 사용하시는 자료는 어디에서 다운로드 가능할까요?
-
해결됨롱런하는 슈퍼 개발자가 되기 위한 필수 지식, IT 인프라 기초 총정리
강의 자료 요청
안녕하세요. 수강 등록 및 결재는 했습니다.강의 자료는 어디서, 어떻게 받을 수 있을까요? 감사합니다.
-
미해결2023년 개인정보보호 법령 제개정 내용 강의
강의자료 어디에있나요?
다른 강의들 같은 경우에는, 별도 첨부파일 다운로드를 위한 강의가 있던데이건 없네요. 다른 글에서도 강의자료 관련 문의가 많은데, 정확한 답변이 없네요.
-
해결됨2023년 개인정보보호 법령 제개정 내용 강의
강의자료 문의
안녕하세요, 현재 개보법 제개정 강의를 수강중입니다. 강의자료를 어디서 다운받을 수 있는지 궁금하여 문의드립니다.감사합니다.
-
미해결2023년 개인정보보호 법령 제개정 내용 강의
강의자료 공유
안녕하세요 개보법 제개정 수강한 사람입니다.강의소개란에는 자료 공유 된다고 작성이 되어있었습니다.그런데 확인해보니 자료가 없어서 문의드립니다.확인해서 자료 공유 부탁드립니다.감사합니다.
-
미해결2023년 개인정보보호 법령 제개정 내용 강의
강의 자료 공유
안녕하세요.좋은 강의 감사합니다. 강의 소개에 보면 강의자료 교안을 보내주신다고 했는데아직 못 받아서 이렇게 문의 드립니다.확인 부탁드립니다. 감사합니다.
-
미해결2023년 개인정보보호 법령 제개정 내용 강의
섹션 4. 개인정보보호법 관련 고시 제개정 강의 파일 잘못 연결되었습니다.
강사님!!섹션 4. 개인정보보호법 관련 고시 제개정 > 8. 개인정보 영향평가에 관한 고시 의강의가 잘못 올라와 있습니다. 이미 나왔던 4장 개인정보의 국외이전 강의가 잘 못나오고 있습니다.수정요청 드립니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
SpringBoot 3점대 버전 Spring Security 설정
Spring Security 가 3점대 버전으로 오면서 상당한 변화가 있습니다. 강의 내용을 따라 하다보니 순환참조나, 현재는 지원하지 않는 기능이 상당수 존재하였습니다. 현재 작업한 코드가 문제 해결에 많은 도움이 되면 좋겠어서 글을 첨부합니다. SecurityConfig.class 입니다.@Configuration @EnableWebSecurity @RequiredArgsConstructor public class SecurityConfig{ private final CustomAuthenticationManager customAuthenticationManager; private final UserFindPort userFindPort; private final Environment environment; @Bean public WebSecurityCustomizer webSecurityCustomizer() { return (web) -> web.ignoring(). requestMatchers(new AntPathRequestMatcher("/h2-console/**")) .requestMatchers(new AntPathRequestMatcher( "/favicon.ico")) .requestMatchers(new AntPathRequestMatcher( "/css/**")) .requestMatchers(new AntPathRequestMatcher( "/js/**")) .requestMatchers(new AntPathRequestMatcher( "/img/**")) .requestMatchers(new AntPathRequestMatcher( "/lib/**")); } @Bean protected SecurityFilterChain filterChain(HttpSecurity http, HandlerMappingIntrospector introspector) throws Exception { http.csrf(AbstractHttpConfigurer::disable); http.authorizeHttpRequests(authorize -> authorize.requestMatchers(new MvcRequestMatcher(introspector, "/**")).permitAll() // requestMatchers(new MvcRequestMatcher.Builder(introspector).pattern(HttpMethod.GET, "/users/**")).permitAll() // .requestMatchers(new MvcRequestMatcher(introspector, "/greeting")).permitAll() // .requestMatchers(new MvcRequestMatcher(introspector, "/welcome")).permitAll() // .requestMatchers(new MvcRequestMatcher(introspector, "/health-check")).permitAll() // .requestMatchers(new MvcRequestMatcher.Builder(introspector).pattern(HttpMethod.POST, "/users")).permitAll() .anyRequest() .authenticated()) .addFilter(getAuthenticationFilter()) .httpBasic(Customizer.withDefaults()); return http.build(); } private AuthenticationFilter getAuthenticationFilter() { return new AuthenticationFilter(customAuthenticationManager, userFindPort, environment); } }requestMatcher에서 AntPathRequestMatcher, MvcRequestMatcher에 관한 설명은부족하지만 https://velog.io/@dktlsk6/Spring-Security-RequestMatcher에서 확인 가능하십니다. CustomUserDetailService.class 입니다. 순환참조 문제가 발생하여 강의와 달리 새로 CustomService를 생성하여 implements 하였습니다.@Component @RequiredArgsConstructor public class CustomUserDetailService implements UserDetailsService { private final UserFindPort userFindPort; @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { UserDto userByEmail = userFindPort.findUserByEmail(username); if (userByEmail == null) { throw new UsernameNotFoundException("User Not Found"); } return new User(userByEmail.getEmail(), userByEmail.getEncPasswd(), true, true, true, true, new ArrayList<>()); } } CustomAuthenticationManager.class 입니다. AuthenticationFilter의 AuthenticationManager로 사용할 것입니다.@Component @RequiredArgsConstructor @Slf4j public class CustomAuthenticationManager implements AuthenticationManager { private final CustomUserDetailService customUserDetailService; @Bean protected PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } @Override public Authentication authenticate(Authentication authentication) throws AuthenticationException { UserDetails userDetails = customUserDetailService.loadUserByUsername(authentication.getName()); if (!passwordEncoder().matches(authentication.getCredentials().toString(), userDetails.getPassword())) { throw new BadCredentialsException("Wrong password"); } return new UsernamePasswordAuthenticationToken(userDetails.getUsername(), userDetails.getPassword(), userDetails.getAuthorities()); } } AuthenticationFilter.class 입니다. 해당 부분은 강의와 차이점이 없습니다.@Slf4j public class AuthenticationFilter extends UsernamePasswordAuthenticationFilter { private final UserFindPort userFindPort; private final Environment environment; public AuthenticationFilter(AuthenticationManager authenticationManager, UserFindPort userFindPort, Environment environment) { super.setAuthenticationManager(authenticationManager); this.userFindPort = userFindPort; this.environment = environment; } @Override public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException { try { LoginRequestDto creds = new ObjectMapper().readValue(request.getInputStream(), LoginRequestDto.class); UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(creds.getEmail(), creds.getPassword(), new ArrayList<>()); return getAuthenticationManager().authenticate(token); } catch (IOException e) { throw new RuntimeException(e); } } @Override protected void successfulAuthentication(HttpServletRequest request, HttpServletResponse response, FilterChain chain, Authentication authResult) throws IOException, ServletException { String username = authResult.getName(); UserDto user = userFindPort.findUserByEmail(username); if (user == null) { throw new UsernameNotFoundException(username); } log.debug("user id {}", user.getUserId()); String token = Jwts.builder() .setSubject(user.getUserId()) .setExpiration(new Date(System.currentTimeMillis() + Long.parseLong(environment.getProperty("token.expiration.time")))) .signWith(SignatureAlgorithm.HS512, environment.getProperty("token.secret")) .compact(); response.addHeader("token", token); response.addHeader("userId", user.getUserId()); } } 아래는 실제 결과입니다.404가 뜨는 이유는 login 성공시 redirect url을 설정해주지 않아서 /(루트) 경로로 이동해서입니다. 해당 경로와 매핑되는 resource나 api가 없기 때문에 해당 오류가 발생한것이므로 정상작동으로 생각하시면 됩니다.아래는 잘못된 정보를 기입하여 실패 테스트 입니다. 추후 강의를 들으며 업데이트 하도록 하겠습니다.
-
미해결
JWT 에러
ECDSA signing keys must be PrivateKey instances. 이거는 대체 무슨에러죠 ? ㅠㅠ해결방법이 안나오네요 ㅠㅠ
-
미해결스프링 시큐리티
Remember Me 에 대한 몇 가지 질문
안녕하세요~! 강의를 듣던 중 질문의 몇 가지 있어서 남기게 되었습니다. 1.https://www.inflearn.com/questions/497954해당 질문에 답변에서 세션에는 Security Context가 저장되고, S.C 안에는 Authentication 객체가 저장되는 걸로 이해를 하였습니다.스프링 입장에서 봤을 때, 특정 로그인 요청 > 인증 진행 > 인증 완료 및 Authentication 객체 형성 > Security Context에 저장 > 응답으로 쿠키에 세션을 넣어서 전달의 순서로 이해를 했다면, Security Context 는 혹시 앱 내에 저장소? 같은 공간일까요? 앱 내의 스프링 컨테이너 역시 ApplicationContext처럼 Context 가 저장소 같은 느낌으로 쓰이는가 싶어서요. 만약 그렇다면, Security Context 에는 현재 앱에 "로그인이 되어 있다, 인증 되어 있다" 라고 하는 유저들의 Authentication 객체가 모두 저장되어 있는 것으로 이해를 해도 될까요? 또 만약 그렇다면, 각 유저에게 세션을 전달하게 되는데... Security Context를 어떻게 세션에 모두 넣어서 전달을 하는 걸까요..? 질문이 좀 난해하지만 유저에게 전달한다는 Session, Security Context가 정확히 무엇인지?에 대해서 궁금한 것 같습니다. 2. SessionID 를 주고 받음으로써 이미 "로그인 상태, 인증 상태" 를 판별할 수 있는 것 같은데, 굳이 remember-me 를 또 사용하는 이유는 뭔가요? 그리고 http.rememberMe() 설정 중에 갑자기 .userDetailService 가 등장했는데 그냥 설정만 해주시고 넘어간 것 같습니다. 해당 부분이 어떤 부분인지 알 수 있을까요?감ㅅ합니다.
-
미해결스프링 시큐리티
WebSecurityConfigurerAdapter confiture 메서드의 http 파라미터의 역할
안녕하세요 선생님, 강의를 복습중에 질문이 있습니다.WebSecurityConfigurerAdapter 의 configure 메서드 에서 http 파라미터로 설정 작업을 진행하는데 있어 사용자의 설정이 어떻게 filterChanigProxy 의 필터들의 목록을 바꾸는지가 궁금합니다.파라미터의 HttpSecurity 타입의 http 파라미터는 사용자가 설정 후 빈으로 등록되어있나여?또한 HttpSecurity 타입의 빈을 사용자가 설정하는데 있어 해당 빈이 어떻게 필터체인에 구성될 필터들의 요소를 바꿔주나요?감사합니다.