SERVER/ubuntu

[리눅스시스템보안]방화벽

혼자좀비 2024. 6. 23. 14:53

정의 : 방화벽이란 불법으로 외부에서 침입하는 것을 차단하고 내부에 정보가 유출되는것을 방지하는 침입차단 시스템
서버간 통신 데이터를 패킷이라고 부르는데 외부에서 들어오는 패킷은 인바운드라고 하고, 서버에서 나가는 패킷은 아웃바운드라고한다. 이 패킷의 정책을 설정하여 정책에 따라 패킷을 허가하거나 거부하는 방식으로 동작한다.
 
리눅스 방화벽은 크게 리눅스 커널을 제어하여 실제 네트워크 패킷을 필터링하는 방화벽 처리부와 필터링 정책을 추가/제거하는 방화벽 제어부로 구성된다. 우분투는 ufw(Uncomplicated Firewall)방화벽 시스템을 사용하고, redhat linux는 firewalld방화벽 시스템을 사용한다.

 
방화벽 처리 흐름을 보면 리눅스 커널에는 nftables프레임워크가 패킷을 필터링(허용/거부)한다. 필터링 정책은 ufw서비스에서 관리하고, 정책설정은 CLI환경의 ufw명령어와 GUI환경의 gufw프로그램으로 설정할수 있다.
 
#방화벽 정책 확인하기
k@k-VirtualBox:~$ sudo ufw status
#방화벽 작동
k@k-VirtualBox:~$ sudo ufw enable 
#현재 사용중인 방화벽 정책확인
k@k-VirtualBox:~$ sudo ufw status verbose 

상태: 활성
로깅: on (low)
기본 설정: deny (내부로 들어옴), allow (외부로 나감), disabled (라우팅 된)
새 프로필: skip

 
#서비스 단위 방화벽 정책 -> sudo ufw [허용/차단] [서비스명]
 - 서비스단위(HTTP,SSH) 정책 추가
  : k@k-VirtualBox:/$ sudo ufw allow ssh

추가 후 ssh정책이 동작되는걸 확인할수 있다.

 - 서비스단위(HTTP,SSH) 차단정책
  : k@k-VirtualBox:/$ sudo ufw deny ssh

추가후 ssh정책이 차단된것을 확인할수 있다.

 - 서비스단위(HTTP,SSH)정책 삭제
  : k@k-VirtualBox:/$ sudo ufw delete deny ssh

명령어 입력후 정책이 삭제되는것을 확인할수있다.

 

#포트 단위 방화벽 정책 -> sudo ufw [허용/차단] [포트번호]/[tcp/udp]

 - 포트단위 정책 추가 
k@k-VirtualBox:/$ sudo ufw allow 22/tcp

 - 포트단위 정책 차단
k@k-VirtualBox:/$ sudo ufw deny 22/tcp

- 포트단위 정책 삭제
k@k-VirtualBox:/$ sudo ufw delete deny 22/tcp

 

#특정IP주소에 대한 방화벽 설정 -> sudo ufw allow from [ip주소] to any [포트|서비스]
k@k-VirtualBox:/$ sudo ufw allow from 192.168.100.0/24 to any port 22

 

 
 

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

1.sudo apt install apache2명령어로 apache를 설치
아래와 같이 설치 후 ubuntu에서는 정상적으로 나오지만 다른 리눅스에서 접근할 경우 접근이 안된다.

 
 - 아래와 같이 ubuntu에 http방화벽 규칙 추가
k@k-VirtualBox:~$ sudo ufw allow http

아래와같이 방화벽 규칙을 추가하여 다른 리눅스에서도 접근이 가능하게 되었다.
(방화벽 규칙에 80번 포트가 추가되어 접근가능(80번 포트가 아닌 다른 포트일 경우 포트를 추가하면된다.))