iptables 사용법
페이지 정보
본문
iptables 사용법
iptables란?
리눅스 커널 안에는 패킷 필터링 기능을 가지고 있는 netfilter가 존재한다.
iptables는 이 netfilter를 관리하기 위한 툴이다.
특징
1. rule 기반의 패킷 필터링
2. 상태추적기능
- 메모리상에 상태추적테이블을 생성하여 연결 정보를 가진 모든 송수신 패킷 기록 및 검사
- 연결된 상태인 것처럼 위조한 패킷의 접근을 차단할 수 있다.
- 연결된 상태의 패킷에 대해서는 패턴 매칭 검사를 수행하지 않음(성능 향상)
3. NAT 기능, 로깅기능, 모듈확장 등을 제공.
설치
yum -y install iptables
chkconfig iptables on
시작
service iptables start
iptables의 문법
iptables는 위와 같은 문법을 가지고 있다.
iptables -h를 입력하면 도움말을 볼 수가 있다.
iptables --list 옵션으로 현재 룰 목록 확인가능.
이제부터는 문법의 각 요소마다 어떤 옵션이 있는지 알아보기로 한다.
테이블
- filter : 패킷 필터링 기능
- 이 외에도 nat, mangle, raw 같은 네트워크 분석 테이블도 존재한다.
체인
- INPUT : 방화벽을 최종 목적지로 한다.
- OUTPUT : 방화벽을 최초 출발지로 한다.
- FORWARD : 방화벽을 통과하는 체인이다.
- 이 외에도 PREROUTING, POSTROUTING과 같은 체인이 존재한다.
룰 설정
룰 설정을 할 때 가장 중요한 것은 순서이다.
앞 쪽 체인의 룰이 우선 순위가 높기 때문이다.
예를 들어 8.8.8.8에서 오는 모든 패킷을 막는 체인 뒤에
8.8.8.8에서 오는 tcp패킷을 허용하는 체인을 추가하면
여전히 tcp패킷은 막혀서 들어오지 못한다.
- A : append, 해당 체인 마지막에 룰을 추가한다.
- I : insert, 해당 체인 첫 행에 룰을 추가한다. (행 번호 지정가능)
- D : delete, 행 번호를 지정하여 룰 삭제
- F : flush, 해당 체인의 모든 룰 삭제
- R : replace, 행 번호를 지정하여 룰 치환
- P : policy, 기본 정책을 설정한다. 해당 체인의 모든 룰에 매칭되지 않으면 적용된다.
leonard_special-6
-p : 프로토콜 지정 (tcp, udp, icmp 등)
-s : 출발지 주소, 지정하지 않으면 any ip
-d : 목적지 주소, 지정하지 않으면 any ip
--sport : 출발지 포트
--dport : 목적지 포트
-i : 입력 인터페이스
-o : 출력 인터페이스
정책지정
-j 옵션을 이용해 정책 또는 타겟체인을 지정한다.
ACCEPT, DROP, REJECT, LOG 등을 사용할 수 있다.
@DROP과 REJECT의 차이
DROP은 그냥 차단, REJECT는 차단하면서 ICMP 에러 응답을 전송
iptables 룰 적용 방법
1. iptables 명령어를 통한 입력
(입력 후에 service iptables save를 통해 저장)
2. /etc/sysconfig/iptables 내용을 직접 수정.
위 내용을 수정하면 된다.
마지막으로 iptables의 간단한 사용 예시 몇 가지를 보고 마무리하겠다.
iptables의 간단한 사용 예시
@출발지 주소가 192.168.0.111 인 모든 접속 포트 차단
iptables -A INPUT -s 192.168.0.111 -j DROP
@목적지 포트가 3838보다 작을 때와 더불어 tcp 패킷을 거부하는 규칙
iptables -A INPUT -p tcp --dport :3838 -j DROP
(min:max 로 범위를 지정할 수 있다. 여기서는 3838이하)
@localhost 접속 허가
iptables -A INPUT -i lo -j ACCEPT
@ESTABLISHED와 RELATED상태 접속 허가
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
@Xmas 패킷 막기
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
@Null 패킷 막기
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables란?
리눅스 커널 안에는 패킷 필터링 기능을 가지고 있는 netfilter가 존재한다.
iptables는 이 netfilter를 관리하기 위한 툴이다.
특징
1. rule 기반의 패킷 필터링
2. 상태추적기능
- 메모리상에 상태추적테이블을 생성하여 연결 정보를 가진 모든 송수신 패킷 기록 및 검사
- 연결된 상태인 것처럼 위조한 패킷의 접근을 차단할 수 있다.
- 연결된 상태의 패킷에 대해서는 패턴 매칭 검사를 수행하지 않음(성능 향상)
3. NAT 기능, 로깅기능, 모듈확장 등을 제공.
설치
yum -y install iptables
chkconfig iptables on
시작
service iptables start
iptables의 문법
iptables는 위와 같은 문법을 가지고 있다.
iptables -h를 입력하면 도움말을 볼 수가 있다.
iptables --list 옵션으로 현재 룰 목록 확인가능.
이제부터는 문법의 각 요소마다 어떤 옵션이 있는지 알아보기로 한다.
테이블
- filter : 패킷 필터링 기능
- 이 외에도 nat, mangle, raw 같은 네트워크 분석 테이블도 존재한다.
체인
- INPUT : 방화벽을 최종 목적지로 한다.
- OUTPUT : 방화벽을 최초 출발지로 한다.
- FORWARD : 방화벽을 통과하는 체인이다.
- 이 외에도 PREROUTING, POSTROUTING과 같은 체인이 존재한다.
룰 설정
룰 설정을 할 때 가장 중요한 것은 순서이다.
앞 쪽 체인의 룰이 우선 순위가 높기 때문이다.
예를 들어 8.8.8.8에서 오는 모든 패킷을 막는 체인 뒤에
8.8.8.8에서 오는 tcp패킷을 허용하는 체인을 추가하면
여전히 tcp패킷은 막혀서 들어오지 못한다.
- A : append, 해당 체인 마지막에 룰을 추가한다.
- I : insert, 해당 체인 첫 행에 룰을 추가한다. (행 번호 지정가능)
- D : delete, 행 번호를 지정하여 룰 삭제
- F : flush, 해당 체인의 모든 룰 삭제
- R : replace, 행 번호를 지정하여 룰 치환
- P : policy, 기본 정책을 설정한다. 해당 체인의 모든 룰에 매칭되지 않으면 적용된다.
leonard_special-6
-p : 프로토콜 지정 (tcp, udp, icmp 등)
-s : 출발지 주소, 지정하지 않으면 any ip
-d : 목적지 주소, 지정하지 않으면 any ip
--sport : 출발지 포트
--dport : 목적지 포트
-i : 입력 인터페이스
-o : 출력 인터페이스
정책지정
-j 옵션을 이용해 정책 또는 타겟체인을 지정한다.
ACCEPT, DROP, REJECT, LOG 등을 사용할 수 있다.
@DROP과 REJECT의 차이
DROP은 그냥 차단, REJECT는 차단하면서 ICMP 에러 응답을 전송
iptables 룰 적용 방법
1. iptables 명령어를 통한 입력
(입력 후에 service iptables save를 통해 저장)
2. /etc/sysconfig/iptables 내용을 직접 수정.
위 내용을 수정하면 된다.
마지막으로 iptables의 간단한 사용 예시 몇 가지를 보고 마무리하겠다.
iptables의 간단한 사용 예시
@출발지 주소가 192.168.0.111 인 모든 접속 포트 차단
iptables -A INPUT -s 192.168.0.111 -j DROP
@목적지 포트가 3838보다 작을 때와 더불어 tcp 패킷을 거부하는 규칙
iptables -A INPUT -p tcp --dport :3838 -j DROP
(min:max 로 범위를 지정할 수 있다. 여기서는 3838이하)
@localhost 접속 허가
iptables -A INPUT -i lo -j ACCEPT
@ESTABLISHED와 RELATED상태 접속 허가
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
@Xmas 패킷 막기
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
@Null 패킷 막기
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
관련링크
- 이전글CentOS 7 | firewall-cmd로 방화벽 관리하기 20.02.21
- 다음글centos 폴더색상 변경. 20.02.21
댓글목록
등록된 댓글이 없습니다.