apache 웹서버 자체 보안설정리눅스2013/08/22 19:47수정삭제 http://blog.naver.com/winsomeday/130174753394 전용뷰어 보기httpd.conf 파일을 루트만 확인 및 수정할 수 있도록 퍼미션을 600으로 설정 아파치 cgi 실행옵션이 필요하지 않은 서버에서는 사용하지 못하게 한다. → AddHandler cgi-script .cgi 특정 디렉토리내에서만 cgi 사용가능하게 설정 cgi실행파일을 웹서버에 올려두고 실행하면 시스템 정보가 쉽게 유출되므로, httpd.conf파일에서 설정 →ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/" httpd.conf의 지시자 Options에 설정되는 Indexes 값 문제 Indexes가 설정되어 있고 DirectoryIndex에서 지정한 파일이 디렉토리내에 없으면 그 디렉토리의 목록을 출력해 주므로 →Options 지시자에서 Indexes 값 삭제 Options 지시자 FollowSymLinks를 제거 예를 들어 /home/kbs/www/linkfile 파일이 "ln -s /home/kbs/linkfile /etc/passwd" 의
active, stanby 구분 [root@~]# pstree ├─pulse───lvsd───2*[nanny] // active [root@~]# pstree ├─pulse // stanby <LVS1> eth0 123.45.123.20 eth0:1 123.45.123.59 [root@~]# ipvsadm -L // 현재 로드밸런싱 되고 있는 리스트 IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 123.45.123.59:http wlc persistent 1800 // 59 VIP → 75 VIP -> 123.45.123.75:http Route 1 131 20 → 77 VIp -> 123.45.123.77:http Route
사용형식 : rpm -q+[옵션] 패키지명모든 패키지 확인 : rpm -qa 어떤 패키지로 설치 됐는지 확인 : rpm -qf /절대경로/파일명 (rpm으로 설치되었을때만 확인됨)패키지로 설치되는 파일들 확인 : rpm -ql 패키지명패키지 상세 정보 : rpm -qi 패키지명패키지로 설치된 파일들 정상여부 검사 : rpm -qs 패키지명패키지의 설정파일들만 확인 : rpm -qc 패키지명메뉴얼파일들 보기 : rpm -qd 패키지명의존성 확인 : rpm -qR 패키지명무결성 검사 : rpm -V 패키지명 (출력되는 파일들은 변경되었을 가능성이 있다)
[root@ ~]# uptime2:17:14 up 2 days, 13:25, 1 user, load average: 0.03, 0.05, 0.00 현재시각은 2:17:14 up 2days, 13:25 2일 13:25 동안 켜져 있었음 시스템에 로그인한 사용자수 1명 0.03, 0.05, 0.00 각각 1분, 5분, 15분 동안의 시스템 평균 부하율
httpd.conf 파일 문법 검사 : apachectl configtest
[root@~]# vi httpd.conf NameVirtualHost * Include conf/vhosts.conf [root@~]# vi vhosts.conf <VirtualHost *> // vhost는 잘못된 주소를 요청 받았을때 맨위에 설정된 <VirtualHost*>를 보여주므로, ServerAdmin kbs@abc1234.com // 이를 방지하기 위해 default page 설정 DocumentRoot /opt/sadmin/default ServerName default.abc1234.com RewriteEngine on RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK) RewriteRule .* - [F] </VirtualHost> <VirtualHost *> // 실제 vhost 설정 ServerAdmin kbs@abc1234.com DocumentRoot /home/kbs/www ServerName abc1234.com RewriteEngine on RewriteCond %{REQUEST
SCSI 디스크 sda, sdb, sdc ... IDE 디스크 hda, hdb, hdc ... 순서 : 파티셔닝 → 포맷 → 마운트 → 파일저장 → /etc/fstab 1. 파티션 나누기 리눅스에서 주 파티션은 최대 4개까지 만들 수 있고, 그중 하나는 확장 파티션이어야 한다. [root@~]# fdisk /dev/sda command (m for help): [옵션] [옵션] → d(파티션삭제), m(옵션에 대한 도움말), p(현재 파티션 정보 보기), q(저장하지 않고 종료) n(새 파티션 추가), w(저장하기), t(파티션 타입) * 스왑 파티션 설정 Command (m for help): tPartition number (1-4): 1Hex code (type L to list codes): 82 * 부팅 파티션 설정 Command (m for help): aPartition number (1-4): 2(파티션 테이블 Boot항목에 * 표시) 생성이 잘 됐는지 확인 : fdisk -l /dev/sda, ls -l /dev/sda* 2. 파일시스템 포맷 [root@~]# mkfs -t ext3 /dev/sda1 - mke2fs /dev
/etc/fstab 파일의 구조 [파일시스템장치명] [마운트포인트] [파일시스템종류] [옵션] [dump 관련설정] [파일점검옵션] [파일시스템장치명] /dev/sda1, /dev/sda2 등 (장치명 대신 레이블명도 씀) [옵션] defaults : rw, nouser, auto, exec, suid 속성을 가짐 auto : 부팅시 자동마운트 (⇔ noauto) exec : 실행파일이 실행되는걸 허용 suid : SetUID, SetGID 사용 허용 (⇔ nosuid) ro : 읽기전용 사용 rw : 읽고 쓰기 사용 user : 일반 유저도 마운트 할 수 있게 함 (⇔ nouser) [dump 관련설정] 1 : dump 명령 가능, 0 : dump 명령 불가 [파일점검옵션] 0 : 부팅시 fsck 실행 안됨 1 : 루트파일시스템 2 : 루트파일시스템 이외의 파일시스템
DSO(Dynamic Shared Object)방식 특정모듈을 추가로 설치할 때 아파치를 재 컴파일 하지 않고 모듈을 추가 할 수 있다. Static 방식에 비해 응답속도가 느릴 수 있다. 필요할때에만 시스템에 load되었다가 사용이 다하면 unload되므로 시스템자원을 효율적으로 사용한다 설치 : ./configure --enable-so 확인 : httpd -l | grep mod_so.c 추가모듈 사용 방법 ① module 디렉토리에 모듈파일 넣기 ② 아파치 환경설정에서 모듈지정 ex) LoadModule php5_module(모듈명) modules/libphp5.so(위치) php일때는 AddType지시자 지정 Static방식 특정모듈을 추가로 사용하려면 아파치를 재 컴파일 한다. 아파치를 실행하면 모듈을 사용하든 안하든, 추가된 모든 모듈들이 시스템에 load된다. 응답속도가 DSO방식보다 빠를 수 있다. 시스템 자원을 낭비한다. DSO 방식을 사용하기를 권장한다
암호 인증을 위해 설정해야할 내용들 1. httpd.conf 파일의 암호인증 허용설정 2. 암호인증할 디렉토리내에서의 .htaccess 파일 생성 3. 암호인증할 사용자들의 ID와 암호가 저장된 .htpasswd 파일 생성 4. 웹브라우저에서 암호인증 테스트 5. 로그인 사용자 추가 생성 1. httpd.conf 파일의 암호인증 허용설정 <Directory "/home/www/public_html"/> AllowOverride AuthConfig // AuthConfig 값 설정 </Directory> AccessFileName .htaccess // 인증파일로 사용할 파일 설정 2. 암호인증할 디렉토리내에서의 .htaccess 파일 생성 암호인증을 하고자하는 디렉토리내에 vi로 생성 (/home/www/public_html/.htaccess) ① 특정 유저들만 인증하기 위한 방법 AuthType Basic // 인증방식 (보통 Basic 사용) AuthName "Input Password" // 인증창 이름 AuthU
www.abcd.com/~kbs www.abcd.com/kbs ~ 없애려면 httpd.conf 파일에서 Alias /kbs/ "/home/www/kbs/" 추가
위치 : apache/bin/ root@abcd:~# ab www.linux.co.kr/ This is ApacheBench, Version 2.0.41-dev <$Revision: 1.121.2.12 $> apache-2.0 Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Copyright (c) 2006 The Apache Software Foundation, http://www.apache.org/ Benchmarking www.linux.co.kr(be patient).....done Server Software: Apache/2.0.64 Server Hostname: www.linux.co.kr Server Port: 80 Document Path: / Document Length: 327 bytes // 초기문서 용량크기, 대부분 index.html 또는 index.htm Concurrency Level: 1 // 동시에 요청된 클라이언트 수 Time taken for tests
httpd -f 아파치설정 파일을 지정하여 실행 (하나의 아파치에 두개 이상의 설정파일을 용도별로 사용할때 유용) httpd -d 홈디렉토리를 지정하여 아파치 실행 (ServerRoot) httpd -v 버젼 확인 httpd -V 컴파일하여 설치한 설정내용 확인 httpd -l 설치되어 사용가능한 모듈 확인 httpd -L 설정지시자 확인 httpd -S 가상호스트 확인 httpd -t 문법 검사
CGI사용은 ScriptAlias로 지정된 위치에서 사용하는게 기본이지만, ExecCGI를 사용하면 지정된 디렉토리내에서 CGI 사용 허용* AddHandler cgi-script 지시자에서 정의한 확장자만 유효 아파치는 ScriptAlias에 설정되어 있는 디렉토리 안의 모든 파일을 html이 아닌 실행파일로 인식한다. 따라서 html이나 이미지 파일 등도 제대로 인식하지 않고 실행하려 한다. 또한 ScriptAlias로 설정된 디렉토리에서는 "*.cgi","*.pl" 등의 파일확장자도 필요치 않다. ScriptAlias로 설정되지 않은 디렉토리에서 스크립트를 실행하려면 *.cgi,*.pl 등만 스크립트 파일로 인식시켜야 한다. 아파치가 이것을 인식할 수 있도록 하는 것이 AddHandler(httpd.conf) 이다. AddHandler cgi-script .cgi httpd.conf 파일 중에서 위와 같이 설정을 하면 서버의 모든 디렉토리에서 .cgi로 끝나는 모든 파일을 cgi로 인식하여 실행한다. 단, 주의할 점은 스크립트로 사용하려하는 디렉토리가 ExecCGI 옵션이 설정되어 있어야 한다는 것이다. 예)ScriptAlias를 이용한 일반적 설정(h
몇번 부팅레벨로 부팅할지 결정 /etc/inittab → id:3:initdefault: 부팅레벨 0 : 시스템종료 /etc/rc.d/rc0.d/ 부팅레벨 1 : 싱글모드(관리모드), 콘솔로그인만 가능하고 root만 사용함 /etc/rc.d/rc1.d/ 부팅레벨 2 : NFS 지원하지 않는 멀티유저 실행모드 /etc/rc.d/rc2.d/ 부팅레벨 3 : NFS 지원 멀티유저 실행모드 /etc/rc.d/rc3.d/ 부팅레벨 4 : 사용하지 않음 /etc/rc.d/rc4.d/ 부팅레벨 5 : X윈도우 환경 멀티유저 실행모드 /etc/rc.d/rc5.d/ 부팅레벨 6 : 재부팅 /etc/rc.d/rc6.d/ 부팅레벨 변경 : init 0~6 레벨 확인 : runlevel 부팅레벨기록 : runlevel