AWS LightSail에 Bitnami 서버인 Ubuntu Xenial이 있습니다. 나는 팔로우했다이 튜토리얼국가별로 SSH 연결을 제한합니다. 이 스크립트는 ipfilter.sh
IP 주소를 필터링합니다.
#!/bin/bash
# License: WTFPL
# UPPERCASE space-separated country codes to ACCEPT
ALLOW_COUNTRIES="US UK"
LOGDENY_FACILITY="authpriv.notice"
if [ $# -ne 1 ]; then
echo "Usage: `basename $0` " 1>&2
exit 0 # return true in case of config issue
fi
if [[ "`echo $1 | grep ':'`" != "" ]] ; then
COUNTRY=`/usr/bin/geoiplookup6 "$1" | awk -F ": " '{ print $2 }' | awk -F "," '{ print $1 }' | head -n 1`
else
COUNTRY=`/usr/bin/geoiplookup "$1" | awk -F ": " '{ print $2 }' | awk -F "," '{ print $1 }' | head -n 1`
fi
[[ $COUNTRY = "IP Address not found" || $ALLOW_COUNTRIES =~ $COUNTRY ]] && RESPONSE="ALLOW" || RESPONSE="DENY"
if [[ "$RESPONSE" == "ALLOW" ]] ; then
logger -p $LOGDENY_FACILITY "$RESPONSE sshd connection from $1 ($COUNTRY)"
exit 0
else
logger -p $LOGDENY_FACILITY "$RESPONSE sshd connection from $1 ($COUNTRY)"
exit 1
fi
그리고 나는 그것을 다음과 같이 설정했습니다.
sudo -y apt-get install geoip-bin geoip-database
sudo echo "sshd: ALL" > /etc/hosts.deny
sudo echo "vsftpd: ALL" >> /etc/hosts.deny
sudo echo "sshd: ALL: spawn /path/to/file/ipfilter.sh %a" > /etc/hosts.allow
.NET으로 SSH 데몬을 다시 시작했습니다 sudo systemctl restart ssh.service
. 다른 국가에서 연결을 시도하고 이 이벤트가 표시되지 않는 파일 /var/log/syslog
및 을 확인합니다. /var/log/auth.log
파일에는 /etc/rsyslog.conf
authpriv 기능에 대한 로깅 위치가 표시되지 않습니다.
이 IP 필터가 작동하는지 어떻게 확인할 수 있나요?