해당 디렉토리에 .htaccess 파일을 사용하기 위해서는 httpd.conf파일에서 AllowOverride 부분을 수정해야 합니다. All로 하면 모든 기능 사용이 가능하고, AuthConfig로 하면 인증기능을 사용가능, FileInfo 는 txt 등 다른 파일 확장자를 가진 파일을 php로 인식하게 만들어 줍니다.
<Diretory /home/*/public_html>
AllowOverride FileInfo (또는 All 도 가능)
</Diretory>
1) IP 차단
- 해킹으로 의심되는 IP(예 1.1.1.1)가 있다면 .htaccess 파일에
deny form 1.1.1.1 를 추가하면 됩니다.
예) deny from 1.1.1.1
deny from 2.2.2.2
deny from 1.1.1.1 2.2.2.2 (위와 같이 따로 적어도 되고 이와 같이 붙여줘도 됨)
deny from 3.3.3.0/255.255.255.0 (3.3.3.* 대역을 차단 시)
deny from all
allow from 4.4.4.4. (특정 IP만 허용할 경우)
2) order
- order 는 디폴트 접근정책을 지정하고 Allow 혹은 Deny 평가 되는 순서를 지정합니다.
Order Allow,Deny 매치가 있으면 Allow 또는 Deny -> 디폴트는 Deny
Order Deny,Allow 매치가 있으면 Allow 또는 Deny -> 디폴트는 Allow
-> 설정파일의 순서는 중요하지 않으며, Allow, Deny 각각 하나의 그룹으로 취급됩니다.
예)
Order Allow, Deny
Allow from 1.1.1.1
Deny from 1.1.1.1
디폴트는 Deny 이지만, 1.1.1.1 이 Allow 와 Deny 둘다 설정 -> Deny 됨
Order Allow, Deny
디폴트가 Deny 이므로 Deny 됨
3) 인증
- httpd에 다음과 같이 설정해야 합니다.
AllowOverride AuthConfig
- .htaccess 파일에 다음과 같이 넣습니다. (해당 디렉토리는 /home/test)
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /home/test/password
Require user test
- AuthUserFile 생성
htpasswd -c password test
또는 직접 php를 통해 생성
<?php
$user = 'test';
$pass = 'pass';
$hash = base64_encode(sha1($pass, true));
$encoded = '{SHA}'.$hash;
echo $user.':'.$encoded;
?>
해서 나오는 값을 /home/test/password 로 저장하시면 됩니다.
페이지는 열고 인증창이 뜨면 유저명 test, 패스워드 pass 라고 넣어 보세요.
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /home/test/password
Require user test
여기서
Require user test -> Require valid-user
로 변경하고
/home/test/password 파일에 추가 계정을 등록해 주시면 됩니다.
추가 등록은 다음라인에 아래와 같이 등록해 주시면 됩니다.
test:{SHA}nU4eI71bcnBGqeO0t9tXvY1u5oQ=
test1:{SHA}8FePHnF0saQcTqjG4X96ijuIySo=
- 만일 특정아이피에서는 그냥 접근하고 그 아이피가 아닌경우 인증창이 나타나게 할 경우 Satisfy를 이용하면 됩니다.
4.4.4.4 아이피는 그냥 접근할려면 .htaccess파일에 아래 내용을 추가.
Satisfy any
order allow,deny
Allow from 4.4.4.4
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /home/test/password
Require valid-user
- Basic은 id:pw 형식을 base 64 로 암호화 -> 스니핑 시 id/pw 노출(base 64 복호화)
- Digest는 md5로 암호화 -> 해시 함수로 복호화 불가. 단 brutus나 dictionary 공격에 대비하여
2가지 조합일 경우 10자리, 3가지 조합일 경우 8자리 이상의
유추가 어려운 pw사용해야 함
5) AddType 설정
AddType application/x-httpd-php .php .php3 .php4 .htm .html .txt
-> txt 확장자 파일을 php로 인식시키는 설정으로 txt파일에 실행권한을 줍니다.
php코드를 담은 txt 파일을 업로드 -> 실행 -> nobody 권한 획득 -> config.php 분석
-> mysql 권한 확보 -> db 정보 획득 , ftp 계정 확보
- 해결책
1) php.ini 에 allowoverride none 설정
2) 해당 업로드 폴더에 .htaccess 파일을 업로드(빈 파일로) 후 755 퍼미션으로 설정
-> 추가 업로드 방지
3) 게시판 업로드에서 .htaccess 파일 체크
No comments:
Post a Comment