폴더에 읽기 및 편집 권한을 준다. (하위 폴더까지)
'서버 > 리눅스' 카테고리의 다른 글
[리눅스] 명령어 모음 (0) | 2025.02.12 |
---|---|
[CentOS] Node.js 설치 (0) | 2025.02.12 |
[리눅스] 파일,폴더 복사 (0) | 2025.02.12 |
[리눅스] 포트를 찾아 종료하기 (2) | 2025.02.11 |
[리눅스] 터미널 세션 종료 후 프로그램 실행 (0) | 2025.02.11 |
폴더에 읽기 및 편집 권한을 준다. (하위 폴더까지)
[리눅스] 명령어 모음 (0) | 2025.02.12 |
---|---|
[CentOS] Node.js 설치 (0) | 2025.02.12 |
[리눅스] 파일,폴더 복사 (0) | 2025.02.12 |
[리눅스] 포트를 찾아 종료하기 (2) | 2025.02.11 |
[리눅스] 터미널 세션 종료 후 프로그램 실행 (0) | 2025.02.11 |
리눅스 명령어를 정리해보자.
분류
|
명령어
|
뜻
|
설명
|
관리자 권한으로 실행
|
$ sudo
|
super user
|
|
기본 명령어
|
$ ls
|
list
|
파일 보기
|
$ al
|
all
|
파일의 세부내용 확인
|
|
$ cd
|
change directory
|
디렉토리 이동
|
|
$ pwd
|
print working directory
|
현재 디렉토리 경로 확인
|
|
$ cd ~
|
|
홈 디렉토리 이동
|
|
$ cd /
|
|
루트 디렉토리 이동
|
|
$ cd .
|
|
현재 디렉토리
|
|
$ cd ..
|
|
부모 디렉토리 이동
|
|
$ clear
|
|
터미널 정보 지워줌
|
|
$ touch [file_name]
|
|
빈 파일을 만듬
|
|
$ mkdir [dir_name]
|
make directory
|
빈 폴더를 만듬
|
|
$ cat [file_name]
|
concatenate
|
텍스트 형태 파일 확인
|
|
$ mv [file or dic name]
[target_dir_name]
|
move
|
파일 또는 디렉토리 위치 옮기기
|
|
$ mv [file or dic name]
[new file name]
|
|
파일 및 디렉토리 이름 변경
|
|
$ cp [file][target_dir_name]
|
copy
|
복사
|
|
$ cp -r [folder_name]
|
all copy
|
하위폴더 및 파일
까지 복사
|
|
삭제 관련
|
$ rm [file_name]
|
remove
|
파일 삭제
|
$ rm -r [dir_name]
|
remove
|
폴더 삭제
|
|
$ rm -rf [dir_name]
|
no question remove
|
삭제할 때 경고창 생략 삭제
|
|
파일 소유권 변경
|
$ chown -R root:root [file_name OR dir_name]
|
change owner
|
파일 소유권 변경,
-R을 추가할 경우
하위 폴더 및 파일까지 소유권이 변경됌
|
GUI 프로그램 실행
|
$ explorer .
|
현재 폴더를 window 관리자에서 보기
|
|
$ open .
|
현재 폴더를 macOS finder에서 보기
|
||
$ code .
|
현재 폴더를 VS Code 에디터로 열기
|
추가적으로 더 발생하면 적어주자
[리눅스] chown 하위 폴더 권한 주기 (0) | 2025.02.12 |
---|---|
[CentOS] Node.js 설치 (0) | 2025.02.12 |
[리눅스] 파일,폴더 복사 (0) | 2025.02.12 |
[리눅스] 포트를 찾아 종료하기 (2) | 2025.02.11 |
[리눅스] 터미널 세션 종료 후 프로그램 실행 (0) | 2025.02.11 |
CentOS에 Node.js 설치를 해야되는데, 버전에 민감하지 않다면
관리자 권한 기준으로 터미널에
라고 입력하면
nodejs 와 npm 이 같이 설치 된다.
이렇게 나오면 성공!
근데 너무 버전을 신경쓰지 않았던 걸까?
버전이 낮아 npm 명령어가 실행 안되는 부분이 있어
node.js 를 재설치 했다.
내가 원하는 버전은 16버전이라, 다시 세팅했다.
일단 버전을 확인하고 npm의 캐시를 싹 삭제하자.
그리고 현재 깔려있는 node.js 와 npm을 삭제한다.
아래의 url을 참고하여 원하는 버전의 nodejs 버전을 curl 을 통해 세팅한다.
그리고, 아래와 같이 명령어를 작성하면...!
끝으로 node -v와 npm -v를 통해 버전을 확인하면,
원하는 버전이 세팅되어 있다.
우분투의 경우 npm은 같이 설치 되지 않던데
왜 그런걸까? 나중에 알아보기로 하자
[리눅스] chown 하위 폴더 권한 주기 (0) | 2025.02.12 |
---|---|
[리눅스] 명령어 모음 (0) | 2025.02.12 |
[리눅스] 파일,폴더 복사 (0) | 2025.02.12 |
[리눅스] 포트를 찾아 종료하기 (2) | 2025.02.11 |
[리눅스] 터미널 세션 종료 후 프로그램 실행 (0) | 2025.02.11 |
파일 복사
폴더 복사 (하위 폴더까지)
[리눅스] 명령어 모음 (0) | 2025.02.12 |
---|---|
[CentOS] Node.js 설치 (0) | 2025.02.12 |
[리눅스] 포트를 찾아 종료하기 (2) | 2025.02.11 |
[리눅스] 터미널 세션 종료 후 프로그램 실행 (0) | 2025.02.11 |
[Nginx] HTTPS 를 적용해보자-02 (Feat.SSL, CertBot) (0) | 2025.02.11 |
개발하다보면 의도치 않게 프로젝트를 종료했음에도 포트가 살아 있는 경우가 있다.
그럴 때는 포트를 찾아서 종료해야 프로젝트가 정상적으로 실행된다.
1. 종료하길 원하는 포트번호를 찾자
포트를 종료하려면 포트번호가 아닌 PID가 필요한데, PID를 종료시켜야 한다.
2. 포트 종료하기
포트 종료를 하고 포트 찾기 명령어를 확인하니 나오지 않는다.
종료가 잘 됐다.
[CentOS] Node.js 설치 (0) | 2025.02.12 |
---|---|
[리눅스] 파일,폴더 복사 (0) | 2025.02.12 |
[리눅스] 터미널 세션 종료 후 프로그램 실행 (0) | 2025.02.11 |
[Nginx] HTTPS 를 적용해보자-02 (Feat.SSL, CertBot) (0) | 2025.02.11 |
[NginX] HTTPS를 적용해보자-01 (Feat.Reverse Proxy) (0) | 2025.02.11 |
서버를 원격으로 연결하여 프로그램을 실행한 이후,
터미널로 봤을 때는 프로그램이 정상적으로 실행되고 있지만
터미널 세션을 종료하면 프로그램이 같이 종료되는 경우가 있다.
터미널을 종료해도 프로그램을 실행할 수 있도록 하는 방법이 몇 가지 있지만
제일 쉬웠던 방법만 써본다.
2. 개선 방법
nohup 명령어로 실행하고
exit 의 경우에는 따로 입력하여 종료한다.
나같은 경우 터미널을 그냥 x버튼을 클릭하여 종료했는데
그러면 nohup 명령어가 정상적으로
실행되지 않기에
exit 로 안전하게 터미널을 빠져나간다.
[리눅스] 파일,폴더 복사 (0) | 2025.02.12 |
---|---|
[리눅스] 포트를 찾아 종료하기 (2) | 2025.02.11 |
[Nginx] HTTPS 를 적용해보자-02 (Feat.SSL, CertBot) (0) | 2025.02.11 |
[NginX] HTTPS를 적용해보자-01 (Feat.Reverse Proxy) (0) | 2025.02.11 |
[리눅스] DDoS 공격 방어 (0) | 2025.02.11 |
요즘 웹사이트들은 보안인증을 위해 기본적으로 HTTPS 를 적용한다.
그러므로 NginX 환경에서 SSL 인증을 해볼 것이다.
SSL 인증서는 기본적으로 구매를 해야 하는 데,
나의 경우에는 개발서버에 구축을 해야 하다보니 금액이 부담스러워
무료 SSL 인증서를 써야 했다.
고맙게도 무료 SSL 인증서를 만들어주는 곳이 있으니 그것을 활용해보자.
(90일간 사용가능하며, 인증서 갱신 가능)
필자의 경우 CentOS 에서 하므로, Yum 으로 통일한다.
1.Certbot 설치
정상적으로 설치되면 아래와 같이 나올 것이다.
Certbot 이 설치되었으니 SSL 인증을 할 도메인을 등록해주어야 한다.
2. 도메인 등록
위와 같은 명령어를 실행하고 필자의 경우 중간에 아래와 같은 에러가 발생했는 데,
80포트가 중첩되어 발생한 에러였다.
현재 사용하고 있는 80포트는 NginX 였으므로, NginX 를 stop 시키고 다시 명령어를 실행했다.
3. NginX Stop, 도메인 등록 재실행 (포트가 중첩되었을 경우에만 해당)
다시 명령어를 실행하는 경우 따로 질문을 하지않고 인증서가 등록된다.
여기서 fullchain.pem 과 privkey.pem 의 경로를 꼭 기억하고 있어야 한다.
향후 Nginx 파일을 수정할 때 작성하기 때문이다.
그 다음으로 해당 인증서가 없어질 수도 있기 때문에,
다른 곳에 따로 백업을 해두자.
4. 인증서 백업
경로는 본인 입맛에 맞는 곳으로 설정하자.
꼭 안해도 되지만, 안전을 위해 해두는 것이 좋을 것 같다.
5. default.conf 파일 수정
여기서부터 상당히 중요한데, SSL 도입을 하는 경우 앞선 포스팅의 리버스프록시 부분보다
많은 부분이 수정된다.
전체 소스
server {
listen 80 default_server;
server_name 도메인주소.kr;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2 ;
listen [::]:443 ssl http2 ;
server_name localhost;
ssl on;
ssl_certificate /etc/letsencrypt/live/도메인주소/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/도메인주소/privkey.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
resolver 8.8.8.8;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded_For $proxy_add_x_forwarded_for;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
keepalive_timeout 10;
location / {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://localhost:3000;
}
}
소스를 분석해보자.
* 전체 개요
나의 경우 http 로 접근을 하든, https 로 접근을 하든, 80포트에서 3000번 포트로
포트포워딩을 해줘야하는 상황이었다.
그래서 1차적으로 80포트로 접근했을 때 아래와 같은 443포트로 이동시켰고,
443포트 내에서 리버스프록시로 서버내의 3000포트로 이동시켰다.
* SSL 설정
이부분은 구글링을 하다보니 옵션이 매우 상세해서, 공식문서를 참고하셔도 좋으나
필요없는 부분도 있기에 내가 설정한 것만 사용해도 좋을 것 같다.
SSL 설정 부분
다른부분은 복사해서 붙여넣어도 상관없으나,
ssl_certificate 와 ssl_certificate_key 부분은 각자 도메인 및 경로에 맞는 것으로 설정을 해주자.
옵션별로 자세한 해설은 나중에 다뤄보겠다.
6. Nginx 재시작
HTTPS 적용한 모습
성공 !
* 오류
1. 쿠키 문제
나의 경우 다른사람의 글대로 적은 데로 세팅을 해도 안됐다.
그런데 알고보니 개발환경에서 특정 URL 로 너무 리다이렉트되서
접근이 안되던 것이었다.
그럴 경우에는 쿠키를 삭제해주면 된다.
2. 도메인 문제
서버 내에서 등록된 도메인으로 적을 경우 리다이렉트 안되는 문제가
발생하여 localhost로 바꾸니 정상 적용된다.
[리눅스] 포트를 찾아 종료하기 (2) | 2025.02.11 |
---|---|
[리눅스] 터미널 세션 종료 후 프로그램 실행 (0) | 2025.02.11 |
[NginX] HTTPS를 적용해보자-01 (Feat.Reverse Proxy) (0) | 2025.02.11 |
[리눅스] DDoS 공격 방어 (0) | 2025.02.11 |
[Nginx] 악성봇 & 스팸봇 차단 (0) | 2025.02.11 |
리눅스 서버 세팅을 하다가 NginX를 설치하고, 리버스 프록시 설정을 해줄 필요가 생겼다.
설치하기 전에 NginX 와 리버스 프록시에 대해 간략히 알아보자.
1.NginX 란?
Nginx 는 일종의 웹서버로서 흔히들 아는 Apache 웹서버와는 다르게
비동기 이벤트 기반 구조로 동작한다.
이로 인해 서버에 부하가 발생 시 성능 예측이 쉬운 편이다.
무엇보다, 내 기준으로는 Apache Web Server 보다 환경설정이 쉬운 편이었다.
2.Reverse Proxy 란?
리버스(역방향) 프록시, 즉 프록시 서버는 일종의 중계 서버이다.
클라이언트가 외부에서 서버로 접근해올 때, 프록시 서버는 내부 서버의 정보를 알고 있으므로,
클라이언트를 올바른 자리로 이동시켜주는 역할이라고 하겠다.
예를 들어
손님(클라이언트), 식당 종업원(프록시 서버), 식당 내부 상황(내부 서버)
이런 가정일 때,
손님이 들어오면 식당 종업원이 맞아, 빈 자리로 안내한다.
즉 식당종업원이라는 프록시 서버가 판단하여 내부 서버의 적당한 자리로 이동시킨다는 것이다.( 맞나 ..? )
1.NginX 설치 (CentOS)
만약 안될 경우, epel repository가 비활성이 의심되므로 활성화를 해준다.
2. Nginx 설치 경로
2-1) 최상위 경로로 이동하여 다음 명령어를 쓴다.
2-2) nginx 로 가서 파일 리스트를 조회하면 다음과 같이 나오는 데, 눈 여겨볼 것은 conf.d 디렉토리이다.
3. conf.d 로 접근하여 default.conf 조회 (없을 경우 파일을 만들어주세요.)
4. default.conf 파일 수정(중요)
server {
listen 80 default_server; // 설정 포트
server_name m.proxy.com; // 사용자에게 유입될 도메인
location / {
proxy_pass http://m.proxy.com:3000; // 실제 사용될 도메인(내부서버)
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
}
}
최초 유입 도메인인 m.proxy.com 으로 접근되면,
실제 사용될 내부서버인 m.proxy.com:3000으로 이동시킨다.
그에 따른 프록시 헤더값이며, 필요한 것이 있을 때마다 추가해주면 되겠다.
버퍼 사이즈를 설정한 이유는 버퍼를 설정하지 않을 경우 접근시간이 초과되 502 에러가 나오는 경우가 있어
설정했다.
5. Nginx 재시작
5-1) 현재 Nginx 상태 확인
이상이 있을 경우 에러코드가 발생하고, 없을 경우 success 라고 메시지가 나올 것이다.
5-2) Nginx 재시작
별 이상이 없으면 여기서 끝나겠지만, 필자가 삽질을 하도 많이해서
그에 따른 대처방법을 작성하겠다.
* 삽질
1.site-available, site-enable 폴더 부재
구글링을 해보니 대부분 위와 같은 폴더 기준으로 설정을 하라고 하는데,
나의 경우 NginX 버전이 안 맞는 건지 없었다.
최근버전의 경우 conf.d 폴더 안에 있는 *.conf 폴더로 설정하는 거 같아
default.conf 폴더로 진행했다.
2. Bad not GateWay(502) 에러
1차적으로 default.conf 파일에 버퍼사이즈를 조정하면 된다고 언급되있지만,
나의 경우 해결되지 않았다.
위와 다른 문제가 있어 이방법으로 해결했다.
* 원인 SELinux 의 네트워크 보안 문제
리눅스 커널 모듈에서 기본적으로 httpd 에 의해
네트워크 연결 기본값이 false 로 되어 있다.
그러므로 우린 이것을 true 로 바꿔주면 된다.
위와 같은 명령어를 작성하니 쉽게 해결 !
오랜만에 NginX 를 설정해보니 과거와 다른 점이 많아
삽질을 많이 했다.
이걸 보시는 분은 삽질을 덜 하시길...
1단계는 끝났고, 마지막 2단계를 향해 가보자.
지난 포스팅에 이어 진행해보자. https://blog.naver.com/ohks486/222832867066 요즘 웹사이트들은 보안인...
blog.naver.com
[리눅스] 터미널 세션 종료 후 프로그램 실행 (0) | 2025.02.11 |
---|---|
[Nginx] HTTPS 를 적용해보자-02 (Feat.SSL, CertBot) (0) | 2025.02.11 |
[리눅스] DDoS 공격 방어 (0) | 2025.02.11 |
[Nginx] 악성봇 & 스팸봇 차단 (0) | 2025.02.11 |
[리눅스] 사용자 계정 추가하기 (0) | 2025.02.11 |
하루단위로 서버가 자꾸 내려가길래..뭔가 했더니
인위적으로 매우 빠른속도로 도메인에 접근 시도를 하더라..
이제 차단해보자.
내가 사용하는 리눅스는 CentOs 를 쓰는데 기본적으로 firewall 이 있더라.
구글링을 해보니 iptables 로 차단하는 게 적절해보여 이것으로 시도해보자.
우선 iptables 로그파일을 생성하도록 rsyslog.conf 에 RULE을 추가한다.
1. vi /etc/rsyslog.conf
RULE 추가
2. iptable 서비스 추가, 재부팅시 설정값이 사라지지않도록 systemctl 에 서비스를 등록한다.
3. 특정 포트로 접근하는 것들 차단
(80 포트로 1초에 5번이상 접근하는 것들 차단)
간단하게 긴급조치할것만 작성하였고 다음에 또 알아보도록 하자
[Nginx] HTTPS 를 적용해보자-02 (Feat.SSL, CertBot) (0) | 2025.02.11 |
---|---|
[NginX] HTTPS를 적용해보자-01 (Feat.Reverse Proxy) (0) | 2025.02.11 |
[Nginx] 악성봇 & 스팸봇 차단 (0) | 2025.02.11 |
[리눅스] 사용자 계정 추가하기 (0) | 2025.02.11 |
[Nginx] Let's Encrypt 인증서 강제 갱신 (0) | 2025.02.11 |
웹 사이트 운영하다보면.. 사람뿐만 아니라 '봇'이 접근하여 사이트의 정보를 긁어가거나
인위적으로 접근을 시도하는 것이 더러 있다.
이것들은 웹사이트를 운영하는 관리자의 입장에서 전혀 도움이 되지 않는 것들이기 때문에,
이것들을 차단해보는 방법을 알아보자.
첫번째 방법으로 robot.txt 파일로 차단하는 방법이 있지만, 대개 악성봇들은 막아주지 못하기 때문에
Nginx 에서 설정해서 차단해보자.
1. /etc/nginx/conf.d/default.conf 파일 수정
( Nginx 버전에 따라 없는 분은 /etc/nginx/sites-available/도메인.conf 파일 수정)
server {
if ($http_user_agent ~* (AhrefsBot|BLEXBot|DotBot|SemrushBot|Eyeotabot|PetalBot|MJ12bot|brands-bot|bbot|AhrefsBo|MegaIndex|UCBrowser|Mb2345Browser|MicroMessenger|LieBaoFast|Headless|netEstate|newspaper|Adsbot/3.1|WordPress/|ltx71) ) {
return 403;
}
}
해당 url 로 접근하기전에 http_user_agent 값이 다음과 같으면 403페이지로 이동시킨다.
( 악성봇은 생각보다 더 많으니 nginx의 access.log를 확인하여 추가적으로 식별하면 더 추가하여 작성한다.)
2. nginx 테스트후 재시작
[NginX] HTTPS를 적용해보자-01 (Feat.Reverse Proxy) (0) | 2025.02.11 |
---|---|
[리눅스] DDoS 공격 방어 (0) | 2025.02.11 |
[리눅스] 사용자 계정 추가하기 (0) | 2025.02.11 |
[Nginx] Let's Encrypt 인증서 강제 갱신 (0) | 2025.02.11 |
[리눅스] 가상 클라우드 서버설정 (1) | 2025.02.11 |