1. Apache 웹서버에 대하여
아파치는 세계에서 가장 많이 쓰는 웹 서버 중 하나로
HTTP 서버이며 기능적인 면에서 우수하며 구축이 쉽고, 많은 운영체제에서 운용할 수 있다는 장점이 있다.
단 아파치 자체만으로는 굉장히 무겁고 squid와 함께 *slowloris 취약점이 발견되었기 때문에 대형 서비스에서는 Nginx, IIS를 주로 사용한다.
Slowloris 취약점 |
HTTP Header 정보를 비정상적으로 조작하여 웹서버가 온전한 Header 정보가 올 때까지 기다리도록 한다. 서버가 연결 상태를 유지할 수 있는 가용자원은 한계가 있으므로 임계치를 넘어가면 다른 정상적인 접근을 거부하게 된다. ex) HTTP에서는 헤더의 끝을 /r/n 이라는 개행문자로 구분한다. 공격자는 이 마지막 개행문자를 보내지 않고 지속적으로 의미없는 변수를 추가한다. 서버는 헤더 정보가 아직 전송 중이라고 인식하고 연결을 유지한다. |
웹서버
Web Client | Internet Explorer, Chrome, Firefox - 브라우저 |
F/W | 방화벽(데이터의 헤더영역 검사) |
Web F/W | 웹 방화벽(데이터의 바디영역 검사) |
Web Server | IIS, Apache, Nginx |
Web Application Server (WAS) | ASP, PHP, JSP |
Database | MsSQL, MySQL, Oracle |
웹서버는 클라이언트에게 HTTP 요청을 받아 처리하며 이를 HTML 문서와 같은 정적 컨텐츠로 제공하는 서버를 의미한다.
방화벽을 기준으로 Client와 Server 영역으로 나뉜다.
웹서버의 기능
HTTP 프로토콜을 기반으로 클라이언트의 요청을 서비스하는 기능을 담당 → 요청에 따라 두 가지 기능 중 하나를 적절하게 선택하여 수행 |
1-1) 정적인 컨텐츠 제공
1-2) WAS를 거치지 않고 바로 자원을 제공
2-1) 동적인 컨텐츠 제공을 위한 요청 전달
2-2) 클라이언트의 요청을 WAS에 보내고 처리 결과를 클라이언트에게 다시 전달
웹서버의 장단점
장점 | 단점 |
1. 오픈소스 프레임워크가 많고 검증되어있다. 2. 웹서버에서는 정적 컨텐츠만 처리하도록 기능을 분배하여 서버의 부담을 줄여준다. |
1. 1 request 1 response 구조이므로 notify가 어렵다. 2. 모든 데이터 요청마다 DB 조회가 필요하므로 성능이 떨어진다. |
2. Ubuntu 22.04에 Apache 소스 설치
root@seven: ~$ sudo su (비밀번호 입력) # apt-get install make # apt-get install build-essential # apt-get install gcc # apt-get install –reinstall make # apt-get install libexpat1-dev # apt-get install g++ # apt-get install net-tools # apt-get install curl # apt-get install wget |
Apache와 Nginx 모두 관리자 모드로 최신버전을 다운받기 위해 apt를 업데이트 해주어야하고, 이는 패키지 설치와 동일하다. 아파치는 /usr/local에 설치하는 것이 관례이며, 소스 설치 전 기본적으로 apr, apr-util, pcre를 설치해야 한다.
root@seven: ~$ cd /usr/local /usr/local# mkdir apache 1) apr-1.7.0 설치 /usr/local# wget http://mirror.navercorp.com/apache//apr/apr-1.7.0.tar.gz 2) apr-util-1.6.1 설치 /usr/local# wget http://mirror.navercorp.com/apache//apr/apr-util-1.6.1.tar.gz 3) pcre-8.43 설치 /usr/local# wget https://sourceforge.net/projects/pcre/files/pcre/8.45/pcre-8.45.tar.gz/ 4) apache-2.4.51 설치 // Ubuntu에 설치할 때 Apache가 아닌 Apache2 설치 /usr/local# wget https://dlcdn.apache.org/httpd/httpd-2.4.53.tar.gz |
wget 명령어는 웹 서버로부터 파일을 다운받을 때 사용한다.
이때 아파치는 최신 버전을 다운받아야 오류가 발생하지 않는다. 홈페이지 지워버린 버전을 다운받는다면 403 에러가 발생한다. https://httpd.apache.org/download.cgi 에서 최신 버전을 확인하고 링크 주소를 복사해 사용한다.
tar xvfz = tar.gz 압축을 한 번에 풀어준다.
/usr/local# tar xvfz apr-1.7.0.tar.gz /usr/local# tar xvfz apr-util-1.6.1.tar.gz /usr/local# tar xvfz pcre-8.45.tar.gz /usr/local# tar xvfz httpd-2.4.53.tar.gz |
apr을 설치한다.
apr = 아파치 http 서버 2.X의 핵심 휴대용 라이브러리
/usr/local# cd apr-1.7.0 /usr/local/apr-1.7.0# ./configure --prefix=/usr/local/apr → 여기서 오류가 난다면 # cp -arp libtool libtoolT 다운로드를 해준다. /usr/local/apr-1.7.0# make /usr/local/apr-1.7.0# make install |
★ 소스 설치시, 반복적으로 make && make install의 과정을 거치게 된다. ★
make = 소스를 컴파일해서 실행 가능한 파일로 만들어 준다.
make install = make를 통해 만들어진 설치 파일(setup)을 설치한다.
configure = 소스파일에 대한 환경 설정 → 서버 환경에 맞춰 makefile 생성
apr-util을 설치한다.
/usr/local# cd apr-util-1.6.1 /usr/local/apr-util-1.6.1# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr /usr/local/apr-util-1.6.1# make /usr/local/apr-util-1.6.1# make install |
pcre를 설치한다.
/usr/local# cd pcre-8.45 /usr/local/pcre-8.43# ./configure --prefix=/usr/local/pcre /usr/local/pcre-8.43# make /usr/local/pcre-8.43# make install |
Apache(2.4.53)를 설치한다.
/usr/local# cd httpd-2.4.53 /usr/local/httpd-2.4.46# ./configure --prefix=/usr/local/apache2.4 \ --enable-module=so --enable-rewrite --enable-so \ --with-apr=/usr/local/apr \ --with-apr-util=/usr/local/apr-util \ --with-pcre=/usr/local/pcre \ --enable-mods-shared=all /usr/local/httpd-2.4.46# make /usr/local/httpd-2.4.46# make install |
Apache를 실행한다.
$ sudo /usr/local/apache2.4/bin/httpd -k start → 웹서버 데몬 httpd의 실행 경로를 적어준다. $ ps -ef | grep httpd | grep -v grep → ps -ef | grep httpd = 이름에 httpd가 포함되는 프로세스 목록을 모두 출력 $ sudo netstat -anp | grep httpd → netstat = 네트워크 상태 확인 명령어 (-a -o : 사용중인 포트 확인 가능) $ sudo curl http://127.0.0.1 →curl = HTML 정보를 출력 |
localhost 127.0.0.1에서 아파치가 잘 동작하는 것을 확인할 수 있다.
'Server > Ubuntu' 카테고리의 다른 글
[Ubuntu] Ubuntu 22.04.1 LTS에 DHCP 서버 구축 (0) | 2023.03.12 |
---|---|
[Ubuntu] Ubuntu 22.04.1 LTS에 메일 서버 구축 (0) | 2023.02.23 |
[Ubuntu] Ubuntu 22.04.1 LTS에 Telnet 서버 구축 (0) | 2023.02.10 |
[Ubuntu] Ubuntu 22.04.1 LTS에 FTP 서버 구축 (0) | 2023.02.10 |
[Ubuntu] Ubuntu 22.04.1 LTS에 SSH 서버 구축 (0) | 2023.02.04 |