[SQL Injection] iptables를 이용한 인젝션 방어

 보안장비



보안장비를 이용한 SQL인젝션 방어는 매우 신속하고 효율적인 방법입니다 .
 
그러나 원인에 해당하는 소스코드의 보안 약점이 그대로 존재한다는 점에서 근본적인 대책이라고 할수는 없습니다 . 

보안장비를 활용하여 대처하면 소스코드 수정보다 빠른 시간 안에 취약점으로 인한 침해 사고를 예방하거나 완화 시킬 수 있습니다 .
 
완제품을 구입한 경우, 임의의 코드나 환경으로 변경할 수 없기 때문에 주로 보안장비를 이용합니다.



실습환경에 보안장비는 없어서 대부분에 운영체제에 탑재하고 있는 방화벽을 이용하여 실습을 진행했습니다 . 


iptables

iptables 기능을 이용하여 키워드 필터링을 구현할 수 있습니다 . 

키워드 필터링 기능을 활용하면 웹 방화벽 또는 IPS 방어 원리인 시그니처 기반에 대해서 간접적으로 이해할 수 있습니다 . 

# iptables -m string --help









주요 설정 옵션 



  • --string string 차단할 키워드를 등록하고 --icase는 차단의 대소문자 구분을 없애는 옵션입니다 . 
    •  icase를 누락한다면 차단 리스트에 대소문자를 모두 구분하여 등록해야 합니다 . 



  • 블랙리스트 필터링과 동일한 방식으로 information_schema가 악의적인 공격키워드라고 가정하면 다음과같이 차단합니다 . 
# iptables -I INPUT 1 -p tcp --dport 80 -m string --string "information_schema" --icase --algo kmp -j DROP 




  • # iptables -I INPUT 1 명령은 첫번째 정책으로 등록하게 합니다 . 
  • # iptables -A INPUT 1 은 정책 추가로 최하단에 정책이 등록됩니다. 
    • 이 경우에는 상위의 허용 정책으로 인해 콘텐츠 필터링이 무효화 되는 경우가 발생할 수 있습니다 .

설정 확인

# iptables -L | grep information_schema
 차단 정책을 확인을 위해 웹브라우저에 접속하면 
웹페이지가 일시적으로 다운되었거나 새 웹 주소로 완전히 이동되었다는 메세지가 표시됩니다 . 

이후 정상적인 실습을 위해 설정을 원상복구 합니다 . 

#iptables -D INPUT -m string --string  "information_schema" --icase --algo kmp -j DROP 



댓글