port-security.html
21.78 KB · text/html · 업로드 2026-07-08 17:09
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Port-Security 총 발표 내용</title>
<style>
body {
font-family: "Noto Sans KR", Arial, sans-serif;
line-height: 1.7;
color: #222;
background: #f7f8fa;
margin: 0;
padding: 0;
}
.container {
max-width: 1000px;
margin: 0 auto;
padding: 40px 24px;
background: #ffffff;
}
h1 {
font-size: 32px;
border-bottom: 3px solid #222;
padding-bottom: 12px;
margin-bottom: 32px;
}
h2 {
font-size: 24px;
margin-top: 42px;
padding-left: 12px;
border-left: 5px solid #2f5bea;
}
h3 {
font-size: 19px;
margin-top: 28px;
color: #333;
}
p {
margin: 10px 0;
}
ul, ol {
margin: 10px 0 10px 24px;
padding: 0;
}
li {
margin: 6px 0;
}
.box {
background: #f1f4f8;
border-left: 4px solid #2f5bea;
padding: 14px 18px;
margin: 14px 0;
}
.note {
background: #fff7e6;
border-left: 4px solid #f0a500;
padding: 14px 18px;
margin: 14px 0;
}
pre {
background: #1f2937;
color: #f9fafb;
padding: 14px 18px;
border-radius: 8px;
overflow-x: auto;
font-size: 14px;
line-height: 1.5;
}
code {
font-family: Consolas, Monaco, "Courier New", monospace;
}
.keyword {
font-weight: bold;
color: #1f4ed8;
}
</style>
</head>
<body>
<div class="container">
<h1>Port-Security 총 발표 내용</h1>
<section>
<h2>1. Port-Security란?</h2>
<p>
<span class="keyword">Port-Security</span>는 스위치의 특정 포트에 접속할 수 있는
MAC 주소의 개수 또는 특정 MAC 주소를 제한하는 Layer 2 보안 기능
</p>
<p>
스위치는 기본적으로 포트에 연결된 장비의 MAC 주소를 자동 학습
</p>
<p>
하지만 이 동작을 그대로 두면 허가되지 않은 장비가 포트에 연결되어도
스위치가 해당 MAC 주소를 학습하고 통신을 허용할 수 있음
</p>
<p>
Port-Security 적용 시 특정 포트에서 허용할 MAC 주소 수 제한 또는
특정 MAC 주소만 통신 허용
</p>
<div class="box">
<p><strong>Port-Security</strong></p>
<p>→ 스위치 포트에 들어오는 Source MAC 주소를 기준으로 접근을 제한하는 기능</p>
<p><strong>검사 기준</strong></p>
<p>→ Destination MAC이 아니라 Source MAC</p>
<p><strong>목적</strong></p>
<p>→ 이 포트로 들어오는 장비의 MAC 주소가 허용된 MAC인지 확인</p>
</div>
</section>
<section>
<h2>2. Port-Security가 필요한 이유</h2>
<p>일반 스위치 포트는 연결된 장비의 MAC 주소를 자동 학습</p>
<h3>문제 상황</h3>
<ul>
<li>허가되지 않은 노트북 연결 가능</li>
<li>하나의 포트에 소형 스위치나 허브 연결 가능</li>
<li>한 포트에서 여러 MAC 주소 유입 가능</li>
<li>허용되지 않은 장비가 네트워크 접근 가능</li>
<li>MAC 주소를 대량으로 발생시키는 공격에 취약 가능</li>
</ul>
<h3>Port-Security의 역할</h3>
<ul>
<li>포트별 허용 MAC 주소 제한</li>
<li>허가되지 않은 장비 접속 차단</li>
<li>하나의 포트에 여러 장비 연결 제한</li>
<li>기본적인 Layer 2 접근 제어 기능</li>
</ul>
</section>
<section>
<h2>3. Port-Security 동작 큰그림</h2>
<ol>
<li>스위치 포트에 Port-Security 활성화</li>
<li>해당 포트로 들어오는 프레임의 Source MAC 주소 확인</li>
<li>허용된 MAC 주소이면 통신 허용</li>
<li>허용되지 않은 MAC 주소이면 위반 처리</li>
<li>허용 MAC 주소 개수를 초과해도 위반 처리</li>
<li>위반 발생 시 Violation Mode에 따라 처리: 폐기, 기록, 포트 차단</li>
</ol>
<h3>예시</h3>
<div class="box">
<p>Gi1/0 포트에 maximum 1 설정</p>
<p>PC1 연결 → PC1 MAC 주소 학습</p>
<p>이후 PC2를 같은 포트에 연결</p>
<p>PC2의 Source MAC 주소 유입</p>
<p>허용된 MAC 주소가 아님</p>
<p>결과 → Port-Security 위반 처리</p>
</div>
</section>
<section>
<h2>4. Port-Security의 실효성</h2>
<p>
Port-Security는 모든 보안 공격을 막는 기능은 아니지만,
고정 단말 환경에서 효과적
</p>
<h3>효과적인 환경</h3>
<ul>
<li>사용자 PC가 연결되는 Access Port</li>
<li>프린터가 연결되는 고정 포트</li>
<li>관리용 단말 포트</li>
<li>허가된 장비만 사용해야 하는 사무실 포트</li>
<li>교육장, 실습실, 사내망 단말 포트</li>
</ul>
<h3>실효성</h3>
<ul>
<li>허가되지 않은 노트북 연결 제한</li>
<li>소형 스위치나 허브를 몰래 연결하는 행위 제한</li>
<li>한 포트에서 여러 MAC 주소가 들어오는 상황 제한</li>
<li>MAC 주소 기반의 기본적인 포트 보안 강화</li>
<li>MAC Flooding 계열 공격 완화</li>
</ul>
<h3>주의점</h3>
<ul>
<li>MAC 주소는 변경 가능</li>
<li>사용자 신원 인증 기능은 아님</li>
<li>강력한 인증 보안보다는 기본적인 포트 접근 제한 기능</li>
</ul>
</section>
<section>
<h2>5. 핵심 용어 정리</h2>
<ul>
<li><strong>Source MAC Address</strong> → 프레임을 보낸 장비의 MAC 주소</li>
<li><strong>Secure MAC Address</strong> → Port-Security에 의해 허용된 MAC 주소</li>
<li><strong>Maximum</strong> → 해당 포트에서 허용할 수 있는 MAC 주소 개수</li>
<li><strong>Violation</strong> → 허용되지 않은 MAC 주소가 들어오거나 허용 개수를 초과한 상태</li>
<li><strong>Violation Mode</strong> → 위반 발생 시 스위치가 처리하는 방식</li>
<li><strong>Err-disabled</strong> → 보안 위반이나 오류로 인해 스위치가 포트를 강제로 차단한 상태</li>
<li><strong>Sticky MAC</strong> → 처음 들어온 MAC 주소를 자동으로 학습해서 Secure MAC으로 등록하는 방식</li>
<li><strong>Aging</strong> → 일정 시간이 지난 Secure MAC 주소를 삭제하는 기능</li>
</ul>
</section>
<section>
<h2>6. Port-Security 핵심 설정 요소</h2>
<ul>
<li><strong>Maximum</strong> → 포트에 허용할 MAC 주소 개수 설정</li>
<li><strong>MAC 주소 등록 방식</strong> → Static / Sticky / Dynamic</li>
<li><strong>Violation Mode</strong> → 위반 발생 시 처리 방식 설정</li>
<li><strong>Aging</strong> → 학습된 Secure MAC 주소 삭제 시간 설정</li>
</ul>
</section>
<section>
<h2>7. Maximum 설정</h2>
<p>Maximum은 포트 하나에 몇 개의 MAC 주소를 허용할 것인지 정하는 설정</p>
<pre><code>conf t
interface gi1/0
switchport port-security maximum 1
end</code></pre>
<p>의미</p>
<ul>
<li>gi1/0 포트에 MAC 주소 1개만 허용</li>
<li>다른 MAC 주소가 들어오면 Port-Security 위반 처리</li>
<li>실습에서는 보통 maximum 1 설정 사용</li>
</ul>
</section>
<section>
<h2>8. MAC 주소 등록 방식</h2>
<ul>
<li><strong>Static MAC</strong> → 관리자가 직접 허용할 MAC 주소 입력</li>
<li><strong>Sticky MAC</strong> → 처음 연결된 장비의 MAC 주소 자동 학습</li>
<li><strong>Dynamic MAC</strong> → 자동 학습하지만 설정에는 저장되지 않는 방식</li>
</ul>
</section>
<section>
<h2>9. Static MAC</h2>
<p>Static MAC은 관리자가 직접 허용할 MAC 주소를 지정하는 방식</p>
<pre><code>conf t
interface gi1/0
switchport port-security mac-address 0011.2233.4455
end</code></pre>
<h3>특징</h3>
<ul>
<li>특정 장비만 확실하게 허용할 때 사용</li>
<li>관리자가 MAC 주소를 직접 입력</li>
<li>보안성은 높지만 장비가 많으면 관리 부담 증가</li>
</ul>
</section>
<section>
<h2>10. Sticky MAC</h2>
<p>Sticky MAC은 처음 연결된 장비의 MAC 주소를 자동 학습하는 방식</p>
<pre><code>conf t
interface gi1/0
switchport port-security mac-address sticky
end</code></pre>
<h3>특징</h3>
<ul>
<li>실습에서 가장 많이 사용하는 방식</li>
<li>처음 들어온 MAC 주소를 자동으로 Secure MAC으로 등록</li>
<li>학습한 MAC 주소를 running-config에 기록</li>
<li>장비 교체 시 기존 Sticky MAC 삭제 필요 가능</li>
</ul>
<h3>예시 흐름</h3>
<ol>
<li>PC1 연결</li>
<li>PC1에서 통신 발생</li>
<li>스위치가 PC1의 Source MAC 주소 학습</li>
<li>PC1 MAC 주소를 Secure MAC으로 등록</li>
<li>이후 다른 MAC 주소가 들어오면 위반 처리</li>
</ol>
</section>
<section>
<h2>11. Dynamic MAC</h2>
<p>Dynamic MAC은 스위치가 MAC 주소를 자동 학습하지만 설정에 저장하지 않는 방식</p>
<ul>
<li>자동 학습 방식</li>
<li>running-config에 저장되지 않음</li>
<li>장비 재부팅 후 유지되지 않을 수 있음</li>
<li>실습이나 운영에서는 Sticky MAC 방식이 더 직관적</li>
</ul>
</section>
<section>
<h2>12. Running-config와 Startup-config</h2>
<div class="box">
<p><strong>running-config</strong></p>
<p>→ 현재 장비가 동작 중에 사용하고 있는 설정</p>
<p>→ 지금 적용 중인 설정</p>
<p>→ 재부팅 시 사라질 수 있는 설정</p>
</div>
<div class="box">
<p><strong>startup-config</strong></p>
<p>→ 장비가 부팅될 때 불러오는 저장 설정</p>
<p>→ 재부팅 후에도 유지되는 설정</p>
</div>
<p>Sticky MAC은 학습한 MAC 주소를 running-config에 기록</p>
<p>재부팅 후에도 유지하려면 startup-config로 저장 필요</p>
<pre><code>copy running-config startup-config</code></pre>
<p>또는</p>
<pre><code>wr</code></pre>
<p>의미 → 현재 적용 중인 running-config를 부팅 설정인 startup-config로 저장</p>
</section>
<section>
<h2>13. Violation Mode</h2>
<p>Violation Mode는 허용되지 않은 MAC 주소가 들어왔을 때 스위치가 어떻게 처리할지 정하는 설정</p>
<h3>Protect</h3>
<pre><code>conf t
interface gi1/0
switchport port-security violation protect
end</code></pre>
<ul>
<li>위반 프레임 폐기</li>
<li>로그 없음</li>
<li>위반 카운터 증가 없음</li>
<li>포트는 유지</li>
<li>조용히 버리는 방식</li>
</ul>
<h3>Restrict</h3>
<pre><code>conf t
interface gi1/0
switchport port-security violation restrict
end</code></pre>
<ul>
<li>위반 프레임 폐기</li>
<li>로그 기록</li>
<li>위반 카운터 증가</li>
<li>포트는 유지</li>
<li>관리자가 위반 상황 확인 가능</li>
</ul>
<h3>Shutdown</h3>
<pre><code>conf t
interface gi1/0
switchport port-security violation shutdown
end</code></pre>
<ul>
<li>위반 발생 시 포트를 err-disabled 상태로 전환</li>
<li>기본값</li>
<li>가장 강한 차단 방식</li>
<li>실습에서 결과 확인이 가장 쉬운 방식</li>
</ul>
<div class="box">
<p><strong>Violation Mode 요약</strong></p>
<p>Protect → 조용히 폐기</p>
<p>Restrict → 폐기 + 기록</p>
<p>Shutdown → 포트 차단</p>
</div>
</section>
<section>
<h2>14. Err-disabled 상태</h2>
<p>
Err-disabled는 스위치가 보안 위반이나 오류를 감지해서 포트를 강제로 차단한 상태
</p>
<p>Port-Security에서 violation shutdown 모드 사용 시 발생 가능</p>
<pre><code>show interfaces status err-disabled</code></pre>
<pre><code>show interfaces gi1/0 status</code></pre>
<ul>
<li><strong>connected</strong> → 정상 연결 상태</li>
<li><strong>notconnect</strong> → 장비 미연결 상태</li>
<li><strong>err-disabled</strong> → 보안 위반 또는 오류로 인한 포트 차단 상태</li>
</ul>
</section>
<section>
<h2>15. Err-disabled 수동 복구</h2>
<p>err-disabled 상태가 된 포트는 일반적으로 수동 복구 필요</p>
<pre><code>conf t
interface gi1/0
shutdown
no shutdown
end</code></pre>
<ul>
<li><strong>shutdown</strong> → 포트를 관리자가 직접 내림</li>
<li><strong>no shutdown</strong> → 포트를 다시 활성화</li>
<li><strong>결과</strong> → err-disabled 상태 해제 시도</li>
</ul>
<div class="note">
위반 장비가 계속 연결되어 있으면 복구 후 다시 위반 발생 가능
</div>
</section>
<section>
<h2>16. Err-disabled 자동 복구</h2>
<p>Port-Security 위반으로 err-disabled가 된 포트를 일정 시간 후 자동 복구하는 설정</p>
<pre><code>conf t
errdisable recovery cause psecure-violation
errdisable recovery interval 300
end</code></pre>
<ul>
<li><strong>psecure-violation</strong> → Port-Security 위반으로 인한 err-disabled 복구 대상 지정</li>
<li><strong>interval 300</strong> → 300초 후 자동 복구</li>
</ul>
<pre><code>show errdisable recovery</code></pre>
<h3>자동 복구 후 재위반 여부</h3>
<ul>
<li>자동 복구는 포트를 다시 살리는 기능</li>
<li>Port-Security 정책을 해제하는 기능은 아님</li>
<li>위반 장비가 계속 연결되어 있으면 자동 복구 후 다시 위반 발생</li>
<li>결과 → 다시 err-disabled 상태 전환</li>
</ul>
<h3>예시 흐름</h3>
<ol>
<li>PC1 MAC만 허용된 상태</li>
<li>PC2 연결</li>
<li>Port-Security 위반 발생</li>
<li>포트 err-disabled 전환</li>
<li>300초 후 자동 복구</li>
<li>PC2가 계속 연결된 상태</li>
<li>다시 위반 발생</li>
<li>다시 err-disabled 전환</li>
</ol>
</section>
<section>
<h2>17. Aging</h2>
<p>Aging은 학습된 Secure MAC 주소를 일정 시간이 지나면 삭제하는 기능</p>
<h3>사용 상황</h3>
<ul>
<li>임시 사용자 장비가 자주 바뀌는 환경</li>
<li>기존 MAC 주소 정보를 자동 정리해야 하는 환경</li>
</ul>
<h3>Aging 방식</h3>
<ul>
<li><strong>absolute</strong> → 통신 여부와 상관없이 설정 시간이 지나면 삭제</li>
<li><strong>inactivity</strong> → 일정 시간 동안 트래픽이 없으면 삭제</li>
</ul>
<pre><code>conf t
interface gi1/0
switchport port-security aging time 10
switchport port-security aging type inactivity
end</code></pre>
<p>의미 → 10분 동안 해당 MAC 주소에서 트래픽이 없으면 Secure MAC 정보 삭제</p>
</section>
<section>
<h2>18. Access Port / Trunk Port에서의 사용</h2>
<p>Port-Security는 포트 역할이 명확해야 정상 동작</p>
<p>일반적인 적용 위치 → 사용자 PC가 연결되는 Access Port 중심</p>
<h3>Access Port 설정</h3>
<pre><code>conf t
interface gi1/0
switchport mode access
end</code></pre>
<h3>Trunk Port 설정</h3>
<pre><code>conf t
interface gi1/0
switchport mode trunk
end</code></pre>
<div class="note">
Dynamic Auto 또는 Dynamic Desirable 상태에서는 부적합<br />
포트가 Access로 동작할지 Trunk로 동작할지 자동 협상에 따라 달라질 수 있음<br />
Port-Security 적용 전 포트 모드 고정 권장
</div>
<pre><code>switchport mode dynamic auto
switchport mode dynamic desirable</code></pre>
</section>
<section>
<h2>19. 기본 설정 예시</h2>
<p>Access Port + Sticky MAC + Shutdown 모드 기준</p>
<pre><code>conf t
vlan 10
name USERS
interface gi1/0
switchport mode access
switchport access vlan 10
switchport port-security
switchport port-security maximum 1
switchport port-security mac-address sticky
switchport port-security violation shutdown
no shutdown
end</code></pre>
<h3>명령어 의미</h3>
<ul>
<li><strong>switchport mode access</strong> → Access Port 고정</li>
<li><strong>switchport access vlan 10</strong> → 해당 포트를 VLAN 10에 배치</li>
<li><strong>switchport port-security</strong> → Port-Security 활성화</li>
<li><strong>switchport port-security maximum 1</strong> → 허용 MAC 주소 1개로 제한</li>
<li><strong>switchport port-security mac-address sticky</strong> → 처음 연결된 MAC 주소 자동 학습</li>
<li><strong>switchport port-security violation shutdown</strong> → 위반 시 포트를 err-disabled 상태로 전환</li>
<li><strong>no shutdown</strong> → 포트 활성화</li>
</ul>
</section>
<section>
<h2>20. 상태 확인 명령어</h2>
<pre><code>show port-security
show port-security interface gi1/0
show port-security address
show running-config interface gi1/0
show interfaces gi1/0 status
show interfaces status err-disabled
show errdisable recovery
show logging</code></pre>
<h3>확인 내용</h3>
<ul>
<li>Port-Security 활성화 여부</li>
<li>허용 MAC 주소 수</li>
<li>현재 학습된 MAC 주소 수</li>
<li>Secure MAC 주소</li>
<li>Violation Mode</li>
<li>위반 횟수</li>
<li>포트 상태</li>
<li>err-disabled 상태 여부</li>
<li>인터페이스 설정 내용</li>
<li>자동 복구 설정 여부</li>
</ul>
</section>
<section>
<h2>21. ARP와 ARP Spoofing 설명</h2>
<p>이 부분은 Port-Security 한계 설명에서 사용</p>
<h3>ARP란?</h3>
<ul>
<li><strong>ARP</strong> → Address Resolution Protocol</li>
<li><strong>역할</strong> → IP 주소를 MAC 주소로 변환하는 프로토콜</li>
<li><strong>사용 이유</strong> → 같은 LAN 내부에서 실제 프레임 전달에는 MAC 주소 필요</li>
</ul>
<h3>ARP 동작</h3>
<ol>
<li>PC1이 PC2의 IP 주소는 알고 있지만 MAC 주소는 모르는 상태</li>
<li>PC1이 ARP Request 전송 → “192.168.10.20을 가진 장비의 MAC 주소는 무엇인가?”</li>
<li>ARP Request는 Broadcast로 전송</li>
<li>PC2가 ARP Reply 응답 → “192.168.10.20은 내 IP이고 내 MAC 주소는 BB-BB...”</li>
<li>PC1은 PC2의 IP-MAC 정보를 ARP Cache에 저장</li>
<li>이후 PC1은 PC2의 MAC 주소를 이용해 통신</li>
</ol>
<h3>ARP Spoofing이란?</h3>
<ul>
<li>공격자가 거짓 ARP 정보를 보내 IP-MAC 매핑을 속이는 공격</li>
<li>예시 → 공격자가 “게이트웨이 IP의 MAC 주소는 내 MAC 주소”라고 속임</li>
<li>결과 → 피해자의 트래픽이 공격자 쪽으로 전달될 가능성</li>
</ul>
<h3>Port-Security와의 관계</h3>
<ul>
<li>Port-Security → 포트로 들어오는 Source MAC 주소 제한 기능</li>
<li>ARP Spoofing → ARP 정보 자체를 조작하는 공격</li>
<li>결론 → Port-Security만으로 ARP Spoofing 자체 방어 불가</li>
</ul>
</section>
<section>
<h2>22. Port-Security의 한계</h2>
<p>Port-Security는 MAC 주소 기반 보안 기능</p>
<h3>한계</h3>
<ul>
<li>허용된 MAC 주소를 공격자가 복제하면 우회 가능</li>
<li>MAC Spoofing 공격 자체 탐지 불가</li>
<li>ARP Spoofing 공격 자체 방어 불가</li>
<li>IP 주소 위조 공격 방어 불가</li>
<li>사용자 신원 인증 기능 없음</li>
</ul>
<h3>정리</h3>
<div class="box">
<p>Port-Security → 허가되지 않은 MAC 주소 접속 제한에는 효과적</p>
<p>하지만 → MAC 주소를 속이는 공격에는 한계</p>
<p>ARP 정보를 속이는 공격 자체 방어 불가</p>
<p>IP 정보를 속이는 공격 자체 방어 불가</p>
<p>사용자 신원 인증 기능 없음</p>
</div>
</section>
</div>
</body>
</html>