[보안] IPTABLES 사용법

IPTABLES 사용법

iptables 명령어 실행시 시스템에 적용되는 시기

– iptables 명령어를 실행하면 재부팅하지 않더라도 즉시 시스템에 적용된다.

– iptables -A INPUT -s 0/0 -j DROP를 하면 그 즉시 모든 접속이 차단된다.

– iptables -D INPUT -s 0/0 -j DROP를 하면 그 즉시 접속 차단 명령이 삭제된다.

– iptables -L로 명령어가 시스템에 적용중인지 확인 가능

재부팅시 iptables 내용 보존하여 실행하기

1. 스크립트 파일 만들어서 실행

   1) cd /etc/sysconfig

      – 스크립트파일 만들어질 디렉토리로 이동 (다른 디렉토리에 만들어도 됨)

   2) touch iptablesscript

      – /etc/sysconfig디렉토리에 iptablesscript라는 파일이 생성됨

        (다른 파일명으로 만들어도 됨)

   3) vi /etc/sysconfig/iptablesscript

      – 만들어진 파일을 open

   4) /sbin/iptables -A INPUT -s 100.100.100.100 -j DROP

      /sbin/iptables -A OUTPUT -s 200.200.200.200 -j ACCEPT

      – 실행하고자 하는 내용을 입력

      – 맨 윗줄에 #! /bin/bash나 맨 아랫줄에 exit 0는 입력할 필요 없음

   5) chmod 700 iptablesscript

      – 실행가능한 파일로 속성을 변경

   6) vi /etc/rc.d/rc.local

      – 재부팅시 자동으로 실행되는 내용이 들어가도록 하는 rc.local파일을 open

   7) /etc/sysconfig/iptablesscript

      – rc.local파일의 맨 아랫줄에 입력

   8) 재부팅

2. /etc/rc.d/rc.local 파일에 직접 기록

   /sbin/iptables -A INPUT -s 100.100.100.100 -j DROP

   /sbin/iptables -A OUTPUT -s 200.200.200.200 -j ACCEPT

   위 두줄을 /etc/rc.d/rc.local파일 맨 아랫줄에 직접 입력

   (파일에 직접 기록하는 방식은 다른 자동 실행 파일이 있는 경우 혼동

    가능성이 있으므로 스크립트 파일로 만드는 것이 좋음)

iptables -A INPUT -s 200.200.200.1 -j DROP

200.200.200.1 이라는 source IP(-s)로부터 오는(INPUT) 모든 패킷을

막는(DROP) 규칙을 추가(A)한다.

* ACCEPT  : 패킷을 허용

* DENY    : 패킷을 허용하지 않는다는 메시지를 패킷을 보낸 PC에 돌려보냄

* DROP    : 패킷을 허용하지 않으며, 허용하지 않는다는 메시지 자체도 안보냄

* REJECT  : match된 경우 ——– 거절한다는 에러 메시지를 돌려보냄

            match되지 않은 경우 – DROP과 동일한 작동을 함

* INPUT   : 내가 외부의 패킷을 받을지 결정

          : INPUT을 막을 경우 외부에서 나한테 패킷을 보낼 수 없음

* OUTPUT  : 내가 외부에 패킷을 보낼지 결정

          : OUTPUT을 막을 경우 내가 외부에 패킷을 보낼 수 없음

* FORWARD : 내가 받을 패킷을 어디로 RELAY할지 결정

iptables -A INPUT -p tcp –sport 25 -j ACCEPT

25번이라는 source포트(–sport)에서 오는(INPUT) protocol이(-p) tcp인 모든 접속을

허락하는(ACCEPT) 규칙을 추가(A)한다.

iptables –A INPUT –s 200.200.200.1 –p tcp –destination-port telnet –j DROP

200.200.200.1 이라는 source IP(-s)로부터 오는(INPUT) protocol이(-p) tcp이고

목적지 port(–destination-port)가 telnet인 패킷의 접속을 막는(DROP) 규칙을

추가(A)한다.

iptables -A INPUT -i eth1 -s 192.168.1.0/24 -d 0/0 -j ACCEPT

192.168.1.0/24라는 source IP(-s)로부터 오는(INPUT)

서버안으로 들어오는 인터페이스(-i)가 eth1이고 destination IP(-d)가

어떤 IP라도(0/0) 접속을 허락하는(ACCEPT) 규칙을 추가(A)한다.

(서버자체에 대한 접속이 아니라 마스커레이딩등을 이용하여 랜카드 두 개를

장착한 경우 eth1에 연결된 내부 PC에서 외부로의 접속 허용)

* 0/0 : 모든 IP가 해당 (/뒤의 숫자는 서브넷마스크를 의미함)

  /8  = /255.0.0.0  (/8이나 /255.0.0.0 중 어느 것을 입력해도 같음)

  /9  = /255.128.0.0

  /18 = /255.192.0.0

  /24 = /255.255.255.0

  /27 = /255.255.255.224

  /28 = /255.255.255.240

  /29 = /255.255.255.248

  /30 = /255.255.255.252

* ‘/’다음에 숫자가 올 경우 비트가 1로 채워진 갯수를 의미하는데 /24인 경우

  왼쪽에서 24개의 비트가 1이다.

(11111111.11111111.11111111.00000000 = 255.255.255.0)

  따라서 192.168.1.0/24 는 192.168.1.0/255.255.255.0과 같다

iptables -A INPUT –p tcp –destination-port telnet –i ppp0 –j DROP

protocol이(-p) tcp이고 목적지 port(–destination-port)가 telnet이며,

서버안으로 들어오는 인터페이스(-i)가 ppp0인 패킷의 접속을 막는(DROP) 규칙을

추가(A)한다.

iptables -A INPUT -p icmp –icmp-type echo-request -j REJECT

iptables -A INPUT -p icmp –icmp-type 8 -j REJECT

protocol이(-p) icmp이고 icmp 의 type이 echo-request인 패킷이 오는(INPUT) 것을

거절하는(REJECT) 규칙을 추가(A)한다.

(외부에서의 ping을 거절하는 방

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

페이스북/트위트/구글 계정으로 댓글 가능합니다.