지니워의 일상다반사

리눅스 방화벽 apf의 설치와 적용 본문

본격 SE업무이야기/기타 업무

리눅스 방화벽 apf의 설치와 적용

지니워 2013. 7. 30. 18:36

리눅스에는 기본적으로 iptables라는 방화벽 도구가 있다. 몇가지 규칙설정만으로 훌륭한 방화벽 역할을 하기는 하지만 규칙 설정이 조금 까다로운 부분도 있고 처음 리눅스를 접하는 사람이라면


'헐...이게 뭐임?'


이라는 반응을 내보이는 경우가 대부분이다. 나도 처음엔 그랬었다. 물론 지금도 똑같다는 것은 함정...ㅠ

어찌됐건 iptables가 훌륭한 방화벽인것은 분명하지만 좀 더 사용이 간편한 방화벽이 있다. 그건 바로 APF(Advance Policy Firewall). iptables를 좀더 쉽게 사용할 수 있게끔 하는 역할 + iptables에서 좀 더 발전된 성능을 가진 방화벽 도구라고 생각하면 될 듯 하다.



일단 설치방법부터 설명하겠다.


1. wget http://www.rfxnetworks.com/downloads/apf-current.tar.gz 로 src를 다운받는다.

2. tar zxvf apf-current.tar.gz로 압축을 푼다.

3. 압축을 푼 폴더로 이동해 ./install을 실행한다. 만약 선행 라이브러리가 없다고 error 메세지가 나오면 필요한 라이브러리를 설치한다.



보다시피 설치과정에서 어렵다고 할 만한 부분이 없다.


정상적으로 설치했다면 /etc/apf 경로에 apf가 설치된 것을 확인할 수 있다. 정상적으로 설치가 되었다면 이제는 설정부분으로 넘어가보자.


설정도 설치와 마찬가지로 크게 어려울 부분이 없다. 여기에서는 가장 보편적으로 사용하는 설정법에 대해 써 보겠다.


일단 서버에 직접 ssh로 연결하여 사용할 일은 SE와 일부 개발자외에는 없다. 개발자들도 svn update등과 같은 기능을 사용하는 것 외에는 접속할 일이 거의 없다. 거기에다가 개발자들이 root로 접속할 일은 더더욱 없다고 봐야 한다. 보통의 경우 이처럼 SE와 일부 개발자 외에는 서버에 접속할 일이 없다고 봐야 한다. 그렇다면 서버에 접속하는 인원 외에 다른 사람들의 접속을 막는 것이 가장 보편적인 방법이다.


일단 아래 명령을 실행한다.

vi /etc/apf/allow_host.rules


allow_host를 열어보면 따로 설명이 필요없을 정도로 설명을 잘 해놓았다. 친절하게 Example까지 적어놓았으니 왠만하면 알아서 설정할 수 있을 것이다.


"아닌데?나는 아직 이해못하겠는데?"


라고 생각하는 사람이 있을까봐 간략히 설명을 하겠다. allow_host파일 안에 들어가면


# Example:

# 192.168.2.1

# 192.168.5.0/24


부분이 있을 것이다. 이 아래쪽에 접속 허용할 아이피들을 주욱 적으면 된다.


# Example:

# 192.168.2.1

# 192.168.5.0/24

127.0.0.1

123.456.789.12


이런식으로 설정하면 된다. 이게 끝이다. 이 외에 접속 포트 설정이나 차단할 아이피 설정, 더 나아가 apf에서 사용할 모듈설정등과 같은 고급과정이 있긴 하지만 크게 알 필요는 없다. 여기까지만 알아도 apf는 잘 돌아간다.


물론 여기가 끝은 아니다. 위 과정을 마쳤으면


vi /etc/apf/conf.apf


에 접속해서 'DEVEL_MODE="1"로 된 것을 "0"으로 고쳐야 한다. 1로 설정해두면 apf는 5분마다 재실행이 된다. 일종의 테스트모드라고 생각하면 될 것이다. allow_host설정을 확인, 또 확인한 후 이상이 없다면 DEVEL_MODE를 1로 바꾸어주자.


그 다음은 apf의 실행 레벨 설정을 해줘야한다. 


chkconfig --level 345 apf on

/etc/init.d/apf start


여기서 주의할 것은 chkconfig부분인데 보통의 프로세스의 경우


'chkconfig 프로세스 이름 on'


으로 프로세스의 실행레벨을 설정할 수 있다. 이렇게 명령을 내리면 Run Level은 2, 3, 4, 5가 on이 되는데 무슨 이유인지 모르겠지만 Run Level 2가 on으로 되어있을 경우 apf는 자동으로 실행되지 않았다. (실서버에도 모두 Run Level은 모두 off로 설정되어 있다.) 그렇기 때문에 chkconfig를 설정할 때 레벨을 명시해주는 것이 좋다.


여기까지 apf설정을 마쳤다면 OS를 재부팅한다. 정상적으로 apf를 설정하였다면 부팅 후


iptables -nL


명령을 실행했을 때 iptables 관련 설정된 것들이 나올 것이다. 만약 그렇지 않다면


Chain INPUT (policy ACCEPT)

target     prot opt source               destination         


Chain FORWARD (policy ACCEPT)

target     prot opt source               destination         


Chain OUTPUT (policy ACCEPT)

target     prot opt source               destination    


위와 같은 화면을 볼 것이다. 그렇다면 처음부터 설정을 체크해봐야 한다.

짧게 쓰려고 했는데 쓰다보니 길어졌다. 이번 포스팅은 여기서 끝.


PS) 궁금한 점이 있으시면 댓글에 남겨 주세요. 아는 한도 내에서 답변 드리겠습니다.

'본격 SE업무이야기 > 기타 업무' 카테고리의 다른 글

ftp 서버 설치  (0) 2013.12.13
DNS가 헷갈리다.  (0) 2013.12.11
virtual box에 리눅스 깔다가 몸에 사리나오겠다.  (0) 2013.12.03
PMA(PhpMyAdmin)를 설치하라!  (0) 2013.11.05
ehci_hdc driver bug  (0) 2013.08.08
Comments