CloudFlare WAF에서 VPS 접속 차단하기

CloudFlare WAF에서 VPS 접속 차단하기

Bad ASN List를 받아와서, CloudFlare WAF에서 해당 ASN을 전부 차단하도록 설정하면 됨

이 때 WAF expression의 길이는 4096 bytes 제한이 있으므로 주의해야 함

그리고 서비스에 따라서는 서버 상에서 자기 자신에서 접속하는 경우도 있기 때문에, 이 WAF 룰을 적용하는 대상이 되는 서버의 IP는 접속에 지장이 가지 않도록 예외 처리해두자.

#!/usr/bin/env python3
import requests
import csv


res = requests.get("https://raw.githubusercontent.com/brianhama/bad-asn-list/master/bad-asn-list.csv")

with open("asn-list.csv", "wb") as f:
	f.write(res.content)

with open("asn-list.csv", "r") as f:
	asn_list = []
	for row in csv.reader(f):
		if row[0] != "ASN":
			asn_list.append(row[0])

asn_list = list(set(asn_list))
asn_list = asn_list[:600]

print("(ip.geoip.asnum in {%s})" % " ".join(asn_list))

(ip.geoip.asnum in {39458 36408 197395 31698 52236 40244 29802 394330 47385 47577 17920 10207 64484 199213 20021 20598 201634 21859 23273 51765 199883 262603 46664 45815 59729 32911 7979 22781 34649 132717 32475 61280 47172 42311 33387 24611 16973 46430 16284 204196 60558 6939 20454 14986 51167 55229 14061 57230 53101 57286 28333 49453 53597 60476 4323 262170 50673 36114 28753 263032 45486 24931 33260 25260 25369 133143 56322 32489 58936 42612 29140 14992 14442 15510 61102 35295 59705 32275 33083 43317 62082 132071 40374 63119 15395 10439 33251 54527 24958 198432 3561 20401 36791 14987 22903 38001 5577 39392 63916 32780 37643 51430 22363 132225 51731 9166 20264 198414 51050 9009 54817 37347 37280 62899 393326 24549 13647 59632 6870 50297 41665 23108 202118 328035 53340 133393 29748 14415 19318 29097 394256 45481 44901 46844 51248 327705 27175 36536 19531 17918 37248 33552 33182 59349 37153 46805 25163 17881 22152 201709 28216 39351 32181 25128 25820 42473 29119 22720 26481 39839 201597 58113 6718 19084 53850 54104 20773 15734 57773 42831 39756 199653 39572 59432 48825 37692 53332 8455 47447 20473 35914 47549 29311 29073 30900 33070 134451 55720 51290 22552 40715 62756 61317 32647 196678 59135 132425 132816 37209 25379 136258 29869 58667 201670 18779 47625 23033 50655 20860 35470 37308 56732 50608 59816 63213 62071 37230 24725 9370 60567 36352 52465 57363 46433 56784 56110 29354 262287 54825 16862 24381 29452 53889 38107 29465 19133 201862 37018 62240 32400 201525 37472 18120 49815 42465 30998 36290 33891 21159 20448 8477 18978 42705 34305 42160 53370 45201 24679 49544 20692 58922 37269 23881 35278 29550 30235 3722 51159 37170 42776 17971 53667 198968 27597 29302 62567 11588 33724 54489 198347 59677 60485 23535 43541 63128 7203 52674 12876 43350 11831 37714 52048 133480 18570 50986 24997 46177 35916 200039 197372 19844 203629 263237 62088 196645 43146 50613 9412 57879 51109 14384 14127 13209 50872 49313 36666 61107 13926 37540 50465 38894 43472 52270 19234 50968 40281 19969 24482 58797 53281 42699 201011 62217 41062 35467 13739 198153 50926 12989 37377 17216 133229 32740 13213 31981 9290 29331 16509 395089 52347 26978 24220 62310 33480 27640 45671 15919 56617 206898 9667 20450 201630 28855 43289 198047 327813 14708 197328 200147 60800 59504 7506 62370 61440 196827 62838 29066 41079 55967 40728 53914 40539 132869 41369 132509 14244 34971 53755 197648 7595 56106 17669 29067 30083 49485 14576 199990 19871 63129 201200 200532 53221 49949 46261 197439 8560 57858 14567 35662 49834 200000 17019 133120 24768 49981 35415 51191 32244 197155 54290 37661 41562 50915 36887 3842 55286 39704 54641 11235 51698 45887 132070 10929 30693 46562 55799 63199 27589 51241 59764 48446 63949 47583 36873 42120 46260 59253 62651 54839 56799 51294 16276 10200 33785 38279 54540 61147 198171 29182 24971 35366 45577 53055 52219 53013 198313 62605 6188 57169 46475 54455 34541 56934 58305 57682 44066 21217 21100 25642 27257 42695 52173 11878 37506 4851 132779 42210 42331 44398 16628 22611 54334 45152 4250 12586 1442 20738 27229 20248 57043 61412 200904 8972 199481 36920 25048 42708 40438 395111 31590 53342 31659 42244 23052 60068 60011 202836 42730 63473 29713 40819 62471 47143 24875 62026 62540 198310 14160 48093 42442 29883 8556 20836 48896 52925 40861 39451 28099 54555 32338 52321 45179 17439 3223 39326 29838 48812 42418 262990 45470 327942 56630 27223 262978 32613 34989 45187 54203 7489 46873 200019 201702 40824 43620 42400 45693 13909 8075 28747 30633 53559 37521 15626 23352 15083 36351 52335 7349 33322 59854 25780 203523 31472 24940 62282 49693 14120 44050 394380 62049 199997 63008 196745 10297 62563 26484 12617 37088 47161 59795})

참고) https://github.com/brianhama/bad-asn-list

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다