리눅스에서 방화벽(firewall)으로 많이 사용하는 iptables 설정법

여기에 올리는 글을 초보자를 위한 자세한 설명이 아니라 자주 사용하는 명령을 간략하게 적어 놓은 것이다.

별도의 설명이 없는 한 배포판은 CentOS를 기초로 하고 있다. 자세한 설명이나 사용법은 리눅스 책이나 다른 블로그 포스팅을 참조하기 바란다.

리눅스는 기본적으로 명령어 뒤에 각종 옵션들을 붙이다보니 긴 명령문이 되어 버린다.

그래서 윈도우즈나 맥OS 같은 GUI 환경에서 작업하는게 부러울 때는 리눅스에 그놈(GNOME: GNU Network Object Model Environment)을 사용하기도 한다.

그런데 그놈(욕이 아니라 이름이다)에 익숙하지 않아서 그런지 느리고 할 수 있는게 제한적이라 답답하다.

그래서 요즘은 처음부터 리눅스의 한 종류인 유분투(Ubuntu)를 설치하는 사용자가 많아 지고 있다.

유분투‘는 컴퓨터 OS의 이름이기도 하지만

남아프리카 반투어에서 유래된 말로 ‘네가 있어 내가 있다‘ 또는 ‘함께 있어 내가 있다‘ 라는 뜻이지만

‘사람들간의 관계와 헌신을 강조한 전통적 사상으로 평화운동의 사상적 뿌리’이기도 하다.

워낙 많은 의미가 함축되어 있는 말이라 딱 한마디로 정의하기가 힘든 심오한 뜻으로 ‘故 넬슨 만델라 대통령’이 자주 강조한 말이기도 하다.

다시 원점으로 돌아와서 리눅스에서 환경설정을 약간의 GUI(GUI라 부르기 민망하지만)로 할 수 있는 명령이 있다.

system-config-securitylevel

그런데 리눅스는 어디까지나 명령어를 직접 치는 맛에 사용한다.

이제 방화벽(firewall)으로 많이 사용하는 iptables 사용법을 알아 보자.

설치
yum -y install iptables
chkconfig iptables on

시작
service iptables start

centos에 기본 설치 했을 때 설치 경로입니다.
/etc/sysconfig/iptables

당연한 얘기겠지만 실치 경로는 리눅스 배포판과 소스 설치 시 옵션과 rpm, yum 등 패키지 툴에 따라 다릅니다.

그런 변수는 설치한 분들이 더 잘 알테니 무시하고 기본 설치 시만 얘기하도록 하겠습니다.

설정은 두가지 방법이 있습니다.
1) iptables 명령으로 직접 설정하고 저장하는 방법과
2) 설정파일을 열어서 편집하는 방법입니다.

1) 설정 명령 후 저장
룰 추가
iptables -I INPUT -m state –state NEW -m tcp -p tcp –dport 8020 -j ACCEPT

저장 및 적용
/etc/init.d/iptables save
/etc/init.d/iptables restart

확인
/etc/init.d/iptables -L -n

2) 설정 파일을 열어서 편집하는 방법은 다음처럼 하면 됩니다.
파일 편집 후 저장
vi /etc/sysconfig/iptables-config

적용
/etc/init.d/iptables restart

힘들게 설정한 것을 백업해야 해둬야겠죠. 

백업 명령
iptables-save > 백업할파일명

설정을 백업 했으면 복구도 해야겠죠.

복구 명령
iptables-restore < 백업한파일명

iptables 확인 옵션
iptables -L : 리스트 확인
iptables -n : PORT를 이름이 아닌 숫자로 표현
iptables -v : 자세한 출력(인터페이스 장비도 출력됨)

설정파일을 편집해서 방화벽의 특정 포트를 오픈해보도록 하겠습니다.

오픈할 포트는 개발 서버에서 많이 사용하는 21(FTP), 22(SSH), 80(WEB), 8080(WEB), 139(Netbios), 443(ssl), 445(smb), 3306(MySql), 3690(svn) 입니다.

vi /etc/sysconfig/iptables
-A INPUT -p tcp -m state –state NEW -m tcp –dport 21 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT
-A INPUT -p tcp -m state –state NEW -m tcp –dport 80 -j ACCEPT
-A INPUT -p tcp -m state –state NEW -m tcp –dport 8080 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state –state NEW -m tcp –dport 139 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m state –state NEW -m udp –dport 139 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state –state NEW -m tcp –dport 443 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state –state NEW -m tcp –dport 445 -j ACCEPT
-A INPUT -p tcp -m state –state NEW -m tcp –dport 3306 -j ACCEPT
-A INPUT -p tcp -m state –state NEW -m tcp –dport 3690 -j ACCEPT
-A INPUT -j REJECT –reject-with icmp-host-prohibited
주의 : 방화벽 설정은 순서대로 적용 되니 꼭 reject 이전에 accept 가 와야 합니다.

 설정 파일을 저장했으면 방화벽 다시 시작해야겠죠.
/etc/init.d/iptables restart 

#리눅스 #Firewall #iptables #방화벽