본문 바로가기
리눅스

리눅스2 4차시

by IT매니절 2024. 4. 14.
su - suser -c "echo Welcome to sbs.com. > ~sbsuser/public_html/index.html"

=> su -c 옵션은 계정을 변경한 후 바로 명령어를 수행할 수 있다.

suser 권한으로 " "안의 명령을 실행.

 

echo 1 | passwd --stdin suser

=> stdinput으로 suser의 비밀번호를 파이프로 echo 1값을 받아 설정해주는 것. 테스트용이므로 간략하게 사용

 

 

실무에서는 도메인 하나당 데이터베이스 하나를 매칭함

 

db생성

create database 데이터베이스명;

create user 계정명@localhost identified by '비밀번호값';

grant all privileges on 데이터베이스명.* to 계정명@localhost;

=> 데이터베이스 생성, 계정 생성 및 비밀번호 설정, 데이터베이스 권한 부여

 

 

로그인 흐름도

로그인 -> 로그인 인증 -> 로그인 성공 -> 로그아웃 -> 로그인

(db 데이터 & php 소스코드 & 가상호스트를 활용한 로그인)

 

---------------------------

Apache 웹서버 설정 이어서 진행

/etc/httpd/conf/httpd.conf

 

지시자
User : 서버 프로세스를 사용할 사용자 지정
Group : 서버 프로세스를 사용할 사용자그룹 지정

=> 클라이언트 요청에 의해 파일 시스템 리소스에 접근할 때 사용됨

 

프로그램: 하드디스크에 저장되어 있는 형태

프로세스: 실행되고 있는 프로그램

 

ps
시스템에 동작중인 프로세스를 확인하는 명령어
사용예 ) ps -ef

 

ps -ef | grep apache

apache     1979   1729  0 10:23 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     1980   1729  0 10:23 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     1981   1729  0 10:23 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     1982   1729  0 10:23 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     1983   1729  0 10:23 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     2136   1729  0 10:24 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
root       2578   2544  0 11:10 pts/2    00:00:00 grep --color=auto apache

아파치 웹서버는 root 권한으로 프로세스가 한 개 뜨고
user apache 사용자 권한으로 여러 개 실행된다

(root 권한의 프로세스가 나머지 사용자를 미리 메모리에 띄워놓음. prefork 방식)

 

/etc/httpd/conf.modules.d/00-mpm.conf
멀티 프로세싱 모듈mpm (Multi-Processing Module)
- 웹서버가 클라이언트 요청을 처리하는 방식을 결정하는 설정파일

1) prefork       #mpm_prefork_module modules/mod_mpm_prefork.so

- 안정성이 뛰어나지만, 오버헤드가 크고 메모리 사용량이 높다
2) worker       #mpm_worker_module modules/mod_mpm_worker.so

- 프로세스 대신 멀티 스레드를 사용해 요청을 처리. 스레드 관련 문제에 주의해야 한다.
3) event         #mpm_event_module modules/mod_mpm_event.so

- worker 모듈과 유사하면서 향상되었음. 추가적인 기능을 통해 요청을 처리. 일부 상황에서 안정성 문제가 있을 수 있다.

(default : prefork mpm 모듈. 나머지는 #주석 쳐져있음. 관리자 판단으로 성능향상을 위해 변경할 수 있다)

 

ServerAdmin
- 관리자 이메일 주소 설정

ServerName
- 서버의 도메인주소 설정
- 도메인주소가 없다면 IP 주소 설정
- 도메인주소를 인식하지 못하면 웹서버가 작동하지 못함
ex) ServerName http://www.test.com
ex) ServerName 192.168.100.1:80

 

 

<Directory 디렉터리이름>
  AllowOverride 값

  Rquire 값

  Options 값
</Directory>

// 실제 디렉터리 설정 예시
<Directory "/var/www">
      AllowOverride None
      Require all granted
 </Directory>

<Directory "/var/www/html">
     Options Indexes FollowSymLinks
     AllowOverride None
     Require all granted
</Directory>


- 디렉터리 컨테이너
AllowOverride : none으로 설정시 .htaccess 설정파일을 무시함. .htaccess 파일은 분산설정 관련 파일. all은 .htaccess의 모든 설정을 허용함. 그외 Options, FileInfo, AuthConfig, Limit 등.
Require all denied : 접근제어. 모든 접속자의 모든 요청을 거부함
- Require all granted : 접근제어. 모든 접속자의 모든 요청을 허용함

Options
1) Indexes : 디렉토리내 index 파일이 없으면, 파일목록을 자동생성하여 보여줌 (보안취약설정)
2) FollowSymLinks : 심볼릭 링크를 통해 디렉토리를 탐색할 수 있도록 허용 (보안취약설정)

3) SymLinksifOwnerMatch : 심볼릭 링크를 따라가도록 허용하지만, 심볼릭링크와 링크된 파일/디렉터리 소유자가 일치할 경우에만 허용

4) ExecCGI : cgi 스크립트 실행 허용 (동적 컨텐츠 생성)

5) Includes : 서버사이드 인클루드SSIs 활성화 (HTML 문서 내 동적 컨텐츠 생성)

6) MultViews : 클라이언트 요청에 대한 대안을 자동으로 제공 (ex .html 파일 요청시, 없으면 다른 .html 파일 제공)

7) All

 

실습 > 아파치 인증 새로 하기

아파치 웹서버는 mod_auth_basic.so 모듈을 사용해 인증한다.
.htaccess 파일로 각 디렉터리에 대한 접근 제어 정보를 관리한다.

 

/etc/httpd/conf.modules.d/00-base.conf      (LoadModule 되어 있는 10라인)
httpd -M | grep auth_basic
 auth_basic_module (shared)
=> mod_auth_basic.so 모듈이 활성화 된 것을 확인 가능

 

vi /etc/httpd/conf.d/htpasswd.conf 파일에

<Directory "가상호스트 기본 디렉터리"> Options Indexes 포함 </Direcotry> 설정하고 저장

 

 

/admin 폴더를 하나 만들고, 접속해보면 Indexes 옵션에 의해 디렉터리 내역이 리스트화되어 제공되는 것을 확인할 수 있다.

 

외부인접근을 차단하기 위해 인증과정을 추가한다.

 

amdin 폴더에 vi .htaccess로 제어접근파일을 생성한다.
AuthName (인증이름)
Auth Basic (인증방법 베이직)
AuthUserFile (사용자 정보가 담긴 파일 경로. admin 밖에 위치하도록 함) 등을 설정한다

 

AuthUserFile의 경로에 맞춰 cd로 이동한다.
htpasswd 명령어(사용자 인증을 위한 사용자 이름, 암호를 관리)를 사용하여 경로에 .htpasswd 파일을 생성해준다.
사용예 ) htpasswd -5 -c .htpasswd webadmin

-c 새 파일을 만드는 옵션으로 이름은 .htpasswd로 설정했다.

-5는 sha-512로 암호화한다는 의미.

webadmin은 id를 의미하고, 엔터를 치면 passwd를 설정할 수 있다.

 

cat으로 .htpasswd를 확인하면 webadmin:$6$5Vm6IVYfv8aj.0AW$jWM ~ 이런 암호화된 내용을 볼 수 있음

chcon -t httpd_sys_content_t .htpasswd (SELinux 권한을 변경. 웹사용자가 접근할 수 있도록)

재접속하면 인증을 요구한다

 

 

 

DocumentRoot
- 가상호스트가 없다면, 웹문서/웹 리소스 제공시 사용되는 기본 디렉터리
가상호스트가 있다면 DocumentRoot 지시어는 무시되고, (첫번째) 가상호스트 컨테이너 안의 DocumentRoot가 기본 디렉터리가 된다(가상호스트의 DocumentRoot에 대한 Directory 설정을 필요시(접근제어 등) 따로 해주어야 한다)

(ex DocumentRoot "/var/www/html"일 때를 기준으로 <Directory "/var/www"><Directory "/var/www/html"> 설정이 되어있는데 가상호스트를 설정하면 DocumentRoot가 달라지므로, 그에 맞춰 변경 필요)

 

<IfModule dir_module>
 지시어 값
</IfModule>
- dir_module 모듈이 로드되어 있을 때 실행됨. IfModule 중첩도 가능.
- TypesConfig, AddType, MIMEMagicFile, AddOutputFilter, LogFormat, ScriptAlias, DirectoryIndex 등 ...

 

DirectoryIndex 값
- 도메인/IP주소로 접근시 디렉토리 내에서 기본으로 제공될 파일을 설정
- 보통 DirectoryIndex index.html 을 자주 사용함

 

(설정 수정 후 재시작시 systemctl restart httpd.service 대신

apachectl restart 또는 reload 등으로 줄여서 사용할 수 있다

재시작 전 로직 검증은 httpd -t )

 

 

 

'리눅스' 카테고리의 다른 글

리눅스2 5차시  (0) 2024.04.20
centos7 vmware 고정ip static 설정  (0) 2024.04.15
리눅스2 3차시  (0) 2024.04.13
rocky 리눅스로 싱글모드 패스워드 재설정하기  (0) 2024.04.07
소스 복사 붙여넣기  (0) 2024.04.07