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 |