Sunday, April 1, 2018

CentOS 6.6 리눅스 네트워크 ] 12.1 iptables 리눅스 방화벽 간단 구성


안녕하세요. 썬구루입니다. 이 게시물에서는 CentOS 리눅스 iptable 방화벽 구성 방법에 대해 간단하게 알아보도록 하겠습니다.

요즘에는 보안이 많이 중요해졌습니다. 일 년에 한두 번은 대형 해킹 사고가 터지고 있습니다. 전산실에는 네트워크 보안을 담당하는 방화벽이 있긴 하지만 개별 서버 시스템에 대해서도 보안에 각별한 신경을 쓰고 있습니다. 서버 보안, 네트워크 보안, 응용 보안, 코드 보안 등등..

요즘 운영체제는 보안 기능이 기본 탑재되어 있습니다. 윈도우는 윈도우 방화벽이, 솔라리스는 IPFilter가 리눅스는 iptables이 보안 기능을 제공합니다. 또는 Red Castle이나 Red Owl 같은 상용 보안 프로그램을 운영체제에 설치하여 운영하는 곳도 있습니다. 우리는 이 게시물에서 iptables을 가지고 간단하게 보안 설정하는 방법에 대해 알아보도록 하겠습니다. 상세 내용은 다른 것과 마찬가지로 올해 말 또는 내년 초에 올리도록 하겠습니다.

■ iptables이란?

리눅스 운영체제에 기본 탑재된 패킷 필터링 툴(Tool)이자 OS 방화벽입니다. iptables는 방화벽 기능을 구현할 수 있게 해주는 프레임워크를 제공하는 Netfilter이며 이는 프로젝트명입니다.


1). iptables 기능

iptables는 아래와 같은 기능을 제공합니다.

▶ 상태 추적 기능

  - 방화벽을 통과하는 모든 패킷에 대한 상태를 추적하여 메모리에 기억
  - 기존의 연결을 가장하여 접근할 경우 메모리와 저장된 목록과 비교 후 차단

▶ 포트 포워딩 기능 내장

  - NAT 기능을 자체적으로 포함 ( 공유기 기능으로 생각하면 편리함. )

▶ 향상된 매칭 기능

  - 기본 매칭 정보인 IP 주소와 포트 주소뿐만 아니라 다양한 매칭 기능 제공
  - 현재 연결 상태, MAC 주소, IP 헤더의 TOS 등 여러 가지 조건을 이용한 세부적인 필터링 가능

2). iptables의 4개 테이블

다른 방화벽 프로그램에 비해 빠르며 IP 패킷에 대한 제어가 가능합니다. Iptables는 다음과 같은 4개 테이블이 존재합니다. 그리고 이 게시물에서 Filter만 다룹니다.

▶ Filter : iptables의 패킷 필터링 담당
▶ NAT : 네트워크 주소 변환(Network Address Translation)의 약자로 IP 주소를 변환시키는 역할
▶ Mangle : 패킷 데이터를 변경하는 특수 규칙을 적용하거나 성능 향상을 위한 TOS 설정
▶ Raw : 넷필터의 연결 추적 하위시스템과 독립적으로 동작해야 하는 규칙을 설정

3). iptables의 Filter table 3개 체인 (Chain)

▶ INPUT : 외부에서 들어오는 패킷을 담당하는 체인
▶ OUTPUT : 외부로 나가는 패킷을 담당하는 체인
▶ FORWARD : 외부에서 다른 시스템 또는 네트워크로 전달되는 패킷을 담당하는 체인

4). iptables이 적용되는 시기

▶ iptables 서비스가 적용될 때
▶ iptables 명령을 통해 규칙을 적용시킬 때 즉시 적용


■ iptables 기본 명령

1). iptables 기본 명령

기본 명령
내 용
-A Chain
 규칙을 아래에 추가하기 위해 사용
-D Chain
 규칙을 삭제
-D Chain RULENUM
 해당 번호 규칙을 삭제
-I Chain
 규칙 삽입
-R Chain RULENUM
 해당 번호 규칙 변경
-L [Chain]
 전체 또는 특정 체인 규칙보기
-F [Chain]
 전체 또는 특정 체인 초기화

2). iptables 명령어 Match 옵션

Match
내 용
-p PROTOCOL
 프로토콜 이름 또는 숫자 (tcp, udp, icmp, all 등)
-s ADDRESS/MASK
 근원지 IP 주소
-d ADDRESS/MASK
 목적지 IP 주소
--sport PORT
 근원지 포트 주소
--dport PORT
 목적지 포트 주소

3). iptables 명령어 Target

Target은 매치되는 패킷을 어떻게 처리할지 지정하는 부분입니다.

Target 옵션
내 용
-j ACCEPT
 패킷 허용
-j DROP
 패킷 폐기
-j REJECT
 패킷 거부

4). ping(IPMP) 신호 거부 테스트

WAS01(192.168.80.22) 가상머신에 iptables를 활성화한 후 방화벽 정책 추가로 ping 신호가 거부되는지 테스트합니다.

[root@was01 ~]# hostname
was01
[root@was01 ~]# ifconfig eth0

eth0      Link encap:Ethernet  HWaddr 00:0C:29:3E:63:0B
          inet addr:192.168.80.22  Bcast:192.168.80.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe3e:630b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:29787 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16687 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:30793923 (29.3 MiB)  TX bytes:4034939 (3.8 MiB)

[root@was01 ~]# service iptables start
iptables: Applying firewall rules:                         [  OK  ]
[root@was01 ~]#
[root@was01 ~]# chkconfig iptables on
[root@was01 ~]#
[root@was01 ~]# iptables -L

Chain INPUT (policy ACCEPT)
target     prot opt source               destination 
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere     
ACCEPT     all  --  anywhere             anywhere     
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination 
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

[root@was01 ~]#
[root@was01 ~]# iptables -I INPUT -p icmp -j DROP
[root@was01 ~]#
[root@was01 ~]# iptables -L | grep icmp

DROP       icmp --  anywhere             anywhere     
ACCEPT     icmp --  anywhere             anywhere     
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

[root@was01 ~]# 

Windows 8.1 가상머신에서 WAS01로 ping 테스트를 하면 ping 신호가 처리가 되지 않는 것을 확인할 수 있습니다.


아래와 같은 명령을 사용하여 추가한 정책을 삭제하면 다시 ping 테스트가 정상 처리되는 것을 확인할 수 있습니다.

[root@was01 ~]# iptables -D INPUT -p icmp -j DROP
[root@was01 ~]#
[root@was01 ~]# iptables -L | grep icmp
ACCEPT     icmp --  anywhere             anywhere     
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited
[root@was01 ~]# 




■ CentOS 가상머신 iptables 활성화

1). WEB01 가상머신 ( HTTPD : 80 포트 사용 )

[root@web01 ~]# vi /etc/sysconfig/iptables

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

[root@web01 ~]#
[root@web01 ~]# service iptables start
iptables: Applying firewall rules:                         [  OK  ]
[root@web01 ~]#
[root@web01 ~]# chkconfig iptables on
[root@web01 ~]# 

또는

[root@web01 sysconfig]# iptables -L --line-number
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination 
1    ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
2    ACCEPT     icmp --  anywhere             anywhere     
3    ACCEPT     all  --  anywhere             anywhere     
4    ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
5    REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination 
1    REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination 
[root@web01 sysconfig]# iptables -I INPUT 5 -p tcp -m tcp --dport 80 -j ACCEPT
[root@web01 sysconfig]#
[root@web01 sysconfig]# iptables -L --line-number
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination 
1    ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
2    ACCEPT     icmp --  anywhere             anywhere     
3    ACCEPT     all  --  anywhere             anywhere     
4    ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
5    ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:http
6    REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination 
1    REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination 
[root@web01 sysconfig]#
[root@web01 sysconfig]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
[root@web01 sysconfig]#
[root@web01 sysconfig]# more iptables
# Generated by iptables-save v1.4.7 on Mon Oct 17 11:48:38 2016
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [10:1155]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Mon Oct 17 11:48:38 2016
[root@web01 sysconfig]#

2). WEB01 가상머신 (mod_jk : 8009 포트 사용(HTTPD와 Tomcat 연동), Tomcat : 8080 포트 사용)

[root@was01 ~]# vi /etc/sysconfig/iptables

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8009 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

[root@was01 ~]#
[root@was01 ~]# service iptables start
[root@was01 ~]# service iptables stop
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Unloading modules:                               [  OK  ]
[root@was01 ~]#
[root@was01 ~]# service iptables start
iptables: Applying firewall rules:                         [  OK  ]
[root@was01 ~]#
[root@was01 ~]# chkconfig iptables on
[root@was01 ~]# 

Windows 8.1 가상머신의 웹브라우저를 사용하여 주소창에 웹서버 IP 또는 도메인 이름을 입력하여 접속되는지 확인을 합니다. 아래와 같이 나온다면 iptables이 WEB01과 WAS01에 잘 구성된 것입니다.


3). DB01 가상머신 (MySQL : 3306 포트 사용)

[root@db01 ~]# vi /etc/sysconfig/iptables

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

[root@db01 ~]# service iptables start
iptables: Applying firewall rules:                         [  OK  ]
[root@db01 ~]#
[root@db01 ~]# chkconfig iptables on
[root@db01 ~]# 

Windows 8.1 가상머신의 웹브라우저를 사용하여 주소창에 도메인 주소와 파일을 입력하여 서비스가 되는지 확인합니다.


4). DB02 가상머신 (Oracle 11g Express : 1521 포트 사용)

[root@db02 ~]# vi /etc/sysconfig/iptables

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 1521 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

[root@db02 ~]#
[root@db02 ~]# service iptables start
iptables: Applying firewall rules:                         [  OK  ]
[root@db02 ~]#
[root@db02 ~]# chkconfig iptables on
[root@db02 ~]# 

Windows 8.1 가상머신의 웹브라우저를 사용하여 주소창에 도메인 주소와 Oracle 11g Express 접속 테스트를 확인할 수 있는 파일인 oracle.jsp을 입력하여 서비스가 되는지 확인합니다.





5). DB03 가상머신 (Oracle 12c Standard : 1521 포트 사용)

[root@db03 ~]# vi /etc/sysconfig/iptables

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 1521 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

[root@db03 ~]#
[root@db03 ~]# service iptables start
iptables: Applying firewall rules:                         [  OK  ]
[root@db03 ~]#
[root@db03 ~]# chkconfig iptables on
[root@db03 ~]# 


6). DNS 가상머신 (BIND : 53 포트 사용)

[root@dns ~]# vi /etc/sysconfig/iptables

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

[root@dns ~]# service iptables start
iptables: Applying firewall rules:                         [  OK  ]

[root@dns ~]# chkconfig iptables on
[root@dns ~]# 

Windows 8.1 가상머신의 명령창(cmd)에서 아래와 같이 도메인 이름 풀이가 잘 되는지 확인합니다.


7). NFS01 가상머신 (NFS : 111, 2049 포트 사용)

WEB01 가상머신에서 마운트 된 /data01을 아래와 같이 언마운트 합니다.

[root@web01 ~]# df
Filesystem           1K-blocks    Used Available Use% Mounted on
/dev/mapper/vg_os-root
                      16177064 2696240  12652408  18% /
tmpfs                   957724     224    957500   1% /dev/shm
/dev/sda1               194241   33170    150831  19% /boot
192.168.80.12:/data01         16177152 2743552  12605184  18% /data01
[root@web01 ~]#
[root@web01 ~]# umount /data01

NFS01 가상머신에서 아래와 같이 iptables을 설정하고 서비스를 시작합니다.

[root@nfs01 ~]# vi /etc/sysconfig/iptables

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2049 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 2049 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 111 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

[root@nfs01 ~]#
[root@nfs01 ~]# service iptables start
iptables: Applying firewall rules:                         [  OK  ]
[root@nfs01 ~]#
[root@nfs01 ~]# chkconfig iptables on
[root@nfs01 ~]# 

WEB01에서 NFS01 공유 디렉터리를 다시 마운트 합니다. 마운트가 된다면 방화벽 정책이 정상적으로 설정된 것입니다.

[root@web01 ~]# mount /data01
[root@web01 ~]# df
Filesystem           1K-blocks    Used Available Use% Mounted on
/dev/mapper/vg_os-root
                      16177064 2696236  12652412  18% /
tmpfs                   957724     224    957500   1% /dev/shm
/dev/sda1               194241   33170    150831  19% /boot
192.168.80.12:/data01                16177152 2743552  12605184  18% /data01
[root@web01 ~]# 

8). Samba01 가상머신 (Samba : 137, 138, 139, 445 포트 사용)

아래와 같이 Samba 서비스 포트를 설정하고 그리고 iptables 서비스를 실행합니다.

[root@samba01 ~]# vi /etc/sysconfig/iptables

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 137 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 138 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

[root@samba01 ~]#
[root@samba01 ~]# service iptables start
iptables: Applying firewall rules:                         [  OK  ]
[root@samba01 ~]#
[root@samba01 ~]# chkconfig iptables on
[root@samba01 ~]# 

Windows 8.1 가상머신에서 탐색기를 이용하여 Samba01 가상머신의 공유 디렉터리에 접근한 후 파일을 생성합니다.


Samba01 서버에서 관련 디렉터리(폴더)가 잘 생성되었는지 확인합니다. 생성이 되었다면 정상적으로 Samba 서비스가 되는 것입니다.

[root@samba01 samba]# ls -l /public01/
total 30844
drwxr-xr-x. 2 nobody nobody     4096 Jul 27 16:35 새 폴더
-rw-r--r--. 1 root   root   31580160 Jul 27 06:22 etc.tar
[root@samba01 samba]# 

9). DHCP NTP 가상머신 (DHCP : 67 포트 사용, NTP : 123 포트 사용)

[root@dhcpntp ~]# vi /etc/sysconfig/iptables

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p udp --dport 67 -j ACCEPT
-A INPUT -p udp --dport 123 -m state --state NEW -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
[root@dhcpntp ~]#
[root@dhcpntp ~]#
[root@dhcpntp ~]# service iptables start
iptables: Applying firewall rules:                         [  OK  ]
[root@dhcpntp ~]#
[root@dhcpntp ~]# chkconfig iptables on
[root@dhcpntp ~]# 

DHCP 테스트를 위해 Windows 8.1 가상머신을 DHCP 클라이언트로 구성한 후 DHCP 서버로부터 IP 주소를 받을 수 있도록 설정합니다. IP를 정상적으로 받아오면 아래와 같이 출력됩니다.


여기까지 iptables 리눅스 방화벽 간단 구성에 대해 알아보았습니다.




No comments:

Post a Comment