iptables 설정 방법


iptables 설정 방법
리눅스 네트워크 방화벽에서 사용되는 iptables 사용 방법에 대헤서 설명드립니다. iptables를 사용하여 포트를 열거나 차단하는 방법, iptables NAT 설정 방법, 기존 정책을 저장하고 복원하는 방법 등에 대해서 예제 정책 등과 함께 설명드리도록 하겠습니다.

우분투 등의 운영체제에서 netplan을 이용하여 네트워크를 설정하는 방법은 아래의 글을 참고해 주시기 바랍니다.

우분투 18.04 네트워크 설정

iptables 소개

리눅스 배포판에서는 네트워크 정책을 관리하기 위해서 대부분 iptables 를 사용하고 있습니다. 사용자 계정으로는 사용할 수 없고, sudo 명령어 또는 root 권한 등을 사용해야 합니다.

iptables는 IPv4에 사용되고 있지만, ip6tables는 IPv6에, arptables는 ARP에, ebtables는 이더넷 프레임에 각각 적용되어 사용되어집니다.

현재 운영중인 서버에 iptables 정책을 잘 못 실행하면 네트워크 접속이 차단되거나 끊길 수 있습니다. 따라서 iptables 명령어를 실행하는데 주의해 주시기 바랍니다.

iptables 저장과 복원

가장 먼저 현재 iptables 정책을 저장하고 복원하는 방법에 대해서 설명드리겠습니다.먼저 기존의 설정을 백업하는 방법입니다.

iptables-save > /etc/iptables.rules

위의 명령어를 실행하면 현재 iptables 정책이 모두 /etc/iptables.rules 위치에 파일로 생성되면서 저장되게 됩니다.

iptables 정책이 백업된 /etc/iptables.rules 파일로 부터 정책을 복원하기 위해서는 아래와 같은 명령어를 사용하면 됩니다.

iptables-restore < /etc/iptables.rules

그리고 현재의 정책을 완전히 저장을 할 때에는 다음 명령어를 사용하고 저장하셔야 합니다.

service iptables save

iptables 옵션

iptables는 상당히 많은 옵션등이 제공되고 있습니다. 주요 옵션에 대해서 설명드리면 아래와 같습니다.

  • –append, -A : 새로운 규칙을 추가
  • –policy, -P : 기본정책을 변경
  • –delete, -D : 규칙을 삭제
  • –insert, -I : 새로운 규칙을 삽입(기존 규칙은 내려감)
  • –replace -R : 새로운 규칙으로 교체
  • –jump, -j : 규칙에 맞는 패킷을 어떻게 처리할 것인가를 명시
  • –in-interface, -i : 입력 인테페이스
  • –state : 연결 상태와의 매칭
  • –match, -m : 특정 모듈과의 매치

iptables 설정 확인

현재의 iptables 정책 등 설정을 확인 하기 위해서는 아래와 같은 명령어를 사용하시면 됩니다.
–verbose 옵션을 추가하여 보다 자세한 내용이 나타날 수 있도록 하였습니다.

iptables -nL --line-numbers --verbose

위의 명령어를 실행한 결과는 아래와 같습니다.

iptables 설정 방법

리눅스 iptables 설정 방법

iptables 를 사용하여 실제 설정 방법에 대해서 설명드리도록 하겠습니다. 예제로 설명드릴 방법은 특정 포트에서만 접속을 허용하고, 그 외의 포트는 접속을 차단하도록 설정하는 예제입니다.

# 기본 정책을 Accept으로 변경
iptables -A INPUT -i lo -j ACCEPT

# 필요한 프로토콜과 포트는 접속을 허용
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT

# 외부에서 나가서, 외부에서 리턴하는 패킷은 허용
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# 그 외의 패킷은 Drop
iptables -A INPUT -j DROP

서버를 재부팅하면 수정된 정책은 초기화가 됩니다. 따라서 재부팅 후에도 수정된 정책이 유지되도록 하기 위해서는 위에서 설명드린 방법으로 정책을 저장해 주셔야 합니다.

iptables NAT 설정

NAT를 설정하기 위해서는 먼저 아래의 명령어를 실행하여, IP Forwarding 기능을 활성화 해 주시기 바랍니다.

sysctl -w net.ipv4.ip_forward=1

그리고 다음과 같이 iptables 정책을 추가하시면 됩니다.

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

출발지 IP 대역과 변환된 IP 주소등 아래와 같은 정책을 사용하여 보다 세부적으로 정책을 적용할 수 도 있습니다.

iptables -t nat -A POSTROUTING -s 10.0.1.0/24 -o eth0 -j SNAT --to 172.16.0.160

iptables 끄기

iptables를 사용하지 않도록 정지하기 위해서는 다음 명령어를 실행합니다.

service iptables stop

그리고 부팅 후에도 iptables 를 사용하지 않도록 설정하기 위해서는 다음 명령어를 추가로 실행합니다.

# Red hat/CentOS/Fedora Core
chkconfig iptables off

만약 위의 방법으로 정지한 iptables를 다시 실행하도록 설정하기 위해서는 다음명령어를 실행합니다.

service iptables start
# Red hat/CentOS/Fedora Core
chkconfig iptables on

( 본문 인용시 출처를 밝혀 주시면 감사하겠습니다.)