[태그:] 방화벽

리눅스 방화벽, iptables, firewall 설정, 포트 관리와 서버 보안 기초를 다룬 글 모음입니다. Ubuntu와 CentOS 운영 포인트를 정리합니다.

  • Nginx 웹서버 설치(ubuntu)

    Nginx 웹서버 설치(ubuntu)

    1. Nginx 웹서버 Vs Apache 웹서버

    여기서는 Nginx 웹서버 설치를 진행합니다. 리눅스에서 설치되는 웹 서버는 Nginx 웹서버와 apache 웹서버로 나눠지며 다음과 같은 차이점을 갖고 있습니다. 아파치는 오픈 소스 HTTP 서버인 반면 Nginx는 오픈 소스, 고성능 비동기 웹 서버 및 역방향 프록시 서버입니다.

    아파치 HTTP 서버의 개발 및 발전은 전 세계 사용자 커뮤니티(Apache Software Foundation)에서 관리 및 유지되지만 Nginx는 2011년에 설립된 동일한 이름의 회사에서 유지 및 관리 됩니다.

    Apache는 클라이언트 요청 및 웹 트래픽을 처리하는 다양한 다중 처리 모듈을 제공하지만 Nginx는 최소한의 하드웨어 리소스로 여러 클라이언트 요청을 동시에 처리하도록 설계되었습니다.

    아파치에서 단일 스레드는 하나의 연결과 연결되지만 Nginx의 단일 스레드는 여러 연결을 처리할 수 있다. 이 프로세스는 메모리를 적게 소모하여 성능이 향상시킵니다.

    아파치 HTTP Server에는 확장성이 없는 다중 스레드 아키텍처지만 Nginx는 여러 클라이언트 요청을 처리하기 위한 비동기 이벤트 기반 접근 방식을 따릅니다.

    아파치 서버는 기존의 메서드를 사용하여 정적 콘텐츠를 제공하고 웹 서버 자체 내에서 기본적으로 동적 콘텐츠를 처리한다. 반면 Nginx는 동적 콘텐츠를 내부적으로 처리할 수 없고 위해 외부 프로세스에 의존합니다.

    2. Nginx 웹서버 설치

    apt update와 apt upgrade로 패키지 정보를 업데이트 합니다. list 옵션으로 nginx와 관련된 패키지를 확인합니다. nginx 설치 명령어로 nginx 웹서버를 설치합니다.

    • nginx 관련 패키지 정보를 출력하는 명령어입니다.
    sudo apt list nginx*
    nginx ubuntu
    [Step 1] 패키지 정보 확인

    Read in English

    • nginx 설치를 위한 명령어를 실행합니다.
    sudo apt install nginx
    nginx ubuntu
    [Step 2] nginx install
    • 설치된 nginx의 버전을 확인합니다.
    sudo nginx -v
    nginx ubuntu
    [Step 3] nginx 버전 확인
    • nginx 서비스의 상태를 확인합니다.
    sudo systemctl status nginx
    nginx ubuntu
    [Step 4] 패키지 정보 확인

    2. 외부 접속을 위한 포트 설정

    웹서버가 설치되었다고 바로 접속이 가능한 것은 아닙니다. ubuntu가 설치된 환경은 호스트 컴퓨터의 가상 서버로 구성되어 있고 ubuntu 서버는 iptables로 방화벽이 서비스되고 있습니다.

    첫 번째 단계는 ubuntu 서버의 포트를 개방하는 것입니다. iptables에 대한 이해가 필요하다면 다음 글을 통해서 확인할 수 있습니다.

    1) nginx http 포트 허용

    http 포트는 80을 사용합니다. iptables에서 tcp 80번 포트를 사용하도록 열어주고 iptables에 체인이 등록되었는지 규칙을 출력합니다.

    • -A : 체인에 추가
    • -p tcp : 프로토콜 tcp
    • -m tcp : tcp 일치, 확장일치
    • –dport : 포트번호
    • — j : 대상 점프
    • ACCEPT : 허용
    sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
    sudo iptables -S
    iptables
    [Step 1] iptables에 80번 포트 추가

    추가된 규칙을 저장하고 Reload 합니다.

    sudo netfilter-persistent save
    sudo netfilter-persistent reload
    iptables
    [Step 2] iptables 저장 및 reload

    2) VirtualBox 포트 추가

    VirtualBox에 포트를 추가해야 호스트 컴퓨터의 IP 또는 localhost(127.0.0.1)에서 접속이 가능합니다. 그리고 공유기를 사용하고 있다면 공유기의 DMZ기능이나 공유기 포트 포워딩 기능을 사용하면 외부에서도 접속이 가능합니다. 여기서는 공유기의 DMZ 설정에 대해서는 다루지 않습니다.

    VirtualBox의 상세한 절차를 알고 싶다면 아래 링크를 클릭해서 확인할 수 있습니다.

    아래 이미지와 같이 80번 포트에 대한 포워딩을 추가합니다.

    virtualbox 80 port
    [Step 3] VirtualBox 80번 포트 포워딩

    3. Nginx 웹서버 접속 확인

    포트 개방이 완료되고 호스트 컴퓨터의 인터넷 브라우저를 통해 ubuntu 서버의 nginx 웹서버에 접속합니다.

    • localhost 접속(127.0.0.1)
    nginx
    [Step 1] 127.0.0.1
    nginx
    [Step 2] http://localhost
    • 호스트 컴퓨터의 내부 IP로 접속
    nginx
    [Step 2] http://localhost
    • 외부IP로 접속
    nginx
    [Step 2] http://220.xxx.xxx.xxx

    함께 읽으면 좋은 글

  • Ubuntu 방화벽 iptables 설정 및 관리

    Ubuntu 방화벽 iptables 설정 및 관리

    1.  iptables 방화벽 이해 및 설치

    여기서는 Ubuntu 방화벽 iptables 설정 및 관리에 대해 이야기 합니다. 방화벽 관리의 대부분은 네트워크에 트래픽 제한을 적용할 개별 규칙 및 정책을 결정하는 것입니다. 

    Ubuntu는 기본 방화벽으로 ufw를 제공하고 있으나 iptables을 사용하면 규칙이 적용되는 구조적 프레임워크를 상세하게 관리할 수 있습니다.

    우선 ufw 방화벽 사용을 중지하고 iptables 패키지를 활용하여 방화벽을 구성하는 방법으로 진행됩니다. iptables은 합리적인 기본값을 제공하고 확장성을 장려하는 프레임워크를 설정하는 데 중점을 두고 있습니다.

    2. Iptables 설정(초기)

    방화벽은 두 가지 방법 중 하나로 구성할 수 있습니다. 기본 규칙을 설정하여 특정 규칙으로 원치 않는 트래픽을 허용한 다음 차단하거나 규칙을 사용하여 허용된 트래픽을 정의하고 다른 모든 것을 차단할 수 있습니다. 후자는 클라우드 서버에 액세스하려고 시도해서는 안 되는 연결을 반응적으로 거부하지 않고 선제적으로 트래픽을 차단할 수 있으므로 종종 권장되는 접근 방식입니다.

    1) iptables 현재 규칙 확인

    Ubuntu 서버는 어떠한 제한도 적용되지 않지만 나중에 참조할 수 있도록 현재 iptables 규칙을 확인합니다. 리스트 확인은 -L 옵션 또는 -S옵션으로 확인할 수 있습니다. -L 옵션은 체인에 대한 규칙의 리스트화 하여 보여주는 반면 -S 옵션은 체인을 출력합니다.

    출력하면 input, forward, output의 세가지 체인 목록이 출력됩니다. 체인 이름은 각 목록의 규칙이 적용될 트래픽을 나타내며, 입력은 클라우드 서버로 들어오는 모든 연결입니다. 출력은 외부로 나가는 모든 트래픽이며 통과하는 모든 트래픽에 대한 연결입니다. 또한 트래픽이 특정 규칙과 일치하지 않는 경우 트래픽 처리 방법을 결정하는 정책 설정이 있으며 기본적 설정은 허용입니다.

    • PREROUTING: 패킷들은 라우팅 결정이 만들어지기 전에 이 체인에 포함됩니다..
    • INPUT: 패킷이 로컬상에서 전달될 경우 체인의 규칙을 따릅니다.
    • FORWARD: 라우팅되고 로컬 전달이 아닌 모든 패킷들은 전달됩니다.
    • OUTPUT: 서버에서 보내진 패킷들의 경우 체인의 규칙을 따릅니다.
    • POSTROUTING: 라우팅 결정이 만들어졌을 때, 패킷들은 하드웨어에 보내지기 전에 이 체인에 들어옵니다.
    sudo iptables -L
    sudo iptables -S
    iptables 설정
    [Step 1] 현재 설정 확인

    Read in English

    2) 모든 규칙 삭제

    현재 설정된 모든 규칙을 삭제합니다. -F 옵션은 모든 체인에 포함되어 있는 규칙을 삭제합니다. -X 옵션은 사용자 정의된 체인을 모두 삭제합니다.

    -F 옵션과 -X 옵션으로 모든 체인을 삭제합니다. 모든 규칙을 삭제하고 체인에 연결된 규칙이 있는지 -L 옵션과 -S 옵션으로 확인합니다. 초기 설치 후 명령어를 실행했다면 설정된 규칙이 없기 때문에 출력은 동일합니다.

    sudo iptables -F
    sudo iptables -X
    sudo iptables -L
    sudo iptables -S
    iptables 설정
    [Step 2] 모든 체인 삭제

    3) 로컬 체인 추가

    로컬 네트워크에 접속이 가능하도록 체인을 추가합니다. 체인을 추가 할때는 -A 옵션을 사용합니다. -i 옵션은 네트워크 인터페이스 이름을 지정하는 옵션입니다.

    sudo iptables -A INPUT -i lo -j ACCEPT
    iptables 설정
    [Step 3] 로컬 연결 추가

    4) 인바운드 트래픽 규칙 추가

    iptables 사용을 시작하려면 먼저 필요한 서비스에 대해 허용된 인바운드 트래픽에 대한 규칙을 추가해야 합니다. iptables는 연결 상태를 추적할 수 있으므로 아래 명령을 사용하여 설정된 연결을 계속할 수 있습니다. related, established 패킷의 접속을 허용하는 규칙을 추가하며 이는 필요한 서비스에 대해 허용하도록 설정된 연결입니다.

    sudo iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    iptables 설정
    [Step 4] 서비스 연결 허용

    5) 규칙 저장 및 재시작

    체인을 추가했다고 바로 반영되는 것은 아닙니다. reload 명령어를 사용해서 저장된 체인이 반영되도록 해야 합니다. 하지만 reload 명령어만 사용하면 재시작 된 이후에는 추가된 체인이 사라지게 됩니다. 그래서 변경한 체인을 저장하고 재시작해야 합니다.

    저장은 service+netfilter-persistent+save 명령어로 실행합니다. netfilter-persistent 명령은 flush, force-reload, reload, restart, save, start ,stop의 실행 명령어로 구성되어 있습니다.

    변경된 체인을 저장하고 반영합니다.

    sudo service netfilter-persistent save
    sudo service netfilter-persistent reload
    iptables 설정
    [Step 5] 설정 저장 및 재시작

    3. Iptables 설정(사용법)

    • iptables – [ACD] 체인 규칙 사양 [옵션]
    • iptables -I 체인 [규칙 번호] 규칙 사양 [옵션]
    • iptables -R 체인 규칙 번호 규칙 사양 [옵션]
    • iptables -D 체인 규칙 번호 [옵션]
    • iptables -[LS] [체인 [규칙 번호]] [옵션]
    • iptables – [FZ] [체인] [옵션]
    • iptables -[NX] 체인
    • iptables -E 이전 체인 이름 새 체인 이름
    • iptables -P 체인 타겟 [옵션]
    • iptables -h 도움말 출력

    5. Iptables 설정(명령어)

    • –append -A chain      :  체인에 추가
    • –check -C chain          :  체인의 규칙 존재 여부 확인
    • –delete -D chain        :  일치하는 체인 규칙 삭제
    • –delete  -D chain rulenum : 체인의 룰 번호로 삭제  
    • –insert  -I chain [rulenum]  :  규칙 번호로 체인에 삽입 (기본값 1 = 첫 번째)
    • –replace -R chain rulenum : 체인에서 규칙 규칙 번호(1 = 첫 번째) 바꾸기
    • –list -L [chain [rulenum]] : 체인 또는 모든 체인의 규칙 나열
    • –list-rules -S [chain [rulenum]] :  체인 또는 모든 체인에서 규칙 인쇄
    • –flush -F [chain] : 체인의 모든 규칙 또는 모든 체인 삭제
    • –zero -Z [chain [rulenum]] : 체인 또는 모든 체인의 제로 카운터
    • –new -N chain : 새 사용자 정의 체인 만들기
    • –delete-chain -X [chain] : 사용자 정의 체인 삭제
    • –policy  -P chain target : 체인에서 대상으로 정책 변경
    • –rename-chain -E old-chain new-chain : 체인 이름 변경(참조 이동)

    6. Iptables 명령어(옵션)

    • –ipv4  -4  :  없음(ip6tables-restore에서 라인이 무시됨)
    • –ipv6  -6  :  오류(iptables-restore에서 라인이 무시됨)
    • –protocol  -p proto  : 프로토콜 번호 또는 이름으로, 예. `tcp’
    • –source  -s : address[/mask][…]   소스 사양
    • –destination  -d : address[/mask][…]   대상 지정
    • –in-interface  -i : 입력 name[+]  네트워크 인터페이스 name ([+] for wildcard)
    •  –jump  -j : 대상, 규칙의 대상(대상 확장 프로그램을 로드할 수 있음)
    • –goto  -g :   체인, 리턴 없이 체인으로 점프
    • –match  -m : 일치 확장 일치(확장 프로그램을 로드할 수 있음)
    • –numeric  -n : 주소 및 포트의 숫자 출력
    • –out-interface  -o : 출력 name[+]  네트워크 인터페이스 name ([+] for wildcard)
    • –table  -t : 테이블, 조작할 테이블 (default: `filter’)
    • –verbose  -v : 자세한 정보 표시 모드
    • –wait  -w [seconds] : 포기하기 전에 xtables 잠금을 획득하기 위한 최대 대기 시간
    • –wait-interval -W [usecs] :xtables 잠금을 획득하기 위한 대기 시간 기본값은 1초
    • –line-numbers : 나열할 때 줄 번호 인쇄
    • –exact  -x : 숫자 확장(정확한 값 표시)
    • –fragment  -f : 두 번째 또는 추가 조각만 일치
    • –modprobe=<command>  : 이 명령을 사용하여 모듈을 삽입
    • –set-counters PKTS BYTES :  삽입/추가 중에 카운터 설정
    • –version   -V : 패키지 버전 출력

    7. Iptables 포트 활용

    1) openssh 포트


     

    함께 읽으면 좋은 글

  • Ubuntu 방화벽 iptables 설치 및 활성화

    방화벽은 서버 보안에서 중요한 단계로 iptables 설치 및 활성화를 다룹니다. 방화벽 관리의 대부분은 네트워크에 트래픽 제한을 적용할 개별 규칙 및 정책을 결정하는 것입니다. 

    1.  iptables 방화벽 이해 및 사전 준비

    Ubuntu는 기본 방화벽으로 ufw를 제공하고 있으나 iptables을 사용하면 규칙이 적용되는 구조적 프레임워크를 상세하게 관리할 수 있습니다.

    우선 ufw 방화벽 사용을 중지하고 iptables 패키지를 활용하여 방화벽을 구성하는 방법으로 진행됩니다. iptables은 합리적인 기본값을 제공하고 확장성을 장려하는 프레임워크를 설정하는 데 중점을 두고 있습니다.

     1) 사전 준비

    ufw 방화벽 상태를 확인하고 방화벽을 중지합니다. Ubuntu 설치부터 함께 따라왔다면 ufw 방화벽을 active(활성화) 되어 있습니다. 이때 sudo ufw status 명령을 입력하면 inactive(비활성화)로  나옵니다. iptables을 설치하는데 ufw 방화벽을 비활성화하지 않는다면 충돌이 발생합니다. 서비스를 관리하는 명령어는 systemctl 또는 [서비스명.service]의 형태로 관리할 수 있습니다.

    2) ufw 상태 확인

    sudo systemctl status ufw
    [Step1] ufw 상태 확인

    Read in English

    3) ufw 중지 및 비활성화

    서비스를 중지는 stop 명령어를 활용할 수 있지만 stop은 시작 활성화에 영향을 미치지 않습니다. 반면 disable 명령은 시작 시 서비스를 비활성화시키며 –now 명령어를 추가면 즉시 반영됩니다. 아래 명령어로 ufw 서비스를 비활성화하고 reboot 명령으로 재시작 합니다.

    sudo systemctl disable --now ufw
    reboot
    [Step2] ufw 비활성화
    sudo systemctl status ufw
    [Step3] ufw 상태 확인

    2.  iptables 설치 및 활성화 문제 확인

    1) iptables 설치(iptables-persistent)

    ufw를 중지했다면 iptables 패키지를 설치합니다. Iptables 설치 후 규칙 세트를 저장하고 부팅 시 자동으로 적용되도록 할 수 있습니다.

    sudo apt install iptables-persistent
    [Step4] Y를 입력하여 계속 진행
    [Step5] IPv4 rules에 대해 YES 선택 후 Enter
    [Step6] IPv6 rules에 대해 YES 선택 후 Enter

    2) iptables 시작 시 활성화(enable)

    • Iptables 상태 확인
    sudo systemctl status iptables
    [Step7] iptables 상태 확인
    • Iptables 상태 시작 시 활성화
    sudo systemctl enable iptables
    reboot
    [Step8] iptables 활성화 명령어 및 재시작

    3) iptables 활성화 문제 확인(시작 시 자동 활성화 안됨)

    • Iptables 상태 확인

    ubuntu 20에서는 정상적으로 활성화되지만 ubuntu 22에서는 활성화가 안되어 있습니다. iptables의 상태를 확인하면 별칭(alias)이 등록되어 있지 않기 때문에 별칭을 등록해야 합니다.

    sudo systemctl status iptables
    [Step9] iptables 상태 확인

    3.  iptables 별칭 등록 및 시작 시 활성화

    1) Iptables 시작 활성화를 위한 별칭(alias) 등록

    iptables.service의 위치는 상태에서 확인이 가능하고 nano 편집기로 파일을 불러옵니다. vi 편집기를 사용해도 무방합니다. 파일 아래쪽 [install] 하단에 별칭을 등록해 줍니다. 여기서는 Alias=iptables.service로 등록합니다.

    sudo nano /lib/systemd/system/iptables.service
    [Step10] iptables 서비스 alias 등록
    [Step11] 편집기를 활용하여 내용 추가(Alias=iptables.service)

    Iptables를 비활성화 후 다시 활성화를 진행합니다. 이때 –now 명령을 추가하면 활성화와 함께 서비스가 함께 실행됩니다.

    sudo systemctl disable iptables
    sudo systemctl enable iptables

    2) 재시작 후 서비스 활성화 확인

    서버를 재시작하여 서비스가 시작 시 활성화 되는지 확인합니다. 아래 이미지처럼 netfilter-persistent.service와 dependency 충돌이 발생하면 netfilter-persistent.service를 재시작합니다. systemctl 명령어로 iptables 서비스가 정상적으로 활성화 된 것을 확인할 수 있습니다.

    reboot
    sudo systemctl status iptables
    sudo systemctl restart netfilter-persistent.service
    [Step12] 재시작 후 iptables 자동 활성화 확인

    3.  iptables 모든 연결 차단

    앞의 설정은 INPUT, FORWARD, OUTPUT가 모두 허용된 설정입니다. INPUT, FORWARD는 모두 닫아 주도록 하겠습니다. 구성을 출력하면 INPUT, FORWARD가 닫힘으로 표시되어 있습니다. 앞으로 서비스를 추가하면 관련 서비스에 대한 포트만 오픈하여 실행되도록 하겠습니다.

    sudo iptables -P INPUT DROP
    sudo iptables -P FORWARD DROP
    sudo iptables -S
    [Step13] INPUT, FORWARD DROP

    변경된 설정을 저장하고 reload 합니다. reload는 재시작하지 않고 규칙을 적용하기 위한 명령입니다. 다음 코드를 실행하지 않으면 변경한 정보가 ubuntu 재시작시 적용되지 않습니다.

    sudo netfilter-persistent save
    sudo netfilter-persistent reload

    함께 읽으면 좋은 글

  • firewall(방화벽) 설정

    firewall(방화벽) 설정

    1. firewall(방화벽) 이해 및 업데이트

    firewalld은 centos 운영체제에서 기본으로 제공되는 방화벽 관리 도구다. firewalld는 IPv4 및 IPv6 네트워크를 모두 지원하며 프로필 영역에서 정의된 대로 작동하며 신뢰도가 높다.

    • block : 시스템 내에서 시작된 네트워크만 연결하고 그 외의 모든 연결은 거부
    • dmz : 허용된 port의 연결만 허용하며 들어오는 포트에 대한 연결을 제공
    • drop: 들어오는 모든 연결은 차단하며 나가는 네트워크 연결만 허용
    • public: 네트워크 내의 다른 서버나 컴퓨터는 신뢰하지 않으며 필요한 포트와 서비스만 허용
    • trusted: 모든 영역에 대해서 연결 허용
    • home: 로컬 네트워크의 신뢰하는 PC와 연결하며 선택된 TCP/IP 포트만 허용

    friewall을 사용해서 트래픽을 허용하거나 차단할 수 있다. Centos 8 에서는 동적인 인터페이스와 함께 사용자 정의 기반의 방화벽이 함께 제공된다.

    firewall은 시스템과 외부 소스 사이에 장벽을 형성하여 외부에서 발생한 피해가 확산하여 소중한 내부 데이터를 손상시키지 못하도록 차단한다. 그래서 방화벽은 반드시 사용해야 하며 서비스가 잘 안된다 하여 중지하면 안된다.

    1. Centos 8 의 모든 영역 확인
    sudo firewall-cmd --get-zones
    centos firewall

    Read in English

    2. firewall(방화벽) 버전 확인
    sudo firewall-cmd --version
    centos firewall

    firewall(방화벽) 설정

    1. firewall(방화벽) 상태 확인
    sudo systemctl status firewall
    3. firewall(방화벽) 시작
    sudo systemctl start firewall
    4. firewall(방화벽) 중지
    sudo systemctl stop firewall
    5. firewall(방화벽) 재시작
    sudo systemctl restart firewall
    6. firewall(방화벽) 서비스 등록
    sudo systemctl enable firewall
    7. firewall(방화벽) 서비스 비활성화
    sudo systemctl disable firewall
    8. firewall(방화벽) 갱신
    sudo firewall-cmd --reload
    9. firewall(방화벽) 설정 파일
    /etc/firewalld/firewalld.conf

    firewall 방화벽 port 설정

    * firewall(방화벽) 목록 확인
    sudo firewall-cmd --list-all
    * 사용되는 서비스 확인
    sudo firewall-cmd --list-services

    OR

    sudo firewall-cmd --list-services --zone=public
    *centos 8 cockpit 제거(리눅스 관리자 tool – cockpit 활성화)
    sudo firewall-cmd --remove-service=cockpit --permanent
    * dhcpv6 클라이언트 서비스 제거
    sudo firewall-cmd --remove-service=dhcpv6-client --permanent
    * firewall(방화벽)에서 지원하는 서비스 목록

    port를 직접 지정해도 되지만 서비스 명을 활용해서 운용할 수 있다.

    sudo firewall-cmd --get-services
    sudo firewall-cmd --get-services | grep [찾을 서비스명 : http or mysql]
    

    서비스의 포트 정보는 아래 링크의 xml 파일을 통해 확인할 수 있다.

    sudo ls -l /usr/lib/firewalld/services/
    sudo cat /usr/lib/firewalld/services/ssh.xml
    * firewall(방화벽) 서비스 및 포트 추가(예 : http port)

    다음은 public zone에 http 포트를 영구히 추가하는 명령어다. 뒤에 –permanent를 삭제하고 입력하면 일시적으로 추가되며 재부팅 후 사라진다. 서비스 및 port를 등록하면 reload를 반드시 해준다.

    sudo firewall-cmd --zone=public --add-service=http --permanent

    OR

    sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
    centos firewall
    sudo firewall-cmd --reload
    * firewall(방화벽) 서비스 및 포트 삭제(예 : http port)

    다음은 public zone에 http 포트를 영구히 삭제하는 명령어다. 뒤에 –permanent를 삭제하고 입력하면 일시적으로 삭제되며 재부팅 후 유지된다. 서비스 및 port를 삭제하면 reload를 반드시 해준다.

    sudo firewall-cmd --zone=public --remove-service=http --permanent

    OR

    sudo firewall-cmd --zone=public --remove-port=80/tcp --permanent
    centos firewall
    sudo firewall-cmd --reload

    firewall은 git을 통해 업데이트 할 수 있다. https://firewalld.org/

    함께 읽으면 좋은 글

  • Nginx 웹 서버 설치(Centos 8)

    Nginx 웹 서버 설치(Centos 8)

    1. 리눅스 Nginx 웹 서버 vs apache 웹 서버

    리눅스에서 설치되는 웹 서버는 Nginx 웹 서버와 apache 웹 서버로 나눠지며 다음과 같은 차이점을 갖고 있다.

    • 아파치는 오픈 소스 HTTP 서버인 반면 Nginx는 오픈 소스, 고성능 비동기 웹 서버 및 역방향 프록시 서버이다.
    • 아파치 HTTP 서버의 개발 및 발전은 전 세계 사용자 커뮤니티(Apache Software Foundation)에서 관리 및 유지되지만 Nginx는 2011년에 설립된 동일한 이름의 회사에서 유지 및 관리 된다.
    • Apache는 클라이언트 요청 및 웹 트래픽을 처리하는 다양한 다중 처리 모듈을 제공하지만 Nginx는 최소한의 하드웨어 리소스로 여러 클라이언트 요청을 동시에 처리하도록 설계되었다.
    • 아파치에서 단일 스레드는 하나의 연결과 연결되지만 Nginx의 단일 스레드는 여러 연결을 처리할 수 있다. 이 프로세스는 메모리를 적게 소모하여 성능이 향상시킨다.
    • 아파치 HTTP Server에는 확장성이 없는 다중 스레드 아키텍처지만 Nginx는 여러 클라이언트 요청을 처리하기 위한 비동기 이벤트 기반 접근 방식을 따마란다.
    • 아파치 서버는 기존의 메서드를 사용하여 정적 콘텐츠를 제공하고 웹 서버 자체 내에서 기본적으로 동적 콘텐츠를 처리한다. 반면 Nginx는 동적 콘텐츠를 내부적으로 처리할 수 없고 위해 외부 프로세스에 의존합니다.

    2. nginx 웹 서버 설치

    1) 업데이트

    sudo dnf update

    2) nginx 검색 및 버전 확인

    sudo dnf list install nginx
    nginx 웹 서버

    Read in English

    3) nginx 설치

    sudo dnf install -y nginx.x86_64
    nginx 웹 서버

    4) nginx 상태 확인

    sudo systemctl status nginx
    nginx 웹 서버

    5) nginx 시작

    Ctrl+c 키를 눌러 빠져 나온 후 nginx를 시작한다.

    sudo systemctl start nginx
    nginx 웹 서버

    부팅시 자동 실행 되도록 enable 시켜준다. 다음 명령어를 실행하지 않으면 부팅시 running 상태가 아닌 dead 상태로 구동된다.

    sudo systemctl enable nginx

    3. firewall 방화벽 설정

    1) 방화벽 상태 확인

    sudo firewall-cmd --state

    2) firewall 목록 확인

    sudo firewall-cmd --zone=public --list-all
    nginx 웹 서버

    3) http(80) 포트 추가

    sudo firewall-cmd --permanent --zone=public --add-port=80/tcp

    4) 방화벽 갱신

    sudo firewall-cmd --reload

    다음 명령어로 확인하면 ports의 80/tcp 항목이 추가된 걸 확인할 수 있다.

    sudo firewall-cmd --state
    nginx 웹 서버

    만약 포트를 삭제하려 한다면 다음 명령어를 활용해서 열린 port를 삭제할 수 잇다.

    firewall-cmd --permanent --zone=public --remove-port=80/tcp

    5) 웹 접속 확인

    웹 브라우져에서 ip주소를 입력해서 다음과 같은 화면이 나오면 된다.

    nginx 웹 서버

    웹 브라우저에서 에러가 나온다면 nginx의 status를 확인해서 정상적으로 작동되는 지를 확인한다. 그 다음 방화벽이 작동하고 있으며 80번 port가 열려 있는지를 확인한다.

    함께 읽으면 좋은 글