ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • LINUX 방화벽(Firewall)서버 구축하는 방법[1편]
    System of Infra/Linux System 2022. 7. 13. 22:03
    반응형

    LINUX 로고이미지

    LINUX 방화벽(Firewall) 서버 구축하는 방법[1편]

    ★테스트 환경
    1. 리눅스 서버#1(Client)
    IP address: 10.1.1.10[내부망]

    2. 리눅스 서버#2(Web Server)
    IP address: 10.1.1.20 [내부망]

    3. 리눅스 서버#3(Firewall Server)
    IP address: 10.1.1.1 [내부망 게이트웨이]
    IP address: 192.168.111.100 [외부망 NAT]

    4. 윈도우 서버#4(Host Client)
    IP address: 공인 IP [외부 네트워크]

    사설 IP 주소 범위

    10.0.0.0 ~ 10.255.255.255
    172.16.0.0 ~ 172.31.255.255
    192.168.0.0 ~ 192.168.255.255

    사설 IP주소가 외부의 인터넷을 접속할 때 사용할 수 있게 해주는 방법을 IP 마스커레이딩 이라고 함.
    리눅스 서버#3(Firewall Server)
    [root@localhost etc]# dnf -y install iptables-services
    마지막 메타 데이터 만료 확인 : 0:00:19 전에 2022년 06월 26일 (일) 오후 05시 35분 23초.
    종속성이 해결되었습니다.
    ========================================================================================================
     꾸러미                        아키텍처           버전                         리포지토리          크기
    ========================================================================================================
    Installing:
     iptables-services             x86_64             1.8.2-9.el8_0.1              BaseOS              58 k
    Upgrading:
     iptables                      x86_64             1.8.2-9.el8_0.1              BaseOS             582 k
     iptables-ebtables             x86_64             1.8.2-9.el8_0.1              BaseOS              67 k
     iptables-libs                 x86_64             1.8.2-9.el8_0.1              BaseOS              97 k
    
    거래 요약
    ========================================================================================================
    설치        1 꾸러미
    업그레이드  3 꾸러미
    
    총 다운로드 크기 : 805 k
    패키지 다운로드중:
    (1/4): iptables-services-1.8.2-9.el8_0.1.x86_64.rpm                      25 kB/s |  58 kB     00:02    
    (2/4): iptables-ebtables-1.8.2-9.el8_0.1.x86_64.rpm                      28 kB/s |  67 kB     00:02    
    (3/4): iptables-libs-1.8.2-9.el8_0.1.x86_64.rpm                         216 kB/s |  97 kB     00:00    
    (4/4): iptables-1.8.2-9.el8_0.1.x86_64.rpm                              178 kB/s | 582 kB     00:03    
    --------------------------------------------------------------------------------------------------------
    합계                                                                    245 kB/s | 805 kB     00:03     
    트랜잭션 점검 실행 중
    트랜잭션 검사가 성공했습니다.
    트랜잭션 테스트 실행 중
    트랜잭션 테스트가 완료되었습니다.
    거래 실행 중
      준비 중입니다  :                                                                                  1/1 
      스크립틀릿 실행: iptables-libs-1.8.2-9.el8_0.1.x86_64                                             1/1 
      Upgrading      : iptables-libs-1.8.2-9.el8_0.1.x86_64                                             1/7 
      스크립틀릿 실행: iptables-1.8.2-9.el8_0.1.x86_64                                                  2/7 
      Upgrading      : iptables-1.8.2-9.el8_0.1.x86_64                                                  2/7 
      스크립틀릿 실행: iptables-1.8.2-9.el8_0.1.x86_64                                                  2/7 
      Installing     : iptables-services-1.8.2-9.el8_0.1.x86_64                                         3/7 
    ...(생략)
    업그레이드 됨:
      iptables-1.8.2-9.el8_0.1.x86_64                  iptables-ebtables-1.8.2-9.el8_0.1.x86_64            
      iptables-libs-1.8.2-9.el8_0.1.x86_64            
    
    설치됨:
      iptables-services-1.8.2-9.el8_0.1.x86_64                                                              
    
    완료되었습니다!
    ▶ 리눅스 서버#3(Firewall Server)에서 방화벽 서버로써의 기능을 사용하기 위해서는 해당 서버가 방화벽 정책을 관리해야 합니다.
    방화벽 서버에서 인바운드(IN), 아웃바운드(OUT) 정책을 관리하고 있어야 외부와 내부 간의 허용 정책을 통해 안전하게 시스템 운영을 할 수 있기 때문에 해당 서버에 iptables 서비스 패키지를 설치합니다.

     

    LINUX 로고이미지1

    ▶ 리눅스 서버#2(WebServer)의 기존 IP가 192.160.111.200으로 10.1.1.20의 내부망 아이피로 변경을 해보도록 하겠습니다.
    리눅스 서버#2(WebServer)
    [root@localhost etc]# nmtui edit ens160
    ▶ 리눅스 서버#2(WebServer)에서 nmtui edit ens160을 통해서  네트워크 IP 편집기를 수행합니다.

     

    LINUX 로고이미지2

    ▶ 리눅스 서버#2(WebServer)에서 설정되어 있는 아이피 주소를 삭제합니다.

     

    LINUX 로고이미지3

    ▶ 리눅스 서버#2(WebServer)에 10.1.1.20 아이피를 설정한 뒤 게이트웨이는 10.1.1.1 마지막으로 DNS 주소는 구글 아이피 8.8.8.8로 설정한 뒤 저장합니다.

     

    LINUX 로고이미지4

    ▶ 리눅스 서버#2(WebServer)의 nmcli connection 명령어를 통해서 네트워크 재활성화를 시켜줍니다. 네트워크 재활성화가 완료되면 기존 192.160.111.200에서 10.1.1.20 아이피로 변경된 것을 확인할 수 있습니다.
    이것으로 리눅스 서버#2(WebServer)의 준비는 완료되었습니다.
    리눅스 서버#1(Client)
    [root@localhost /]# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 00:0c:29:20:71:88 brd ff:ff:ff:ff:ff:ff
        inet 172.30.1.50/24 brd 172.30.1.255 scope global dynamic noprefixroute ens160
           valid_lft 3519sec preferred_lft 3519sec
        inet6 fe80::ec0a:3af4:3a46:1197/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    ▶ 리눅스 서버#1(Client) 서버의 네트워크(ens160)의 아이피가 172.30.1.50이므로 10.1.1.10으로 변경을 해주는 작업을 해줍니다.
    리눅스 서버#1(Client)
    [root@localhost etc]# nmtui edit ens160
    ▶ 리눅스 서버#1(Client)에서도 동일하게  아이피 변경을 위해서 네트워크 IP 편집기를 수행합니다.

     

    LINUX 로고이미지5

    ▶ 리눅스 서버#1(Client)에 10.1.1.10의 아이피를 설정하고 게이트웨이는 10.1.1.1 마지막으로 DNS 주소는 구글 주소인 8.8.8.8로 설정한 뒤 저장합니다.
    리눅스 서버#1(Client)
    [root@localhost /]# nmcli connection down ens160
    연결 'ens160'이(가) 성공적으로 비활성화되었습니다(D-Bus 활성 경로: /org/freedesktop/NetworkManager/ActiveConnection/1).
    
    [root@localhost /]# nmcli connection up ens160
    연결이 성공적으로 활성화되었습니다 (D-Bus 활성 경로: /org/freedesktop/NetworkManager/ActiveConnection/4)
    ▶ 리눅스 서버#1(Client)의 nmcli connection 명령어를 통해서 네트워크 재활성화를 시켜줍니다. 네트워크 재활성화가 완료되면 기존 172.30.1.50에서 10.1.1.10 아이피로 변경된 것을 확인할 수 있습니다.
    리눅스 서버#1(Client)
    [root@localhost /]# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 00:0c:29:20:71:88 brd ff:ff:ff:ff:ff:ff
        inet 10.1.1.10/8 brd 10.255.255.255 scope global noprefixroute ens160
           valid_lft forever preferred_lft forever
        inet6 fe80::ec0a:3af4:3a46:1197/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    ▶ 리눅스 서버#1(Client)의 네트워크(ens160)의 아이피가 10.1.1.10으로 변경되었으며 이것으로 리눅스 서버#1(Client)의 준비는 완료되었습니다.
    리눅스 서버#1(Client)
    [root@localhost /]# ping -c 3 10.1.1.20
    PING 10.1.1.20 (10.1.1.20) 56(84) bytes of data.
    64 bytes from 10.1.1.20: icmp_seq=1 ttl=64 time=0.547 ms
    64 bytes from 10.1.1.20: icmp_seq=2 ttl=64 time=0.500 ms
    64 bytes from 10.1.1.20: icmp_seq=3 ttl=64 time=0.512 ms
    
    --- 10.1.1.20 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 88ms
    rtt min/avg/max/mdev = 0.500/0.519/0.547/0.033 ms
    ▶ 리눅스 서버#1(Client)과 리눅스 서버#2(WebServer) 간의 내부망 아이피 설정은 완료가 되었기 때문에 두 서버 간의 ICMP PING 테스트를 통해서 통신이 되는지 확인합니다.
    리눅스 서버#1(Client) -> 리눅스 서버#2(WebServer)로 PING 테스트합니다.

     

    LINUX 로고이미지6

    ▶ 리눅스 서버#3(Firewall Server)의 아이피를 두 개 부여하기 위해서 네트워크 포트 2개를 활용해야 합니다. ens160의 경우 외부와 통신이 되는 아이피를 할당, ens224의 경우는 내부와 통신을 하는 아이피를 할당해주도록 하겠습니다.

     

    LINUX 로고이미지7

    ▶ 리눅스 서버#3(Firewall Server)의 아이피를 10.1.1.1로 할당하고 서브넷 마스크는 255.255.255.0 C클래스로 할당 마지막으로 게이트웨이는 10.1.1.1로 설정 후 저장합니다.
    [root@localhost /]# vi /etc/sysconfig/network-scripts/ifcfg-ens224
    HWADDR=00:0C:29:E7:47:05
    TYPE=Ethernet
    PROXY_METHOD=none
    BROWSER_ONLY=no
    BOOTPROTO=none
    IPADDR=10.1.1.1
    PREFIX=24
    GATEWAY=10.1.1.1 -> 삭제
    DEFROUTE=yes ->삭제
    PEERDNS=no
    PEERROUTES=no
    IPV4_FAILURE_FATAL=no
    IPV6INIT=no
    NAME=ens224
    UUID=3bc2be09-c915-3fd7-90e5-dc4607ce9f52
    ONBOOT=yes
    AUTOCONNECT_PRIORITY=-999
    ▶ 리눅스 서버#3(Firewall Server)의 /etc/sysconfig/network-scripts/ifcfg-ens224 설정에서 GATEWAY와 DEFROUTE 항목을 삭제합니다.
    리눅스 서버#3(Firewall Server)
    [root@localhost /]# nmcli connection down ens224
    연결 'ens224'이(가) 성공적으로 비활성화되었습니다(D-Bus 활성 경로: /org/freedesktop/NetworkManager/ActiveConnection/2).
    [root@localhost /]# nmcli connection up ens224
    연결이 성공적으로 활성화되었습니다 (D-Bus 활성 경로: /org/freedesktop/NetworkManager/ActiveConnection/5)
    ▶ 리눅스 서버#3(Firewall Server)의 mcli connection 명령어를 통해서 네트워크 재활성화를 시켜줍니다. 네트워크 재활성화가 완료되면 설정된 아이피가 해당 어댑터에 활성화되는 것을 확인할 수 있습니다.
    리눅스 서버#3(Firewall Server)
    [root@localhost /]# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 00:0c:29:e7:47:fb brd ff:ff:ff:ff:ff:ff
        inet 192.168.111.100/24 brd 192.168.111.255 scope global noprefixroute ens160
           valid_lft forever preferred_lft forever
        inet6 fe80::4beb:7287:7a69:cde2/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    3: ens224: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 00:0c:29:e7:47:05 brd ff:ff:ff:ff:ff:ff
        inet 10.1.1.1/24 brd 10.1.1.255 scope global noprefixroute ens224
           valid_lft forever preferred_lft forever
        inet6 fe80::20c:29ff:fee7:4705/64 scope link
    ▶ 리눅스 서버#3(Firewall Server)의 ens160(192.168.111.100) 외부망 아이피 부여, ens224(10.1.1.1) 내부망 아이피 부여가 된 것을 확인할 수 있습니다.

    2022.07.14 - [System of Infra/LINUX] - LINUX 방화벽(Firewall)서버 구축하는 방법[2편]

     

    LINUX 방화벽(Firewall)서버 구축하는 방법[2편]

    LINUX 방화벽(Firewall) 서버 구축하는 방법[2편] ★테스트 환경 1. 리눅스 서버#1(Client) IP address: 10.1.1.10[내부망] 2. 리눅스 서버#2(Web Server) IP address: 10.1.1.20 [내부망] 3. 리눅스 서버#3(..

    pinetreeday.tistory.com

    2022.07.15 - [System of Infra/LINUX] - LINUX 방화벽(Firewall) 서버 구축하는 방법[3편]

     

    LINUX 방화벽(Firewall) 서버 구축하는 방법[3편]

    LINUX 방화벽(Firewall) 서버 구축하는 방법[3편] ★테스트 환경 1. 리눅스 서버#1(Client) IP address: 10.1.1.10[내부망] 2. 리눅스 서버#2(Web Server) IP address: 10.1.1.20 [내부망] 3. 리눅스 서버#3(Fir..

    pinetreeday.tistory.com

    2021.06.01 - [System of Infra/LINUX] - LINUX Centos 7 방화벽 설정 및 확인

     

    LINUX Centos 7 방화벽 설정 및 확인

    LINUX Centos 7 방화벽 설정 및 확인 [root@test_svr1 /]# netstat -ntl Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:111 0.0...

    pinetreeday.tistory.com

     

    PS. 포스팅의 내용은 제 기준으로 작성한 것이기 때문에 참고해서 보시면 감사하겠습니다.

    포스팅 과정의 오류 및 오타 그리고 궁금한 점에 대해서는 댓글 남겨주세요.

    반응형

    댓글

Designed by Tistory.