iptables 읽는 방법을 설명한다.
우선 기본적으로 3개의 체인이 있다. INPUT, OUTPUT, FORWARD
3개 체인이 언제 어떤 용도로 쓰이는지 확인할 필요가 있다.
이전 포스팅을 한번 더 읽고 온다.
만약
# iptables -A INPUT -j DROP
이런 명령어를 친다고 가정해보자
어떻게 해석하면 좋을까?
iptables 는 명령어고 뒤에는 전부 옵션이다
일단 iptables가 나왔으니 iptables 관련된 옵션일 것이다. 너무 당연하다.
다음은 -A 이다. -A는 추가한다는 의미를 가진다.
ADD 인지 APPEND 인지 중요하진 않다. 추가한다는 의미다.
그 다음 INPUT이 나왔네? INPUT 체인에 추가한다는 뜻이 되겠다.
INPUT 체인은 이전 포스트 에서 살짝 흘렸듯 패킷이 내 컴으로 들어오려면 지날 수 밖에 없는 문과 같다.
정확하게 이야기 하면 내 랜카드가 목적지인 패킷은 INPUT 체인 이라는 문을 항상 지나가면서 검사를 받는 것 이다.
그 뒤에 나오는 -j DROP에 대해 설명하자면 다 갖다 버린다는 내용이다.
-j는 여기저기 다른 글을 읽어보면서 보았는데 운명을 결정한다고 해석 해 놨더라
그렇다. 운명을 결정 하는게 맞다.
운명은 DROP으로 결정된다. DROP은 내려놓는다 뭐 영단어 사전 찾아보면 나오는데
자연스럽게 말하면 땅에 쓰레기 버리듯이 내려놓는다. 버린다는 의미이다.
iptables -A INPUT -j DROP
iptables 명령어를 통해 INPUT Chain에 추가를 하는데 패킷을 버리는 규칙(rule, 룰)을 추가한다.
가만 보면 어떤 패킷인지에 관한 내용이 없는데
이렇게 되면 INPUT Chain에서 만나는 패킷 전부를 말한다.
INPUT에서 검사를 받는 패킷은 내 컴으로 들어오는 모든 패킷에 해당된다. 그래서 그런 거다.
지금 아주 간단한 규칙 하나를 놓고 별 내용도 없이 글만 길어 졌는데
다음 포스팅에는 좀 더 어려워 보이는 규칙을 읽어보겠다. 3개 ~ 5개 정도 예를 들어 설명 할건데마음이 아무리 급해도 조금씩 정확하게 알고 넘어 가는게 부담스럽지도 않고 많이 남겨 먹게 되는 건지 아는 만큼
서두르지 말자.
다음 포스팅 때는 좀 더 어려운 예문을 가져와서 읽어보고 옵션도 다시 설명하겠다..
간단하게 옵션을 몇개 적어볼건데 외우지 않아도 무관하다. 여기와서 보면 되니까...( 하다보면 외워지기도 한다. )
-A : 룰을 추가한다.
-L : 여러 체인의 규칙을 보여준다.
-R : 새로운 규칙으로 교체한다.
-D : 규칙을 삭제
-N : 새로운 체인을 만든다.
-X : 체인을 삭제
-P : 기본 정책을 바꾼다.
-F : 체인 안에 들어있는 규칙을 지운다. 골라서 지우는게 아니다 싹 지움.
-Z : 체인 안에있는 모든 규칙들의 패킷과 바이트의 카운터값을 0으로 만든다.
-I (아이) : 새로운 규칙을 삽입한다.
-C : 패킷을 테스트한다.