
우분투 서버의 웹사이트에 액세스할 수 있는 IP 주소 목록(약 100개)을 허용하고 싶습니다. cron을 통해 목록을 새로 고치고 싶습니다.
UFW로 하려고 합니다. 앱 프로필을 통해 이 작업을 수행하는 것이 더 쉬울 것이라고 생각했습니다. 이것이 최선의 접근 방식입니까?
[My App]
title = "My Web"
description = "Allows to access web"
ports = 80/tcp|443/tcp
허용된 IP 목록을 어떻게 추가하나요? 프로필에 다음과 같은 내용을 추가하고 싶습니다.
ips=[/var/www/allowed_ips.txt]
답변1
애플리케이션 프로필은 애플리케이션을 설명합니다. 각각에는 제목, 설명 및 연결할 포트 세트가 포함되어 있습니다. 이러한 응용 프로그램에 대한 액세스를 허용하거나 거부하는 규칙은 설명하지 않습니다. 이 작업은 별도로 수행됩니다. 예:
ufw allow from 192.168.0.0/16 to any app "MyWeb"
질문에서 제안한 대로 IP 주소 목록을 파일에 보관하려면 아래와 같은 쉘 스크립트를 crontab에 추가하는 것이 좋습니다. 먼저 애플리케이션에 대한 모든 규칙을 삭제합니다(참조:이 답변), 그런 다음 파일의 IP에 대한 규칙을 추가합니다.
#!/bin/bash
APPNAME="MyWeb"
IPFILE=/var/www/allowed_ips.txt
RULES_DESC=$(ufw status numbered | grep "$APPNAME" \
| awk -F"[][]" '{print $2}' | tr --delete [:blank:] | sort -rn)
for NUM in $RULES_DESC; do
yes | ufw delete $NUM
done
for IP in $(cat $IPFILE); do
ufw allow from $IP to any app "$APPNAME"
done
아마도 crontab에서 스크립트의 출력을 억제하고 싶을 것입니다.