/ 리눅스
- 리눅스는 자신의 상태를 알려주는 다양한 기능이 존재한다.
- 자동 보고 기능
- 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 ---> 서비스단에 전달되기 직전 방화벽
/ rich rule
- ACCEPT tcp -- 14.36.28.128/25 anywhere tcp dpt:9200
- iptables -L
- iptables -A INPUT -p tcp -s SRC.IP --sport SRC.PORT -d DEST.IP --dport DEST.PORT -j ACEEPT
- -A : append : 정책을 추가할꺼야~
-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 |
firewall-cmd --list-all |
firewall-cmd --permanent --add-port=443/tcp firewall-cmd reload |
ufw status |
ufw allow tcp/80 |
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 {} \;
/ 무결성 검사
- tripwire : 파일의 변동 사항 유무 체크
- wget https://src.fedoraproject.org/repo/pkgs/tripwire/tripwire-2.3.1-2.tar.gz/6a15fe110565cef9ed33c1c7e070355e/tripwire-2.3.1-2.tar.gz
/ 포트 스캔
- 열려있는 포트 및 응답 가능한 포트 점검 : 좀비PC 감염 여부
- 자신의 시스템에서 netstat -atp | grep LISTEN
/ 외부 호스트의 포트 확인
- telnet IP port
/ for문
- 윈도우 DOS
for %i in (1,1,65534) do telnet 192.168.0.30 %i |
- 리눅스
for i in {55..59} > do > ping 192.168.0.%i -c 1 > done |
/ 시스템에서 열려있는 파일에 대한 정보를 출력
- lsof == list open files
- lsof | grep LISTEN
root@Centos7:~# lsof | grep LISTEN httpd 1646 root 4u IPv6 33965 0t0 TCP *:http (LISTEN) httpd 1646 root 6u IPv6 33969 0t0 TCP *:https (LISTEN) dovecot 1674 root 25u IPv4 32127 0t0 TCP *:pop3 (LISTEN) dovecot 1674 root 37u IPv4 32150 0t0 TCP *:imap (LISTEN) master 1893 root 13u IPv4 33403 0t0 TCP *:smtp (LISTEN) master 1893 root 92u IPv4 33489 0t0 TCP localhost:10025 (LISTEN) /usr/bin/ 2105 root 5u IPv4 32568 0t0 TCP localhost:783 (LISTEN) /usr/sbin 2328 amavis 5u IPv4 35298 0t0 TCP localhost:10024 (LISTEN) httpd 2329 apache 4u IPv6 33965 0t0 TCP *:http (LISTEN) httpd 2329 apache 6u IPv6 33969 0t0 TCP *:https (LISTEN) spamd 2341 root 5u IPv4 32568 0t0 TCP localhost:783 (LISTEN) /usr/sbin 2343 amavis 5u IPv4 35298 0t0 TCP localhost:10024 (LISTEN) 프로세스명 PID 프로세스 소유자 프로토콜 버전 TCP/UDP 여부 현재 응답 가능 여부 |
/ pstree
- 최상위가 systemd이면 최소 centos7이다.
/ top
- top -d2
'정보보안학원 > KITRI 침해대응' 카테고리의 다른 글
102일차 - ISMS-P (0) | 2023.03.14 |
---|---|
101일차 - 보안가이드라인 (0) | 2023.03.09 |
99일차 - 보안가이드라인 (0) | 2023.03.07 |
98일차 - 보안가이드라인 (0) | 2023.03.07 |
97일차 - 이더채널 (0) | 2023.03.03 |