OS

Linux 방화벽 open script (Rocky/CentOS/Ubuntu)

Lawmin 2024. 11. 27. 02:04

시스템에서 사용되는 방화벽 서비스에 맞춰 포트를 Open 해주는 스크립트입니다.

아래에서 [포트]만 실제 희망 포트로 변경하여 사용하면 됩니다.

#!/bin/bash

while true; do
    # 포트 번호 입력 요청
    echo -n "포트 번호를 입력하세요 (0-65535): "
    read PORT

    # 포트 번호 유효성 검증
    if [[ "$PORT" =~ ^[0-9]+$ ]] && [ "$PORT" -ge 0 ] && [ "$PORT" -le 65535 ]; then
        echo "유효한 포트 번호: $PORT"
        break
    else
        echo "유효하지 않은 입력입니다. 0-65535 범위의 숫자를 입력하세요."
    fi
done

if command -v firewall-cmd >/dev/null 2>&1 && systemctl is-active --quiet firewalld >/dev/null 2>&1; then
    firewall-cmd --zone=public --permanent --add-port=$PORT/tcp
    if [ $? -ne 0 ]; then
        echo "firewalld rule add fail"
        exit 1
    else
        firewall-cmd --reload
        echo "added firewalld rule"
    fi
elif command -v iptables >/dev/null 2>&1 && service iptables status >/dev/null 2>&1; then
    IPTABLES_PATH="/etc/sysconfig/iptables"
    IPTABLES_FIND="-A INPUT -i lo -j ACCEPT"
    IPTABLES_RULE="-A INPUT -p tcp --dport $PORT -j ACCEPT"
    if ! grep -qF -- "$IPTABLES_RULE" "$IPTABLES_PATH"; then
        sed -i "/$IPTABLES_FIND/a $IPTABLES_RULE" "$IPTABLES_PATH"
		if [ $? -ne 0 ]; then
			echo "iptables rule add failed"
			exit 1
		else
			service iptables reload
			echo "added iptables rule"
		fi
    fi
elif command -v ufw >/dev/null 2>&1 && systemctl is-active --quiet ufw >/dev/null 2>&1; then
    ufw allow $PORT/tcp
    if [ $? -ne 0 ]; then
        echo "ufw rule add failed"
        exit 1
    else
        echo "added ufw rule"
    fi
else
    echo "no firewall"
fi