블로그 이미지
자료에 문제가 있을 경우, 확인하는대로 삭제처리 하겠습니다. 즐거운 하루 되시길...
05-07 00:32
Total
Today
Yesterday

카테고리

분류 전체보기 (199)
이야기방 (20)
공부방 (173)
개발노트&관련잡다구니 (6)

'공부방'에 해당되는 글 173건

  1. 2009.07.23 [아파치] 웹서버 세팅
  2. 2009.07.23 [네트워크] netstat 명령어에 대해서
4.1 아파치 웹 서버의 시작과 종료 방법
시작 => /usr/sbin/httpd -f /etc/httpd/conf/httpd.conf
종료 => kill - TERM `cat /var/run/httpd.pid`
 
4.2 아파치 웹 서버의 설정
 
4.2.1 매우 중요한 3개의 conf 파일의 값을 설정한다.
 
httpd.conf : 웹서버 설정 관련 파일 (srm.conf와 access.conf를 함께 작성해도
상관없다.)
srm.conf : 웹서버 자원 관련 파일
access.conf : 웹서버 보안 접근제어 관련 파일
 
 4.2.2 httpd.conf
 
내용 예약어 설정값
서버실행방법 Servertype standalone
포트번호 Port 80
client machine name HostnameLookups 보안을 위한 웹서버 실행자 변경
서버관리자의 전자우편 주소 ServerAdmin root@localhost
서버의 루트 디렉토리 ServerRoot /etc/httpd
각종기록파일 위치지정(서버의 루트디렉토리를 기준으로 한다.) Errorlog logs/error-log
Transferlog logs/access-log
Refererlog logs/referer-log
Agentlog logs/agent-log
서버의 프로세스 id 기록 파일 PidFile /var/run/httpd.pid
서버 내부상황 보고 ScoreBoardFile /var/run/apache-status
서버명(일반적으로 설정안함, DNS에 등록된 경우에 정의) #ServerName www.tiger.co.kr
Timeout 시간설정 TimeOut 400
서버 프로세스의 갯수설정 MinSpareServers 5
MaxSpareServers 10
StartServer 5
동시에 서비스 할 클라이언트의 최대 갯수 MaxClient 150
프로세스당 처리건수 MaxRequestsPerChild 30
프록시 서버 기능 여부 (프록시를 설정했을 때 on) #ProxyRequests on
 
 4.2.3 srm.conf
 
내용 예약어 설정값
문서 루트 디렉토리 DocumentRoot /home/httpd/html
사용자 각자의 홈페이지 디렉토리
(각자의 계정밑에 public_html 디렉토리를 만들고 거기에 html을 두면 된다)
예)- 계정 : hwyoo
    - 디렉토리 : /home/hwyoo/public_html/index.html
   - browser 요청 : http://www.tiger.co.kr/~hwyoo
UserDir public_html
디렉토리에서 기본문서 찾는 순서 DirectoryIndex index.html homepage.html index.shtml
디렉토리 파일 인덱스 표시방법 FancyIndexing FancyIndexing
각 파일에 맞는 icon 파일 설정 AddIconByEncoding .
AddIconByType .
..... .
DefaultIcon /icons/unknown.gif
파일에 대한 설명 달기 AddDescription string" file1 file2 ....
ReadmeName README
HeaderName HEADER
인덱스에서 제외한 파일 IndexIgnore .....
각 디렉토리에 대한 접근 제한 파일 AccessFileName .htaccess
기본 문서 유형 편집 DefaultType text/plain
전송중 압축 자료 풀기 AddEncording x-compress z
AddEncording x-gzip gz
알리아스 기능 Alias /icons/ /home/httpd/icon/
기타 SSI CGI 실행 #AddHandler cgi-script .cgi
#AddHandler imap-file map
서버 스크립트 별칭기능
(지정한 곳 이외에서 cgi의 실행을 막는다. 보안상 중요하다)
ScriptAlias /cgi-bin/ /home/httpd/cgi-bin/
SSI (Server Side Include) 기능 사용 Addtype text/html .shtml
에러 페이지 설정
(예 : erroe 404 : 문서를 찾을 수 없다.)
ErrorDocument 404 /missing.html 또는
ErrorDocument 404 http://localhost/missing.html
 
4.2.3 access.conf
 
access.conf : 전체적인 기본설정
.htaccess : 각 디렉토리 별로 자세히 결정
가. access.conf 설정
 
내용 예약어 및 설정값
문서 이렉토리에 대한 설정 <Directory /home/httpd/html>
Options Index Include ExecCGI
AllowOverride None
Order allow, deny
Allow from all
</Directory>
※ 보통 인트라넷인 경우에는 Order deny, allow Deny from all,Allow kgi, admin, webmaster 로 기술해 주어 접근제어에 중점을 둔다.
CGI 디렉토리에 대한 설정 <Directory /home/httpd/cgi-bin>
AllowOverride none
Options none
</Directory>
인증 매카니즘 설정하기
(.htaccess)
<Directory /home/httpd/html>
AuthType Basic
AuthName Yoo hyun woo
AuthUserFile /etc/httpd/conf/.htpasswd
AuthGroupFile /etc/httpd/conf/.htgroup
Order allow,deny
Allow from all
Require user admin
Require group admin
</Directory>
 
나. 암호파일 만들기
  - passwd
 
 #htpasswd -c /etc/httpd/conf/.htpasswd admin
 ※ -c (create) : 맨처음 .htpasswd를 생성할 때만 사용, 두번째 등록시는 생략한다.
 #htpasswd /etc/httpd/conf/.htpasswd webmaster
 
 - group
 vi 에디터를 사용해서 .htgroup 파일을 만든다.
 
.htgroup admin : admin webmaster
 
 4.2.4 MIME 파일 관련 설정 : srm.conf에 추가
 - MIME : Multipupose Internet Mail Extensions
 - 웹서버와 웹브라우저 사이에 오가는 자료가 어떤형태의 자료인지 지칭하기 위해 사용
 - Mime.types에 설정 : 거의 손볼 필요 없슴
 ※ 만약 어떤값을 정할 필요가 있을 때는 mine.types에 추가하지 말고
srm.conf에 AddType 지시자로 추가하여 관리
 
내용 예약어 설정값
오디오 mp3추가 AddType audio/mpeg mpga mp2 mp3
 
 4.2.5 Log files
 
파일 파일의 역할
access_log 웹서버가 어떤 파일을 읽어 클라이언트에게 전달했는지 보여준다.
agent_log 사용자가 어떤 브라우저를 통해 웹서버에 접속했는지 그이름을 나열
error_log 에러상황 기록
referer_log 각 페이지들이 어떻게 무엇을 참조했는지 기록
 
 4.2.6 실시간 웹서버 상황보기
 
 가. access.conf에 다음내용 추가
 
내용 예약어 및 설정값
실시간 웹서버 상황보기 관련 <Location /status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from your_admin_hostl
</Location>
 
 나. 웹브라우저에서 보기
 - URL에 다음과 같이 넣고 살행한다.
 - your.server.name/status
 - your.server.name/status?refresh=n
 ※ n : 갱신주기 초단위
 
 
 4.2.7 프록시(Proxy) 기능
 - httpd.conf 파일에 프록시 기능 설정
 
내용 예약어 설정값
proxy 기능 여부 ProxyRequests ON
cache 루트 CacheRoot /var/httpd/proxy
cache 크기 CacheSize 1024
cache garbage collection interval CacheGcUnterval 4 (시간)
 
 4.2.8 가상 호스트(Virtual Host)
 
 가. 정의 : 한대의 컴퓨터와 하나의 아파치 서버 프로세스를 가지고 한개 이상의 웹
사이트를 동시에 운영하는 기능 IP 별칭 기능으로 ISP 업체들이 제공하고
있는 서비스로 "Web Hostiong" 서비스라 부른다.
 나. 방법 : Only one conputer(server) but multiple web site(domain name) IP 별칭
기능을 사용하여 하나의 네트워크 인터페이스에 여러개의 주소를 부여
도메인 네임서버에 하나의 IP 주소에 대하여 여러개의 서로 다른 이름을 부여
아파치 웹서버는 서로 다른 IP주소 또는 서로 다른 호스트 이름에 대하여 한번의
실행을 통해서도 동시 서비스를 해 낼수 있다.
 
다. 구현
 
IP 주소는 다르고 도메인 이름이 다른경우 #ifconfig eth0:0 172.20..7.203
#ifconfig eth0:1 172.20..7.204
#ifconfig eth0:2 172.20..7.205
IP 주소는 하나인데 도메인 이름이 다른경우 도메인 네임서버에 요청하여 서로다른 이름이라 할지라도 같은 IP 주소를 가리키게 할 수있다.
(1) IP 주소가 하나뿐이므로 IP 별칭 기능을 사용할 때 처럼 네트워 크 인터페이스를 설정할 필요는 없다.
단지 도메인 네임 서버(/etc/resolve.conf /etc/host.conf)에 제대로 이름을 등록하면 된다.
(2) httpd.conf에 가상 호스트 환경을 설정한다.
<VirtualHost www.lion.co.kr>
ServerAdmin lion@localhost
DocumentRoot /home/lion/html
ServerName your.server.name
ErrorLog logs/lion-error-log
TransferLog logs/lion-access-log
</VirtualHost>
(3) 설정하고자 하는 가상호스트 갯수 만큼 (2)번의 내용을 선언한다.
 
 4.2.9 옵션(Options)에서 사용할 수 있는 지시자들
 
 가. All : MultiViews, IncludesNOEXEC, SymLinksOwneMatch를 제외한
모든 옵션들을 활성화합니다.
 
 나. ExecCGI : CGI 스크립트를 사용할 수 있도록 한다.
 
 다. FollowSymLinks : 서버에서 사용하는 심볼릭 링크를 사용한다.
 
 라. Includes : 서버측 포함 기능(SSI)을 사용할 수 있으며 SSI를 사용하려면
이 옵션을 활성화합니다.
 
마. IncludesNOEXEC : 서버측 포함 기능은 사용할 수 있으나 #exec, #include를
이용한 CGI 스크립트는 사용할 수 없도록 한다.
 
 바. Indexes : 고객의 디렉토리를 지정하는 URL로 접속했을 때 index.html 파일이
없다면 디렉토리의 내용을 보여준다.
 
 사. MultiViews : 컨텐트 협상 기능을 사용할 수 있도록 한다.
 
 아. SymLinksIfOwnerMatch : 동일한 사용자의 소유로 설정된 심볼릭 링크만 허가한다.
 
 
- 각각의 인자들은 "+" 혹은 "-"를 붙여 그 기능을 더하거나 뺄 수 있다.
- 만약 아무런 옵션도 부여되지 않았고 <Limit>지시자도 없다면 All이 적용된 것과
같은 효과를 가진다.

Posted by 래채
, |
 

netstat의 TCP 연결 상태 의미  

netstat의 State 필드에 표시되는 TCP 상태표시가 갖는 의미를 알아봅시다.
RFC 793 문서에 있는 TCP 기본 연결, 종료 과정을 보면 이해가 더 빠를 거라 생각한다.

 

LISTEN
연결 요청이 수신되기를 기다리고 있는 상태
sYN-SENT
클라이언트 및 서버가 서로 연결을 기다리는 상태
SYN-RECEIVED   
서버의 TCP가 원격 클라이언트로부터 Synchronize 플래그를 설정한 시작 세그먼트를 수신하였고 자신의 시작 세그먼트로 응답 하였으며, 그 세그먼트에 대한 확인 메시지를 기다리는 상태
ESTABLISHED
서로 연결이 되었다는 상태
FIN-WAIT-1
 회선이 완전히 종결될 때까지 원격 시스템으로부터 데이터는 수신하지만, 추가적인 데이터를 전송하지는 않을 그러한 상태
CLOSE-WAIT
FIN- WAIT-1의 설명과 같이 Finish 플래그가 설정된 종결 세그먼트가 수신되었고, 로컬 TCP는 그 세그먼트에 대한 확인 메시지를 송신 시스템에 전송하였음. 그러나 로컬 TCP는 로컬 application에서 작업을 종료하지 않아 자신의 종결 세그먼트를 생성하지 못한 상태
FIN-WAIT-2
FIN- WAIT-1의 설명과 같이 로컬 TCP는 Finish 플래그가 설정된 종결 세그먼트를 전송하였으며 CLOSE-WAIT 설명대로 원격 시스템으로부터 그 세그먼트에 대한 확인 메시지를 수신한 상태. 그러나 원격 application이 아직 작업을 종료하지 않아 원격 TCP가 자신의 종결 세그먼트를 생성하지 못한 그러한 상태
LAST-ACK
FIN- WAIT-1의 설명과 같이 Finish 플래그가 설정된 종결 세그먼트가 수신되었고, 로컬 application은 회선의 종결에 합의하여 자신도 종결을 요청하였음. 그 결과 로컬 TCP는 Finish 플래그가 설정된 자신의 종결 세그먼트를 전송하였으며, 회선은 이 세그먼트에 대한 확인 메시지가 수신되면 종결됩니다
TIME-WAIT
회선의 종결 절차가 완료되었으나 TCP는 분실되었을지 모르는 느린 세그먼트를 위해 당분간 소켓을 열어 놓은 상태로 유지하는 상태
CLOSED
완전 회선연결상태가 종료되어 있는 상태

# netstat -atn
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address          Foreign Address       State
... 생략 ...
tcp        0      0 0.0.0.0:25             0.0.0.0:*             LISTEN      <-- 포트가 열렸음
tcp        0      0 192.168.123.10:32799   207.46.106.141:1863   ESTABLISHED <-- 서로 연결중
tcp        0      0 192.168.123.10:32794   218.xxx.xx.xx:22      ESTABLISHED
tcp        0      0 192.168.123.10:32802   207.46.108.46:1863    CLOSE_WAIT  <-- 종료 대기중
tcp        0      0 192.168.123.10:33244   211.xxx.xx.x:80       ESTABLISHED
... 생략 ...
-----------------------------------------------------------


1) TCP 연결관련 상태

* RFC 793문서에 나온 기본적인 TCP 연결 과정

      TCP A                                                      TCP B

  1.  CLOSED                                                     LISTEN
  2.  SYN-SENT    --> < SEQ=100>< CTL=SYN>                   --> SYN-RECEIVED
  3.  ESTABLISHED <-- < SEQ=300>< ACK=101>< CTL=SYN,ACK>     <-- SYN-RECEIVED
  4.  ESTABLISHED --> < SEQ=101>< ACK=301>< CTL=ACK>         --> ESTABLISHED
  5.  ESTABLISHED --> < SEQ=101>< ACK=301>< CTL=ACK>< DATA>  --> ESTABLISHED


LISTEN      : 데몬이 요청을 발을 수 있도록 연결 요구를 기다리는 상태
  즉, 포트가 열려있음을 의미. http(80), mail(25), ftp(21), telnet(23) 등
  위에서 포트 25(mail)이 메일을 받을 수 있도록 열려 있는 상태
  윈도우즈에서는 LISTENING으로 표시
SYN_SENT    : 로컬에서 원격으로 연결 요청(SYN 신호를 보냄)을 시도한 상태
SYN_RECV    : 원격으로 부터 연결 요청을 받은 상태
  요청을 받아 SYN+ACK 신호로 응답은 한 상태이지만 ACK는 받지 못했다.
  netstat로 확인할 때 SYN_RECV가 상당히 많다면 TCP SYN 플러딩(Flooding) 공격일
  가능성이 있다.
  윈도우즈와 솔라리스에서는 SYN_RECEIVED으로, FreeBSD는 SYN_RCVD으로 표시

ESTABLISHED : 서로연결이 되어 있는 상태
  위에서 192.168.123.10의 포트 32794과 218.xxx.xx.xx의 포트 22(ssh)이 서로
  연결되어 있는 상태

2) TCP 종료관련 상태

* 정상적인 연결 종료 과정
      TCP A                                                   TCP B

  1.  ESTABLISHED                                             ESTABLISHED
  2.  (Close)
      FIN-WAIT-1  --> < SEQ=100>< ACK=300>< CTL=FIN,ACK>  --> CLOSE-WAIT
  3.  FIN-WAIT-2  <-- < SEQ=300>< ACK=101>< CTL=ACK>      <-- CLOSE-WAIT
  4.                                                         (Close)
      TIME-WAIT   <-- < SEQ=300>< ACK=101>< CTL=FIN,ACK>  <-- LAST-ACK
  5.  TIME-WAIT   --> < SEQ=101>< ACK=301>< CTL=ACK>      --> CLOSED
  6.  (2 MSL)
      CLOSED         
                                           

FIN_WAIT1   : 소켓이 닫히고 연결이 종료되고 있는 상태. 원격의 응답은 받을 수 있다.
  솔라리스에서는 FIN_WAIT_1로 표시
FIN_WAIT2   : 로컬이 원격으로 부터 연결 종료 요구를 기다리는 상태
  솔라리스에서는 FIN_WAIT_2로 표시
CLOSE_WAIT  : 원격의 연결 요청을 받고 연결이 종료되기를 기다리는 상태
  원격으로 부터 FIN+ACK 신호를 받고 ACK 신호를 원격에 보냈다.
TIME_WAIT   : 연결은 종료되었으나 원격의 수신 보장을 위해 기다리고 있는 상태
  이 상태를 특히 자주 보게되는 Apache에서 KeepAlive를 OFF로 해둔 경우,
  Tomcat 서버를 쓰는 경우 등
LAST_ACK    : 연결은 종료되었고 승인을 기다리는 상태
CLOSED      : 완전히 연결이 종료된 상태

※ 위의 FIN_WAIT1, FIN_WAIT2, CLOSE_WAIT 3개 상태는 연결 종료를 위해 서로간에
   신호를 주고받는 과정에 나타나는 상태로 이해하면 된다.
   종료 요청을 한 곳에서는 FIN_WAIT1, FIN_WAIT2, TIME_WAIT 상태가
   종료 요청을 받는 곳에서는 CLOSE_WAIT, LAST_ACK 상태가 표시된다.

3) 기타
CLOSING     : 연결은 종료되었으나 전송도중 데이타가 분실된 상태
UNKNOWN     : 소켓의 상태를 알 수 없음

솔라리스의 netstat 명령에서는 다음 2개의 상태를 더 표시한다.

IDLE        : 소켓이 열렸지만 binding 되지 않은 상태
BOUND       : listen이나 연결을 위한 준비 상태

ERR blog_07 61.106.160.18 Too long idle time, you(100.1.1.41) are disconnected

원본 링크 : http://cyhome.cyworld.com/?home_id=a1429626&postSeq=2704204


'공부방 > NetWork' 카테고리의 다른 글

[네트워크] OSI 7 Layer와 취약점  (0) 2009.07.23
[네트워크] P2P, 메신저들이 쓰는 포트  (0) 2009.07.23
Posted by 래채
, |