Gom3rye
네트워크 본문
네트워크 확인 명령어
ping [옵션] IP 주소 또는 도메인
Packet InterNet Groper
- 네트워크 상태를 확인할 때 가장 많이 사용하는 명령어
- ping은 네트워크를 통해 특정 목적지까지 네트워크가 잘 동작하고 있는지 확인하는 명령어
- 상대방 호스트가 접속 가능한지 확인하는 것이 목적이지만 두 호스트 간의 통신을 위한 경로가 정상적으로 구성되어 있는지도 체크 가능하다.
- ICMP(Internet Control Message Protocol)라는 인터넷 프로토콜을 이용하고 ICMP의 제어 메시지를 통해 여러 가지 네트워크 상태를 파악할 수 있다.
- 옵션
- -c count : 패킷의 개수 설정 (windows는 기본 4개로 설정되어 있고 나머지 운영체제는 무한대로 설정되어 있다.)
- -i interval : 패킷을 보내는 시간 간격으로 기본은 1초 (실제 서버 개발에서는 i 옵션을 조절한다.)
- -l interface : 패킷을 보낼 때 출발지 주소를 지정하는 것으로 실제 IP를 지정하거나 인터페이스 이름을 지정하는데 이 옵션을 사용하지 않으면 라우팅 테이블에 의해 나가는 인터페이스의 주소가 출발지 주소가 된다.
- -s packetsize : 패킷 크기를 지정하는데 기본적으로 56바이트에 8바이트의 ICMP가 붙는다.
- windows 에서는 옵션이 다르다.
- -n : count
- -t : 무제한 전송
- -S srcaddr : 사용할 원번 아이피의 주소
- -I size : 패킷 크기
- -r count : count는 홉의 경로 (최대 9개까지 설정 가능)
- 실습
- 리눅스에서 구글 DNS (8.8.8.8)로 100바이트의 ping을 2회 보내기
ping 8.8.8.8 -c 2 -s 100
tcping [옵션] 목적지IP 주소
windows
- ping을 확인하듯이 서비스 포트가 정상적으로 열려 있는지 확인하는 명령
- 특정 호스트들은 ping 명령이나 trace route 명령을 막는 경우가 있다.
- 옵션
- -h
- -v
- -c 개수
- -i interval
- 리눅스에서 설치되어 있지 않으면 hping3 패키지 설치
sudo apt install hping3
which hping3 #/usr/sbin/hping3
sudo hping3 naver.com
심볼릭 링크를 만들어서 윈도우 서버의 명령어와 동일하게 실행
sudo ln -s /usr/sbin/hping3 /usr/sbin/tcping #으로 tcping 명령어도 만들기
sudo tcping naver.com
traceroute [옵션] 목적지 주소
traceroute/tracert
- 출발지부터 목적지까지의 네트워크 경로를 확인할 때 사용
- 옵션
- -l(소문자 엘): ICMP 기반
- -T : cp 형태로 전송
- -n : IP주소를 도메인이 아닌 숫자 형식으로 표시
- -p port : 특정 포트를 상대로 수행
- -s src_addr : 패킷이 나가는 경로를 설정
tcptraceroute
서비스의 포트를 지정해서 경로를 추적
- 리눅스나 윈도우의 기본 프로그램이 아니므로 설치 후 진행
sudo apt install tcptraceroute
tcptraceroute -n naver.com 80
netstat [옵션]
서버의 네트워크 상태를 확인하는 명령어
- 옵션
- -a: 모든 연결과 수신 대기 포트 표시
- -n: 주소와 포트 번호를 숫자로 표시
- -r: 라우팅 테이블 표시
- -i: 인터페이스 별 입출력 패킷 통계
- -s: 네트워크 통계 데이터 출력
- -p: PID와 프로그램 이름 출력
- -t: TCP만 출력
- -4/-6: IPv4나 IPv6 출력
ss [옵션]
소켓 관련 정보를 확인할 수 있는 명령어
- 옵션
- -a: 화면에 전체 소켓을 표시
- -l: Listening 상태의 소켓만 표시
- -i: 자세한 정보
- -p: 현재 소켓에서 사용 중인 프로세스 표시
- -n: 서비스 명이 아닌 실제 포트 번호로 서비스 포트를 표기
- -4, -6
- -s: 프로토콜 별 통계 표시
- -t, -u: tcp, udp
ss -lp | grep http
nslookup [옵션]
도메인 관련 명령어
- nslookup [옵션] : 대화형 모드에 들어가서 도메인을 입력하면 IP주소를 알려준다.
telnet 목적지IP 포트번호
원격 접속 프로토콜
초창기에는 원격 접속에 많이 이용됐는데 최근에는 ssh로 원격 접속은 대체되었고 네트워크를 확인하는 명령으로 많이 사용된다.
- 서버의 서비스에 정상적인 접근이 가능하면 명령 프롬프트가 떨어지거나 화면 상태가 변경됨
- 서비스에 정상적인 접근이 불가능할 때는 서비스가 열리기를 기다리면서 프롬프트가 그대로 대기하고 있다가 일정 시간이 지나면 연결에 실패했다고 나온다.
- 네트워크에 문제가 발생한 경우
- ping 127.0.0.1을 이용해서 자신의 NIC를 확인
- IP 설정이 제대로 되었는지 확인 : ifconfig -a
- 게이트웨이 확인 : iproute 명령
- ping 디폴트게이트웨이 : 여기서 실패하면 공유기나 스위치 또는 라우터까지 연결이 제대로 안된 경우
- DNS 확인 : dig 명령으로 확인
- 전송이 안되는 이유 (외부적인 요인)
- 출발지로부터 해당 서비스가 동작 중인 서버까지의 경로가 정상적으로 잡혀있지 않은 경우 (라우터쪽에서 작업을 수행)
- 출발지로부터 해당 서비스가 동작 중인 서버까지의 경로상 보안 장비 등에 의해서 차단된 경우
- 도착지 단말의 방화벽이나 iptables와 같은 보안 기능에서 차단된 경우
- 도착지 단말이 정상적으로 서비스가 열려 있지 않은 경우(서비스 포트가 Listening 상태가 아닌 경우나 서버 서비스가 구동 되지 않은 경우)
- 전송이 안되는 경우 추가적인 테스트
- 경로 상의 문제라면 네트워크 장비 없이 ping이나 traceroute 명령으로 확인 가능하다.
- 보안 장비에 의해 차단된 경우에는 다른 포트나 ICMP 프로토콜을 사용하는 ping, traceroute 명령으로 일부 파악 가능하고 보안 장비의 위치를 알고 있다면 보안 장비를 지나는 경우와 지나지 않은 경우로 나눠 테스트하면 된다.
- 단말의 방화벽 기능을 일시적으로 내리고 테스트를 수행한다.
- netstat나 ss 명령으로 확인한다.
리눅스 네트워크 구축하기
IP 설정
가상 머신에서 네트워크 부분에서 dhcp 사용을 해제
sudo nano /etc/netplan/00-installer-config.yaml
network:
version: 2
ethernets:
enp0s3:
dhcp4: no
addresses:
-IP/서브넷
gateway4: 게이트웨이
nameservers:
addresses: [8.8.8.8]
- 적용
sudo netplan apply
- 확인
ip a
- 포트포워딩 해주기 (외부에서 접속 가능하게끔)
- 이름 변경
sudo hostnamectl set-hostname 이름
- 이름 변경 확인
cat /etc/hostname
- 재부팅
sudo reboot
Slave 1도 똑같이 해주기
sudo nano /etc/netplan/00-installer-config.yaml
network:
version: 2
ethernets:
enp0s3:
dhcp4: no
addresses:
- 10.0.2.201/24
gateway4: 10.0.2.1
nameservers:
addresses: [8.8.8.8]
sudo netplan apply # 적용
ip a # ip 잘 들어갔는지 확인
sudo hostnamectl set-hostname slave1 # hostname 바꾸고
cat /etc/hostname # 확인
sudo reboot # 적용
slave2 도 위의 과정을 똑같이 해주되 포트 포워딩 규칙만 10003, 10.0.2.202 로 해주자!
- 이름으로 통신할 수 있도록 설정
sudo vi /etc/hosts
10.0.2.101 master
10.0.2.201 slave1
10.0.2.202 slave2
slave1, slave2 에는 각각 127.0.1.1도 slave1, slave2로 바꿔주기
Adapter 에 bridge : 1대 1로 연결
NAT: 1대 1로 연결은 되는데 여러 개도 사용 가능
→ 같은 ip에 포트를 다르게 해서 독립적으로 연결되도록 한다.
- NAT는 내가 나가기 위해서 설정하는 거고 포트 포워딩은 밖에서 들어오기 위해서 하는 것
NAT Network:
yaml : 들여쓰기 굉장히 중요
IaC : Infrastructure as Code
보안
정보 보안 : 다양한 위협으로부터 정보를 보호하는 것
조직의 지적 자산을 보호하는 절차
인가된 사용자만 정확하고 완전한 정보로 필요할 때 접근할 수 있도록 해주는 일련의 작업ㅑㅔ
필수 요소 3가지
- Confidentiality (기밀성) : 인가되지 않은 사용자가 정보를 보지 못하게 하는 것
- Integrity (무결성) : 정확하고 완전한 정보 유지에 필요한 모든 작업
- Availabilty (가용성) : 정보가 필요할 때 접근을 허락하는 일련의 작업
추가
- Authentication (인증)
- Accountability (책임성)
- NonRepudiation (부인 방지)
- Reliability (신뢰성)
네트워크의 정보 보안
- 네트워크 보안의 목표는 외부 네트워크로부터 내부 네트워크를 보호하는 것
- 외부로부터 보호받아야 하는 네트워크를 Trust Network라고 하고 신뢰할 수 없는 외부 네트워크를 Untrust Network라고 한다.
- Data 서버 → Trust Network
- 사용자 → Untrust Network
- Application (Backend, Frontend) server → DMZ
- 우리가 운영하는 내부 네트워크이지만 신뢰할 수 없는 외부 사용자에게 개방해야 하는 네트워크를 DMZ 네트워크라고 부르면 일반적으로 인터넷에 공개되는 서비스이다.
- 네트워크 보안 분야의 분류
- Internet Secure Gateway: Trust Network에서 Untrust Network로의 통신을 통제
- SWG(Secure Web Gateway), Web Filter, Application Control, SendBox 등의 서비스
- Data Center Secure Gateway: Untrust Network에서 Trust Network로의 통신을 통제
- Firewall, IPS, DCSG(Data Center Secure Gateway), WAF(Web Application Firewall), Anti-DDoS(Distribute Denial of Service) 등의 장비
- Internet Secure Gateway: Trust Network에서 Untrust Network로의 통신을 통제
- 보안 정책에 따른 분류
- White List: 허용 (필요한 서비스만 허락)
- Black List: 거부
정탐 오탐 미탐
-> 공격을 탐지할 때 원래 예상한 내용과 다른 결과가 나올 수 있는데 이런 경우는 오탐지, 미탐지라고 한다.
공격 상황 정상 상황
공격 인지 | True Positive | False Positive |
정상 인지 | False Negative | True Negative |
- False Negative는 공격 패턴에 대한 업데이트가 되지 않았거나 과도한 예외 처리로 인해서 공격 패킷 탐지가 정상적으로 되지 않았을 때 또는 공격 데이터베이스가 업데이트 되기 전에 발생하는 Zero Day Attack 이 발생했을 때 생기는 오류이다.
- Black List 기반의 공격 방어 기법을 사용하던 시절에 많이 발생했다.
보안 솔루션의 장비
DDoS 방어 장비 ↔ Firewall ↔ IPS ↔ WAF ↔ Web Application Server
- DDoS 방어 장비
- DDoS(Distributed Denial of Service): 다양한 방법으로 서비스 부하를 가해 정상적인 서비스를 방해하는 공격 기법
- DoS: 공격 출발지에서 공격하는 것이 일반적인 방식, 비교적 탐지가 쉽고 IP 주소 기반으로 충분히 방어할 수 있다.
- DDoS: 짧은 시간에 공격 성과를 내기 위해서 다수의 bot을 이용해서 분산 공격을 하는 것
- 보통 데이터센터 네트워크 내부와 외부의 경계선에서 공격을 방어하는데 이것은 ValueMetric Attack을 막기 위해서이다.
- ValueMetric 공격은 회선 사용량이나 그 이상의 트래픽을 과도하게 발생시켜 회선 사용을 방해하는 공격이므로 회선을 공급해주는 ISP(Internet Service Provider)나 네트워크 ISP와 연결되는 데이터 네트워크의 가장 바깥쪽에 위치 시켜 이 공격을 완하한다.
- IDS, IPS
- IDS(Intrusion Detection System): 침입 탐지 시스템
- IPS(Intrusion Prevention System): 침입 방지 시스템
- 최근에는 둘을 구분하지 않는다.
- 사전에 공격 데이터베이스를 제조사나 위협 인텔리전스 업체로부터 받아서 인입된 패킷이 보유한 공격 데이터베이스에 해당하는 공격일 때 차단하거나 모니터링 한 후 관리자에게 알람을 보내주는 방식
- DCSG: 방화벽과 IPS 장비를 통합한 장비
- WAF: 웹 서버를 보호하는 전용 보안 장비
- HTTP, HTTPS 처럼 웹 서버에서 동작하는 웹 프로토콜의 공격을 방어
- IDS/IPS보다 범용성은 떨어지지만 웹 프로토콜에 대해서는 더 세밀히 방어
- 제공되는 방식
- 전용 네트워크 장비
- 웹 서버의 플러그인
- ADC 플러그인
- 프록시 장비 플러그인
- WAF는 IPS에서 방어할 수 없는 IPS 회피 공격을 방어할 수 있다.
- IPS는 데이터를 조합하지 않고 처리하지만 WAF는 프록시 서버와 같이 패킷을 데이터 형태로 조합해 처리한다.
- WAF가 있으면 공격을 방어만 하지 않고 공격자에게 통보하거나 민감한 데이터가 유출될 때 그 정보만 제거해서 보내줄 수 있다.
WAF: 4계층 이상(Port), data를 확인해서 공격 방어. (패킷을 다 뜯어보고 응답도 할 수 있다.), 뜯어 본 데이터에 공격자의 주소도 있으니까 공격자에게 메시지도 보낼 수 있다.
IPS: 3계층(IP), 들어오고 못하고, slack으로 누가 공격한다 알림을 줄 수 있다.
→ WAF가 더 강력
- 샌드박스
- 최근의 공격 방식 중 하나는 관리자 PC에 악성 코드를 심고 관리자 PC가 나머지 PC들을 감염시키도록 하는 방식이 있다.
- 이러한 악성 코드 여부를 판별하는 장비
'현대 오토에버 클라우드 스쿨' 카테고리의 다른 글
방화벽 생성 및 제어 (1) | 2025.06.05 |
---|---|
보안 (0) | 2025.06.04 |
네트워크 장비 (0) | 2025.05.30 |
네트워크 (1) | 2025.05.29 |
Shell Programming (0) | 2025.05.28 |