- modsecurity.org
공개 웹 방화벽오래됨- 공개 웹방화벽 설치/운영 동영상 가이드 배포
- mod_security 설치 와 구축
- How To Set Up mod_security with Apache on Debian/Ubuntu
우부투 Apache
# 설치 apt-get install libapache2-modsecurity # 설치 확인 apachectl -M | grep --color security # 룰 설정, 상황에 따라 수정 mv /etc/modsecurity/modsecurity.conf{-recommended,} # 아파치 재시작 service apache2 reload
우분투 NGINX
modesecurity 설정
sudo vi /etc/modsecurity/modsecurity.conf # SecRuleEngine DetectionOnly 를 찾은 후 아래 On으로 변경 SecRuleEngine On # SecResponseBodyAccess On 을 찾아서 아래 Off 설정 # 본문 버퍼링 여부확인, On일 경우 로그파일 크기가 증가하니 데이터 유출, 검출 및 보호가 필요한 경우에만 필수로 적용 SecResponseBodyAccess Off # 웹에서 게시 할 수 있는 데이터 제한 # SecRequestBodyLimit : 최대 POST데이터 크기 지정, 413 에러 사용, 파일업로드가 없을 경우 값을 작게설정. # SecRequestBodyNoFilesLimit : SecRequestBodyLimit 와 유사한 기능이지만, 실용성이 낮다. POST데이터의 최소 사이즈 제한 SecRequestBodyLimit 13107200 #12.5MB SecRequestBodyNoFilesLimit 131072 #128KB # SecRequestBodyInMemoryLimit : 서버 성능에 영향을 미치는 설정. # 본문 데이터가 사용가능한 메모리 지정, 메모리가 여유가 있다면 유용한 설정이다. SecRequestBodyInMemoryLimit 131072 #128KB
SQL Injection 테스트
<html> <body> <!?php if(isset($_POST['login'])) { $username = $_POST['username']; $password = $_POST['password']; $con = mysqli_connect('localhost','root','password','sample'); $result = mysqli_query($con, "SELECT * FROM `users` WHERE username='$username' AND password='$password'"); if(mysqli_num_rows($result) == 0) echo 'Invalid username or password'; else echo '<h1>Logged in</h1><p>A Secret for you....</p>'; } else { ?> <form action="" method="post"> Username: <input type="text" name="username"/><br /> Password: <input type="password" name="password"/><br /> <input type="submit" name="login" value="Login"/> </form> <!?php } ?--> </body> </html>
테스트를 위한 설정(Apache)
sudo vi /etc/apache2/mods-enabled/mod-security.conf
#지시자 사이에 아래 정보를 확인한다. Include "/usr/share/modsecurity-crs/*.conf" Include "/usr/share/modsecurity-crs/activated_rules/*.conf"
# 아래 3개의 룰을 참고하거나 activated_rules 에 복사하거나 링크를 걸어서 사용하면된다. # /usr/share/modsecurity-crs/base_rules # /usr/share/modsecurity-crs/optional_rules # /usr/share/modsecurity-crs/experimental_rules cd /usr/share/modsecurity-crs/activated_rules/ ln -s /usr/share/modsecurity-crs/base_rules/modsecurity_crs_41_sql_injection_attacks.conf . # 아파치 재시작 service apache2 reload
반응형