본문 바로가기

개발이야기/Server

리눅스 계열 (Linux / Ubuntu) iptables 설정하기

728x90

리눅스 계열 (Linux / Ubuntu) iptables 설정하기



아이피테이블(iptables) 이란?

iptables는 시스템 관리자가 리눅스 커널 방화벽(다른 넷필터 모듈로 구현됨)이 제공하는 테이블들과 그것을 저장하는 체인, 규칙들을 구성할 수 있게 해주는 사용자 공간 응용 프로그램이다. 각기 다른 커널 모듈과 프로그램들은 현재 다른 프로토콜을 위해 사용되는데, iptables는 IPv4에, ip6tables는 IPv6에, arptables는 ARP에, ebtables는 이더넷 프레임에 적용된다.


iptables는 동작을 위해 상승된 권한을 요구하며 사용자 루트가 실행하여야 하는데, 그렇지 않으면 작동하지 않는다. 리눅스 시스템에서 iptables는 /usr/sbin/iptables에 설치되며, man iptables를 이용하여 열면 표시되는 man page에 문서화되어 있다. /sbin/iptables에서도 볼 수 있지만 iptables는 필수적인 이진 파일이라기 보다는 서비스에 더 가깝기 때문에 선호되는 위치는 /usr/sbin이다.


[출처] : https://ko.wikipedia.org/wiki/Iptables




즉, 이 iptables 를 이용하면 서버 방화벽의 규칙을 내가 임의로 어느정도 선에서 조정이 가능합니다.


언제, 어느때 사용하나?

서버에 내가 허용한 사람만 접근 가능하게 하고싶을때 입니다. 


  • 예를 들어 회사내에서 해당서버에 허용된 사람에게만 접근하고자 할때 그사람의 PC 아이피주소를 등록한다거나, 
  • 대량메일이나 대량 SMS발송시 특정 홈페이지나 서버에서만 사용 가능하게 하고자 할때, 
  • 해외 아이피를 차단하거나, 특정 지역의 아이피만 접속하게 하고자 할때

이런식으로 활용은 다양하게 할 수 있습니다.


셋팅(설정) 방법


대부분 리눅스의 iptables 경로는 기본적으로 /etc/sysconfig/iptables 에 있습니다.

vi이나 nano 에디터를 이용하여 열어봅니다

vi /etc/sysconfig/iptables


-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

-A INPUT -s 허용아이피 -j ACCEPT


위에 내용을 추가, 22번 포트(FTP, SFTP)와, 3306포트 (DB) 포트를 여는 문법 입니다. 그리고 제일 아래는 기입한 아이피만 접근 허용한다는 의미 입니다.


이렇게 셋팅을 하면 바로 서버에 반영이 되지 않아 반영을 따로 시켜야 합니다. 방법은 아래 두가지 방법중 편한 방법으로 하면 됩니다.


service iptables save

/etc/init.d/iptables restart


보통 IDC서버를 임대 하거나, 기존의 서버임대업체, KT클라우드 등을 사용할때에는 서버 managed(관리서비스) 서비스를 따로 신청 하지 않는 이상 개발자가 직접 셋팅해야 하는 번거로움이 있습니다.

최근 대세인 구글(Google), AWS(아마존웹서비스) 등을 이용하면 이런것들이 기본적으로 셋팅되며 웹 콘솔에서 간단하게 셋팅이 가능합니다.