ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Linux iptables 설정
    시스템 2020. 3. 20. 14:52
    반응형

    리눅스 운영체제 iptables에 기반한 방화벽 설정 방법

    1. 기본 동작

    패킷에 대한 동작은 위에서부터 차례로 각 규칙에 대해 검사하고, 그 규칙과 일치하는 패킷에 대하여 타겟에 지정한 ACCEPT, DROP등을 수행합니다. 규칙이 일치하고 작업이 수행되면, 그 패킷은 해당 규칙의 결과에 따리 처리하고 체인에서 추가 규칙을 무시합니다. 패킷이 체인의 모든 규칙과 매치하지 않아 규칙의 바닥에 도달하면 정해진 기본정책(policy)이 수행됩니다. 기본 정책은 policy ACCEPT, policy DROP 으로 설정할 수 있습니다. 일반적으로 기본정책은 모든 패킷에 대해 DROP을 설정하고 특별히 지정된 포트와 IP주소등에 대해 ACCEPT를 수행하게 만듭니다.

    1. iptables 설치

    1) 설치

    # rpm -qa | grep iptables

      iptables-1.4.7-9.el6.x86_64

      iptables-ipv6-1.4.7-9.el6.x86_64  (ipv6용)

    # yum -y install iptables (설치)

     

    2) 설치 상태 확인

    # chkconfig –list

      netconsole      0:해제  1:해제  2:해제  3:해제  4:해제  5:해제  6:해제

      network         0:해제  1:해제  2:해제  3:해제  4:해제  5:해제  6:해제

     

    3) 서비스 시작프로그램 등록 및 시작

    # chkconfig iptables on (시작프로그램 등록)

    # service iptables start (서비스 시작)

     

    1. iptables 설정 (CentOS 6.4 기준)

    1) 기본 설정

    기본 정책 변경

    규칙에 명시되지 않은 패킷에 대한 처리를 어떻게 할 것 인지에 대한 기본정책을 수립합니다.

    # iptables -P INPUT REJECT  // INPUT 체인에 대한 기본 정책을 REJECT로 변경

    # iptables -P INPUT ACCEPT  // OUTPUT 체인에 대한 기본정책을 ACCEPT로 변경

    # iptables -P FORWAD DROP  // FORWAD 체인에 대한 기본정책을 DROP으로 변경

     

    체인에 정의된 모든 규칙 삭제

    # iptables -F

    # iptables -F INPUT // INPUT 체인의 모든 규칙 삭제

    # iptables -F OUTPUT // OUTPUT 체인의 모든 규칙 삭제

    # iptables -F FORWAD // FORWAD 체인의 모든 규칙 삭제

     

    iptables 설정 변경 값 저장 및 서비스 재시작

    [저장]

    # service iptables save

    [재시작]

    # service iptables stop

    # service iptables start

     

    1. INPUT 체인

    localhost 인터페이스에 들어오는 모든 패킷을 허용하는 규칙 생성합니다. 서버의 서비스를 위해 서버의 S/W와 localhost 어댑터와의 통신은 모두 허용하는 것이 일반적인 설정입니다.

    # iptables -A INPUT -i lo -j ACCEPT

    # iptables -A INPUT -i lo -j ACCEPT

    # iptables -L    ( INPUT 체인에 규칙이 생성된 것이 확인됨 )

    Chain INPUT (policy ACCEPT)

    target     prot opt source               destination

    ACCEPT     all  —  anywhere             anywhere

     

    INPUT 체인

    state 모듈과 매치되는 연결상태가 ESTABLISHED, RELATED인 패킷에 대해 허용 규칙 생성합니다. INPUT 체인 접속에 속하는 패킷 (응답 패킷을 가진 것)과 기존의 접속은 아니지만 연관성을 가진 패킷 ( ICMP 에러나 ftp데이터 접속을 형성하는 패킷)을 허용하는 규칙입니다.

    # iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

    [root@localhost ~]# iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

    [root@localhost ~]# iptables -L

    Chain INPUT (policy ACCEPT)

    target     prot opt source               destination

    ACCEPT     all  —  anywhere             anywhere

    ACCEPT     all  —  anywhere             anywhere             state RELATED,ESTABLISHED

     

    2) 포트별 규칙 생성 및 삭제

    기본명령 기능 체인 출발지 IP 목적지 IP 프토토콜 포트 매칭 동작
    iptables -A (추가) INPUT -s -d -p –dport -j ACCEPT
    -D (삭제) OUTPUT tcp 0~65535 DROP
    -I (삽입) FORWAD udp REJECT
    icmp

     

    1. 규칙의 생성의 예시
    iptables -A INPUT -p tcp –dport 80 -j ACCEPT

    외부에서 모든 목적지의 tcp/80 포트로의 접근을 허용합니다.

     

    iptables -A INPUT -d 192.168.10.10 -p tcp –dport 22 -j DROP

    외부 모든 출발지에서 내부 192.168.10.10 목적지 서버의 tcp/80 포트로의 접근을 차단합니다.

     

    iptables -A INPUT -s 222.111.222.111 -d 192.168.10.10 -p tcp –dport 53 -j ACCEPT

    222.111.222.111 출발지 에서 내부 192.168.10.10 목적지 서버의 tcp/53번 포트로의 접근을 허용합니다.

     

    iptables -A OUTPUT -s 192.168.10.10 -d 222.222.222.222 -p tcp –dport 80 -j ACCEPT

    내부IP 192.168.10.10에서 222.222.222.222 목적지 IP로 tcp/80번 포트로의 접근을 허용합니다.

     

    1. 규칙의 삽입

    일반적으로 방화벽의 규칙은 위에서 아래의 순서로 적용되기 때문에 순서가 매우 중요하며, 실제로 정책 추가 만큼 삽입도 자주 이용되는 생성 방식입니다.

    iptables -I INPUT 1 -s 111.111.111.111 -p tcp –dport 2000 -j ACCEPT

    INPUT 체인의 1번째 위치에 출발지 111.111.111.111에서 내부 모든 목적지의 tcp/2000를 오픈하는 규칙입니다.

     

    1. 규칙의 삭제
    # iptables -D INPUT 4

    4번째 라인의 규칙을 삭제합니다.

     

    # iptables -D INPUT -p –dport 443 -j ACCEPT

    INPUT 체인에 내부 모든 서버의 tcp/443을 허용한 정책을 삭제합니다.

     

    1. iptables 출력
    # iptables -L                  // 기본 출력

    # iptables -nL                 // 상세한 네트워크 정보까지 모두 출력

    # iptables -nL –line-numbers   // 룰셋의 적용 순서 까지 확인

    # iptables -L -v                // 적용된 룰셋을 통한 인입 패킷 및 bytes 출력

    반응형

    '시스템' 카테고리의 다른 글

    관계형 데이터베이스에서 조인(join)이란?  (0) 2020.05.26
    Docker Volume을 활용한 Data 관리  (0) 2020.03.30
    Docker Volume  (0) 2020.03.20
    우분투 ipv6 비활성화  (0) 2020.01.02
    리눅스 패킷 Overrun  (0) 2019.12.18
Designed by Tistory.