"Iptables"의 두 판 사이의 차이

오픈소스 비즈니스 컨설팅
둘러보기로 가기 검색하러 가기
잔글
잔글
 
(같은 사용자의 중간 판 5개는 보이지 않습니다)
35번째 줄: 35번째 줄:
 
:*기동 종료 : service iptables start, stop, restart
 
:*기동 종료 : service iptables start, stop, restart
  
==사용자 가이드==
+
== 사용자 가이드 ==
 +
<pre>iptables -L
 +
iptables --append INPUT --source 175.115.92.0/24 --match tcp --protocol tcp --dport 22 --jump ACCEPT
 +
iptables --append INPUT --source 175.115.92.0/24 --match tcp --protocol tcp --dport 22 --jump REJECT
 +
 
 +
iptables --delete INPUT --source 175.115.92.0/24 --match tcp --protocol tcp --dport 22 --jump ACCEPT
 +
iptables --delete INPUT --source 175.115.92.0/24 --match tcp --protocol tcp --dport 22 --jump REJECT</pre>
 +
참고 문헌
 +
 
 +
*http://yyman.tistory.com/entry/Linux-43%EA%B0%95-%EB%B0%A9%ED%99%94%EB%B2%BD-IPv4-%EC%9E%90%EC%A3%BC-%EC%93%B0%EB%8A%94-%EA%B7%9C%EC%B9%99IPtables
 +
 
 +
 
 +
 
 
*방화벽 설정 명령어
 
*방화벽 설정 명령어
 +
 
  setup
 
  setup
 
  system-config-securitylevel
 
  system-config-securitylevel
  
 
*iptables 정책
 
*iptables 정책
 +
 
:*설정된 정책은 위에서부터 차례로 적용이 되기 때문에 순서에 주의 하여야 한다.
 
:*설정된 정책은 위에서부터 차례로 적용이 되기 때문에 순서에 주의 하여야 한다.
  Chain INPUT   : 서버로 들어오는 정책
+
 
  Chain FORWARD : 서버에서 포워딩 하는 정책
+
  Chain INPUT &nbsp;: 서버로 들어오는 정책
  Chain OUTPUT : 서버에서 나가는 정책
+
  Chain FORWARD&nbsp;: 서버에서 포워딩 하는 정책
  Chain RH-Firewall-1-INPUT : 방화벽 설정이 적용되는 정책
+
  Chain OUTPUT &nbsp;: 서버에서 나가는 정책
 +
  Chain RH-Firewall-1-INPUT&nbsp;: 방화벽 설정이 적용되는 정책
  
 
*iptables 명령
 
*iptables 명령
 +
 
  iptables -L            #--- 설정된 정책 확인
 
  iptables -L            #--- 설정된 정책 확인
 
  #--- 정책 추가(ACCEPT), 차단(DROP)
 
  #--- 정책 추가(ACCEPT), 차단(DROP)
54번째 줄: 70번째 줄:
  
 
:*특정 IP의 서버 접근 차단 방법
 
:*특정 IP의 서버 접근 차단 방법
 +
 
  iptables -A INPUT -s 61.247.209.81 -j DROP
 
  iptables -A INPUT -s 61.247.209.81 -j DROP
  iptables -A INPUT -s 61.247.209.0/24 -j DROP
+
  iptables -A INPUT -s 61.247.209.0/24 -j DROP<font face="sans-serif, Arial, Verdana, Trebuchet MS"><span style="white-space: normal;">
 +
 +
</span></font>
  
 
== 관리자 가이드 ==
 
== 관리자 가이드 ==
  
SNAT (Source NAT) : 내부에서 외부 접속시 Source를 Private IP를 Public IP로 변환<br/>MASQUERADE :&nbsp;게이트웨이 장치가 패킷의 출발지 IP주소를 사설IP 주소에서 자신에게 할당된 공인IP 주소로 바꿔서 인터넷으로 보내는 과정
+
=== 규칙 설정 ===
 +
 
 +
SNAT (Source NAT)&nbsp;: 내부에서 외부 접속시 Source를 Private IP를 Public IP로 변환<br/>MASQUERADE&nbsp;:&nbsp;게이트웨이 장치가 패킷의 출발지 IP주소를 사설IP 주소에서 자신에게 할당된 공인IP 주소로 바꿔서 인터넷으로 보내는 과정
  
DNAT (Destination NAT) : 외부에서 내부 접속시 Destination을 Public IP에서 Private IP로 변환
+
DNAT (Destination NAT)&nbsp;: 외부에서 내부 접속시 Destination을 Public IP에서 Private IP로 변환
  
*tables (-t ~) : 특정한 정책에 따라 Chain을 모아 놓은 것
+
*tables (-t ~)&nbsp;: 특정한 정책에 따라 Chain을 모아 놓은 것
**filter : 허가된 접근을 허용하고 허가되지 않은 접근을 차단
+
**filter&nbsp;: 허가된 접근을 허용하고 허가되지 않은 접근을 차단
**nat : Packet의 주소 변환 규칙을 정의
+
**nat&nbsp;: Packet의 주소 변환 규칙을 정의
 
***PREROUTING
 
***PREROUTING
 
***POSTROUTING
 
***POSTROUTING
71번째 줄: 92번째 줄:
 
**raw
 
**raw
  
*chain (사슬) : 제어 규칙을 정의하는 기본 단위
+
*chain (사슬)&nbsp;: 제어 규칙을 정의하는 기본 단위
  
:*INPUT : Host로 들어오는 패킷
+
:*INPUT&nbsp;: Host로 들어오는 패킷
:*OUTPUT : Host에서 나가는 패킷
+
:*OUTPUT&nbsp;: Host에서 나가는 패킷
:*FORWARD : Host를 지나가는 패킷
+
:*FORWARD&nbsp;: Host를 지나가는 패킷
  
*match : 패킷을 처리할 때 만족해야 하는 조건
+
*match&nbsp;: 패킷을 처리할 때 만족해야 하는 조건
  
:*--source (-s) : 출발지 IP
+
:*--source (-s)&nbsp;: 출발지 IP
:*--sport : 출발지 Port
+
:*--sport&nbsp;: 출발지 Port
:*--destination (-d) : 목적지 IP
+
:*--destination (-d)&nbsp;: 목적지 IP
:*--dport : 목적지 Port
+
:*--dport&nbsp;: 목적지 Port
:*--protocol (-p) : 프로토콜 (tcp, udp)
+
:*--protocol (-p)&nbsp;: 프로토콜 (tcp, udp)
:*--in-interface (-i) : 입력 인터페이스 (eth0, eth1)
+
:*--in-interface (-i)&nbsp;: 입력 인터페이스 (eth0, eth1)
:*--out-interface (-o) : 출력 인터페이스 (eth0, eth1)
+
:*--out-interface (-o)&nbsp;: 출력 인터페이스 (eth0, eth1)
:*--state : 연결 상태 (NEW, ESTABLISHED, RELATED, INVALID)
+
:*--state&nbsp;: 연결 상태 (NEW, ESTABLISHED, RELATED, INVALID)
:*--string : 애플리케이션 계층의 데이터 바이트 순서와 매핑
+
:*--string&nbsp;: 애플리케이션 계층의 데이터 바이트 순서와 매핑
:*--comment : 주석 (최대 256 바이트)
+
:*--comment&nbsp;: 주석 (최대 256 바이트)
:*--syn (-y) : SYN 패킷을 허용하지 않음
+
:*--syn (-y)&nbsp;: SYN 패킷을 허용하지 않음
:*--fragment (-f) : 두번째 조각부터 적용하는 규칙
+
:*--fragment (-f)&nbsp;: 두번째 조각부터 적용하는 규칙
:*--table (-t) : 처리할 테이블
+
:*--table (-t)&nbsp;: 처리할 테이블
:*--jump (-j) : 패킷 처리 방식 정의 (ACCEPT, DROP, REJECT, LOG, RETURN, MASQUERADE)
+
:*--jump (-j)&nbsp;: 패킷 처리 방식 정의 (ACCEPT, DROP, REJECT, LOG, RETURN, MASQUERADE)
:*--match (-m) : 특정 모듈과 매핑 (state, tcp, multiport)
+
:*--match (-m)&nbsp;: 특정 모듈과 매핑 (state, tcp, multiport)
  
*target : ACCEPT (허용), DROP (삭제), REJECT (거부), LOG (syslog 기록), RETURN (패킷 처리 계속)
+
*target&nbsp;: ACCEPT (허용), DROP (삭제), REJECT (거부), LOG (syslog 기록), RETURN (패킷 처리 계속)
  
*Connection Tracking : 연결 추적
+
*Connection Tracking&nbsp;: 연결 추적
  
 
:*NEW (새 연결 요청), ESTABLISHED (기존 연결), RELATED (기존 연결내 새 연결), INVALID
 
:*NEW (새 연결 요청), ESTABLISHED (기존 연결), RELATED (기존 연결내 새 연결), INVALID
103번째 줄: 124번째 줄:
 
*command
 
*command
  
:*--append (-A) : 규칙 추가
+
:*--append (-A)&nbsp;: 규칙 추가
:*--delete (-D) : 규칙 삭제
+
:*--delete (-D)&nbsp;: 규칙 삭제
:*--check (-C) : 패킷 테스트
+
:*--check (-C)&nbsp;: 패킷 테스트
:*--replace (-R) : 새로운 규칙으로 교체
+
:*--replace (-R)&nbsp;: 새로운 규칙으로 교체
:*--insert (-I) : 규칙 삽입
+
:*--insert (-I)&nbsp;: 규칙 삽입
:*--list (-L) : 규칙 조회
+
:*--list (-L)&nbsp;: 규칙 조회
:*--flush (-F) : chain의 모든 규칙 삭제
+
:*--flush (-F)&nbsp;: chain의 모든 규칙 삭제
:*--zero (-Z) : 패킷과 바이트 카운트 값을 0으로 초기화
+
:*--zero (-Z)&nbsp;: 패킷과 바이트 카운트 값을 0으로 초기화
:*--new (-N) : 새로운 chain 생성
+
:*--new (-N)&nbsp;: 새로운 chain 생성
:*--delete-chain (-X) : chain 삭제
+
:*--delete-chain (-X)&nbsp;: chain 삭제
:*--policy (-P) : 기본 정책 변경
+
:*--policy (-P)&nbsp;: 기본 정책 변경
  
 
  iptables -t nat -L                                    #--- nat 테이블에 정의되어 있는 규칙을 조회
 
  iptables -t nat -L                                    #--- nat 테이블에 정의되어 있는 규칙을 조회
124번째 줄: 145번째 줄:
 
  iptables -L -v
 
  iptables -L -v
  
*service iptables save
 
  
:*변경 사항을 /etc/sysconfig/iptables 파일에 저장
+
 
 +
=== 백업과 복구 ===
 +
<pre>#--- 백업
 +
#--- /etc/sysconfig/iptables 파일에 저장 된다.
 +
service iptables save
 +
# iptables-save > /etc/iptables.rules</pre><pre />
 +
#--- 룰 초기화
 +
 
 +
#--- 룰 초기화시 서버에 접속이 되지 않습니다.
 +
 
 +
iptables -F
 +
 
 +
#--- 복구
 +
 
 +
&nbsp; &nbsp; &nbsp;cat /etc/sysconfig/iptables | iptables-restore
 +
 
 +
#iptables-restore /etc/iptables.rules
  
 
== 참고 문헌 ==
 
== 참고 문헌 ==

2017년 2월 2일 (목) 12:40 기준 최신판

Linux IPv4 환경에서 방화벽 서비스를 제공하는 iptables를 정리한다.


설치 가이드

  • iptables 설치
  • Ubuntu에 root로 로그인한다.
  • sudo apt-get install iptables
  • 설치 정보
  • 설치 폴더 :
  • 환경 폴더 :
  • 데이터 폴더 :
  • 기동 종료 :
  • 서비스 확인 :
  • 로그 정보 :

CentOS용 설치 가이드

  • Linux는 기본적으로 iptables를 방화벽으로 사용 한다.
yum list | grep iptables
yum install iptables

service iptables on
chkconfig iptables on
chkconfig --list | grep tables
  • 설치 정보
  • 설치 폴더 :
  • 실행 파일 : /sbin/
  • 환경 파일 : /etc/sysconfig/iptables
  • 기동 종료 : service iptables start, stop, restart

사용자 가이드

iptables -L
iptables --append INPUT --source 175.115.92.0/24 --match tcp --protocol tcp --dport 22 --jump ACCEPT
iptables --append INPUT --source 175.115.92.0/24 --match tcp --protocol tcp --dport 22 --jump REJECT

iptables --delete INPUT --source 175.115.92.0/24 --match tcp --protocol tcp --dport 22 --jump ACCEPT
iptables --delete INPUT --source 175.115.92.0/24 --match tcp --protocol tcp --dport 22 --jump REJECT

참고 문헌


  • 방화벽 설정 명령어
setup
system-config-securitylevel
  • iptables 정책
  • 설정된 정책은 위에서부터 차례로 적용이 되기 때문에 순서에 주의 하여야 한다.
Chain INPUT   : 서버로 들어오는 정책
Chain FORWARD : 서버에서 포워딩 하는 정책
Chain OUTPUT  : 서버에서 나가는 정책
Chain RH-Firewall-1-INPUT : 방화벽 설정이 적용되는 정책
  • iptables 명령
iptables -L            #--- 설정된 정책 확인
#--- 정책 추가(ACCEPT), 차단(DROP)
iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
  • 특정 IP의 서버 접근 차단 방법
iptables -A INPUT -s 61.247.209.81 -j DROP
iptables -A INPUT -s 61.247.209.0/24 -j DROP


관리자 가이드

규칙 설정

SNAT (Source NAT) : 내부에서 외부 접속시 Source를 Private IP를 Public IP로 변환
MASQUERADE : 게이트웨이 장치가 패킷의 출발지 IP주소를 사설IP 주소에서 자신에게 할당된 공인IP 주소로 바꿔서 인터넷으로 보내는 과정

DNAT (Destination NAT) : 외부에서 내부 접속시 Destination을 Public IP에서 Private IP로 변환

  • tables (-t ~) : 특정한 정책에 따라 Chain을 모아 놓은 것
    • filter : 허가된 접근을 허용하고 허가되지 않은 접근을 차단
    • nat : Packet의 주소 변환 규칙을 정의
      • PREROUTING
      • POSTROUTING
    • mangle
    • raw
  • chain (사슬) : 제어 규칙을 정의하는 기본 단위
  • INPUT : Host로 들어오는 패킷
  • OUTPUT : Host에서 나가는 패킷
  • FORWARD : Host를 지나가는 패킷
  • match : 패킷을 처리할 때 만족해야 하는 조건
  • --source (-s) : 출발지 IP
  • --sport : 출발지 Port
  • --destination (-d) : 목적지 IP
  • --dport : 목적지 Port
  • --protocol (-p) : 프로토콜 (tcp, udp)
  • --in-interface (-i) : 입력 인터페이스 (eth0, eth1)
  • --out-interface (-o) : 출력 인터페이스 (eth0, eth1)
  • --state : 연결 상태 (NEW, ESTABLISHED, RELATED, INVALID)
  • --string : 애플리케이션 계층의 데이터 바이트 순서와 매핑
  • --comment : 주석 (최대 256 바이트)
  • --syn (-y) : SYN 패킷을 허용하지 않음
  • --fragment (-f) : 두번째 조각부터 적용하는 규칙
  • --table (-t) : 처리할 테이블
  • --jump (-j) : 패킷 처리 방식 정의 (ACCEPT, DROP, REJECT, LOG, RETURN, MASQUERADE)
  • --match (-m) : 특정 모듈과 매핑 (state, tcp, multiport)
  • target : ACCEPT (허용), DROP (삭제), REJECT (거부), LOG (syslog 기록), RETURN (패킷 처리 계속)
  • Connection Tracking : 연결 추적
  • NEW (새 연결 요청), ESTABLISHED (기존 연결), RELATED (기존 연결내 새 연결), INVALID
  • command
  • --append (-A) : 규칙 추가
  • --delete (-D) : 규칙 삭제
  • --check (-C) : 패킷 테스트
  • --replace (-R) : 새로운 규칙으로 교체
  • --insert (-I) : 규칙 삽입
  • --list (-L) : 규칙 조회
  • --flush (-F) : chain의 모든 규칙 삭제
  • --zero (-Z) : 패킷과 바이트 카운트 값을 0으로 초기화
  • --new (-N) : 새로운 chain 생성
  • --delete-chain (-X) : chain 삭제
  • --policy (-P) : 기본 정책 변경
iptables -t nat -L                                    #--- nat 테이블에 정의되어 있는 규칙을 조회
iptables -t -A POSTROUTING -o eth0 -j MASQUERADE
iptables -P INPUT DROP                                #--- INPUT 기본 정책을 DROP으로 변경
iptables -A INPUT -i eth1 -j ACCEPT                   #--- INPUT에 규칙 추가
iptables -L
iptables -nL
iptables -nL --line-numbers
iptables -L -v


백업과 복구

#--- 백업
#--- /etc/sysconfig/iptables 파일에 저장 된다.
service iptables save
# iptables-save > /etc/iptables.rules

  1. --- 룰 초기화
  1. --- 룰 초기화시 서버에 접속이 되지 않습니다.

iptables -F

  1. --- 복구

     cat /etc/sysconfig/iptables | iptables-restore

  1. iptables-restore /etc/iptables.rules

참고 문헌