하면 된다!!!

root 유저로 ssh 접근 제어 해야할 때

프로그래밍/기타

ssh를 이용해서 외부 접근을 하는 경우에 root 유저로 붙을 수 있게 되면 아무래도 보안상 위험하겠지요.

원격으로 해킹 시도가 상당히 발생할 수 있습니다.


이에 따라서 root 유저는 통상적으로 ssh 접근을 못하도록 하고, 일반 유저로 접근해서 su 또는 sudo를 이용해서 접근하도록 제어합니다.


$ sudo vi /etc/ssh/sshd_config

PermitRootLogin yes    << yes : 접근, no : 접근 안됨


$ sudo systemctl restart sshd  << sshd 서비스 재기동 (centos의 경우)


접속을 시도해보시면... 로그인이 안되도록 변경됩니다.



CentOS - SVN 설치시 에러

프로그래밍/기타

CentOS에 svnserve를 설치하다가...


이 사이트 참고 했음 : http://b1ix.net/290


설명이 매우 잘 되어있어서 따라하면 땡...


다만 중간 부분에 나와있는 이 부분!!!


[root@localhost checkout1]# svn checkout svn://localhost/svn_repos svn: E000013: Unable to connect to a repository at URL 'svn://localhost/svn_repos' svn: E000013: file '/home/svn/svn_repos/format' 를 열 수 없습니다: 허가 거부


이에 대한 해결책이 필요했다.

위의 에러는 selinux가 보안상 막고 있어서 발생하는 것이 맞다.


이를 해결 하기 위해서는... repository 타깃이 되는 폴더명을 뒤에 써준다.


$ chcon -R -t svnserve_content_t /home/svn/svn_repos


이렇게 해주면 된다.

selinux를 그냥 disabled 시켜 버리면 보안에 구멍이~!!!


Linux 프로세스 관리 쉘

프로그래밍/기타

###################################


1. 특정 프로세스를 찾아서 죽이기


#!/bin/bash

ps -ef | grep -v grep | grep 프로세스명 | awk '{print $2}' | xargs --no-run-if-empty kill -9 $1



###################################


2. 특정 프로세스가 살아있는지 체크해서 죽어있으면 살리는 쉘


$ vi /var/test/run.sh


#!/bin/bash

PROCESS_CNT=`ps -ef | grep 프로세스명 | grep -v grep | awk '{print $2}' | wc -l`

if [ "$PROCESS_CNT" == 0 ];

then

    echo "[`/bin/date +\%Y\%m\%d_\%H\%M\%S`] Process : Dead!!"

    실행시킬_프로세스명

else

    echo "[`/bin/date +\%Y\%m\%d_\%H\%M\%S`] Process : Alive!!"

    exit 0

fi


위와 같은 쉘을 하나 만들어두고 crontab 에 1분에 한번씩 돌게 해주면 1분에 1회씩 프로세스가 살아있는지 체크하고 죽어있으면 실행 시키도록 할 수 있다.


$ crontab -e

* * * * * /var/test/run.sh >> /var/test/proc_mon.log


$ tail -f /var/test/proc_mon.log

1분에 1회씩 로그가 쌓이는 것을 확인할 수 있습니다.



SSH 접속 세션 시간 조정

프로그래밍/기타

SSH 접속이 자주 끊겨서 고생하는 경우들이 있는데... 그에 대한 해결책을 간단히 노트해둔다.

  1. SSH 클라이언트 접속 시간 조정
    • sudo vi /etc/ssh/ssh_config
    • # otehr configs 부분에 아래 내용을 주석 해제하고 숫자값을 정해준다.
      ServerAliveInterval 100

  2.  SSHD 서버에서의 접속 시간 조정
    • sudo vi /etc/ssh/sshd_config
    • 아래와 같이 주석 해제하고 값을 지정해주시면 됩니다.
      ClientAliveInterval 600
      TCPKeepAlive yes
      ClientAliveCountMax 10
    • SSHD 서버 재기동이 필요합니다.
      $ sudo service ssh restart


Jenkins 포스트 쉘 스크립트 권한 관련 문제

프로그래밍/Java

리눅스 장비에 jenkins 를 설치하고나서 배포를 하다가 포스트 쉘 스크립트를 넣었다가 권한 문제로 에러를 여러차례 겪었는데...


jenkins는 jenkins 유저를 사용하고 있기 때문에 사용하려는 쉘에 접근하기 위해서는 권한이 필요했다.


이를 해결하기 위해서 jenkins 유저에 sudo 권한을 주고 포스트 쉘 쪽에는 sudo /path/to/abcd.sh 이렇게 처리를 해보는 것으로...


우선 sudoers에 유저와 권한을 넣어줘야 한다.


$ vi /etc/sudoers

# User_Alias ADMINS = jsmith, mikem << 요런 라인이 있는데 이 라인 아래에다가...


jenkins ALL=(ALL) NOPASSWD: ALL


이렇게 추가해준다.

NOPASSWD 라고 해주면 sudo 명령을 내리더라도 비번을 별도로 묻지 않게 됩니다.


물론 이렇게 셋팅을 하게 되면 sudo 커맨드를 이용해서 루트 권한으로 모든 커맨드를 실행할 수 있으니 문제가 있을 수 있다.

권한을 축소하려면 특정 경로나 파일을 지정해서 열어주는 것도 방법이다.


맨 뒤에 있는 ALL 을 대신해서 경로나 파일을 지정해주면 된다.


jenkins ALL=(ALL) NOPASSWD: /root/deployshell/


이런 식으로 해두게 되면 /root/deployshell/ 디렉토리 하단에 대한 권한을 지정해줄 수도 있다.


나이먹고 이런 삽질은 참 쉽지 않다. ㅠㅠ 어릴때 공부해뒀어야 하는데... 하는 생각뿐이다.


Jenkins 설치 및 설정

프로그래밍/Java

Jenkins 설치 및 설정 정보들을 모아 놓자.


애플자라님의 블로그를 참조해서 진행했다.


maven-tomcat 플러그인은 사용하지 않았습니다. war 파일을 만든 후에 톰캣 webapps 하단에 카피해 놓도록 설정하고, 톰캣에서 war 파일 자동으로 로딩 되도록 해두었습니다.


설치 환경 : Windows10 + JDK1.8 + Apache-tomcat-8.5 + Apache-maven-3.5.3 + Jenkins-2.121.1


- Apache Maven download : https://maven.apache.org/download.cgi
- Jenkins download : https://jenkins.io/download/

젠킨스 설정은 애플자라님의 블로그를 참고해서 설치하면 끝이고...

특별한 부분은
Post Step에다가 아래의 내용을 각 시스템에 맞춰서 넣는다.
Copy 결과물.war 톰캣webapps

Path 지정할때 중간에 스페이스가 있는 경우에는 " "로 패쓰 전체를 넣어줘야 에러가 나지 않는다.

project 의 pom.xml 파일 설정중... 

1. 한글 깨짐 관련, 플러그인 지정

<properties>

<java-version>1.8</java-version>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

</properties>

<plugins>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-compiler-plugin</artifactId>

<version>3.7.0</version>

<configuration>

<source>1.8</source>

<target>1.8</target>

<encoding>UTF-8</encoding>

<compilerArgument>-Xlint:all</compilerArgument>

<showWarnings>true</showWarnings>

<showDeprecation>true</showDeprecation>

</configuration>

</plugin>

<plugin>

<groupId>org.codehaus.mojo</groupId>

<artifactId>exec-maven-plugin</artifactId>

<version>1.2.1</version>

<configuration>

<mainClass>org.test.int1.Main</mainClass>

</configuration>

</plugin>


<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-war-plugin</artifactId>

<version>3.2.2</version>

<configuration>

<warSourceDirectory>src/main/webapp</warSourceDirectory>

<webXml>src/main/webapp/WEB-INF/web.xml</webXml>

</configuration>

</plugin>

</plugins>


참고로 Maven 플러그인을 알아 볼 수 있는 페이지 링크 하나

https://maven.apache.org/plugins/index.html




NginX 최적화를 위한 설정 외부 링크 공유

프로그래밍/기타

How to Configure nginx for Optimized Performance


https://www.linode.com/docs/web-servers/nginx/configure-nginx-for-optimized-performance


참고하세요~

NGINX - Module ngx_stream_geoip_module

프로그래밍/기타

NGinX 서버에 GeoIP 를 이용해서... 즉 사용자의 아이피를 체크해서 해당 아이피에 지역을 파악하고 해당 지역의 언어나 내용으로 서비스를 구성할 수 있도록 할 수 있는 모듈이 탑재되었군요.

1.11.3 (2016년 7월 26일 출시) 버전부터 지원한다고 합니다.


내용을 보면 MaxMind 데이터베이스를 선컴파일 해서 사용한다고 되어있고, 디폴트로 들어가지 않고 파라메터 설정에서 --with-stream_geoip_module 을 enabled 시켜야 한다고 합니다.


http://nginx.org/en/docs/stream/ngx_stream_geoip_module.html


원문 내용 보기


샘플설정보기


윈도우 파일 소유권 / 사용 권한 관리

프로그래밍/기타

얼떨결에 PC에 윈도우 10을 설치하고 나서...

맥북에서 카피한 파일들이 파일 권한 등이 꼬이는 경우들을 자주 겪고 있어서 알아보았습니다.


우선 윈도우상에서 간단하게 파일의 소유권과 사용권에 대한 관리를 할 방법이 없는지 검색을 하다가 다음과 같은 방법을 발견하여 공유합니다.


1. 윈도우의 명령 프롬프트 창 열기 - 관리자 권한으로 여셔야 합니다.
    명령 프롬프트 메뉴에서 우클릭 하셔야 우측에 메뉴가 뜹니다.




2. takeown 명령어를 이용하여 파일의 소유권 가져오기

명령 프롬프트에서 작업을 원하는 폴더로 이동하시구요... 이동하지 않고 풀 경로를 입력하셔도 무방합니다.

>> takeown /F "파일명 또는 적용할 경로" /R /D Y

/R : 리커시브 입니다. 해당 경로 하위의 모든 파일 이나 폴더에 함께 적용시켜줍니다.

/D Y : 적용시 적용할꺼냐고 묻는 프롬프트가 뜨게 되는데 이걸 자동으로 Y로 대답해줘서 따로 Y 를 누르지 않아도 일괄 반영해줍니다.


3. icacls 명령어를 이용하여 파일의 사용권한 가져오기

명령 프롬프트에서

>> icacls "파일명 또는 적용할 경로" /GRANT 유저명:F /T /Q

/GRANT : 권한

유저명 : 윈도우 유저명으로... Everyone 으로 하면 누구나로 지정됨

:F : 모든 권한

/T : 리커시브 입니다. 해당 경로 하위의 모든 파일 이나 폴더에 함께 적용시켜줍니다.

/Q : 성공 메시지를 화면에 표시하지 않도록 지정합니다.


이렇게 하면 끝~~~ 입니다.


파일이 권한이 없다는 둥하면서 나오는 메시지는 안뇽~


더 자세한 옵션을 알고 싶으시면... /? 옵션을 이용하시면 모든 옵션에 대해서 설명이 나옵니다.


>> takeown /?

>> icacls /?




IT 무료 전자책 (영문) 다운로드 사이트

프로그래밍

Free IT Book download web site...


http://it-ebooks.info/


접속하면 유명한 원서들이 쫘라락 나옵니다. 원하는 책을 선택하시고...




요기 하단에 보시면 eBook Download 해서 링크 걸린데서 누르시면 PDF 파일로 내려받아지더군요.



도움이 되시길...