시스템 이상시 복구 모드 사용법 (rescue mode)

리눅스/OS 일반|2015. 1. 27. 09:03
반응형

흔히 시스템의 전원을 갑자기 내려버리면 다음과 같은 메세지를 출력하면서 부팅이 되지 않을때가 있다.

 

Give root password for maintenance

(or type Control-D to continue) :

 

이때 root 패스워드를 입력하게 되면.. "Repair filesystem" 모드로 들어갈 수 있다.

만약 현재 상황이 전원을 갑자기 내려 파일 시스템이 깨진 상황이라면.. e2fsck 명령을 통해 파일 시스템을 체크하고 복구 할 수 있다.

 

#fdisk -l               //이 명령을 통해 올라와있는 파일시스템을 모두 체크한다.

#e2fsck -j ext3 /dev/sda1        // ext3 시스템을 점검할때에는 -j 플래그를 사용한다.

 

※ e2fsck를 사용할때 주의점 :: 파일시스템이 마운트되어 있는 상태에서 사용하면 심각한 오류를 가져올 수 있다.

 

e2fsck 종료코드

-------------------------------------------------------------------------------

0    에러없이 정상적으로 종료

1    파일시스템을 복구하였음을 의미함

2    파일시스템이 복구되어 시스템이 재부팅되어야 함을 의미함

4    작업대상이 파일시스템에 문제가 있으나 복구하지 않고 그대로 두었음을 의미함

8    실행에러

16  사용법 또는 문법에러

32  e2fsck 작업이 사용자에 의해 취소되었음을 의미함

128  공유라이브러리 에러를 의미함

-------------------------------------------------------------------------------

 

위의 상황이라면 간단하지만..  아예 부팅이 되지않는 상황이라면..리눅스 CD linux rescue 모드를 이용해야 한다.

boot : linux rescue

 

Rescue 설정상황

 - Continue         현재 시스템의 마운트정보를 찾아서 /mnt/sysimage 디렉토리로 마운트한다.

 - Read-Only       파일시스템을 마운트 할때 읽기전용모드로 마운트 한다.

 - Skip                바로 리눅스 쉘을 획득한다.

 

위의 3가지를 통해 복구모드로 들어 가려 할때 에러가 발생하면  다음으로 조치를 취할 수 있는 방법은 linux rescue nomount 모드가 있다.

boot : linux rescue nomount

 

sh-3.00# mknod /dev/sda1          //수정작업을 할 장치를 생성한다.

sh-3.00# mkdir /temp1

sh-3.00# mount /dev/sda1 /temp1

 

위의 방법으로 장치를 사용할 수 있도록 만든뒤에 마운트포인트를 생성하여 작업을 수행하면 된다.

 

출처 : http://blog.naver.com/vulpineox/40018309442

반응형

댓글()

OMP (OpenVAS CLI 명령어) 사용방법

리눅스/Security|2015. 1. 27. 09:00
반응형

- Update : 2019. 07. 23



1. scan config id 확인


scan config 는 스캐닝 스타일을 의미합니다.

아래 와 같이 리스트를 출력 시킨 후 원하는 id 값을 확인하여 둡니다. (id 값은 바뀌지 않음)


명령

[root@sysdocu ~]# omp -u admin -w [암호] -g


결과

8715c877-47a0-438d-98a3-27c7a6ab2196  Discovery

085569ce-73ed-11df-83c3-002264764cea  empty

daba56c8-73ec-11df-a475-002264764cea  Full and fast

698f691e-7489-11df-9d8c-002264764cea  Full and fast ultimate

708f25c4-7489-11df-8094-002264764cea  Full and very deep

74db13d6-7489-11df-91b9-002264764cea  Full and very deep ultimate

2d3f051c-55ba-11e3-bf43-406186ea4fc5  Host Discovery

bbca7412-a950-11e3-9109-406186ea4fc5  System Discovery



2. target id 값 도출


탐색할 서버 IP 와 포트 범위를 지정하여 target id 값을 생성합니다.


명령

[root@sysdocu ~]# omp -u admin -w [암호] --xml='

<create_target>

<name>Test Server</name>

<hosts>192.168.10.2</hosts>

<port_range>1-65535</port_range>

</create_target>'

* 기본 제공하는 OpenVAS portlist 를 사용하고 싶을 경우, 위의 명령어에서 <port_range>1-65535</port_range> 부분을 빼면 됩니다.

* 또한 포트 범위는 '21,23,80' 으로 하거나 '1-1500,32000-33000' 또는 'T:1-65535,U:1-1024' 와 같은식으로 TCP, UDP 별로 스캔 범위를 정할 수 있습니다.


결과

<create_target_response status="201" status_text="OK, resource created" id="18154082-8471-4b81-9f90-523055255732"></create_target_response>



3. task id 생성


위에서 확인한 scan config id 와 target id 를 이용하여 하나의 task id 로 만듭니다.


명령

[root@sysdocu ~]# omp -u admin -w [암호] --xml='

<create_task>

<name>Daily scan</name>

<comment>Deep scan on Server 3</comment>

<config id="74db13d6-7489-11df-91b9-002264764cea"/>

<target id="18154082-8471-4b81-9f90-523055255732"/>

</create_task>'


결과

<create_task_response status="201" status_text="OK, resource created" id="1167bd8a-ea67-46f5-8a00-4dc5ce2748c9"></create_task_response>



4. scan 시작


최종적으로 만든 task id 를 이용하여 스캐닝을 시작합니다.

명령을 실행할때 리포트 id 값이 출력되고, 나중에 이 id 값으로 결과를 확인할 수 있습니다.


명령

[root@sysdocu ~]# omp -u admin -w [암호] --xml='<start_task task_id="1167bd8a-ea67-46f5-8a00-4dc5ce2748c9"/>'


결과

<start_task_response status="202" status_text="OK, request submitted"><report_id>db2ef78b-9ebe-455b-9890-7e00e4b0d6e8</report_id></start_task_response>



5. 스캐닝 진행 상태 확인


명령

[root@sysdocu ~]# omp -u admin -w [암호] -G


결과

1167bd8a-ea67-46f5-8a00-4dc5ce2748c9  Running 30%  Daily scan    // 진행 중일 때

1167bd8a-ea67-46f5-8a00-4dc5ce2748c9  Done  Daily scan                  // 완료 되었을 때



6. 리포트 생성


출력 가능한 포맷은 어떤 것이 있는지 확인하고 PDF 로 추출하기 위해 id 값을 확인합니다. (id 값은 바뀌지 않음)


명령

[root@sysdocu ~]# omp -u admin -w [암호] --get-report-formats


결과

5057e5cc-b825-11e4-9d0e-28d24461215b Anonymous XML 910200ca-dc05-11e1-954f-406186ea4fc5 ARF 5ceff8ba-1f62-11e1-ab9f-406186ea4fc5 CPE 9087b18c-626c-11e3-8892-406186ea4fc5 CSV Hosts c1645568-627a-11e3-a660-406186ea4fc5 CSV Results 6c248850-1f62-11e1-b082-406186ea4fc5 HTML 77bd6c4a-1f62-11e1-abf0-406186ea4fc5 ITG a684c02c-b531-11e1-bdc2-406186ea4fc5 LaTeX 9ca6fe72-1f62-11e1-9e7c-406186ea4fc5 NBE c402cc3e-b531-11e1-9163-406186ea4fc5 PDF 9e5e5deb-879e-4ecc-8be6-a71cd0875cdd Topology SVG a3810a62-1f62-11e1-9219-406186ea4fc5 TXT c15ad349-bd8d-457a-880a-c7056532ee15 Verinice ISM 50c9950a-f326-11e4-800c-28d24461215b Verinice ITG a994b278-1f62-11e1-96ac-406186ea4fc5 XML


명령

[root@sysdocu ~]# omp -u admin -w [암호] --get-report db2ef78b-9ebe-455b-9890-7e00e4b0d6e8 --format c402cc3e-b531-11e1-9163-406186ea4fc5 > report.pdf


결과

report.pdf 리포트 파일 생성


pdf 로 출력이 되지 않을 경우 (0 byte) 아래 매뉴얼을 참고합니다.

   https://sysdocu.tistory.com/1332


반응형

댓글()

서버 취약점 점검 툴 (OpenVAS 20.8.0) 설치하기 - Ubuntu 20.04

리눅스/Security|2015. 1. 27. 09:00
반응형

OpenVAS 9, 10, 11 버전은 2020 기준으로 EOL 로 인해 사용이 불가능합니다.

아래는 Ubuntu 20.04 버전에 OpenVAS 20.8.0 버전 설치하는 방법을 기술하였습니다.

메모리는 4G 이상이 필요합니다.



1. 패키지 설치


# apt -y update

apt -y install build-essential cmake gnutls-bin pkg-config libgnutls28-dev libssh-dev libssl-dev redis-server libhiredis-dev libxml2-dev doxygen xsltproc libldap2-dev libgcrypt-dev libpcap-dev libgpgme-dev libradcli-dev graphviz bison libksba-dev libical-dev libpq-dev postgresql postgresql-contrib postgresql-server-dev-all libopenvas-dev heimdal-dev libpopt-dev xmltoman gcc-mingw-w64 nmap libmicrohttpd-dev npm nodejs virtualenv python3-paramiko python3-lxml python3-defusedxml python3-pip python3-psutil

# npm install -g yarn --prefix /usr/



2. 사용자 환경 설정


# echo 'export PATH="$PATH:/opt/gvm/bin:/opt/gvm/sbin:/opt/gvm/.local/bin"' | sudo tee -a /etc/profile.d/gvm.sh

# chmod 0755 /etc/profile.d/gvm.sh

# source /etc/profile.d/gvm.sh



3. GVM 라이브러리 경로 추가


# vi /etc/ld.so.conf.d/gvm.conf


# gmv-libs location

/opt/gvm/lib



4. 사용자 계정 생성


# mkdir /opt/gvm

# adduser gvm --disabled-password --home /opt/gvm/ --no-create-home --gecos ''

# usermod -aG redis gvm

# chown gvm:gvm /opt/gvm/

# su - gvm



5. 소스 디렉토리 생성


$ mkdir src

$ cd src/

$ export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH



6. GVM 라이브러리 생성


$ git clone -b gvm-libs-20.08 --single-branch https://github.com/greenbone/gvm-libs.git

$ cd gvm-libs/

$ export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH

$ mkdir build

$ cd build

$ cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm ..

$ make

$ make doc

$ make install

$ cd /opt/gvm/src/



7. OpenVAS samba 설치


$ git clone -b master --single-branch https://github.com/greenbone/openvas-smb.git

$ cd openvas-smb/

$ export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH

$ mkdir build

$ cd build/

$ cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm ..

$ make install

$ cd /opt/gvm/src/



8. OpenVAS scanner 설치


$ git clone -b openvas-20.08 --single-branch https://github.com/greenbone/openvas.git

$ cd openvas/

$ export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH

$ mkdir build

$ cd build/

$ cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm ..

$ make

$ make doc

$ make install

$ exit



9. Redis 설정


# export LC_ALL="C"

# ldconfig

# cp /etc/redis/redis.conf /etc/redis/redis.orig

# cp /opt/gvm/src/openvas/config/redis-openvas.conf /etc/redis/

# chown redis:redis /etc/redis/redis-openvas.conf

# echo "db_address = /run/redis-openvas/redis.sock" > /opt/gvm/etc/openvas/openvas.conf

# systemctl enable redis-server@openvas.service

# systemctl start redis-server@openvas.service



10. GVM 사용자 권한 설정


# vi /etc/sudoers


기존 설정 유지하고 파란색 부분만 추가 합니다.


Defaults        env_reset

Defaults        mail_badpass

Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/opt/gvm/sbin"


gvm ALL = NOPASSWD: /opt/gvm/sbin/openvas

gvm ALL = NOPASSWD: /opt/gvm/sbin/gsad



11. 취약점 룰 업데이트


# su - gvm

$ greenbone-nvt-sync



12. OpenVAS 매니저 설치


$ cd /opt/gvm/src/

$ git clone -b gvmd-20.08 --single-branch https://github.com/greenbone/gvmd.git

$ cd gvmd/

$ export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH

$ mkdir build

$ cd build/

$ cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm ..

$ make

$ make doc

$ make install

$ exit



13. PostgreSQL 설정


# sudo -u postgres bash

$ export LC_ALL="C"

$ cd    // 출처에는 해당 항목이 없는데 그냥 진행하면 아래 명령시 퍼미션 에러 출력되므로 디렉토리 이동해준다.

$ createuser -DRS gvm

$ createdb -O gvm gvmd


$ psql gvmd

gvmd=# create role dba with superuser noinherit;

gvmd=# grant dba to gvm;

gvmd=# create extension "uuid-ossp";

gvmd=# create extension "pgcrypto";

gvmd=# exit

$ exit



14. GVM 인증서 생성


$ sudo su - gvm

$ gvm-manage-certs -a



15. GVM admin 생성


$ /opt/gvm/sbin/gvmd --create-user=admin --password=admin

$ gvmd --get-users --verbose

// 출력된 admin 계정의 UUID 확인 : ad77ed01-f2ce-4bb3-a3c5-c8df70f38332

$ gvmd --modify-setting 78eceaec-3385-11ea-b237-28d24461215b --value ad77ed01-f2ce-4bb3-a3c5-c8df70f38332

// 출력되었던 admin 계정의 UUID 입력, 실행


16. Greenbone Feed 갱신


$ greenbone-feed-sync --type GVMD_DATA

$ greenbone-feed-sync --type SCAP

$ greenbone-feed-sync --type CERT



17. Greenbone Security Assistant 구축


$ cd src/

$ git clone -b gsa-20.08 --single-branch https://github.com/greenbone/gsa.git

$ cd gsa/

$ export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH

$ mkdir build

$ cd build/

$ cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm ..

$ make

$ make doc

$ make install

$ touch /opt/gvm/var/log/gvm/gsad.log


* make 진행중 npm install 중에 문제가 생기면 여러번 시도를 해보고,
'npm ERR! code EINTEGRITY' 라는 에러가 출력 될 경우
npm cache verify 실행 후 다시 make 를 시도합니다.


18. Python 으로 가상 환경 설정

$ exit
# python3 --version
# add-apt-repository ppa:deadsnakes/ppa
# apt -y update
# apt -y install python3.7 python3.7-dev

$ sudo su - gvm
$ cd /opt/gvm/src
$ export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH
$ virtualenv --python python3.7  /opt/gvm/bin/ospd-scanner/
$ source /opt/gvm/bin/ospd-scanner/bin/activate


19. 스캐너 래퍼용 ospd  클래스 다운로드 및 설치

(ospd-scanner) gvm@ubuntu:~$ git clone -b ospd-20.08 --single-branch https://github.com/greenbone/ospd.git
(ospd-scanner) gvm@ubuntu:~$ mkdir /opt/gvm/var/run/ospd/
(ospd-scanner) gvm@ubuntu:~$ cd ospd/
(ospd-scanner) gvm@ubuntu:~$ pip3 install .
(ospd-scanner) gvm@ubuntu:~$ cd /opt/gvm/src


20. 원격 제어를 위한 ospd-openvas 설치


(ospd-scanner) gvm@ubuntu:~$ git clone -b ospd-openvas-20.08 --single-branch  https://github.com/greenbone/ospd-openvas.git

(ospd-scanner) gvm@ubuntu:~$ cd ospd-openvas/

(ospd-scanner) gvm@ubuntu:~$ pip3 install .



21. systemd 설정


$ exit

$ sudo su

# vi /etc/systemd/system/gvmd.service


[Unit]

Description=Open Vulnerability Assessment System Manager Daemon

Documentation=man:gvmd(8) https://www.greenbone.net

Wants=postgresql.service ospd-openvas.service

After=postgresql.service ospd-openvas.service


[Service]

Type=forking

User=gvm

Group=gvm

PIDFile=/opt/gvm/var/run/gvmd.pid

WorkingDirectory=/opt/gvm

ExecStart=/opt/gvm/sbin/gvmd --osp-vt-update=/opt/gvm/var/run/ospd.sock

ExecReload=/bin/kill -HUP $MAINPID

KillMode=mixed

Restart=on-failure

RestartSec=2min

KillMode=process

KillSignal=SIGINT

GuessMainPID=no

PrivateTmp=true


[Install]

WantedBy=multi-user.target



# vi /etc/systemd/system/gsad.service


[Unit]

Description=Greenbone Security Assistant (gsad)

Documentation=man:gsad(8) https://www.greenbone.net

After=network.target

Wants=gvmd.service


[Service]

Type=forking

PIDFile=/opt/gvm/var/run/gsad.pid

WorkingDirectory=/opt/gvm

ExecStart=/opt/gvm/sbin/gsad --drop-privileges=gvm

Restart=on-failure

RestartSec=2min

KillMode=process

KillSignal=SIGINT

GuessMainPID=no

PrivateTmp=true


[Install]

WantedBy=multi-user.target



# vi /etc/systemd/system/ospd-openvas.service


[Unit]

Description=Job that runs the ospd-openvas daemon

Documentation=man:gvm

After=network.target redis-server@openvas.service

Wants=redis-server@openvas.service


[Service]

Environment=PATH=/opt/gvm/bin/ospd-scanner/bin:/opt/gvm/bin:/opt/gvm/sbin:/opt/gvm/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Type=forking

User=gvm

Group=gvm

WorkingDirectory=/opt/gvm

PIDFile=/opt/gvm/var/run/ospd-openvas.pid

ExecStart=/opt/gvm/bin/ospd-scanner/bin/python /opt/gvm/bin/ospd-scanner/bin/ospd-openvas --pid-file /opt/gvm/var/run/ospd-openvas.pid --unix-socket=/opt/gvm/var/run/ospd.sock --log-file /opt/gvm/var/log/gvm/ospd-scanner.log --lock-file-dir /opt/gvm/var/run/ospd/

Restart=on-failure

RestartSec=2min

KillMode=process

KillSignal=SIGINT

GuessMainPID=no

PrivateTmp=true


[Install]

WantedBy=multi-user.target 


데몬 재시작 및 부팅시 자동 활성화 설정


# systemctl daemon-reload

# systemctl enable gvmd

# systemctl enable gsad

# systemctl enable ospd-openvas

# systemctl start gvmd                          // 매니저

# systemctl start gsad                            // 웹UI

# systemctl start ospd-openvas        // 스캐너


데몬 상태 확인


# systemctl status gvmd



22. 관리 페이지 접근


브라우저로 아래 URL 을 입력합니다.

https://192.168.0.1


* 초기 로그인 계정 : admin / admin

* 로그인 후 비밀번호 변경 필수


로그인 후 우측 상단의 사람 아이콘에 마우스를 올려놓으면 출력되는 My Settings 메뉴를 선택합니다. 좌측의 노트 모양의 Edit 버튼을 눌러 'Timezone (Asia/Seoul)' 과 'Change Password' 를 변경합니다.



[참고] https://www.libellux.com/openvas/#install-openvas-20-08-from-source

[코멘트] sysdocu.tistory.com


----------------------------------------------------------------------------------------------------


위 내용을 진행하며 부족했던 부분은 추가로 작성 하였습니다.


1. CLI 사용하기


OpenVAS 신 버전에서는 구버전에서 사용하던 openvas-manager 나 omp 명령이 없습니다.

이를 대체하기 위한 명령어로는 gvm-cli 가 있으며, gvm-tools 패키지를 설치해서 사용이 가능합니다.


1) gvm-cli 설치

# python3 -m pip install gvm-tools


2) pdf 생성용 패키지 설치 

# apt -y install texlive-latex-base texlive-fonts-recommended texlive-fonts-extra texlive-latex-extra


3) 스캐닝을 위해 사용자 전환

# sudo su - gvm


4) 스캐닝


타겟 생성 (스캐닝 대상 서버 IP 와 스캐닝할 포트 범위)

$ gvm-cli --gmp-username admin --gmp-password admin socket --socketpath /opt/gvm/var/run/gvmd.sock\

 --xml "<create_target><name>test1</name>\

<hosts>192.168.10.2</hosts>\

<alive_tests>Consider Alive</alive_tests>\

<port_list id='33d0cd82-57c6-11e1-8ed1-406186ea4fc5'></port_list>\

</create_target>"


태스크 생성 (파란색 글씨는 고정 : Full and Fast scan)

$ gvm-cli --gmp-username admin --gmp-password admin socket --socketpath /opt/gvm/var/run/gvmd.sock\

 --xml "<create_task><name>test2</name>\

<target id=\"681ea656-785d-42b0-8f49-ce35f01ec6cd\"></target> \

<config id=\"daba56c8-73ec-11df-a475-002264764cea\"></config></create_task>"


스캐닝 시작 

$ gvm-cli --gmp-username admin --gmp-password admin socket --socketpath /opt/gvm/var/run/gvmd.sock\

 --xml '<start_task task_id="589082e6-0245-4553-8501-aabcc6bbd4bb"/>'


스캐닝 상태 확인 

$ gvm-cli --gmp-username admin --gmp-password admin socket --socketpath /opt/gvm/var/run/gvmd.sock\

 --xml  "<get_tasks task_id=\"589082e6-0245-4553-8501-aabcc6bbd4bb\"/>" |sed -e "s/></>\n</g" |grep -E "progress|scan_start|scan_end|severity"


리포트 저장 (파란색 글씨는 고정 : pdf 문서 코드)

$ gvm-cli --gmp-username admin --gmp-password admin socket --socketpath /opt/gvm/var/run/gvmd.sock\

 --xml "<get_reports report_id=\"8f1114a3-a37a-402c-b01c-c872864abc83\" format_id=\"c402cc3e-b531-11e1-9163-406186ea4fc5\" details='True' filter='apply_overrides=0 levels=hml rows=100 min_qod=70 first=1 sort-reverse=severity' />" | grep -oP '(?<=</report_format>)[^<]+' | base64 -d > report.pdf



2. 트러블 슈팅

스캐닝이 되지 않고 바로 종료되거나,
Error Message 가 아래와 같이 출력 된 경우 해결 방법입니다.

(에러)
Could not connect to Scanner

(해결)
unix-socket 을 확인합니다.
# systemctl status  ospd-openvas
/opt/gvm/var/run/ospd.sock

사용자를 전환 합니다.
# sudo su - gvm

아래 명령으로 출력된 OpenVAS 스캐너 ID 를 확인 합니다.
$ gvmd --get-scanners

확인했던 unix-socket 과 OpenVAS 스캐너 ID 를 갱신해 줍니다.
$ gvmd --modify-scanner=08b69003-5fc2-4037-a479-93b440211c73 --scanner-host=/opt/gvm/var/run/ospd.sock

그리고 나서 스캐닝을 재시도 합니다.



------------------------------- End-Of-Life ---------------------------------


Ubuntu 18.04, 19.04, 20.04 에서 설치 방법 (OpenVAS)


# apt -y update


# apt -y install openvas


# openvas-setup


설치 마지막에 아래와 같이 패스워드가 출력되므로 잊지않고 메모해두기 바랍니다.


User created with password '609e5e80-4be1-4ac4-8072-6185b9a75589'.


패스워드를 분실 하였을때는 아래와 같이 초기화가 가능합니다.


# openvasmd --user=admin --new-password=new_password


가동 및 중지

# openvas-start

# openvas-stop




CentOS 7.x 에서 설치 방법 (OpenVAS)


OS 종류별 설치 방법은 아래 사이트를 참고하세요.

http://www.openvas.org/



1) selinux 중지

/etc/sysconfig/selinux 수정


2) OS환경 업데이트

yum -y update


3) 필수 구성요소 설치

# yum -y install wget bzip2 texlive net-tools alien gnutls-utils


4) 리포지토리 추가

# wget -q -O - https://www.atomicorp.com/installers/atomic | sh


5) OpenVAS 9 설치

# yum -y install openvas


6) /etc/redis.conf 파일에 아래 내용 주석 해제

unixsocket /tmp/redis.sock

unixsocketperm 700


/etc/redis.conf 파일 없는경우 (yum install redis)


7) Redis 시작

# systemctl enable redis

# systemctl start redis


8) OpenVAS 설정

# openvas-setup


9) 방화벽에 tcp/9392 포트 오픈


이제 https://<IP-ADDRESS>:9392 에 접속해 로그인 후 스캐닝이 가능하다.


CLI (omp) 를 사용하려면 아래 명령을 필수로 수행해야 합니다.

# openvasmd -p 9390 -a 127.0.0.1


또한 pdf 로 출력이 되지 않을 경우 (0 byte) 아래 매뉴얼을 참고합니다.

https://sysdocu.tistory.com/1332



[추가 설정 - Timezone 변경]

https://IP:9392

관리자 계정으로 로그인 후

Extras > My Settings 들어가면

상단 제목 부분에 '연장' 아이콘이 있습니다. 그것을 클릭해서 Timezone 변경이 가능합니다.




CentOS 7.x 에서 설치 방법 (GVM)

같은 OpenVAS 9 버전임에도 설치 해야 하는 패키지, 명령어 등이 바뀌어서 새로운 설치 방법을 찾아보게 되었습니다.

아래 절차대로만 실행하면 CentOS 7 에서 새로운 OpenVAS 9 사용이 가능해질 것입니다.

OpenVAS 설치시 openvas-manager, omp 사용이 불가하고 강제적으로 GVM 이 설치되어 gvm-cli 명령을 이용해야 합니다.

그마저도 GCE (커뮤니티 에디션) 에서는 지원이 안된다는 얘기가 있습니다.


[설치]


# vi /etc/sysconfig/selinux

SELINUX=disabled


# yum -y update

# yum -y install wget

# wget -q -O - https://updates.atomicorp.com/installers/atomic | sh
wget -q -O – https://www.atomicorp.com/installers/atomic | sh 도 상관없음

# yum -y install greenbone-vulnerability-manager

# vi /etc/redis.conf

아래 옵션 두 줄 주석 해제
unixsocket /tmp/redis.sock
unixsocketperm 700

# systemctl enable redis


# systemctl restart redis

# openvas-setup
설치중 관리자 계정 등록

# echo 'OPTIONS="--listen=0.0.0.0 --port=9392"' > /etc/sysconfig/gsad

# systemctl restart gsad
netstat -nltp 로 확인시 9392 포트가 안열려 있으면 gsad 를 재가동

* 취약점 검사 결과 리포트 PDF 추출을 위한 패키지 설치
# yum -y install texlive-collection-fontsrecommended texlive-collection-latexrecommended texlive-changepage texlive-titlesec

# mkdir -p /usr/share/texlive/texmf-local/tex/latex/comment
# cd /usr/share/texlive/texmf-local/tex/latex/comment
# wget http://mirrors.ctan.org/macros/latex/contrib/comment/comment.sty
# chmod 644 comment.sty
# texhash

*gvm-tools 설치를 위한 python 3.6 설치

gvm-tools 를 설치해야 gvm-cli 를 사용할 수 있음

# yum -y install https://centos7.iuscommunity.org/ius-release.rpm
# yum -y update
# yum install -y python36u python36u-libs python36u-devel python36u-pip python36-defusedxml python36-lxml

gvm-cli 명령을 실행해서 옵셜 설명이 나오면 정상. 그 외 에러가 출력되면 맨 아랫줄 메세지를 참고하여 패키지를 추가 설치하거나 별도 해결책을 찾아봐야 합니다.


반응형

댓글()

우분투 방화벽 (ufw) 설정 (확인중)

리눅스/Network|2015. 1. 27. 08:59
반응형
기본적으로 내부에서 외부로는 모두 나가고, 외부에서 내부로는 정해진 포트만 허용을 하게 됩니다.
아래는 몇몇 포트를 등록하고 사용하기 위한 예입니다.
1~4까지 해보세요. (2번 생략 가능)

>> 아직 확인중.. 시간이 없어서 나중에..

1. 사용 포트 등록

[root@sysdocu ~]# ufw allow 20/tcp
[root@sysdocu ~]# ufw allow 21/tcp
# ufw allow 22/tcp
# ufw allow 25/tcp
# ufw allow 80/tcp
# ufw allow 110/tcp
# ufw allow 143/tcp
# ufw allow 443/tcp
# ufw allow 50001:50005/tcp


2. 룰 파일 수정 (생략 가능, 위 명령어들과 동일함)

[root@sysdocu ~]# vi /etc/ufw/user.rules

*filter

:ufw-user-input - [0:0]
:ufw-user-output - [0:0]
:ufw-user-forward - [0:0]
-A ufw-user-input -p tcp --dport 20 -j ACCEPT
-A ufw-user-input -p tcp --dport 21 -j ACCEPT
-A ufw-user-input -p tcp --dport 22 -j ACCEPT
-A ufw-user-input -p tcp --dport 25 -j ACCEPT
-A ufw-user-input -p tcp --dport 80 -j ACCEPT
-A ufw-user-input -p tcp --dport 110 -j ACCEPT
-A ufw-user-input -p tcp --dport 143 -j ACCEPT
-A ufw-user-input -p tcp --dport 443 -j ACCEPT
-A ufw-user-input -p tcp -m multiport --dports 50001:50005 -j ACCEPT
COMMIT



3. 방화벽 가동


[root@sysdocu ~]# ufw enable



4. 부팅시 자동 적용


[root@sysdocu ~]# update-rc.d -f ufw defaults

* 참고로 위 파일 하나만 수정하고 방화벽 가동했을때 iptables -nL 하면 더 많은 설정이 보입니다.
   하지만 무시해도 됩니다. ^^

----------------------------------------------------------

[방화벽 켜기]
[root@sysdocu ~]# ufw enable

[방화벽 끄기]
[root@sysdocu ~]# ufw disable

[방화벽 특정 포트/프로토콜 개방]
[root@sysdocu ~]# ufw allow (개방할 포트번호) / (프로토콜)
ex> ufw allow 3306/tcp
ex> ufw allow 3306/udp

[방화벽 특정 포트/프로토콜 차단]
[root@sysdocu ~]# ufw deny (차단할 포트) / (프로토콜)
ex> ufw deny 8080/tcp

[방화벽 규칙 제거]
[root@sysdocu ~]# ufw delete (allow/deny) (포트)/(프로토콜)
ex> ufw delete allow 3306/tcp 

[특정 ip 막기]
[root@sysdocu ~]# ufw deny from (아이피 주소)
ex> ufw deny from 192.168.0.100

[utf 상태 보기]
[root@sysdocu ~]# ufw status

----------------------------------------------------------

부팅시 iptables 방화벽 동작 여부를 설정하는 방법


[root@sysdocu ~]# update-rc.d -f ufw remove      // 부팅시 활성화 안함
[root@sysdocu ~]# update-rc.d -f ufw defaults      // 부팅시 활성화


반응형

댓글()

rkhunter 사용 방법

리눅스/Security|2015. 1. 27. 08:58
반응형

]# tar xvfz rkhunter-xxxxxxxxx

]# cd rkhunter-xxxx

]# sh installer.sh --install

Checking system for:
 Rootkit Hunter installer files: found
 A web file download command: wget found
Starting installation:
 Checking installation directory "/usr/local": it exists and is writable.
 Checking installation directories:
  Directory /usr/local/share/doc/rkhunter-1.3.8: creating: OK
  Directory /usr/local/share/man/man8: exists and is writable.
  Directory /etc: exists and is writable.
  Directory /usr/local/bin: exists and is writable.
  Directory /usr/local/lib: exists and is writable.
  Directory /var/lib: exists and is writable.
  Directory /usr/local/lib/rkhunter/scripts: creating: OK
  Directory /var/lib/rkhunter/db: creating: OK
  Directory /var/lib/rkhunter/tmp: creating: OK
  Directory /var/lib/rkhunter/db/i18n: creating: OK
 Installing check_modules.pl: OK
 Installing filehashsha.pl: OK
 Installing stat.pl: OK
 Installing readlink.sh: OK
 Installing backdoorports.dat: OK
 Installing mirrors.dat: OK
 Installing programs_bad.dat: OK
 Installing suspscan.dat: OK
 Installing rkhunter.8: OK
 Installing ACKNOWLEDGMENTS: OK
 Installing CHANGELOG: OK
 Installing FAQ: OK
 Installing LICENSE: OK
 Installing README: OK
 Installing language support files: OK
 Installing rkhunter: OK
 Installing rkhunter.conf: OK
Installation complete


]# rkhunter --update

]# rkhunter --propupd

]# rkhunter --check

 

[출처] DB분리수거 | 분리수거 (http://blog.naver.com/nkyle9361?Redirect=Log&logNo=110106892778)

반응형

댓글()

캐슬(CASTLE) - 소스추가형 웹사이트 보안강화 도구

리눅스/Security|2015. 1. 27. 08:58
반응형

이전에 배포하던 웹쉘 탐지 프로그램(Whistl)[주:물론 사용자동의는 구하지만 검색된 웹쉘로 추측되는 정보를 추후 동의 사용자동의 없이 타서버로 전송된다는것은 그다지 유쾌하지 않은 기억이였습니다.]에 대해서 안좋은 기억이 있었는데,지난 1월 20일에 인터넷침해사고대응센터(http://www.krcert.or.kt) 에서는 홈페이지 보안 강화 도구(CASTLE) 를 보급하기 시작했습니다.

많은 분들이 설치가이드나 FaQ, 등을 참고하여서 포스팅을 하고 있기때문에 많은 분들이 이런게 있다라는 것에 대해서는 보안에 관심이 있는 관련업계분들은 들어보셨으리라 생각합니다.

그래서 설치되는 부분의 소스를 분석해보고 설치후 약간의 악의적인 접근을 시도하면서 몇가지 겪은점 대해서 이야기를 해보겠습니다.

 

홈페이지 보안 강화도구(CASTLE)

 CASTLE 다운로드(ASP, PHP, JSP)
○ CASTLE 사용자 설명서 다운로드
○ CASTLE 설치 가이드 다운로드
○ CASTLE FAQ 다운로드

 

□ CASTLE의 주요기능
o 보안성 강화
- OWASP 10대 주요 취약점 해결
- 소스코드 수준의 웹 어플리케이션 보안성 강화

o 사용자 편리성 강화
- 관리기능으로 편리한 정책 설정 지원
- 운영 중인 프로그램 소스의 최소 수정으로도 적용 가능
o 높은 호환성 지원

- 다양한 웹 서버 환경과 웹 어플리케이션에서 동작할 수 있는 호환성 지원

□ 기대효과
o CASTLE 확산으로 국내 웹 어플리케이션의 보안성 향상
o 개발자들은 개발 단계에서부터 CASTLE 통합적으로 적용하여 보안성 강화
o 서버 관리자들은 편리한 사용과정을 통해 기존 웹 어플리케이션 수정용이

 

일단 제가 직접 실행해보고 느낀점은 편하기는 한데, 사용중인 사이트가 개별적인 단일파일로 이루어진 구조라면 사용이 좀 어렵지 번거롭다는 것입니다. 왜냐하면 설치 가이드를 보시면 아시겠지만, CASTLE 소스로 연결(include)를 하는 부분이 있는데, 몇개의 파일을 연결(include) 하는 는 구조일경우에는 정말 편하게 소스몇줄 추가하는 것으로 가능하여서 손쉬운 적용이 가능하지만 그렇지 않은 사이트는 어쩔수 없이 모든 소스를 수정하는 번거로운 작업을 감수해야 하기 때문입니다.

<%
' 설치시 추가되어야 하는 소스 예제
' 설치 디렉토리가 castle-asp 인 경우
Application("CASTLE_ASP_VERSION_BASE_DIR") = "castle-asp"
Server.Execute(Application("CASTLE_ASP_VERSION_BASE_DIR") & "/castle_referee.asp")
%>

차라리 소스파일들이 각기 다른 파일로 이루어져있다면 그나마 사이트내 모든 asp 파일을 찾은 다음, 최상단에 위의 코드를 추가하는 방법으로 처리할수도 있습니다. 

(테스트를 해보니 중복으로 CASTLE에 연결되어 있어도 사용상에는 문제가 없습니다. 2번 중복으로 CASTLE에 연결하는 테스트를하면서 우려했던 로그 2방찍기도 발견되지 않았습니다. 원래 되어야 하는거 아닌가요.? ;; )

- 차후 소스분석후 이부분에 대한 내용을 올리도록 하겠습니다.

간단요약

홈페이지 보안 강화도구(CASTLE)
  1. 장점
    1. 웹페이지로 이루어진 간단한 관리자 페이지 .
    2. 모드설정을 통한 사용시 발생할수 있는 문제에 대한 정책적용결과에 대한 예측 가능.
    3. Webknight 처럼 서버관리자를 통하지 않고 직접적인 설정을 통한 빠른 대처가능.
    4. 서비스의 중단없는 빠른 차단효과
    5. 단점
      1. 소스를 연결(include)를 사용하지 않을 경우, 일괄적으로 모든 웹페이지소스에 코드추가를 하여야 하는 불편함.
      2. txt 파일로의 로그 기록을 통한 통계의 어려움.
      3. 정규식을 통한 차단이기때문에 추가적인 정책설정을 위해서는 반드시 정규식에 대한 이해가 필요.
      4. GET, POST, COOKIE(쿠키) 에 대한 개별 설정 불가.
      5. 추가 개선되어야할 부분
        1. 문제발생에 대한 경고문구의 수정불가. ( 소스수정을 통해서만 가능 )
        2. 에러메시지를 표시하는 부분에서 캐슬의 설치경로 노출가능성 있음. ( 텍스트등의 문자로만 표시할수 있는 기능이필요)

       

       

      [출처] Zasfe Note (http://zasfe.com/121)


반응형

댓글()

mod_security 1.9.x 버전에서 사진 첨부 불가시

리눅스/Security|2015. 1. 27. 08:58
반응형

mod_security-message: Access denied with code 403. Error processing request body: Multipart: final boundary missing [severity "EMERGENCY"]

 

로그파일에에 위와 같은 로그가 찍혀있다면 mod_security.conf 파일에서 아래 값으로 옵션을 수정해 줍니다.

 

SecFilterScanPost Off

 

반응형

댓글()

Modsecurity 로그분석 및 고급 룰 설정

리눅스/Security|2015. 1. 27. 08:57
반응형

파일 첨부


modsecurity_seminar_26.pdf


반응형

댓글()

modsecurity 2.5.12 / 2.7.0 / 2.9.1 설치

리눅스/Security|2015. 1. 27. 08:57
반응형

[root@sysdocu]# wget http://www.modsecurity.org/download/modsecurity-apache_2.5.12.tar.gz

[root@sysdocu]# tar xvzf modsecurity-apache_2.5.12.tar.gz

[root@sysdocu]# cd modsecurity-apache_2.5.12/apache2
[root@sysdocu]# ./configure --with-apxs=/usr/local/apache/bin/apxs --with-apr=/usr/local/apache/bin/apr-1-config --with-apu=/usr/local/apache/bin/apu-1-config --with-lua
[root@sysdocu]# make
[root@sysdocu]# make install

 

1) 확인
    LoadModule security2_module    modules/mod_security2.so
 
2) 추가
    <IfModule mod_security2.c>
        Include conf/mod_security.conf
    </IfModule>

 


[에러]

apache 2.4 버전에 mod_security 2.5.12 를 설치하는중 아래와 같은 문제가 발생하였다.


[root@sysdocu]# make

/usr/local/apache/build/libtool --silent --mode=compile gcc -std=gnu99 -prefer-pic   -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -g -O2 -pthread -I/usr/local/apache/include  -I/usr/local/apache/include   -I/usr/local/apache/include  -O2 -g -Wall -DWITH_PCRE_STUDY -DMODSEC_PCRE_MATCH_LIMIT=1500 -DMODSEC_PCRE_MATCH_LIMIT_RECURSION=1500 -I/usr/local/apache/include -I/usr/local/apache/include -I. -I/usr/local/src/APM_Setup/httpd-2.4.3/srclib/apr/include -I/usr/local/src/APM_Setup/httpd-2.4.3/srclib/apr-util/include -I/usr/local/pcre/include -I/usr/include/libxml2  -c -o mod_security2.lo mod_security2.c && touch mod_security2.slo

mod_security2.c: In function 'create_tx_context':

mod_security2.c:363: error: 'conn_rec' has no member named 'remote_ip'

mod_security2.c:364: error: 'conn_rec' has no member named 'remote_addr'

mod_security2.c: In function 'register_hooks':

mod_security2.c:1136: warning: passing argument 1 of 'ap_hook_error_log' from incompatible pointer type

/usr/local/apache/include/http_core.h:888: note: expected 'void (*)(const struct ap_errorlog_info *, const char *)' but argument is of type 'void (*)(const char *, int,  int,  apr_status_t,  const struct server_rec *, const struct request_rec *, struct apr_pool_t *, const char *)'

apxs:Error: Command failed with rc=65536

.

make: *** [mod_security2.la] 오류 1



[해결]

[root@sysdocu]# vi mod_security2.c

(363, 364 라인의 뒷부분의 remote 를 client 로 변경)


    msr->remote_addr = r->connection->client_ip;

    msr->remote_port = r->connection->client_addr->port;


[root@sysdocu]# vi apache2_util.c

(305 라인의 뒷부분의 remote 를 client 로 변경)


ap_log_error(APLOG_MARK, APLOG_ERR | APLOG_NOERRNO, 0, r->server,

            "[client %s] ModSecurity: %s%s [uri \"%s\"]%s", r->connection->client_ip, str1,

            hostname, log_escape(msr->mp, r->uri), unique_id);



그리고 make 진행..



그러나 httpd syntax 체크시 오류 출력..


지원되는 버전 문제로 보여 httpd 2.4 에는 mod_security 2.7.x mod_security 2.7.0 을 설치해서 해결함


mod_security 2.7


[root@sysdocu]# wget https://sourceforge.net/projects/mod-security/files/modsecurity-apache/2.7.0/modsecurity-apache_2.7.0.tar.gz

[root@sysdocu]# tar xvzf modsecurity-apache_2.7.0.tar.gz

[root@sysdocu]# cd modsecurity-apache_2.7.0

[root@sysdocu]# ./configure --with-apxs=/usr/local/apache/bin/apxs

[root@sysdocu]# make

[root@sysdocu]# make install



mod_security 2.9.1


[root@sysdocu]#./configure --with-apxs=/usr/local/apache/bin/apxs --with-pcre=/usr/local/pcre --with-apr=/usr/local/apache/bin/apr-1-config --with-apu=/usr/local/apache/bin/apu-1-config

[root@sysdocu]# make

[root@sysdocu]# make install



./configure 에서 잘 안되면 그냥 옵션 다 빼고 ./configure 만 해도 된다.



룰셋은 별도의 포스팅 참조..


반응형

댓글()

mod_security 화이트IP 등록

리눅스/Security|2015. 1. 27. 08:56
반응형

SecRule REMOTE_ADDR "^192.168.10.2" phase:1,nolog,allow,ctl:ruleEngine=Off

반응형

댓글()

Message: Rule execution error - PCRE limits exceeded (-8): (null).

리눅스/Security|2015. 1. 27. 08:56
반응형

modsecurity.log  에 아래와 같은 오류 메세지가 뜰때

 
[증상]

Message: Rule execution error - PCRE limits exceeded (-8): (null).

 
[해결1]

mod_security 설치시 아래 옵션을 추가하여 설치를 합니다.

[root@sysdocu ~]# ./configure --enable-pcre-match-limit=90000 --enable-pcre-match-limit-recursion=90000
[root@sysdocu ~]# make && make install 

그리고 아래 명령으로 확인이 가능합니다.

[root@sysdocu ~]# php -i | egrep -i pcre 

 

[해결2]

php.ini 를 수정합니다.

[Pcre]
pcre.backtrack_limit=1000000
pcre.recursion_limit=1000000  
 

반응형

댓글()