ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ubuntu] iptables 명령어 정리
    CI-CD/Ubuntu 2022. 6. 10. 23:48
    반응형

    Iptables란?

    iptables란 ip를 관리 하는 table이다. 그냥 방화벽을 설정하는 것이라고 보면 되는데, 방화벽 설정할 때 우리는 어떤 포트를 접근을 할 것인지, 어떤 포트는 막을 것인지 어디서 들어오는지 관리하고 접근 권한을 주는 것을 세부적으로 관리할 수 있게 도와준다. 요약하자면 아래로 요약할 수 있다.

    • 리눅스 패킷 필터링 도구로 방화벽 구성이나 NAT에 사용함
    • 패킷의 헤더를 보고 전체의 패킷을 인지 한다음 제어하는 역할을 함
    • 패킷의 수락 차단 라우팅 포워딩을 도와주는 역할을 함

    iptables 기본 명령어

    # iptables [-t table] [action] [chain] [matches] [-j target]
    

    table

    • filter, nat, mangle, raw가있으며 주로 사용하는 필터링 규칙에는 filter테이블을 사용한다.
    • 생략하게 되면 자동으로 filter로 적용된다.

    action - 정책을 어떻게 할지 정하는 것 , 정책 추가, 삭제, 변경 등

    • -A(—append) : 새로운 정책 추가
    • -I(—insert) : 위치를 선택하여 정책을 삽입
    • -D(—delete) : 정책을 삭제합니다.
    • -R(—replace) : 정책을 교체합니다.
    • -F(—flush) : 체인으로부터 모든 정책 삭제합니다.
    • -P(—policy) : 기본 정책을 설정합니다.
    • -L(—list) : 정책 목록을 확인합니다.

    chain - 체인이란 패킷에 대한 정보를 라우팅을 해주는 방법을 정하는 것

    • INPUT : 호스트(서버) 컴퓨터를 향한 모든 패킷(서버로 들어오는 패킷은 Input Chain을 통과)
    • OUTPUT : 호스트(서버) 컴퓨터에서 발생하는 모든 패킷(서버에서 나가는 패킷을 output chain을 통과)
    • FORWARD : 호스트(서버) 컴퓨터가 목적지가 아닌 모든 패킷, 즉 라우터로 사용되는 호스트 컴퓨터를 통과하는 패킷

    matches - 출발지와 목적지를 매칭해주는 방법을 정하는 것

    • -s(—source, —src) : 출발지 매칭, 도메인, IP 주소, 넷마스크 값을 이용하여 표기
    • -d(—destination, —dst) : 목적지 매칭, 도메인, IP주소, 넷마스크 값을 이용하여 표기
    • -p : 프로토콜과 매칭, TCP, UDP, ICMP와 같은 이름을 사용하고 대소문자는 구분하지 않음
    • -i(—in-interface) : 입력 인터페이스와 매칭
    • -o(—out-interface) : 출력 인터페이스와 매칭
    • -j(—jump) : 매치되는 패킷을 어떻게 처리할지 지정
    • -f(—fragment) : 분절된 패킷
    • —sport : 송신지 포트와 매칭
    • —dport : 수신지 포트와 매칭

    -j target - 패킷이 규칙과 일치하르 대 취하는 동작을 지정합니다.

    ACCEPT : 패킷을 허용합니다.

    DROP : 패킷을 버립니다.

    REJECT : 패킷을 버리고 이와 동시에 적절한 응답 패킷을 전송합니다.

    LOG : 패킷을 syslog에 기록합니다.

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

    iptables 설치

    1. yum을 이용해 설치해 줍니다.
    # yum install -y iptables-services
    
    2. iptables를 실행해 줌
    # systemctl start iptables
    
    3. 재부팅 시에도 자동으로 실행되도록 서비스를 등록 
    # systemctl enable iptables
    

    iptables 데몬 제어 명령어

    1. 실행
    # systemctl start iptables
    # service iptables start
    
    2. 중지
    # systemctl stop iptables
    # service iptables stop
    
    3. 재시작
    # systemctl restart iptables
    # service iptables restart
    
    4. 상태 확인
    # systemctl status iptables
    # service iptables status
    
    5. 정책 저장
    # service iptables save
    

    Linux 내부에 구동중인 포트 확인

    포트 검색하기 
    netstat -nap 
    
    특정 포트 검색하기
    netstat -nap | grep :80
    

    PREROUTING 내용 확인

    포트 모든 내용 확인 
    sudo iptables -nL -t nat
    
    포트 PREROUTING 번호로 확인
    sudo iptables -nL PREROUTING -t nat --line-numbers
    
    포트 내용 삭제
    sudo iptables -t nat -D PREROUTING {number}
    

    포트 허용(ACCEPT)

    # sudo iptables -nL
    
    포트 22, 80, 443, 53, 25 허용
    # sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    # sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    # sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
    # sudo iptables -A INPUT -p udp --dport 53 -j ACCEPT
    # sudo iptables -A INPUT -p tcp --dport 25 -j ACCEPT
    
    INPUT chain 기본 정책 차단으로 변경
    # sudo iptables -p INPUT DROP
    
    서비스 저장 재시작
    # sudo service iptables save
    # sudo service iptables restart
    
    정책 리스트 확인
    # sudo iptables - nL
    Chain INPUT (policy DROP)
    target     prot opt source               destination
    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80
    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:443
    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:53
    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:25
    
    Chain FORWARD (policy DROP)
    target     prot opt source               destination
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination
    

    포트 차단(DROP)

    INPUT chain 기본 정책 허용으로 변경
    # iptables -P INPUT ACCEPT
    
    설정한 정책을 모두 삭제 합니다.
    # iptables -F
    
    포트 80, 443 차단
    # iptables -A INPUT -p tcp --dport 80 -j DROP
    # iptables -A INPUT -p tcp --dport 443 -j DROP
    
    # iptables -nL
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination
    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80
    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:443
    
    Chain FORWARD (policy DROP)
    target     prot opt source               destination
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination
    

    정책 삭제(-D)

    정책 등록 하는 법 -A 옵션

    정책 삭제 하는 법 -D 옵션

    # 정책 조회 포트 80, 443 허용 상태
    $ iptables -nL
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination
    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80
    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:443
    
    Chain FORWARD (policy DROP)
    target     prot opt source               destination
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination
    
    # 등록한 정책 삭제 
    $ iptables -D INPUT -p tcp --dport 80 -j DROP
    $ iptables -D INPUT -p tcp --dport 443 -j DROP
    
    $ service iptables save
    
    $ service iptables restart
    
    $ iptables -nL
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination
    
    Chain FORWARD (policy DROP)
    target     prot opt source               destination
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination
    반응형

    댓글

Designed by Tistory.