레이블이 port open인 게시물을 표시합니다. 모든 게시물 표시
레이블이 port open인 게시물을 표시합니다. 모든 게시물 표시

2019년 9월 10일 화요일

CentOS 7.x 에서의 Port 관리법


CentOS 7.x 에서의 Port 관리법


개요

포트를 오픈하려고 iptables 명령을 사용했다. 그런데 아무런 반응이 없었다.
iptables -I INPUT -p tcp --dport 8889 -j ACCEPT

그리고 iptables을 재실행할라하니 다음과 같은 에러를 확인했다.
$ /etc/init.d/iptables restart
Failed to restart iptables.service: Unit not found.
이에 해당 문제를 해결하고자 찾아보았더니 CentOS 7.x에서는 iptables 대신 firewall을 채용했다고 한다.


iptables 대신 firewall을 사용하게된 이유

Redhat Products & Servies의 4.11. 보안 및 액세스 제어에는 다음과 같은 설명이 나온다.

4.11.1. 새로운 방화벽 (firewalld)


Red Hat Enterprise Linux 6에서 방화벽 기능은 iptables 유틸리티에 의해 제공되어 명령행이나 그래픽 설정 도구, system-config-firewall에서 설정되었습니다. Red Hat Enterprise Linux 7에서 방화벽 기능은 iptables에 의해 제공되지만 관리자는 동적 방화벽 데몬, firewalld, 설정 도구를 통해 iptables와 상호 작용합니다. 설정 도구에는 firewall-configfirewall-cmdfirewall-applet이 있으며 이는 Red Hat Enterprise Linux 7 기본값 설치에 포함되어 있지 않습니다.
firewalld는 동적이기 때문에 언제든지 설정을 변경할 수 있고 바로 실행됩니다. 방화벽을 다시 로딩할 필요가 없으므로 기존 네트워크 연결에서 의도하지 않은 중단이 발생하지 않습니다.
Red Hat Enterprise Linux 6와 7 간의 방화벽에서의 주요 차이점은 다음과 같습니다:

  • 방화벽 설정에 대한 자세한 내용은 /etc/sysconfig/iptables에 저장되어 있지 않고 이 파일이 존재하지도 않습니다. 대신 설정 상세 정보는 /usr/lib/firewalld 및 /etc/firewalld 디렉토리에 있는 다양한 파일에 저장됩니다.
  • Red Hat Enterprise Linux 6의 방화벽 시스템에서는 설정 변경 사항이 있을 때 마다 모든 규칙이 삭제되고 다시 적용되어 firewalld는 설정 차이만을 적용합니다. 그 결과 firewalld는 기존 연결을 중단하지 않고 런타임 동안 설정을 변경할 수 있습니다.

그리고, firewalld concept and configuration의 Page-5를 보면 다음과 같이 필요성에 대해 서술한다.
첨언하자면, iptables과 firewall의 장단에 대해서는 이래저래 말들이 많은 듯 하다. 새롭게 나온 기능이다보니 으례 발생하는 과도기적 충돌이겠거니 싶다.ㅎㅎ


iptables vs firewall

firewall로 변경되었다고는 하나, 다음과 같이 firewall을 중지시키고 iptables를 설치해서 기존처럼 사용하는 것도 가능하다.
$ systemctl stop firewalld
$ systemctl mask firewalld
$ yum install iptables-services
$ systemctl enable iptables
$ service iptables save
※ 결국, firewalld를 사용할지 iptables를 사용할지는 본인의 선택이다.


firewall의 설정법

맨 처음, 혹시 몰라 yum update 를 해 주었다. ㅡㅡ;;
systemctl enable firewalld
systemctl start firewalld
systemctl stop firewalld
systemctl disable firewalld

방화벽을 사용설정 하였다면 이제 방화벽 상태를 확인하자.

firewall-cmd --state
firewall-cmd --get-zones
firewall-cmd --get-default-zone
firewall-cmd --get-active-zones
firewall-cmd --list-all
firewall-cmd --zone=public --list-all

상태를 확인하였으니, 새로운 서비스/포트를 추가해보자.

참고로 시스템 재부팅 또는 방화벽 재시작 후에도 지속적용 되도록 하려면 --permanent 옵션을 붙인다.


Add FTP Service

firewall-cmd --permanent --add-service=ftp


Delete FTP Service

firewall-cmd --remove-service=ftp


Add FTP Port

firewall-cmd --permanent --add-port=21/tcp


Delete FTP Port

firewall-cmd --remove-port=21/tcp


Add HTTP Service

firewall-cmd --permanent --zone=webserver --add-service=http


Add HTTP port

firewall-cmd --permanent --zone=webserver --add-port=9090-9100/tcp


Delete HTTP port

firewall-cmd --permanent --zone=webserver --remove-port=9090-9100/tcp 


중요) 설정내용을 Reload 해야만 적용된다.

firewall-cmd --reload