패스워드 복잡성 설정

리눅스/Security|2018. 2. 27. 17:40
반응형

1. 패스워드 사용 기간 제한

$> vi /etc/login.defs

PASS_MAX_DAYS 90

PASS_MIN_DAYS 0

PASS_MIN_LEN   8

PASS_WARN_AGE  7


설정 이후에 생성한 계정에 한해 적용 됩니다.

아래는 수동으로 chage 명령어를 이용한 정책 변경하는 방법입니다.
chage 명령어에 ‘-m’, ‘-M’, ‘-W’옵션을 이용해서 정책을 변경 할 수 있습니다. 
– 정책 확인


# chage -l root
Last password change : Mar 24, 2016
Password expires : Apr 23, 2016
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 0


# chage -m 1 root
Last password change : Mar 24, 2016
Password expires : Apr 23, 2016
Password inactive : never
Account expires : never
Minimum number of days between password change : 1
Maximum number of days between password change : 99999
Number of days of warning before password expires : 0


# chage -M 30 root
Last password change : Mar 24, 2016
Password expires : Apr 23, 2016
Password inactive : never
Account expires : never
Minimum number of days between password change : 1
Maximum number of days between password change : 30
Number of days of warning before password expires : 0


# chage -W 7 root
Last password change : Mar 24, 2016
Password expires : Apr 23, 2016
Password inactive : never
Account expires : never
Minimum number of days between password change : 1
Maximum number of days between password change : 30
Number of days of warning before password expires : 7


2. 기타 비밀번호 설정 (복잡성)

$>vi /etc/pam.d/system-auth

password    requisite     pam_cracklib.so try_first_pass retry=3 minlen=8 ucredit=-1 dcredit=-1 ocredit=-1 lcredit=-1

 

(설명)

password    requisite     pam_cracklib.so try_first_pass retry=3 minlen=8 ucredit=-1 dcredit=-1 ocredit=-1 lcredit=-1

-->

retry=N : 패스워드 입력 실패 시 재시도횟수             

difok=N : 기존 패스워드와 비교. 기본값10 (50%)             

minlen=N :  크레디트를 더한 패스워드최소길이               

dcredit=N : 숫자에 주어지는 크레디트값. 기본 1             

udredit=N : 영어대문자에 주어지는 크레디트값               

lcredit=N : 영어 소문자에 주어지는 크레디트값              

ocredit=N : 숫자, 영어대/소문자를 제외한 기타문자

(각 항목에서 -1 값을 주면 반드시 해당하는 문자를 포함시켜야 함. 즉 dcredit=-1 이라면 패스워드에 숫자가 반드시 포함되어야 함.)



출처: http://oktopbang.tistory.com/entry/패스워드-복잡성-적용-방법 [옥탑방람보]

반응형

댓글()

iptables 멀티 포트 사용하기

리눅스/Security|2017. 11. 8. 16:52
반응형

형식은 아래와 같다.


-A FW-INPUT -p tcp -m multiport --dports 22,80 -j ACCEPT


위에서 --dport 가 아니고 --dports 로 사용 하는 것 주의.

반응형

댓글()

clamav 안티 바이러스, 악성코드 프로그램 설치 & 우분투 PC 적용

리눅스/Security|2017. 8. 11. 09:02
반응형

1. 설치


# yum install clamav clamd


* 바이러스 감염 파일이 필요한 경우 clamav-testfiles 패키지도 같이 설치해줍니다.

   파일 경로는 /usr/share/clamav-testfiles/ 입니다.


설치가 되지 않을 경우 epel-release 를 먼저 설치해줍니다.


# yum install epel-release



2. DB 업데이트


최신 DB 를 업데이트 합니다.


# freshclam


DB 다운로드 사이트에 접속이 잘 안되므로 업데이트가 되지 않을 경우 명령을 몇 번 더 재실행 해봅니다.



3. 검사


실시간으로 검사하지는 않으므로 cron 등을 이용해 주기적으로 로그를 남기도록 하는것이 좋습니다.


1) 특정 디렉토리 검사


# clamscan -r /디렉토리명


* 명령 실행 후 멈춘 것 같은 현상이 나타나는데, 실제 스캔을 시작하기까지 어느 정도의 시간이 소요됩니다.

   파일 개수나 용량이 적은 디렉토리의 경우도 동일합니다. 기다려보세요~!


2) 로그 생성


# clamscan -r /디렉토리명 -l scan.log



※ 팁


# service clamd start 이후


# clamdscan -r /디렉토리명 과 같이 구동하면 스캐닝 시간이 단축 됩니다.


항상 데몬형태로 떠있으며 엔진을 알아서 받아와서 적용하기때문에 clamscan 할때마다

엔진 버전 체크하는 시간이 줄어들어서 그런것으로 알고 있습니다.



※ 우분투 PC


우분투 PC 에 실제로 적용한 사례를 기술하였습니다. 필요하신 분은 내용을 참고하여 환경에 맞게 수정해 사용하시기 바랍니다.


(root 계정에서)


# apt -y install inotify-tools asciidoctor


# mkdir scan_result


# vi scan.sh


#!/bin/bash


find /root/scan_result/ -ctime +30 -exec rm -f {} \;

date=`date +%Y%m%d`

clamscan -r / -l /root/scan_result/${date}.log

cut_from=`cat -n /root/scan_result/${date}.log |grep "SCAN SUMMARY" |tail -n 1 |awk {'print $1'}`

cut_to=`cat -n /root/scan_result/${date}.log |tail -n 1 |awk {'print $1'}`


echo $date > /home/sysdocu/scan_result.txt

sed -n "${cut_from},${cut_to}p" /root/scan_result/${date}.log >> /home/sysdocu/scan_result.txt


# vi /etc/crontab


00 9    * * *   root    sh /root/scan.sh    # 추가 


clamav 를 매일 아침 9시에 root 권한으로 실행하도록 하였습니다.



(sysdocu 계정에서)


스캐닝이 완료되면 브라우저를 통해 결과를 띄우도록 합니다.


$ touch scan_result.txt


$ vi scan_result.sh


#!/bin/bash


while :

do


    # 파일 변화 감지

    inotifywait -qm --event modify --format '%w' scan_result.txt | asciidoctor scan_result.txt


    # 파일 생성 대기

    sleep 10


    # 결과가 있는 경우

    LINE=`cat scan_result.txt |grep "SCAN SUMMARY" |wc -l`

    if [ "$LINE" == "1" ]; then

        # chrome 으로 결과를 확인 할 경우

        sudo -u sysdocu /opt/google/chrome/chrome "scan_result.txt" &

        # gedit 로 결과를 확인 할 경우

        #sudo -u sysdocu gedit "scan_result.txt" &

    fi


    # 브라우저 뜰 때까지 내용 초기화 대기

    sleep 10


    # 내용 초기화

    cat /dev/null > scan_result.txt


    # 만약을 위해 10분 대기

    sleep 600


done


* 자칫 잘못하면 inotifywait 에서 기다리지 않고 넘어가면 작업이 불가능할 정도로 크롬 브라우저 창이 계속 생성될 수 있으므로 안전하게 sleep 600 을 꼭 주도록 합니다.


PC 부팅시 실행되도록 하고, 현재 세션에서도 실행을 한 번 해줍니다.


$ echo "bash /home/sysdocu/scan_result.sh &" >> /home/sysdocu/.profile


$ bash /home/sysdocu/scan_result.sh &


반응형

댓글()

[OpenVAS] CentOS 7 에서 pdf 리포트가 0 byte 로 생성될 경우

리눅스/Security|2016. 12. 12. 16:02
반응형

# yum -y install 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



[출처] http://miotramemoria.blogspot.jp/2014/08/centos-7-openvas-pdf-reports.html



잘 안되면 그냥 yum install texlive* textlive-* 로 전부 설치해버립니다. (경험)

반응형

댓글()

[OpenVAS] WARNING: Cannot connect to KB at '/tmp/redis.sock': Connection refused'

리눅스/Security|2016. 12. 12. 13:50
반응형

9392 포트로 접속하여 스캐닝 실행시 에러 출력이 아래와 같다면..


Install OpenVAS 7 On CentOS 7 – Run Vulnerability Assessments and Pen Tests



[root@localhost bin]# yum -y install redis


[root@localhost bin]# echo "unixsocket /tmp/redis.sock" >> /etc/redis.conf


[root@localhost bin]# sed -i 's/enforcing/disabled/g' /etc/selinux/config /etc/selinux/config


[root@localhost bin]# systemctl enable redis.service


Created symlink from /etc/systemd/system/multi-user.target.wants/redis.service to /usr/lib/systemd/system/redis.service.


[root@localhost bin]# reboot



[출처] Install OpenVAS 7 On CentOS 7 – Run Vulnerability Assessments and Pen Tests

반응형

댓글()

iptables 구동 잘 안될때 명령어로 셋팅하기

리눅스/Security|2016. 4. 11. 09:37
반응형

스크립트 만들어서 실행하면 빠르게 적용됩니다.


# vi set_iptables.sh



iptables -F

iptables -X

iptables -A INPUT -i lo -j ACCEPT

iptables -A INPUT -d 0.0.0.0/0.0.0.0 -p tcp -m tcp ! --tcp-flags SYN,RST,ACK SYN -j ACCEPT

iptables -A INPUT -d 0.0.0.0/0.0.0.0 -p udp -m udp --dport 53 -j ACCEPT

iptables -A INPUT -s 0.0.0.0/0.0.0.0 -p udp -m udp --sport 53 -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

iptables -A OUTPUT -p udp -m udp --dport 20 -j ACCEPT

iptables -A OUTPUT -p tcp -m tcp --dport 21 -j ACCEPT

iptables -A OUTPUT -p tcp -m tcp --dport 22 -j ACCEPT

iptables -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT

iptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT

iptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT

iptables -A OUTPUT -p tcp -m tcp --dport 3389 -j ACCEPT


반응형

댓글()

Encoders & Decoders

리눅스/Security|2015. 11. 10. 09:09
반응형

http://tools.web-max.ca/encode_decode.php

반응형

댓글()

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


반응형

댓글()

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)


반응형

댓글()