리눅스 ufw를 이용한 웹 서비스 방화벽 정책 실습

리눅스 시스템 보안 기초

리눅스 서버를 운영할 때 보안이 가장 취약한 부분은 사용자 계정이다.

사용자 계정의 비밀번호 등이 너무 쉬우면 정보가 잘 유출되기 때문이다. 그래서 공격자가 사용자 정보를 해킹하는 사례가 증가하고 있다.

사용자 계정의 보안 사고/공격

사용자 계정의 보안을 위협하는 유형은 크게 무차별 대입 공격(사전 대입 공격), 시스템 계정의 유출, 파일 및 디렉터리의 변조와 유출로 나뉜다.

무차별 대입 공격 : 비밀번호를 무작위로 입력하여 사용자 또는 시스템 계정의 비밀번호를 알아내는 방법

시스템 계정 유출 : 모든 권한을 가진 root 사용자의 비밀번호를 취득하는 것으로. 각종 사용자의 계정 정보를 탈취해서 서비스 중단과 같은 문제가 발생할 수 있다.

파일 및 디렉터리의 변조와 유출 : 서버 내에 저장된 데이터를 변조하거나 유출하는 방법으로, 개인 정보 혹은 금융 정보가 노출되는 문제를 일으킬 수 있다.

방화벽

방화벽이란 불법으로 외부에서 침입하는 것을 차단하고 내부에서 정보가 유출되는 것을 방지하는 침입 차단 시스템이다.

서버 간 통신 데이터를 ‘패킷’이라고 부르는데, 방화벽은 외부에서 들어오는 패킷인 인바운드(inbound)와 서버에서 나가는 패킷인 아웃바운드(outbound)에 대한 정책을 설정하여 정책에 따라 패킷을 허가하거나 거부하는 방식으로 작동한다.

방화벽 사진 방화벽의 종류로는 네트워크에 별도의 장비를 구성된 방식과 윈도우나 리눅스 서버내에 서비스 형태로 구성된 방식이 있다.

방화벽 서비스 확인 [비활성 상태이므로 현재 방화벽은 작동하지 않는다] 방화벽 서비스 확인

방화벽 작동 방화벽 작동

현재 사용 중인 방화벽 정책을 확인 현재 사용중인 방화벽 정책 확인

방화벽 정책 추가/삭제

방화벽은 서비스 단위 (HTTP, SSH) 혹은 포트 단위 (22/tcp)로 설정할 수 있다.

서비스 이름

방화벽 SSH 서비스 허용 정책 추가 및 확인

방화벽 SSH 서비스 허용 정책 추가 및 확인

  • SSH 서비스 차단 정책을 추가하려면 allow 대신 deny를 입력한다.

방화벽 SSH 정책 삭제

  • 정책 삭제는 지우고자 하는 정책 앞에 delete를 붙여서 실행한다 [sudo ufw delete deny ssh]

포트번호

포트별 방화벽 정책 추가/삭제 형식 sudo ufw [허용/차단] [포트 번호]/[tcp/udp]

방화벽 22번 TCP 포트 허용 정책 추가 및 확인 방화벽 22번 TCP 포트 허용 정책 추가 및 확인

deny, delete deny, delete

특정 IP 주소에 대한 방화벽 설정

지금까지 설정한 방화벽 정책은 주소에 대한 설정 없이 모든 주소에 대해 적용되는 설정이었다. 그러나 기업에서 특정 IP 대역만 일부 서비스에 접근할 수 있도록 방화벽 정책을 추가한다거나 악성 IP 공격을 막기 위해 특정 IP만 차단하는 정책을 추가하는 등 세부 IP에 대해서만 설정이 필요한 경우가 있다.

특정 IP 주소는 from, to 명령어로 지정할 수 있다.

방화벽 192.168.100.0/24 대역에서 22번 포트에 접근 가능하도록 허용 방화벽 192.168.100.0, 24 대역에서 22번 포트에 접근 가능하도록 허용

웹 서비스를 위한 방화벽 정책 설정하기

이번에는 방화벽이 제대로 작동하는지 확인해야 하니까 확인을 위해 간단한 웹 서버를 구축한 후 방화벽 정책을 변경하여 웹 서비스 접속을 허용하는 실습 수행.

우분투

  1. 터미널에서 sudo apt install apache2를 입력하여 설치 후 systemctl start apache 입력해 실행한다. 우분투 아파치 인증

웹 브라우저 실행 후 웹 브라우저에서 http://192.168.100.11을 입력하여 테스트 페이지가 열리는지 확인한다. 웹 브라우저 실행 후 테스트 페이지 열리는지 확인

칼리

방화벽을 거칠 때 웹 서비스에 접속이 가능한지 확인하기 위해 칼리 리눅스를 켠 뒤 로그인한 후 웹브라우저를 실행한다. 칼리 접속 가능 확인 여부 이전 192.168.100.11에 접속하면 방화벽에 막혀 해당 웹 서비스에 접근하지 못하는 것을 알 수 있다.

우분투

다시 우분투로 돌아와 해당 웹 서비스에 접근할 수 있도록 방화벽 정책을 허용 우분투로 돌아와 웹 서비스 접근 방화벽 정책 허용

칼리

칼리 리눅스로 돌아가 다시 웹 페이지에 접속해보니 정상적으로 패킷을 통과하여 접속이 되는 것을 확인할 수 있다. 정상적으로 패킷을 통과하여 접속이 되는 것 확인 (칼리)

정리

리눅스 시스템의 부팅 과정에서 시스템 접근 인증을 우회하는 보안 위협에 대응하기 위해 부트로더 GRUB 비밀번호를 설정하여 보안을 강화하는 방법 및 ufw를 이용해 웹 서비스 방화벽 정책을 추가하면서 최소한의 권한으로 서비스를 허용하는 실습을 진행하였다.

리눅스에 웹 서비스나 데이터베이스 서비스를 운영할 때 운영체제 내 보안이 취약하면 서비스 보안도 위협을 받게 된다. 따라서 리눅스 설치 후 부팅부터 사용자 권한까지 리눅스의 기본 보안 서비스에 대한 설정은 서비스 보안에 있어서 기본적이면서도 가장 중요한 활동이라고 할 수 있다.

댓글남기기