shall script로 하는일을 java 로 대체하고자 합니다.

huemoi의 이미지

고객사 리눅스 서버에 어떤 작업을 위하여 script를 작성하여
cron에 걸어놓으려고 하다가 보안 문제에 봉착했습니다.

고객사 관리자는 root 권한을 갖고 있어 script를 볼 수있는
상황인데, 보안상 root유저도 script file을 보거나 수정 할 수
없어야 합니다.

그래서 생각한것이 이전에 shall script로 작성된 것을 모두
java로 옮기는것 인데, 가능할지 막막 합니다.

기존 oracle db shutdown 이나 기타 작업들을 모두 java로
command progrem을 작성하여 매일 규칙적으로 cron으로
실행하여야 합니다.

java로 작성된 command progrem 예제나 경험 있으신 분들의
조언을 구합니다.(자바에 잼병이라..ㅠㅠ)

아래는 웹에서 검색하다 나온 jsp 소스인데, 간단하게
ls 명령어를 실행하고 결과를 받아 출력해오는 소스네요.

<%@ page language="java"
   import= "java.io.*, 
   java.util.*" 
  contentType="text/html;charset=EUC-KR" session="false" 
%>
 
<html>
<%
 
    String command = "ls -al";  // <---- 실행할 쉘명령어
    int lineCount = 0;
    String line="";
 
    Runtime rt = Runtime.getRuntime();
    Process ps = null;
 
    try{
      ps = rt.exec(command);
 
      BufferedReader br =
            new BufferedReader(
 
                    new InputStreamReader(
 
                          new SequenceInputStream(ps.getInputStream(), ps.getErrorStream())));
 
 
 
      while((line = br.readLine()) != null){
%>
    <%=line%><br> <!-- 결과 화면에 뿌리기... -->
<%
      }
      br.close();
 
   }catch(IOException ie){
      ie.printStackTrace();
   }catch(Exception e){
      e.printStackTrace();
   }
%>
</html>

익명사용자의 이미지

> 고객사 관리자는 root 권한을 갖고 있어 script를 볼 수있는
> 상황인데, 보안상 root유저도 script file을 보거나 수정 할 수
> 없어야 합니다.

좀 이해가 안되는 상황인데, shell 스크립트에 무슨 비밀번호같은 중요한 정보가 필요한 것인가요?

간단한 쉘로 될 상황을 자바로 돌린다는게 좀... 삽으로 될 것을 불도저로 하는 것 같습니다만...
중요한 부분을 그냥 C/C++등으로 짜버리는게 쉽지 않을까요..

huemoi의 이미지

제가 프로그램적 지식이 거의 없어 조금 볼 줄 아는 java로
작성하려고 하는겁니다.^^;;

스크립트에는 비밀번호가 들어갑니다.

익명사용자의 이미지

비번은 어떤 식으로 인자로 들어가서 호출하게 되는건가요? 좀 더 자세한 내용을 올려주신다면 다른 분들이 도움주실 것 같습니다만..

$ mysecure -p blahblah

그다지 관련 없는 내용이지만 이런게 생각나네요.. 업체에서 만든 프로그램중에 황당한 일을 경험한 적이 있는데,, 루트 비번을 바꿨더니 명령이 제대로 동작 안해서, 스크립트를 살펴보니... (예전의) 루트 비번이 스크립트에 하드코딩 되어있었던...

다즐링의 이미지

해봐야 소용없습니다.

strings 커맨드로 찻아보면 나옵니다.. 저정도는..

내부에 약간 암호화 해서 저장해두면 모를까..

-------------------------------------------------------------------------------------------------------
Life ... http://iz4u.net/blog/

------------------------------------------------------------------------------------------------
Life is in 다즐링

huemoi의 이미지

보안을 요하는 타겟이 그다지 스킬이 높지 않으니
자바로 작성하여 컴파일 해놓으면 괜찮을것 같기는 합니다..

혹 간단하게 스크립트를 암호화 하거나 볼 수 없게
하는 방법은 없을까요.ㅠㅠ

물론, 상대방이 root 권한이 있다는 가정하에 말입니다.

익명사용자의 이미지

strings만을 회피하는 방법이야 여러가지 있겠지요...

mypass="HelloWorldWowHaHa....."
 
realpass=substr(mypass,0,1) . substr(mypass,3,2) . substr(mypass,10,2) ....
huemoi의 이미지

지난번에 저희 회사와 살짝 거래 하셨던 분 같은데..
그룹웨어라 하면 아실라나..^^;;

마잇의 이미지

구글에서 shell script compiler로 검색해보면 본 쉘 스크립트를 컴파일 가능한 C 소스로 바꿔주는 툴들의 소개가 보이네요.

--
마잇


--
마잇

netisinfinite의 이미지

정 java로 하는 걸 원하시면 여기 답변에 나온 것 처럼 스크립트를 통째로 자바 코드 안에 우겨넣을 수도 있습니다.
다른 스크립트 언어에 능하시면 jython이나 jruby로 작성 후 자바 바이트코드로 컴파일 할 수도 있지요.

익명사용자의 이미지

다음을 참고하세요.
원하는 내용인지는 잘 모르겠어요.
http://www.informit.com/guides/content.asp?g=java&seqNum=40&rl=1

익명사용자의 이미지

java 는 이미 거의 완벽한 Decompiler 가 있으므로 무용 지물이겠군요.
마잇님이 말씀하신것과 같이 C 언어로 변환하여 컴파일하는 것이 최상일 것 같습니다.

huemoi의 이미지

정말 너무 감사 드립니다.
이렇게들 답변을 달아주시다니.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.