리눅스보안의 핵심 iptables에 대해 총정리 해보자

Author : Mintfrappe / Date : 2017. 1. 30. 01:15 / Category : 서버/리눅스

안녕하세요 화이트해커 모찌입니다.


오늘은 리눅스보안의 시작이라 할 수 있는 iptables에 대해 알아보려고 하는데요.


iptables는 컴퓨터보안을 위해서 특히 리눅스보안을 위해서

가장 중요한 요소 중에 하나라고 할 수 있습니다.


리눅스 시스템 자체에 내장되어있는 경우가 대부분이고

혹 직접 설치해야 하는 경우도 있지만,

기본적으로 방화벽과 더불어 규칙을 통해 패킷의 이동을

통제하는 리눅스보안의 핵심요소이기 때문입니다.


최근에는 개인웹사이트 운영에 있어서도 웹서버를 운용하는 경우에는

해킹을 막기 위한 기본 조치로서도 행해지고 있습니다.



리눅스보안의 핵심 iptables에 대해 총정리 해보자





iptables는 리눅스 방화벽이 제공하는 테이블과 그것을 저장하는 체인,

규칙을 구성하게 해주는 응용프로그램이라고 설명할 수 있습니다.


기본적으로 루트 root 권한으로 동작하게 되어있는데요.

타 계정으로는 직접적인 제어가 불가능 하겠습니다.


저 또한 잘 몰랐을 시절, 사용자 계정으로 원격접속해서 iptables에 접근하지 못해 애를 먹었던 경험이 있기도 합니다 ㅎㅎ


기본적으로 설치되는 디렉토리는 /usr/sbin/iptables입니다.

rpm을 풀면 자동으로 해당 디렉토리에 설치됩니다.



다음으로 리눅스보안의 핵심요소 iptables에 대해 이야기 하자면

체인을 빼놓을 수 없습니다.


체인은 패킷의 성격에 대한 정의라고도 할 수 있는데요.

무엇으로 설정하냐에 따라 시스템에서 자체 생성하는 패킷이 될 수도,

외부에서 들어오는 패킷이 될 수 도 있습니다.


[체인의 종류]

- PREOUTING : 라우팅 결정 만들어지기 전에 패킷이 들어가는 체인

- INPUT : 로컬 리눅스 시스템이 목적지인 패킷에 적용되는 체인

- OUTPUT : 시스템 자체가 생성하는 패킷위해 예약한 체인

- FORWARDING : 리눅스 시스템을 통과하는 패킷을 관리하는 체인

- POSTROUTING : 커널 내부에서 IP 라우팅 계산 수행 후

패킷 헤더를 수정하기 위한 체인



다음으로 이야기 해볼 건 '매치'입니다.


매치는 모든 iptables 규칙은 타겟과 함께 규칙을 따르는 패킷을 어떻게 처리할 지 iptables에게 알려주는 매치를 가진다는 점에서 그 의의가 있습니다.


사실 실질적인 패킷 규칙을 선언함에 있어 핵심요소라고 생각하지면 되겠습니다.


[중요 매치]

--sourse(-s) : 출발지 IP 주소나 네트워크를 의미

--destination(-d) : 목적지 IP 주소나 네트워크를 의미

--protocol(-p) : 특정 프로토콜 자체를 의미

--in-interface(-i) : 입력 인터페이스 (ex. eth0)

--out-interface(-o) : 출력 인터페이스

--state : 연결 상태와의 매칭

--string : 어플리케이션 계층 데이터의 바이트 순서와의 매칭

--comment : 주석, 커널 내의 메모리 규칙과 연계되는 최대 256 byte 까지 만들 수 있는 주석


사실 주로 매치를 적용함에 있어서 풀네임을 다 사용하기 보단, 뒤에 있는 약자를 쓰는 경우가 대부분이니 약자를 외워두는 편이 유리할 것입니다.



다음 이야기 해볼 것은 '타겟'입니다.

패킷과 규칙이 일치할 경우 동작을 취하는 부분인 타겟에 대해 이해가 필요합니다.


리눅스보안 확보를 위해 iptables에서는 타켓을 통해 규칙의 최종 명령을 내립니다.


[중요 타겟]

- ACCEPT : 패킷이 본래 라우팅대로 진행

- DROP : 패킷을 버린다 (그 뒤 별도의 패킷을 보내거나 조치 하지 않음)

- LOG : 패킷을 syslog에 기록

- REJECT : 패킷을 버리는 것은 DROP과 동일하지만, 그 뒤에 별도의 응답 패킷을 보낸다는 점에서 차이가 있다.

- RETURN : 호출체인 내에서 패킷처리를 계속 진행한다.



다음 이야기 할 것은 리눅스보안 iptables의 설치입니다.


설치를 위해서 yum 명령어를 사용하면 편리하게 다운 받을 수 있습니다.


> yum -y install iptables  (iptables 설치, 묻는 질문에는 yes)

> chkconfig iptables on (iptables 사용하도록 설정)


위와 같은 과정을 거치면 설치가 다 끝나게 되고 이제 프로세스 시작을 해야겠죠?


> services iptables start


위와 같이 입력하면 iptables 프로세스가 시작됩니다.



다음은 Iptables의 문법입니다.

iptables에 적용되는 문법은 기본적으로 크게


iptables / 테이블 / 체인 / 룰설정 / 정책지정


이와 같이 구분할 수 있습니다.


사용하는 것이 어렵다면


>iptables -h

를 입력해서 도움말을 확인할 수 있습니다.


>iptables --list

를 통해 현재 작성된 룰 목록 또한 확인할 수 있습니다.




다음은 룰 설정입니다.


중요한 것은 룰 설정에 있어 순서입니다.

앞쪽 체인의 룰이 우선한다고 생각하시면 되겠습니다.


-A : append, 해당 체인에 마지막 룰 추가

-I : insert, 해당 체인 첫행에 룰 추가

-D : delete, 행 번호 지정하여 룰 삭제

-F : flush, 해당 체인의 모든 룰 삭제

-R : replace, 행번호 지정하여 룰 치환

-P : policy, 기본정책 설정, 해당 체인의 모든 룰에 매칭되지 않으면 적용

-p : 프로토콜 지정 (tcp, udp, icmp 등)

-s : 출발지의 주소, 지정 안하면 any ip

-d : 목적지 주소, 지정안하면 any ip

--sport : 출발지 포트

--dport : 목적지 포트

-i : 입력인터페이스

-o : 출력인터페이스


위와 같이 옵션을 사용하는 것처럼 이용하시면 되겠습니다.




[정책지정]


다음은 정책 지정입니다.

-j 옵션을 이용하여 정책 또는 타겟 체인 지정이 가능합니다.




[iptables 룰 적용방법]


1. 명령어를 통한 입력이 가능합니다.

   앞에 iptables라는 명령어를 친 후에 뒤는 2번과 동일하게 입력하시면 됩니다.

   (입력후에도 service iptables save로 저장)

2. /etc/syslog/iptables를 편집기로 열어 내용 직접 수정도 가능합니다.

   이때 체인 간의 우선 순위에 대해 확실히 알고 적당한 위치에 작성해야 합니다.





[사용예시]


마지막은 실전입니다.

실제 사용 예제를 가져와 보았습니다.


실전 연습!

① 출발지 주소가 192.168.0.111 인 모든 포트 접속 차단

→ iptables -A INPUT -s 192.168.0.111 -j DROP


② 목적지 포트가 3838, 그리고 tcp 패킷 거부

→ iptables -A INPUT -p tcp --dport:3838 -j DROP


③  localhost 접속허가

→ iptables -A INPUT -i lo -j ACCEPT (lo는 로컬 호스트)


④ ESTABLISH와 RELATED 상태 접속 허가

→ iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


⑤ Null 패킷 막기

→ iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP



지금까지 리눅스보안의 핵심 iptables 에 대해 알아보았습니다.

저도 처음 공부할 때 iptables에 대해 자세하게 정리된 곳이 없어 자료를 찾느라 애먹었는데요.

여기에 거의 모든 내용을 담았으니, 위의 내용을 숙지하시면

iptables를 운용하는데 큰 지장은 없을 것입니다.


정보보안 전문가로 가는 길은 멀지 않습니다.

그날을 위해 오늘도 전진합시다~!



Notices

Search

Recent

Archives

Statistics

  • Total :
  • Today :
  • Yesterday :
04-23 23:51

Blog Information

Mintfrappe

제대로 배우지도 못한 채 실무에 던져진 모든 이들을 위해 내가 하는 일에 대해 제대로 알고 싶다! 하는 이들을 위해 우리 함께 배워볼까요?

Calendar

«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Copyright © 화이트해커 모찌 블로그 All Rights Reserved
Designed by CMSFactory.NET

티스토리 친구하기