seuper 2세대 개발을 3월 12일 완료 하였습니다. 

seuper는 selinux를 enforcing 모드로 부팅부터 패키지 작업까지 안정화를 시켜주는 어드민용 유틸리티 프로그램 입니다. [설치 바로가기] 

이전 seuper 1세대 (0.1~)은 '/etc/sudoers'를 활용하여 부팅시 enforcing으로 동작하고 dpkg등 패키지 작업을 위한 방법 해결은 bash 코딩에서 while 코드를 활용한 프로세스 상시 감시로써 seliunx의 자동전환을 꾀하는 방식 이었습니다.

하지만 '/etc/sudoers' 사용에 대한 시스템 불안 및 보안 문제 bash-while 동작 방식에 의한 시스템 cpu 점유 문제에 의한 시스템 불안 문제 등이 있었습니다. 

하지만 이번 seuper 2세대는 완전히 다른 방식으로 부팅시의 rc.d 서비스 구동 모듈을 활용함과 동시에 C언어를 활용한 INOTIFY 함수 응용 기술로써 selinux를 기본 정책 프로그램 사용시 인공지능 형태로 모드를 자동전환 하는 방식을 활용 합니다. 

즉 결론적으로 우분투도 이제 페도라 리눅스 처럼 selinux를 안정성 있게 효과적으로 사용할수 있다는 얘기 입니다.

  구동 원리

부팅시 '/etc/rc.d/seuper' 서비스 모듈 구동 > C 언어 - INOTIFY 응용 기술 프로세스 'procon' 과 seuper를 점검하는 'chkfix'실행 > xdesktop 을 policys로 구동 > 패키지 관리툴 (dpkg, apt 등이 직접 전환 방식을 사용 



사용방법


-- 터미널 텍스트 박스 (Terminal text box) --

<Drag와 복사가 가능합니다.>

// 활성화 하는 방법



user@user-test:~$ sudo seuper enable 


이 프로그램은 아직 개발단계 이기 때문에 잘못하면 시스템에 위험을 끼칠수 있습니다.


그렇기에 enable 하면 시스템에 위험을 초래 할 수 있기에 enable 허가시 그 뒤 따르는 모든 책임은 프로그램 사용자의 책임에 있음을 인정하십니까?  [Y/N]:


->  > 사용자 시스템 위험 가능성 인정 후 설치 진행


     > XDM이 'gdm' 이거나 'sddm'일 경우 설치 진행 안됨


     > seliunx가 설치 되어 있지 않을 경우 selinux 설치 자동 진행





-- 터미널 텍스트 박스 (Terminal text box) --

<Drag와 복사가 가능합니다.>

// 비활성화 하는 방법


user@user-test:~$ sudo seuper disable 



// seuepr의 상황 확인


user@user-test:~$ sudo seuper stat 



// 활성화 된 후 잠시 끄기 


user@user-test:~$ sudo seuper off


// 잠시 끄기 한 seuper 재 작동 


user@user-test:~$ sudo seuper on




도움이 되셨다면 '♡' 버튼을 꼭눌러 주시면 감사 하겠습니다.


그리고 글에 부족한 점이 있거나 틀린점이 있는 것 같다면 꼭 댓글로 알려 주시면 감사 하겠습니다.






[Name]   



seuper


[ Section ]   


Admin


[ Version - 날짜]


0.1-2( Tue, 17 Jan 2017 23:49:34 +0900 )


[ 지원 아키텍쳐 ]   


x86_64, i386, armhf, arm64


[ 지원 운영체제 ]   


Linux_debian_ubuntu : zesty, yakkety, xenial, vivid, trusty, preceis, linux mint....


[ 빌드 & 컴파일러 ]


bash


[ 라이센스 ]


GPL 3.0


[ 의존 패키지 ]


selinux, selinux-policy-ubuntu



[ 설명 ]   


This package is ubnutu patcher for selinux.
  Software will auto change setenforce currunt mode by boot & policys pkg for x-desktop.


(이 패키지는 selinux를 위한 우분투 패치입니다.


본 소프트웨어는 x-desktop 용 boot & 정책 패키지의 작동에 의해 자동으로 setenforce currunt 모드를 변경합니다.)


[ 특징 및 변경 사항 : Changes log ]   

 

* Fix developement.
  * Initial release.   


[ 개발자 ]


C O S M O S project.


site: http://cosmosproject2015.tistory.com


e-mail : cosmosproject15@gmail.com


[ 개발자의 말 ]


본 소프트웨어 seuper는 우분투를 위한 전용 patcher 입니다.


본 프로그램을 만들게 된 이유는 우분투에서 selinux의 currunt 모드를 enforcing으로 설정 후에는 x-desktop 로딩 문제와 더불어 각종 패키지 설치 문제까지 운영체제 활용이 까다로워 지는 것을 보완하기 위해서 이며


x-desktop으로 부팅시 자동으로 enforcing으로 안전하게 전환 되게 하겠끔 시스템을 재구성 합니다.


본 프로그램이 동작하는 방식은


/etc/seuper/policy 의 pkg들의 실제 프로세스 활동을 감시 구동 중인 프로세스의 PID를 분석하여 실제 프로세스 실행 경로가 맞는지를 확인 setenforce 0으로 자동 전환 구동 중인 프로세스의 활동이 종료되면 자동으로 setenforce 1으로 전환


하는 방식으로 selinux의 enforcing여부를 프로그램 스스로가 판단하여 바꿔 주는 방식 입니다.


사용자가 직접 정책 등록을 할 수 있을 뿐만이 아니라 정책 삭제도 가능 합니다.


뿐만 아니라 seuper가 enable로 동작하고 있는 상태에서 사용자의 xwindows-desktop이 lightdm이나 gdm일 경우 데스크탑 메니저를 restart 했을때에 다시 x-desktop으로 리턴을 가능하게 합니다. (리눅스민트 -mdm 이나 다른 x-desktop 서비스들은 향후 업데이트에서 정책을 기본을 추가할 계획)




[ 설치 방법 ]   


-- 터미널 텍스트 박스 (Terminal text box) --

<Drag와 복사가 가능합니다.>



root@test:~$ sudo apt-add-repository ppa:cosmosp2016/apps


root@test:~$ sudo apt-get update

root@test:~$ sudo apt install seuper




[실행]   


-- 터미널 텍스트 박스 (Terminal text box) --

<Drag와 복사가 가능합니다.>


root@test:~$ seuper







[사용 방법]


-- 터미널 텍스트 박스 (Terminal text box) --

<Drag와 복사가 가능합니다.>

root@test:~$ seuper


[ Selinux for ubuntu patcher. ]

Version : 0.1-2

Use :

  sudo seuper enable :

    seuper activation for selinux change mode for only enforcing and '/etc/sudoers' file changes for 'setenforce'.
    and if selinux pakcage not installed then auto install selinux and watching realtime policys pkg for auto enforcing changes for x-desktop.

  sudo seuper boot :
     
      seuepr will task selinux safty enforcing boot for x-desktop.

  sudo seuper disable :

    seuper inactive for selinux change mode for only permissive and '/etc/sudoers' file restore.

  sudo seuper add <pkg name> <pkg excute path> :

    pkg add to seuper policy list.

  sudo seuper remove <pkg name> :

      pkg delete from seuper policy list.

  sudo seuper status :

      Selinux status & seuper status & seuper policys print.

Homepage :http://cosmosproject2015.tistory.com




[ 소스 다운로드 ]  


없음


seuper 가이드로 바로가기


도움이 되셨다면 '♡' 버튼을 꼭눌러 주시면 감사 하겠습니다.


그리고 글에 부족한 점이 있거나 틀린점이 있는 것 같다면 꼭 댓글로 알려 주시면 감사 하겠습니다.



이전 포스팅에서 dnscrypt-proxy 설치에 대해서 알아 보았다.


이전 포스팅 가기 ( [리눅스 우분투] DNS 간 트래픽 양중 암호화와 그 방법에 관하여 (DNScrypt) )


그리고 포스팅에서 dhcp에 의한 로컬 아이피 변경시에 발생되는 dnscrypt 오류 및 자동 해제에 관해서도 적었는데 당시에는 필자도 확고한 대책을 강구 하고 있었기에


정확하게 집필하지는 못하였다.

하지만 오늘은 그것에 대하여 확고히 집필하고 또 가이드를 처음부터 할 생각이다.



// 먼저 dnscrypt를 설치 한다.

   $  sudo apt install dnscrypt-proxy

// 다음은 dns server를 재설정 한다.


     gtk 설정이나 혹은

    ' /etc/resolv.conf ' 파일을 설정한다.

    "nameserver 127.0.2.1"

    로 바꾸어 준다. 


// 네트워크 서비스를 재시작 한다.

    $  sudo service network-manager restart

// DNS leaktest를 수행해 보자.

   $  firefox http://www.dnsleaktest.com
      (firefox: 파이어폭스 브라우저)

 
       -- 로 접속하여 open DNS 설정이 제대로 되어 있는지 확인하여 보자.


 

// 만일 사용자의 인터넷 아이피 할당 방식이 'dhcp' 인 경우 ' /etc/rc.local' 을 수정하여
부팅시 발생하는 dnscrypt 트러블 슈트를 pc 스스로가 해결할수 있도록 스크립트를 작성해 놓자.


  // 자동 변동 된 dns 주소 '127.0.1.1' 을 127.0.2.1로 다시 수정 하겠금 한다.
   

sudo sed -i 's/127.0.1.1/127.0.2.1/g' /etc/resolv.conf


// dnscrypt-proxy 서비스 모듈을 다시 재시작 한다.
  

$  sudo service dnscrypt-proxy --full-restart

   

// 네트워크 모듈을 다시 재시작 한다.
  

$  sudo service network-manager --full-restart



    



리눅스에서의 netstat 명령은 그 사용 용도는 같지만 기능과 명령이 조금 다릅니다.


그냥 netstat 명령을 치면 윈도우와는 다르게 외부 프로토콜을 포함하여 내부 프로세스 교류 현황까지 전부 뜨게 됩니다.


그렇다면 간편하게 외부 교류 프로토콜만 확인하려면


netstat -t


netstat -tunp


혹은 netstat -a | less 명령으로 모든 netstat 을 천천히 내려 보실수가 있습니다.


빠져나오려면 (ctrl + z)




selinux는 미합중국 안보국 NSA의 소프트웨어부서에서 만든 차단식 보안용 오픈소스 소프트웨어 모듈이다.

https://www.nsa.gov/what-we-do/research/selinux/download/index.shtml

SE는 약자로서 Security Enhanced 로써 '보안 강화'를 의미 한다.

selinux는 tty(teletypewriter : 제어 콘솔)를 바탕으로한 pty, pts의 외부로부터의 원격 제어 콘솔을 강력히 차단하는 툴이다.
뿐만 아니라 차단률이 매우 높기 때문에 ftp, 아파치 웹서버의 기능 또한 제한 하여 서버 pc에서의 사용은 매우 드물다.

그렇기에 대부분의 서버 전문가 들은 selinux를 삭제 하거나 기능을 끄거나 혹은 permissive (차단 해제 및 감시만 작동) 로만 작동 시키는 경우가 대부분 이다.

또한 리눅스 커널을 기반으로한 대표적인 스마트폰 운영체제인 안드로이드에서도 selinux를 기반으로한 'seandroid'가 존재 한다.
하지만 그것은 모든 스마트폰이 가지고 있는 것은 아니다.

원격 접속 강제 차단 동작은 'enforcing'으로 이루어 지며

해제는 'permissive'로 동작 한다.




그리고 결론적으로 말하자면 selinux는 보통 윈도우즈에서 활용되는 백신들 처럼 악성코드를 일일이 찾는 방법을 사용하는 것이 아니며

원격 차단 이라는 원리적 혹은 원천적 보안 방어 시스템 이라고 말 할수 있을 것이다.


또 한가지 장점은 타 백신 소프트웨어들 처럼 pc에 대한 절대적 감시력을 가지는 시스템에 대한 전역 장악권 같은 것을 갖지 않는다.


즉 이 말은 소프트웨어가 타 백신 소프트웨어들 처럼 컴퓨터의 악성코드를 검출 하겠다는 핑계로 pc를 마음대로 시찰하지 않는 다는 것이다.


단순히 원격접속이 외부에서 사용자의 허가 없이 이루어 지지 않도록 아예 차단을 시켜 놓는 방식이다.


어쩌면 이러한 방식은 iptable 이나 그것을 응용하는 ufw 보다 좀 더 원천적 이라고 볼 수 있을지도 모른다.



다음 에서는 리눅스 우분투에서 selinux를 설치 하는 방법에 대해 알아 보도록 하자.

다음 페이지 ( 리눅스 우분투에 SELINUX 설치하기 )
 

+ Recent posts