Owasp ZAP 웹 취약점 점검 서버 업그레이드

mimic1995·2024년 7월 30일
0
  • Ubuntu 18.04 → Ubuntu 22.04 업그레이드

OS 설치 및 기본 세팅

설치 정보

운영체제/boot/swap/
Ubuntu 22.04 LTS400 MiB4GiB나머지 전부 할당

기본 세팅 내역


/etc/hosts 파일에 도메인 정보 및 IP 정보를 고정해두었습니다.
/etc/motd 파일에 숙지해야할 기본 정보를 기재해두었습니다.
/etc/resolv.conf 파일에 nameserver 정보 고정해두었습니다.
/etc/crontab 내역 복구하였으며, 실행 파일들도 경로에 맞게 생성해두었습니다.


패키지 업그레이드 진행하였습니다.

apt update -y && apt upgrade -y

네트워크 부팅 딜레이가 발생하지 않도록 아래 설정을 진행하였습니다.

systemctl disable systemd-networkd-wait-online.service
systemctl mask systemd-networkd-wait-online.service

호스트 명 기존 서버와 동일하게 변경하였습니다.

hostnamectl set-hostname --static 호스트명

APM 설치

Apache (2.4.29 Prefork → 2.4.52 Prefork)

apt install -y apache2
a2dismod mpm_event
a2enmod mpm_prefork
vi /etc/apache2/apache2.conf
===
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
HostnameLookups Off
AddType application/x-httpd-php .php .htm .html .inc
AddType application/x-httpd-php-source .phps
...
===
a2enmod ssl
a2enmod rewrite
a2enmod alias
a2enmod headers
a2enmod unique_id
a2ensite default-ssl.conf
systemctl enable apache2 --now

MariaDB (MySQL 5.7.29 → mariadb 10.6.16)

apt show mariadb
apt install mariadb-server mariadb-client -y
systemctl enable mariadb --now
mariadb-secure-installation
mysql> alter user 'root'@localhost identified by '패스워드’;
mysql> create database zap;
mysql> create user zap@localhost identified by '패스워드';
mysql> grant all privileges on zap.* to zap@localhost;
mysql> flush privileges;
systemctl restart mariadb

기존 DB dump 파일을 가져와서 옮길 때 복원 테스트를 통해 버전이 높아진 부분에 맞춰 구문이나 문법을 변경해줘야 합니다.


php 설치 및 설정 (7.2.24 → 7.2.34)

add-apt-repository ppa:ondrej/php
apt update -y
apt install -y php7.2 php7.2-bz2 php7.2-cgi php7.2-cli php7.2-common php7.2-curl php7.2-dev php7.2-fpm php7.2-gd
php7.2-json php7.2-ldap php7.2-mbstring php7.2-mysql php7.2-odbc php7.2-opcache php7.2-readline php7.2-snmp
php7.2-soap php7.2-tidy php7.2-xml php7.2-xmlrpc php7.2-xsl php7.2-zip libapache2-mod-php7.2
a2enmod php7.2
vi /etc/php/7.2/apache2/php.ini
===
short_open_tag = On
===
systemctl restart apache2

iptables 방화벽 설치

systemctl disable ufw --now
apt install -y iptables-persistent iptables-service

/etc/iptables/rules.v4 파일에 기존 룰셋을 복원했습니다.

systemctl enable netfilter-persistent --now

iptables 끄기

iptables 방화벽을 비활성화 할 경우 아래 명령어로 진행합니다.

/etc/init.d/netfilter-persistent stop
/etc/init.d/netfilter-persistent flush

ZAP 설치

java 설치

zap을 설치하여 사용하려면 우선 호환되는 java 버전이 필요합니다. 업그레이드 작업일 기준 zap 최신 버전은 2.14.0
입니다. (zap 공식 사이트: https://www.zaproxy.org/download/)

apt install -y openjdk-11-jdk

zap 아카이브 파일 다운로드

설치 형 파일이 아닌 아카이브 파일(Linux Installer)을 받아 웹 폴더 안에 넣어주면 됩니다. 버전 업그레이드 시에도 호환되는 java 버전이 동일한지 확인하고 설치된 아카이브 파일을 변경하면 됩니다.

wget https://github.com/zaproxy/zaproxy/releases/download/v2.14.0/ZAP_2.14.0_Linux.tar.gz
tar -zxvf ZAP_2.14.0_Linux.tar.gz
mv ZAP_2.14.0 zap /WEB_PATH/zap

실행 테스트

설치가 잘 되었는지 확인해보려면 아래 명령어로 8080 포트로 잘 실행되는지 확인하면 됩니다.

./zap.sh -daemon -host 0.0.0.0 -port 8080 -config proxy.behindnat=true -config api.addrs.addr.name=.*

레포트 파일 pdf 출력 스크립트 화

run.sh 스크립트로 검사 실행 후 레포트 pdf 생성을 위해 패키지 설치 및 폴더를 생성합니다.

apt install -y wkhtmltopdf
mkdir /var/www/.ZAP/
chown www-data.www-data /var/www/.ZAP/

vi run.sh

#!/bin/bash
# 사용할 인자 값
scan_ip=$1
scan_protocol=$2
scan_domain=$3
sdate=$4
filename=$5
#점검 실행
/web_path/zap/zap.sh -cmd -quickurl ${scan_protocol}${scan_domain} -quickout /var/www/html/report/${filename}.xml -quickprogress
#각 행 ^M 문자열 제거
sed -i -e "s/\r$//" report/${filename}.xml 
#pdf 파일 생성
wkhtmltopdf report/${filename}.html report/${filename}.pdf
#완료 파일 삭제
rm -f report/${filename}.xml

상단에 DB 정보를 넣고 스캐닝 프로세스 status 값을 DB에 기록하면서 계속 체크하면 더 안정적입니다.

만일 레포트 폴더 권한에 문제가 있을 경우 아래처럼 Is the path correct and there's write permission? 문구가 출력됩니다.

sudo -u www-data /var/www/html/zap/zap.sh -cmd -quickurl http://test.com -quickout
/var/www/html/report/test.com_20200310_144400.xml -quickprogress
Found Java version 11.0.6
Available memory: 16000 MB
Using JVM args: -Xmx4000m
Unable to create home directory: /var/www/.ZAP/
Is the path correct and there's write permission?
profile
Raiju Hantu Goryo Obake

0개의 댓글