iptables 개념과 설치 | iptables 명령어

공정위 광고 문구 Ver 3.1
공정위 광고 문구 Ver 3.2(모바일 전용)

iptables는 netfilter.org에서  C언어로 만들어진 패킷 필터링이며 무료 방화벽 서비스입니다. 리눅스 방화벽의 기본 정책은 필요한 것을 제외한 모든 패킷에 대해 거부하는 것이 방화벽의 기본 정책입니다.

기본 설치 명령어는 다음과 같습니다.

# CentOS
yum -y install iptables-services
# Rocky Linux
dnf install iptables-services iptables-utils
# 리눅스 부팅 시 활성화 
systemctl enable iptables 
  • 활성화 비활성화
  • enable, disable
  • 시작, 중지, 재시작
  • start, stop, restart

기본 룰 설정 옵션은 다음과 같습니다.

iptables -[명령어 옵션] [체인명] [Match] [정책(target)]

Ⅰ. iptables 용어와 기본

iptables에서는 체인[Chain]이라고 불리는 규칙[Rule]으로 패킷 필터링[Packet Filtering]을 하며, 패킷[Packet]에 대해 허용할 것인지 거부할 것인지를 정하게 됩니다. 여기에서 Chain이 패킷 필터링을 하는 게 아닌 패킷 필터링은 커널에 탑재된 NetFilter 기능으로 작동하며, Chain은 패킷 필터링을 가능하게 하는 룰 셋 구축을 한다는 것이 됩니다.

패킷 필터링은 네트워크에서 데이터를 전송하는 패킷들을 분석하여 일부 패킷을 차단하거나 허용하는 것으로 보통 패킷은 해더와 데이터를 가지고 있다고 보며, 패킷의 헤더를 확인하여 패킷의 차단 여부를 결정 짓게 됩니다. 


Chain은 서버로 들어오기 전에 설정한 방화벽 룰이라 결론 지을 수 있습니다.

  • 패킷과 패킷 필터링
  • 패킷[Packet]: 네트워크를 통해 전송되는 데이터의 작은 조각을 뜻함.
  • 패킷 필터링[Packet Filtering]이 패킷의 혜더 정보를 보고 허용,거부 등을 결정
iptables -[명령어 옵션] [체인명] [Match] [정책(target)]
# 처음 설치 시 설정 된 옵션 중 하나인 22번 포트
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

기본 명령어에서 보면 체인(chain), Match, 정책(target)으로 구성 된 것을 확인할 수 있습니다.

1. 체인(chain)

iptables의 filter 테이블에 미리 정의된 세 가지의 체인이 존재하는데 이는 INPUT, OUTPUT, FORWARD입니다. 이 체인들은 네트워크 트래픽(IP 패킷)에 대하여 정해진 규칙들을 수행합니다.

  • chain
  • INPUT Chain : 외부에서 호스트 서버로 향하는 패킷을 필터링 합니다.
  • INPUT Chain : 외부에서 호스트 서버로 향하는 패킷을 필터링 합니다.
  • FORWARD Chain : 호스트 서버가 목적지가 아닌 패킷,라우터로 사용되는 호스트 컴퓨터를 통과하는 패킷입니다.

♣ 체인(chain) 명령어 옵션

처음 iptables 설치 시 기본 설정 된 22번 포트의 설정 값입니다.

  • 처음 iptables 설치 시 기본 설정 된 22번 포트의 설정 값입니다.
  • 추가된 정책(-A)은 기본 정책(-p)이 tcp 프로토콜이라는 의미를 확인하면서 체인(chain) 설정을 확인할 수 있습니다.
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

2. 매치(Match)

패킷을 처리할 때 만족해야 하는 조건들입니다. 조건에 일치하는 패킷만 적용됩니다.

  • match (-m) : 특정 모듈과의 매치
  • iptables -A INPUT -p tcp -m state –state NEW -m tcp –dport 22 -j ACCEPT
  • [-명령어 옵션] [체인명] [Match]
  • 매치 옵션

3. -m state 확장 모듈

-m state 모듈의 4가지 설정 값(NEW, ESTABLISHED, RELATED, INVALID)이 있습니다.

  • -m state 모듈 값
  • NEW : 이전에 없던 패킷의 새로운 첫 연결 요청이 Client PC로부터 들어오는 패킷을 의미.
  • ESTABLISHED(:설립,확립된) : NEW 상태를 거친 이후의 패킷 / 새로운 연결 요청에 관한 그 후의 패킷들이 오고가는 상태를 의미.
  • RELATED(:관련,관계있는) : 새로운 연결 요청이지만, 기존의 연결과 관련된 패킷을 의미. (FTP 데이터 전송, ICMP 에러 전송 등)
  • INVALID(:유효하지 않은,무효로) : 이전 상태 중에 어떠한 것도 적용되지 않으면 패킷의 상태를 INVALID로 표시. (결론: 비정상적인 접근)
  • match (-m) : 특정 모듈과의 매치
  • iptables -A INPUT -p tcp -m state –state NEW -m tcp –dport 22 -j ACCEPT
  • [-명령어 옵션] [체인명] [Match][-m state 확장 모듈]

4. 정책(target)

들어오는 패킷에 대한 정책입니다.

  • ACCEPT : 패킷을 허용함.
  • DROP : 패킷을 버림.(패킷이 전송된 적이 없던 것처럼)
  • REJECT : 패킷을 버리고 이와 동시에 적절한 응답 패킷을 전송함.
  • LOG : 패킷을 syslog에 기록
  • RETURN : 호출 체인 내에서 패킷 처리를 계속 진행함.
  • match (-m) : 특정 모듈과의 매치
  • iptables -A INPUT -p tcp -m state –state NEW -m tcp –dport 22 -j ACCEPT
  • iptables [-명령어 옵션] [체인명] [Match][-m state 확장 모듈] [정책(target)]

5. vi/etc/sysconfig/iptables

iptables [-명령어 옵션] [체인명] [Match] [정책(target)]와 같은 방법으로 명령어를 입력하고 재시작 하는 방법도 있지만 개인적으로 /etc/sysconfig/iptables 경로에서 수정 후 재시작을 하는 것을 선호합니다. 설정된 목록을 보면서 할 수 있기 때문입니다.

vi /etc/sysconfig/iptables

Ⅱ. iptables 시스템 관리 명령어


♣ 시스템 관리 명령어 예시

~]# iptables -L
ACCEPT     tcp  --  180.69.0.177         anywhere            tcp dpts:40001:40103 state NEW,ESTABLISHED 
ACCEPT     tcp  --  180.69.0.177         anywhere            tcp dpt:7774 state NEW,ESTABLISHED 
ACCEPT     tcp  --  180.69.0.177         anywhere            tcp dpts:40001:40103 state NEW,ESTABLISHED 
~]# iptables -nvL
0   0 ACCEPT     tcp  --  *    *  180.69.0.177 0.0.0.0/0   tcp dpts:40001:40103 state NEW,ESTABLISHED 
0   0 ACCEPT     tcp  --  *    *  180.69.0.177 0.0.0.0/0   tcp dpt:7774 state NEW,ESTABLISHED 
0   0 ACCEPT     tcp  --  *    *  180.69.0.177 0.0.0.0/0   tcp dpts:40001:40103 state EW,ESTABLISHED 
0   0 ACCEPT     tcp  --  *    *  180.69.0.177 0.0.0.0/0   tcp dpt:7774 state NEW,ESTABLISHED 

Ⅲ. 기본 설정

Ⅳ. 포트 및 IP 설정 방법

Ⅴ. 룰 명령어

핸드폰 안의 리눅스

ℹ️ 제휴 안내
본 사이트의 콘텐츠에는 제휴 링크가 포함되어 있습니다. 방문자가 이 링크를 통해 상품 또는 서비스를 구매하면 본 사이트는 판매처로부터 수수료를 지급받습니다. 이 과정에서 구매자가 지불하는 금액(이벤트 할인 시 금액이 내려갑니다↓)은 오르지 않습니다. 게시된 가격·할인·재고 정보는 작성 시점 기준이며 실제와 다를 수 있으므로, 구매 전 판매처에서 최종 확인하시기 바랍니다. 상품 선정과 평가는 자체 기준에 따라 작성되며, 수수료 지급 여부가 소개 순서나 평가 내용에 영향을 주지 않습니다.

Similar Posts

  • Apache http2 적용하기(mod_http2)

    리눅스 서버에 Apache를 설치하게 되면, 기본 프로토콜은 HTTP/1.1을 기본으로 통신하게 되어 있다. Apache http2는 Apache 2.4.17 버전 부터 DSO 모듈로(mod_http2.so) HTTP/2를 지원한다. HTTP/2(Hypertext Transfer Protocol Version 2)는 월드 와이드 웹에서 쓰이는 HTTP 프로토콜의 두 번째 버전이다. Apache http2 적용 http2 적용 확인하기 크롬 개발자 도구에서 프로토콜을 확인하면 [h2]로 적용된 걸 확인할 수 있다….

  • 리눅스 셸 환경(Shell Environment) 정의 및 이해와 쉘 환경변수 | Shell 시작 파일 2가지

    셸 세션을 이용해서 서버와 상호 작용을 할 때 해당 동작과 리소스에 대한 연결을 결정하기 위해 컴파일 하는 많은 정보가 있습니다. 이러한 서정 중 일부는 구성 설정에 포함되어 있으며, 다른 설정은 사용자 입력에 의해 결정됩니다. 리눅스 셸 환경은 셸의 구성 설정과 사용자 입력에 의해 결정된 설정을 유지관리 영역을 이용해 관리하는 가장 일반적인 방법을 이용하게…

  • 리눅스 명령행 인자(Command-Line Argument)와 명령어 옵션

    ‘리눅스 명령행 인자(Command-Line Argument)‘는 ‘리눅스 명령어 인수‘, ‘명령 인자‘ 등으로도 불리며, 리눅스 커맨드 라인에서 명령어를 실행할 때 프로그램에 전달하는 매개변수를 뜻 합니다. 리눅스에서 “매개변수(Parameters)”는 일반적으로 프로그램이나 함수에 전달되는 값을 가리킵니다. 이 값은 해당 프로그램이나 함수가 실행될 때 필요한 입력 값으로 사용됩니다. 컴퓨터 프로그래밍에서 “매개변수(Parameters)”는 함수에 전달되는 값을 받아들이는 변수를 의미합니다. 이는 함수 정의에…

  • 록키 리눅스(Rocky Linux)

    록키 리눅스(Rocky Linux)는  레드햇 엔터프라이즈 리눅스(RHEL) 운영 체제 소스 코드를 사용한 리눅스로 RHEL과 100% 버그 간 호환이 가능하도록 설계 되었습니다. OS가 커뮤니티에서 집중적으로 개발 중이며, 정기적인 업데이트와 뛰어난 안정성으로 2023년 최신 버전은 9.0입니다. 릴리스의 수명 주기는 10년입니다. 록키 리눅스 시작과 배경 CentOS는 2000년대 초반에 안정적인 포인트 릴리스 시스템을 갖춘 RHEL과의 바이너리 호환성을 제공하며…

  • 리눅스 디스크 마운트 | /etc/fstab으로 자동 마운트 설정

    리눅스에 추가 HDD 또는 SSD 등의 스토리지를 추가 후 사용하려면 먼저 포맷이 진행되어야 합니다. 리눅스 디스크 마운트 작업까지 진행해서 사용하기 전에 먼저 스토리지 포맷과 파일 시스템 구축을 진행하는 과정부터 진행 해 보겠습니다. ✅ 리눅스 디스크 마운트 하기 1. 파일 시스템 포맷 AWS 클라우드에서 EBS 볼륨을 연결했으며 장치 파일을 확인 후 mkfs 명령어로 파일…

  • 리눅스 uptime 명령어(서버 가동 시간&1,5,15 평균 로드 확인)

    리눅스 uptime 명령어는 시스템의 평균 부하율과 서버의 가동 시간을 확인하는 명령어입니다. 서버의 부팅 시간을 알고 싶을 때, 최근 15분 동안의 평균 로드를 통해 부하율을 알고 싶을 때 사용하는 명령어임을 알 수 있습니다. ✅ 리눅스 uptime 명령어 기본 사용법과 설명 총 4개의 컬럼으로 나뉘는 것을 알 수 있습니다. ✅ 리눅스 uptime 옵션

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Prove your humanity: 10   +   4   =