네트워크 보안

방화벽 설정

JNU 2022. 11. 7. 12:16
반응형

이번에는 CentOS에서 firewall과 nmap 간의 관계를 파악해보는 실험을 해보도록 하겠다.

먼저, CentOS에서 firewall과 systemctl을 이용하여 port service와 방화벽을 setting 하자.

 

 

1. firewall 설정하기

firewall의 환경설정 상태를 확인할 수 있는 명령으로 firewall에 설정된 모든 정보를 확인할 수 있다.

현재 CentOS에서 firewall을 설정한 port들을 확인할 수 있다.

firewall에 port 등록하는 명령은 다음과 같다.

 

-firewall-cmd --permanent--add-service= [service name]

option의 permanent는 영구적으로 이 service를 등록하겠다는 option이다.

 

 

firewall-cmd가 구동하기 위한 file은 /etc/firewalld/zones/public.xml file이다.

이 file에서 xml 형식대로 service를 추가해도 되고,

firewall-cmd --add-service=[service name] 형식으로도 추가해도 된다.

/etc/firewalld/zones/public.xml 파일 내용이다. 다음과 같은 service가 등록되어 있다.

 

cf1) firewalld와 iptables

CentOS7에서는 firewalld 도구를 통해 방화벽을 구성할 수 있지만 version 7 이하는 그렇지 않다.

6 version은 iptables 도구를 통해 방화벽을 구성한다.

그리고 firewalld와 iptables는 도구일 뿐 방화벽을 수행하는 주체는 아니다.

방화벽을 실행하는 주체는 'Netfilter'다.

 

cf2) firewall 관리 명령 및 file

firewall을 사용하기 위해 환경설정을 하는 세 가지 명령과 파일이 있다.

firwall-cmd = firewall-config= /etc/firewalld/zones/public.xml

위의  세가지 명령 및 파일은 같은 역할을 하기 때문에 자신의 취향에 따라 사용하면 좋을 듯하다.

 

 

 

2. service 구동하기

service를 control 할 수 있는 명령은 systemctl 명령이다.

- systemctl status [service name]:  port의 상태를 확인할 수 있는 명령

 

- systemctl restart [service name]:  port를 다시 구동하는 명령

 

- systemctl enable [service name]:  system을 rebooting해도 port를 계속 사용할 수 있도록 하는 명령

 

- systemctl stop [service name]:  port를 중지시키는 명령

현재 httpd는 stop되어 있는 상태라는 것을 알 수 있다.

 

 

3. firewalld와 systemctl의 수행에 따른 nmap결과 

 

case1)

systemctl restart firewalld 명령으로 방화벽을 실행한 상태에서 nmap으로 scanning을 해본다.

 

ssh, telnet, dns, http는 firewall을 실행해도 nmap을 통해서 scanning이 가능했다.

그 이유는 firwall-cmd 명령을 통해 port를 등록했기 때문이다.

이제, 여기서 systemctl stop 명령으로 http와 telnet을 중단시키면 다음과 같은 결과가 나온다.

port가 scanning되지만 state가 open에서 closed로 변환된 것을 확인할 수 있다.

즉, port service를 stop 하여도 firewall에 등록된 service일 경우 nmap에서 scanning을 할 수 있다는 것을 알 수 있다.

대신 state만 closed되어 사용되지 않을 뿐이다. 대신 공격자는 closed 되었다는 '정보'를 취득하게 되는 것이다.

 

 

case 2)

이번에는 firewall-cmd 명령으로 service들을 firewalld 목록에서 제거해보도록 하겠다.

ssh를 firewall-cmd 명령을 이용해 제거하고 nmap 결과를 확인해봤다.

firewall-cmd 명령으로 ssh를 제거한 모습
nmap으로 centos를 scanning한 결과. ssh항목이 없음을 확인할 수 있다.

 

이를 통해 알 수 있는 것은 firewall에서 service를 제거하면 nmap에서 scanning이 불가능하다는 것이다.

그리고 service를 중단시켜도 firewall에 service가 등록되어 있다면,  nmap으로 scanning이 가능하다는 것을 보여준다.

 

 

 

case 3)

그렇다면, systemctl stop firewalld 명령으로 방화벽을 중단시키면 어떻게 될까?

지금 구동되고 있는 모든 service들이 다 노출되는 결과를 보여준다.

 

 

systemctl stop service를 실행하고 firewall을 다시 실행시키면 어떤 결과가 나오는지 확인해보자.

firewall-config 또는 firewall-cmd --add 명령으로 등록한 service들을 제외한 나머지 service들은 

nmap을 통해 scanning 되지 않았음을 확인할 수 있었다.

이를 통해 firewall과 systemctl을 통한 port service의 적절한 활용을 통해

공격자의 공격을 막아낼 수 있다는 것을 알 수 있게된다.

 


 

결론

firewall은 항상 구동시키는 것이 보안적으로 안전하다. 

그렇지 않을 경우 실행되는 모든 service들의 내용을 scanning 당할 우려가 있다.

그러나, firewall에 등록된 service들의 경우, 사용하지 않을 때는 systemctl stop 명령으로

state closed 상태로 전환하는 것이 좋다.

firewall에 등록된 service 내역은 nmap으로 scan 될 수 있기 때문이다.

 

반응형