- APM
리눅스를 가장 많이 활용하는 분야 중에 하나가 바로 웹 서버
가장 안정적이고 유명한 Apache 웹 서버
APM = Apache 웹 서버 + 프로그래밍 언어 PHP + 데이터베이스 MariaDB
리눅스 환경에서 사용될 경우에 LAPM(Linux, Apache, PHP, MariaDB) 이라고도 부름
APM이라는 소트프웨어는 존재하지 않으며 이 3가지가 서로 잘 연동되어 운영되도록 만든 환경을 APM이라고 부르는 것
CentOS는 DNF 명령으로 편리한 설치를 제공함
# rpm -qa httpd php mariadb-server
# yum -y install httpd php php-mysqlnd mariadb mariadb-server
# systemctl restart httpd(mariadb도)
# systemctl enable httpd(mariadb도)
# systemctl status httpd(mariadb도)
# firewall-config -> http 활성화
firefox에서 127.0.0.1로 이동 -> testing 123 뜨면 정상
# cd /var/www/html/ -> html 홈 디렉터리
# vim phpinfo.php
<?php phpinfo(); ?> 입력 후 저장
127.0.0.1/phpinfo.php 들어가면 php 설정한거 확인 가능
# vim index.html
<h1>Hi</h1> 입력 후 저장
127.0.0.1 들어가면 설정된거 확인 가능
- Web Server 및 DB Server 구축
# mysql -> db서버 구축
MariaDB [(none)]> GRANT ALL PRIVILEGES ON DB이름.*TO DBuser명@localhost(db서버와 웹 서버를 별도로 구축할 경우 localhost 대신 웹 서버를 입력) IDENTIFIED BY '비밀번호' ;
MariaDB [(none)]> exit
# mysql -u DBuser명 -p비밀번호
MariaDB [(none)]> CREATE DATABASE DB이름;
MariaDB [(none)]> SHOW DATABASES ; 로 확인
MariaDB [(none)]> exit
xe 공식홈페이지에서 core 다운 후 /var/www/html에 압축해제-> web서버 구축
# chmod -R 707 xe
웹 브라우저에서 127.0.0.1/xe > DB이름 및 사용자 입력 > DB에 연결되지 않는다면 방화벽 문제(방화벽을 끄거나 # systemctl stop firewalld 방화벽에 포트를 추가 # firewall-cmd --permanent --zone=public --add-port=port번호(보통 3306)/tcp -> # firewall-cmd --reload)
※ setenforce 0 반드시 하기
※ 웹 서버와 DB 서버를 분리한다면 /etc/mysql/mariadb.conf.d/50-server.cnf 에 bind-address를 주석 처리해야 함
- ACL(Access Control List)
# vim /etc/httpd/conf/httpd.conf -> 웹에 대한 기본 설정 파일(기본 파일, 포트 번호 등)
<Directory "/var/www/html">의 Require all granted 밑에
Order allow,deny (특정 ip 입력이 순위가 낮게 순서 지정)
Allow from all
deny from 차단할ip주소 추가
# vim /var/www/html/index.html > 작성
차단ip 및 허용ip에서 접속 확인
- php 설정파일
php와 html이 동시에 있다면 우선순위는 html
# vim /etc/php.ini -> php에 대한 기본 설정 파일
- cgi
웹 서버가 클라이언트에게 제공하는 데이터는 정적, 동적인 데이터를 전달하기 위해 사용하는 것이 perl, php, python 같은 서버 사이드 스크립트, 서버 사이드 스크립트와 웹 서버가 서로 통신하는 방법을 정의한 것이 cgi
# vim /etc/httpd/conf/httpd.conf에서 Addhandler cgi-script .cgi에 .py 추가
/var/www/cgi-bin에 python script 작성
예시)
chmod 707 python script -> apache가 해당 스크립트를 사용할 수 있도록 권한 설정
웹 브라우저 > 192.168.111.100/cgi-bin/first.py로 확인
- 웹 페이지 인증
basic - 서버로 사용자 이름과 암호를 Base64로 인코딩 된 문자열을 전송(도청에 취약)
# vim /etc/httpd/conf.d/auth_basic.conf > 설정 입력
<Directory /var/www/html/basic>
AuthType Basic(인증 방식)
AuthName 인증 시 나타낼 인증방식 이름(ex."Basic Authentication Test")
AuthUserFile 유저파일 경로(ex./etc/httpd/.htpasswd)
Require user 유저명(ex.seunghyun Na, 명시된 유저만 인증을 통해 접속 가능하게 한다는 옵션)
Require valid-user (인증된 유저만 접속을 가능하게 한다는 옵션)
Order deny,allow (ACL도 추가)
Deny from all
Allow from 192.168.0. 192.168.111.
</Directory>
# htpasswd -c /etc/httpd/.htpasswd seunghyun(-c는 create로 처음 만들때 사용)
# htpasswd /etc/httpd/.htpasswd Na
# cat /etc/httpd/.htpasswd -> 비밀번호 암호문으로 설정된거 확인
# mkdir /var/www/html/basic
basic안에 index.html 작성
# systemctl restart httpd
웹 브라우저에 주소/basic 입력 후 인증 확인
digest - 서버로 사용자 이름과 암호 등을 조합하여 md5 값으로 전송
# vim /etc/httpd/conf.d/auth_digest.conf > 설정 입력
<Directory /var/www/html/digest>
AuthType Digest
AuthName 인증 시 나타낼 인증방식 이름(ex."Digest Private Area")
AuthUserFile 유저파일 경로(ex./etc/httpd/.htdigest)
Require valid-user (인증된 유저만 접속을 가능하게 한다는 옵션)
Order deny,allow (ACL도 추가)
Deny from all
Allow from 192.168.50. 192.168.111.
</Directory>
# htdigest -c /etc/httpd/.htpasswd '인증방식 이름'(ex.'Digest Private Area') user명(-c는 create로 처음 만들때 사용)
# cat /etc/httpd/.htdigest -> 비밀번호 암호문으로 설정된거 확인
# mkdir /var/www/html/digest
digest디렉터리 안에 index.html 작성
# systemctl restart httpd
웹 브라우저에 주소/digest 입력 후 인증 확인
- was
웹 서버 + 웹 컨테이너(동적 컨텐츠 수행)
# yum -y install tomcat tomcat-webapps -> tomcat 사용
# cd /usr/share/tomcat/webapps/ROOT -> 기본 디렉터리
# vim /usr/share/tomcat/conf/tomcat-users.xml
manager-gui 주석 해제, admin user 주석 해제
# systemctl restart tomcat
# vim /usr/share/tomcat/webapps/ROOT/index.jsp
java 작성
웹 브라우저에 주소:8080 입력 후 확인
- https
apache
인증, 서로 교환되는 데이터를 암호화함, 443 포트 사용
개인키 생성 -> CSR 생성 -> 개인키와 CSR를 이용해 Certificate(인증서) 생성
CSR : SSL 인증의 정보를 암호화하여 인증기관에 보내 인증서를 발급받게 하는 신청서
# cd /etc/pki/tls/certs -> 인증서 위치
# openssl genrsa -out http.key(개인키 이름) 2048(용량) -> 개인키 생성
# openssl req -new -key http.key(개인키 이름) -out http.csr(CSR 이름) -> CSR 생성
# openssl x509 -req -days 356(유효기간) -in http.csr(CSR 이름) -signkey http.key(개인키 이름) -out http.crt(인증서 이름) -> 인증서 생성
# yum -y install mod_ssl
# vim /etc/httpd/conf.d/ssl.conf -> 설정 파일(documentroot, servername, sslfile 수정)
# systemctl restart httpd
# netstat -natlp | grep httpd -> httpd port 확인
# lsof -i tcp:443 -> 443 port 상태 확인
웹 브라우저에서 https://주소 입력해서 확인
tomcat
8443 포트 사용
# keytool -genkey -alias tomcat(별칭) -keyalg RSA(key알고리즘 종류) -keystore /etc/pki/keystore(key 저장 위치)
# vim /usr/share/tomcat/conf/server.xml -> 8443 포트의 keystorefile, keystorepass 추가
# systemctl restart tomcat
웹 브라우저에서 https://주소:8443 입력해서 확인
'🔐 [정보보안] 모의해킹 침해대응 전문가 취업캠프 > Server' 카테고리의 다른 글
[Linux] Dos 공격 방어 (0) | 2023.09.12 |
---|---|
[Linux] 포트포워딩, 브릿지 (0) | 2023.09.12 |
[Linux] Telnet, SSH (0) | 2023.09.12 |
[Linux] 디스크 관리 (0) | 2023.09.12 |
[Linux] 리눅스 개요 (0) | 2023.08.30 |