안녕하세요. 플랫폼의 코미야입니다.
apache의 mod_geoip 모듈로 해외 신청을 거부하려고 했을 때,
이에 대응해 페이스북 이미지를 공개하지 않았습니다.
·whois가 필요했는데 포함되어 있지 않아서 다른 서버에서 패키지 이름을 찾아서 소개했어요.
[shell]$ whois /usr/bin/whois # rpm -qf /usr/bin/whois jwhois-3.2.2-1
# yum install jwhois 설치: jwhois.x86_64 0:4.0-19.el6 # whois /usr/bin/whois[/shell]
・페이스북 공식 공인 목록 획득 방법을 확인하세요
공식적으로는 다음 명령어로 정기적인 업데이트 목록을 받을 수 있도록 작성되어 있습니다.
앱 보안 - 페이스북 개발자들
[shell]# whois -h whois.radb.net -- '-i 기원 AS32934' | grep ^route:|awk '{print $2}' 204.15.20.0/22 69.63.176.0/20 축약 69.63.184.0/21 66.220.144.0/20 69.63.176.0/20[/shell] *약 65블록이었어요. 수작업 작업이 없어서 어떻게든 자동화하려고 노력해요.
·설정 추가에 대한 고려
여기에 뭔가 추가할 수 있을지 생각해볼게요.
[shell]# 캣 /etc/cron.monthly/geoip #!/bin/bash wget -q http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz 건지프 GeoIP.dat.gz mv -f GeoIP.dat /usr/share/GeoIP/GeoIP.dat[/shell]
DAT는 이분법이라 직접 추가하기가 어렵습니다. 구글링을 조금만 해도 아무도 그렇게 하지 않습니다.
[shell]# 파일 /usr/share/GeoIP/GeoIP.dat /usr/share/GeoIP/GeoIP.dat: data[/shell]
아파치 Allow From 등으로 설정할 수밖에 없는 것 같습니다.
SetEnvIf를 사용해 사용할 수 없는지 확인하기 참고:
Apache 허용, 거부 지시, 조건 부여 - (h) 노트
PassCountry라는 환경으로 설정하고 SetEnvIf Remote_Addr로 만드는 게 좋을 것 같다고 생각했습니다.
CIDER를 Remote_Addr에서 지정할 수 있는지는 명확하지 않습니다. 아마도 불가능할 것입니다.
apache - RewriteCond - Stack Overflow를 사용하여 IP 범위를 리디렉션합니다
또는
포함은
"Include로 삽입된 설정은 삽입하는 파일의 Include 명령 위치에 있는 것처럼 처리됩니다."
섹션 병합 방식으로 작성되었습니다.
섹션 구성 - Apache HTTP 서버
따라서 Allow from으로 파일을 따로 떼어놓고 필요에 따라 필요한 위치에 불러오는 것이 현실적으로 여겨집니다.
/etc/cron.monthly/geoip 에서 다음 내용을 추가하는 방향으로 진행되었습니다:
[shell]whois -h whois.radb.net -- '-i 기원 AS32934' | grep ^route:|awk '{print $2}'|sed -e 's/^/Allow from /g' > /etc/httpd/conf/extra/allow_fb_ip[/shell]
Allow from env=PassCountry 항목
[shell]conf/extra/allow_fb_ip[/shell]를 포함하세요.
·설정 추가
[shell]# cp -p /etc/httpd/conf/extra/***.com.conf{,.'date +%Y%m%d'} # vi /etc/httpd/conf/extra/*.com*.conf <Directory "/home/***-web/public_html"=""> 허용 오버라이드 모든 주문 거부, 허용 모든 <IfModule mod_geoip.c=""> geoIPEnable On SetEnvIf GEOIP_COUNTRY_CODE JP 패스컨트리 허용 env=패스컨트리 config/extra/allow_fb_ip ← ★ 여기에 추가됨
# diff /etc/httpd/conf/extra/****.com.conf{,.'date +%Y%m%d'} # apachectl configtest 문법 OK # apachectl graceful # netstat -lnpt # tail -f /var/log/httpd/20131108_access_log # tail -f /var/log/httpd/20131108_error_log[/shell]
관련된 로그는 없어 보입니다.
다른 사람들도 같은 설정을 수행하세요.
geoip의 경우, 다음과 같은 다른 설정들이 있습니다:
[shell]# cat /etc/httpd/conf.d/geoip.conf LoadModule geoip_module modules/mod_geoip.so
<IfModule mod_geoip.c=""> GeoIPDBFile /usr/share/GeoIP/GeoIP.dat [/shell]
개발 측에 페이스북 이미지가 표시되었는지 확인해 달라고 요청하는 것은 괜찮은 것 같습니다.
/etc/cron.* 는 아나크론에서 CentOS6에서 아나크론으로 무작위로 지정된 것 같습니다.
아나크론이 중단된 것 같아서 크론탭으로 쓸게요.
[shell]# mv /etc/cron.monthly/geoip /opt/bin/
# crontab -e ## geoip 데이터베이스 업데이트 3 0 * * * /opt/bin/geoip[/shell] (처음에는 매달 했는데 매일 하라는 요청을 받아서 고쳤어요)
OSS는 알루미늄 날개에 장착된 비행: RHEL6 (7)cron 및 anacron
위 내용을 시청해 주셔서 감사합니다.