brunch

You can make anything
by writing

C.S.Lewis

by Younggi Seo Aug 07. 2021

Firewalld 매뉴얼

iptables 업그레이드 버전 소프트웨어 방화벽 설정 매뉴얼





현재 개인용 랩탑에서 사용하는 리눅스 WSL Ubuntu 20.04에서 firewalld 데몬을 설치하는 방법이다.


Step 1
# sudo apt-get update -y

Step 2
# sudo apt-get install -y firewalld


근무 중인 사이트의 한 보안 시스템에서 사용하는 OS가 CentOS 7.4 버전이라서 Firewalld 설정을 할 기회가 생겼다. 이전 편 'iptables 매뉴얼'에 이어 이번 편에서는 iptables가 업그레이드된 소프트웨어 방화벽인 Firewalld에 대해서 알아보고자 한다.



firewall 스택 from  https://www.lesstif.com/ws/firewalld-43844015.html


iptables는 사실 IT보안업체의 엔지니어가 아닌 이상 설정하기 까다롭고, 서버 엔지니어는 초기 서버 구축 시 iptables를 disable 시켜놓고 통신이 이루어지는지 확인부터 하므로 정책 설정(rule settting)까지 고려하지 않는다. 하지만 기본적으로 고객사에서 요구하는 특정 IP에 대한 접근 허용 PORT가 있을 것이고, CentOS7 이후의 버전에서의  firewall 데몬은 CLI 모드에서는 firewall-cmd , GUI 환경에서는 firewall-config를 사용한다. 그리고 Ubuntu 20.04 LTS 버전에서 아래와 같이 ufw(ubuntu Firewall)을 사용한다. 



ufw 상태를 확인하고 기본적으로 outgoing allow/incoming deny/ipv6 support로 설정하는 커맨드라인 명령어 


Firewalld는 iptables의 숙련되지 않는 사용자가 좀 더 쉽게 사용할 수 있도록, 그리고 차세대 네트워크 프로토콜 ipv6와의 통합해서 한 번에 설정이 가능토록 하였다. 


RHEL CentOS 7 버전은 firewalld의 네트워크 각 존(zone)별로 정책을 설정하여 적용해야 하고, 기본 존(Zone) public의 설정 파일 public.xml을 편집해서 정책 추가를 한다. 아래는 특정 IP(10.10.10.17, 15)가 특정 PORT(443, 51113)만을 사용해서 접근이 가능하도록 설정한 예이다.


 <?xml version="1.0" encoding="uft-8"?>
<zone>
    <short>Public</short>
    <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
    <service name="ssh"/>
    <service name="dhcpv6-client"/>
    <port protocol="tcp" port="8080"/>
    <rule family="ipv4">
        <source address="10.10.10.17"/>
        <port protocol="tcp" port="443"/>
        <accept/>
    </rule>
    <rule family="ipv4">
        <source address="10.10.10.15"/>
        <port protocol="tcp" port="443"/>
        <accept/>
    </rule>
  <rule family="ipv4">
      <source address="10.10.10.41"/>
      <port protocol="tcp" port="443"/>
      <accept/>
  </rule>
  <rule family="ipv4">
      <source address="10.10.10.17/>
     <port protocol="tcp" port="51113"/>
     <accept/>
  </rule> 
  <rule family="ipv4">
      <source address="10.10.10.15/>
      <port protocol="tcp" port="51113"/>
  <accept/>
  </rule>
      <source address="192.168.0.0"/>
      <port protocol="tcp" port="51113"/>
  <accept/>
  </rule>
</zone>

        


위 설정 맨 위의 description 태그 사이 아래로 service name 태그의 ssh, dhcpv6-client, port protocol="tcp" prot="8080" 부분이 default 정책이다. 그 아래로 <rule family="ipv4"> 아래로 허용 정책을 포트별로 하나씩 추가하였다. 현재는 public 존이 default이며 해당 존을 이용해서 정책을 설정했다.


vi(m) 편집기로 정책 추가 및 저장하고 나온 뒤 추가한 정책 적용을 위해 아래와 같이 정책을 다시 불러들인다.

 

 Step 1 (현재 존에 추가된 서비스 확인하기)
# firewall-cmd --list-services

Step 2 (변경된 정책 반영하기)
# sudo firewall-cmd --reload



존별로 정책을 설정하고 특정 IP에 대해 차단 그리고 특정 공격에 대한 설정 방법을 아래 사이트에서 더 자세하게 알 수 있다.


https://www.lesstif.com/ws/firewalld-43844015.html        




그리고 Ubuntu 20.04에서의 firewall 설정 방법에 대해서 아래 두 사이트에서 더 자세하게 알 수 있다. 


1) https://www.answertopia.com/ubuntu/basic-ubuntu-firewall-configuration-with-firewalld/


2) https://www.cyberciti.biz/faq/how-to-configure-firewall-with-ufw-on-ubuntu-20-04-lts/




매거진의 이전글 iptables 우분투 리눅스 매뉴얼
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari