본문 바로가기

main

[CentOS 7] Apache 서버 로그 관리 - httpd.conf httpd.conf 에서 로그를 관리하는 명령 ErrorLog logs/error_log LogLevel debug CustomLog logs/access_log combined error_log : 아파치 서버의 에러 정보 기록 에러 로그의 포맷에는 시간/위험도/IP주소/메시지 정보가 포함된다. LogLevel : error_log가 기록될 위험도 수준을 정해줄수있다. emerg 서버를 사용할 수 없게 만든 긴급 상황 표시 alert 즉시 해결해야 하는 오류 표시 crit 임계 조건을 보여줌 error 오류 조건을 표시 warn 일반적으로 오류가 아니지만 해결해야 하는 경고 조건 표시 notice 일반적인 알림 info 정보 메시지 표시 debug 디버그 수준 메시지 표시 access_log : 아파치.. 더보기
[CentOS 7] Apache 기본 계정 보안 - httpd.conf - User와 Group이 로그인 불가한 계정으로 설정되어 있는지 확인 User nobody Group nobody - DocumentRoot 디렉토리 구조가 노출되지 않도록 설정 DocmuentRoot는 모든 웹 컨텐츠가 저장될 디렉토리 구조이다. 시스템의 루트 파일시스템 등과는 별도의 파일시스템을 사용해야 한다. 웹 서버 데몬은 chroot에 설치하는 것을 권고한다. 만약 웹서버 데몬이 공격당해도 chroot 이외 디렉토리로는 접근할 수 없어 피해를 최소화할 수 있다. 웹 브라우저에서 사용자가 URL을 입력했을 때 웹 컨텐츠가 없을 경우 기본적으로 DocumentRoot 디렉토리 리스트를 보여주게 된다. 이를 방지하기 위해서 Options 지시자에서 Indexes 옵션을 제거한다. 웹 서버에서 심볼릭.. 더보기
[Apache] 유저 생성, 정보 확인, sudo 권한주기, 비밀번호 pass 하기 일반 유저 생성 후 생성확인 useradd general passwd general ls -al /home/general 유저 정보 확인 cat /etc/passwd cut -f1 -d: /etc/passwd # user_id만 grep /bin/bash /etc/passwd # useradd를 통해 등록된 계정만 계정 정보가 콜론으로 구분하여 표시된다. user_id 유저 ID, 하지만 시스템에서는 유저를 uid로 식별한다. :passwd (x) 암호화된 패스워드가 저장되어 있지만 보안상의 이유로 /etc/shadow에 저장돼있다. 유저 비밀번호 해시값 확인 - 일반 유저 접근 불가 cat /etc/shadow :uid 유저를 식별하기 위해 정수를 이용한다. 0-root, 일반사용자-1000부터 :gi.. 더보기
[NCP] Certificate Manager에 Let's Encrypt 인증서 등록하기 SSL 적용이 잘 안 될 때 이것저것 해보느라 NCP에 등록도 해 보고 그랬다. 그렇지만 이거 적용 안 한다고 SSL이 안 될 지는 잘 모르겠다..? 왜냐면 지금보니 사용중에 아니오라고 나와있어서 ... ?!?!? 하지만 일단 귀찮은 과정을 거쳤으므로 추후에 또 필요하게 될 경우를 위해 저장해두겠다. 인증서 유효여부를 확인바란다는 오류가 나올 경우 이 이유를 의심해볼 수 있다고 한다. fullchain.pem에는 인증서의 cert.pem과 chain.pem을 합친 내용이 기재되어 있는데, Root CA와 Sub CA 정보가 포함되어야하기 때문에 이 정보를 추출하여 certification chain을 생성해줘야 한다고 함. 구글링해보니 윈도우에서 하는 방법만 보여서 나도 윈도우에서 했다.. scp를 통해.. 더보기
[CentOS 7] let's encrypt 인증서 확인하기 / 갱신하기 (crontab) 인증서 내용 확인 명령어는 certbot certificates 이며 만료일도 여기서 확인할 수 있다. 갱신은 만료일 30일 전부터 할 수 있다. certbot renew ㅋㅋㅋㅋ아직 아니라고 안 시켜줌 ㅎㅎ not yet을 보더라도 한 달에 한번씩 갱신하는걸로 crontab에 등록해보겠다. crontab -e 0 4 15 * * certbot renew 크론 문법은 순서대로 이다. *는 매번을 의미한다. 위 문법은 매년 매달 15일 4시 0분에 명령어를 수행하게 된다. 크론탭은 서버가 꺼져있으면 작동하지 않는다고 한다. 그 시간에 서버에 문제가 생겼을 경우에도 작동시켜주고 싶다면 anacron 등을 따로 설정해주어야 하는 것 같다. vim /var/log/cron log는 여기에 남는다고 하니 다음 실.. 더보기
[정규표현식] Rewrite 지시자로 정규표현식 이해하기 Rewrite Pattern에 정규식을 사용할 수 있다. 다음은 많이 사용되는 정규식 문법이다. . : 다수의 한 문자 ? : 0개 이상의 한 문자 * : 0개 이상의 문자 또는 문자열 + : 1개 이상의 문자 또는 문자열 (chars) : 문자 또는 문자열을 그룹화 ^ : 문자열의 첫문자(열)을 지정 $ : 문자열의 끝문자(열)을 지정 \ : 정규표현식에서 특별한 의미로 사용되는 문자의 특수기능을 제거 {n} : n번 반복 {n,} : n번 이상 반복 {n,m} : n번 이상 m번 이하 반복 [chars] : 문자들의 범위 또는 표현할 수 있는 문자들을 설정 Rewrite Subrutine 지시자 L : 뒷 구문 여부를 무시, 해당 줄에서 종료 N : 새로운 Rule 시작 R : Redirection... 더보기
[CentOS 7] Apache Rewrite로 http -> https, non-www -> www로 주소 Redirect 시키기 RewriteEngine On RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule (.*) https://www.%{HTTP_HOST}%{REQUEST_URL} [R=301,L] RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URL} [R=301,L] 두 가지를 한번에 [OR]로 조건에 주고 Redirect 시킬 수도 있으나.. 일단 80으로 들어오거나 443으로 들어오거나 어디로 올 지 모르겠고 만약 80이라면 Proxy로 443으로 보내버리고 이미 https가 되는 상황이어서 어떻게 할까... 하다가 각각의 VirtualHost에 넣어주는 방법을 택했다.. 더보기
[Node] API 통신용 포트에도 SSL 적용시키기 일반 유저가 접속하는 80, 443 포트 외에 정보를 받아와야 하는 API 주소(다른 포트번호)에는 SSL이 적용되지 않아서 ERR_SSL_PROTOCAL_ERROR를 받았다. 처음에는 임시로 프론트에서 해결해보고자 React에 이 meta 태그를 입력했는데 일단 임시방편이기도 하지만 이렇게 넣어줘도 통신이 되지는 않았다. Node.js의 구동 코드에 SSL인증서 파일을 입력해주면 된다. var app = require('../app'); // HTTPS const https = require('https'); const fs = require('fs'); const options = { key: fs.readFileSync('privkey.pem'), cert: fs.readFileSync('fullc.. 더보기