반응형

Iptables 란?

리눅스의 패킷 필터링(Packet Filtering) 도구로서 방화벽 구성이나 NAT(Network Address Translation)에 사용된다.

시스템 관리자가 리눅스 커널 방화벽(다른 넷필터 모듈로 구현됨)이 제공하는 테이블들과 그것을 저장하는 체인,규칙들을 구성할 수 잇게 해주는 사용자 공간 응용프로그램이다.

넷필터 프로젝트에서 개발했으며 광범위한 프로토콜 상태 추적, 패킷 애플리케이션 계층검사, 속도 제한, 필터링 정책을 명시하기 위한 강력한 매커니즘을 제공한다.

 - '체인(Chain)'이라고 불리는 방향성을 가진 '규칙(Rule)'을 연결한 테이블(table)이다.


설치

기본적으로 설치 되어있는경우가 많지만 없다면 설치해주자.

https://fruitdev.tistory.com/96



설치 위치

/usr/sbin/iptables에 설치

/sbin/iptables에서도 볼 수 있지만 iptables는 필수적인 이진 파일이라기 보다는 서비스에 더 가깝기 때문에 선호되는 위치는 /usr/sbin이다.


사용법

#iptables [-t <table>][action][chain][match][-j target]


Table

filter,nat,mangle,raw

default는 filter이다.



액션(Action)

-A    APPEND    정책추가

-I     INSERT      정책삽입

-D    DELETE      정책삭제

-R    REPLACE    정책교체

-F    FLUSH       모든 정책 삭제

-P    POLICY      기본적책을 설정

-L    LIST           정책 나열


체인(chain)

INPUT             호스트 컴퓨터를 향한 패킷

OUTPUT          호스트 컴퓨터에서 발생하는 패킷

FORWARD       호스트 컴퓨터 목적지가 아닌 모든 패킷,라우터로 사용되는 호스트 컴퓨터를 통과한는 패킷

PREROUTING    

POSTROUTING



매치(Match)

-s        출발지 매칭.도메인,IP주소,넷마스크 값을 이용하여 표기(--soruch, --src)    

-d        목적지 매칭.도메인,IP주소,넷마스크 값을 이용하여 표기(--destinationm --dst)

-p        프로토콜과 매칭.TCP,UDP,ICMP와 같은 이름을 사용하고 대소문자는 구분하지 않음

-i        입력 인터페이스와 매칭(--in-interface)

-o        출력 인터페이스와 매칭(--out-interface)

-j        매치되는 패킷을 어떻게 처리할지 지정(--jump)



타겟(target)

패킷이 규칙과 일치할때 취하는 동작을 지정한다.

ACCEPT        패킷을 허용한다.

DROP           패킷을 버린다.(패킷이 전송된 적이 없던 것처럼 상대에게 알리지 않음)

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

LOG            패킷을 syslog에 기록한다.

SNAT --to [주소]    소스 IP를 [주소]로 변환(NAT)한다.

DNAT --to [주소]    목적지 IP를 [주소]로 변환(NAT)한다.

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



NAT(Network Address Translation)란

IP패킷 헤더의 IP주소를 변경하는 기능 혹은 절차



사용예제


정책 열람

iptables -L

또는

cat /etc/sysconfig/iptables

-nL                 상세한 네트워크 정보까지 모두 출력(anywere을 0.0.0.0/0 으로 표현해줌)

--line-numbers 각각의 규칙에 행번호를 보여주는 옵션(룰셋의 적용 순서 확인)

-vL                     적용된 룰셋을 통한 인입 패킷 및 bytes 출력



저장

service iptables save


저장&불러오기

iptables-save > firewall.sh

iptables-restore < filewall.sh


정책을 추가한 다음 재시작이나 다른 조치를 하지 않아도 바로 적용된다.



특정 ip 또는 네트워크에서의 접근 차단


192.168.10.22로 부터 들어오는 패킷들은 차단하는 정책을 추가

iptables -A INPUT -s 192.168.10.22 -j DROP

또는

iptables -I INPUT -s 192.168.10.22 -j DROP


92.168.10.0/24 네트워크 대역으로 부터 들어오는 패킷들은 차단하는 정책을 추가

iptables -A INPUT -s 192.168.10.0/24 -j DROP

또는

iptables -I INPUT -s 192.168.10.0/24 -j DROP


DROP대신 REJECT를 사용하면 거절응답을 상대에게 전달할수있다.


특정포트 허용


1000번 포트로 들어오는 tcp프로토콜 패킷들은 허용하는 정책을 추가

iptables –A INPUT –p tcp --dport 1000 –j ACCEPT


특정ip로 가는 네트워크 차단


내부IP 192.168.10.10에서 222.222.222.222 목적지 IP로 tcp/80번 포트로의 접근을 차단하는 정책 추가

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



화이트리스트 정책

룰을 지정할때는 좁은 범위부터 적용하여 넓은 범위로 적용해야된다.

즉 순서를 잘 조절하여 지정해 주어야 제대로 동작한다.

tcp 21번포트를 허용하고 1.1.1.4에서 21번포트로 접속만 차단할때

잘못된 예

iptables -A INPUT -p tcp --dport 21 -j ACCEPT                # ftp 서비스 허용
iptables -A INPUT -s 1.1.1.4 -p tcp --dport 21 -j DROP    # 차단


iptables -A INPUT -s 1.1.1.4 -p tcp --dport 21 -j DROP    # 차단

iptables -A INPUT -p tcp --dport 21 -j ACCEPT                # ftp 서비스 허용


1.1.1.1에서 100번포트로 들어오는 tcp패킷만 허용하고 다른곳에서 100번포트로 접근하는 tcp패킷 차단

iptables -A INPUT -p tcp  -s 1.1.1.1  --dport 100 -j ACCEPT

iptable -A INPUT -p tcp --dport 100 -j DROP




기존에 설정된 모든 정책 삭제

iptables -F INPUT


정책번호 확인

iptables -vnL --line-numbers

특정 번호의 정책 삭제

iptable -D INPUT [번호]



설명 및 예제

http://itwiki.kr/w/%EB%A6%AC%EB%88%85%EC%8A%A4_iptables


반응형

'Linux' 카테고리의 다른 글

nano editor 단축키  (1) 2021.02.27
ssh 무차별대입공격 방어(pam,fail2ban)  (0) 2020.06.26
ssh su권한 보안처리  (0) 2020.06.21
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기