Cloud & Platform
리눅스 네트워크 및 보안 실습
리눅스 네트워크 및 보안 실습 학습 내용을 정리한 백필 노트입니다.
이 글은 2025년 학습 기록을 블로그 형식으로 정리한 백필 노트입니다.
1. WSL2 네트워크 포트 포워딩 설정
설정 절차:
-
WSL에서 서버 실행:
sudo service nginx start,sudo service ssh start등으로 WSL 내부에서 서버를 실행합니다. -
WSL IP 확인: WSL 터미널에서
ip addr show eth0또는ip addr | grep inet명령어로 WSL의 내부 IP 주소(예:172.29.xxx.xxx)를 확인합니다. 이 IP는 재부팅 시 변경될 수 있습니다. -
Windows에서 포트 포워딩: 관리자 권한으로 PowerShell을 열고, 외부 요청을 WSL IP로 전달하도록 설정합니다.PowerShell
`# 형식: netsh interface portproxy add v4tov4 listenport=[외부 포트] listenaddress=0.0.0.0 connectport=[내부 포트] connectaddress=[WSL IP]
예시 (HTTP: 80번 포트)
netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=80 connectaddress=172.29.205.121
예시 (SSH: 22번 포트)
netsh interface portproxy add v4tov4 listenport=22 listenaddress=0.0.0.0 connectport=22 connectaddress=172.29.205.121`
-
Windows 방화벽 규칙 추가: 관리자 권한으로 PowerShell에서 외부 접근을 허용할 포트를 엽니다.PowerShell
`# 예시 (HTTP: 80번 포트) New-NetFirewallRule -DisplayName "WSL 80 Port" -Direction Inbound -LocalPort 80 -Protocol TCP -Action Allow
예시 (SSH: 22번 포트)
New-NetFirewallRule -DisplayName "WSL 22 Port" -Direction Inbound -LocalPort 22 -Protocol TCP -Action Allow`
-
테스트: 외부 장치에서 Windows PC의 IP 주소로 접속을 시도합니다. (예:
curl http://<Windows_IP>,ssh user@<Windows_IP>)
포트 포워딩 관리:
- 설정 확인:
netsh interface portproxy show all - 설정 삭제:
netsh interface portproxy delete v4tov4 listenport=[포트번호] listenaddress=0.0.0.0 - 전체 초기화:
Remove-Item -Path "HKLM:\\SYSTEM\\CurrentControlSet\\Services\\PortProxy\\v4tov4\\tcp" -Recurse후 재부팅
2. 리눅스 기초 실습 요약
챕터 1: 네트워크 구성 확인 실습
- 목표: 내 컴퓨터의 네트워크 설정(IP 주소, 인터페이스)을 확인하고 기본적인 도메인-IP 관계를 이해합니다.
- 핵심 개념:
- IP 주소: 네트워크상 컴퓨터의 고유 주소.
- 네트워크 인터페이스: 네트워크 연결 통로 (예:
eth0- 유선,wlan0- 무선). - /etc/hosts 파일: 도메인과 IP를 수동으로 매핑하는 로컬 전화번호부.
- 주요 명령어:
whoami: 현재 사용자 확인.ip addr/ifconfig: IP 주소 및 네트워크 인터페이스 정보 확인.ip link show up: 활성화된 인터페이스 목록 확인.cat /etc/hosts: hosts 파일 내용 보기.sudo nano /etc/hosts: hosts 파일 수정 (관리자 권한 필요).ip route show: 기본 게이트웨이(라우터) 정보 등 네트워크 경로 확인.
챕터 2: 네트워크 연결성 테스트 실습
- 목표: 기본 도구를 사용하여 특정 웹사이트까지의 네트워크 연결 상태와 경로를 진단합니다.
- 핵심 개념:
- IP 주소: 컴퓨터가 이해하는 숫자 주소.
- 도메인 이름: 사람이 기억하기 쉬운 문자 주소.
- 주요 명령어:
ping [도메인/IP]: 대상과의 연결 상태 및 응답 시간 확인.traceroute [도메인/IP](Linux/macOS) /tracert(Windows): 목적지까지의 네트워크 경로 추적.nslookup [도메인]/dig [도메인]: 도메인 이름에 해당하는 IP 주소 조회 (DNS 쿼리).
챕터 3: 네트워크 모니터링 도구 실습
- 목표: 내 컴퓨터의 활성 네트워크 연결과 트래픽을 실시간으로 감시하는 방법을 배웁니다.
- 핵심 개념:
- 포트: 서비스 구분을 위한 번호 (예: HTTP-80, SSH-22).
- 연결: 두 컴퓨터 간의 통신 통로.
- 패킷: 데이터를 잘게 나눈 조각.
- 트래픽: 네트워크를 오가는 데이터의 흐름.
- 주요 명령어:
netstat -antp: 활성화된 TCP 연결, 대기 포트 및 관련 프로그램 정보 확인 (관리자 권한 필요).ss -antp:netstat과 유사하지만 더 빠르고 효율적인 소켓 상태 확인 도구.sudo tcpdump -i [인터페이스]: 지정한 네트워크 인터페이스를 오가는 패킷을 실시간으로 캡처 (필터링 가능).sudo iptraf-ng: 텍스트 기반의 종합적인 실시간 네트워크 트래픽 모니터링 도구.
챕터 4: SSH 서버 설정 실습
- 목표: 리눅스에 원격 접속을 위한 SSH 서버를 설치하고 보안 설정을 강화합니다.
- 핵심 개념:
- SSH (Secure Shell): 암호화된 안전한 원격 접속 프로토콜.
- 서버/클라이언트: 서비스를 제공하는 쪽(서버)과 요청하는 쪽(클라이언트).
- 설정 절차:
sudo apt install openssh-server: SSH 서버 설치.systemctl status ssh: 서비스 상태 확인 (active (running)이면 정상).sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak: 설정 파일 백업.sudo nano /etc/ssh/sshd_config: 설정 파일 수정.Port 2222: 기본 포트(22)를 다른 번호로 변경하여 보안 강화.PermitRootLogin no: root 계정의 직접 접속 차단.
sudo systemctl restart ssh: 변경된 설정을 적용하기 위해 서비스 재시작.ssh [사용자명]@[서버 IP] -p [변경한 포트]: 접속 테스트.
챕터 5: SSH 클라이언트 및 키 관리 실습
- 목표: 비밀번호 대신 안전한 SSH 키를 생성하여 원격 서버에 접속하고 파일을 전송합니다.
- 핵심 개념:
- SSH 키 (공개키/개인키): 비밀번호를 대체하는 한 쌍의 암호화된 파일.
- 개인키 (
id_rsa): 나만 보관하는 비밀 열쇠. 절대 공유 금지. - 공개키 (
id_rsa.pub): 접속할 서버에 등록하는 자물쇠.
- 개인키 (
- SSH 키 (공개키/개인키): 비밀번호를 대체하는 한 쌍의 암호화된 파일.
- 주요 명령어:
ssh-keygen: SSH 키 쌍(공개키/개인키) 생성.ssh-copy-id [사용자명]@[서버 IP]: 내 공개키를 원격 서버의~/.ssh/authorized_keys파일에 자동으로 복사 및 등록.ssh [사용자명]@[서버 IP]: 키를 사용하여 원격 접속.scp [파일명] [사용자명]@[서버 IP]:[경로]: SSH를 통해 안전하게 파일 복사.
- 로그인 문제 해결: 키 로그인 실패 시 서버에서 다음 권한을 확인.
chmod 755 ~chmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keys
챕터 6: 방화벽 설정 실습 (UFW)
- 목표:
UFW(Uncomplicated Firewall)를 사용하여 리눅스 서버의 방화벽을 설정하고 불필요한 접근을 차단합니다. - 핵심 개념:
- 방화벽: 네트워크 트래픽을 규칙에 따라 허용/차단하는 보안 시스템.
- 주요 명령어:
sudo ufw status: 현재 방화벽 상태 확인.sudo ufw enable: 방화벽 활성화.sudo ufw default deny incoming: 외부에서 들어오는 연결을 기본적으로 차단.sudo ufw default allow outgoing: 내부에서 나가는 연결은 기본적으로 허용.sudo ufw allow [서비스/포트]: 특정 서비스(예:ssh,http)나 포트(예:8080/tcp) 허용.sudo ufw deny [포트]: 특정 포트 차단.sudo ufw status numbered: 규칙 목록을 번호와 함께 보기.sudo ufw delete [번호]: 특정 번호의 규칙 삭제.sudo ufw reset: 모든 설정을 초기화.
챕터 7: 파일 보안 및 암호화 실습
- 목표: 파일의 변조 여부를 확인하고, 중요한 파일을 암호화하며, 시스템 보안 로그를 확인하는 방법을 배웁니다.
- 핵심 개념:
- 암호화: 파일 내용을 비밀번호나 키를 이용해 알아볼 수 없게 변경.
- 해싱/체크섬: 파일 고유의 '지문'을 생성하여 파일이 변조되지 않았는지(무결성) 검증.
- 시스템 로그: 시스템에서 발생하는 이벤트를 기록한 파일.
- 주요 명령어:
md5sum [파일명]/sha256sum [파일명]: 파일의 체크섬(해시 값) 계산.gpg -c [파일명]: 비밀번호를 사용하여 파일 암호화 (결과:[파일명].gpg).gpg [암호화된 파일명]: 암호화된 파일 복호화.cd /var/log: 시스템 로그 파일이 저장된 디렉터리로 이동.sudo less auth.log: 보안 관련 로그(로그인 성공/실패 등) 확인.