vlan 먼저 작성해보면,
#각 스위치포트에
vlan 10 -> name Server
vlan 20 -> name Network
vlan 30 -> name Security
#각 해당 인터페이스에 switch - pc라면
switchport mode access
switchport access vlan 10 (해당 vlan이 10번이라면)
no shutdown
#각 해당 인터페이스가 switch - (switch or router)라면
switchport mode trunk
switchport trunk encapsulation dot1q
no shutdown
#router 설정
int f0/0
no ip address
no shutdown
exit
# 서브 인터페이스 할당
int f0/0.1
encapsulation dot1q 10
ip address 192.168.110.254 255.255.255.0
no shutdown
exit
vlan 10은 110.x
vlan 20은 120.x
vlan 30은 130.x를 할당하였다.
vlan 10이 할당된 pc4에서 ping을 날려서 확인해보았다.
vlan을 라우터에서 trunk해주기 때문에 통신이 잘 되는 것을 확인할 수 있다.
pfSense에 Firewall Rule을 WAN 인터페이스에 적용하면
WAN에 있는 192.168.5.50의 firefox에서 pfSense로 http 접근이 가능해지고, ftp접근은 차단되어졌다.
R3에 직접 ACL정책을 집어넣을 수 있는데, 사실상 정책을 생성하고 집어넣으면 마지막줄에 모든 ip를 deny하는 화이트리스트 정책이 수행되기 때문에, 끝나는 줄에 permit ip any any를 집어넣어주면 R3의 ACL 정책을 만족할 수 있어보인다.
즉 PC4->Firefox3의 핑만 차단하는 acl정책을 생성 후 밑에는 모든 ip를 허용시켜두면 된다.
8.1에는 정상적으로 가지만 pc4 -> kali, 82로는 prihibited되있음. pc4 -> Firefox3
다음 ASAv에서의 정책을 살펴보면
#DVWA -> inside 허용
http server enable
http 192.168.13.1 255.255.255.255 inside
telnet 192.168.13.1 255.255.255.255 inside
룰을 적용해서 핑이 도달하는 것을 볼 수 있다.
access-list out-in extended permit icmp host 192.168.7.254 host 192.168.12.3 echo-reply
access-list out-in extended permit tcp host 192.168.6.1 host 192.168.10.2 eq ssh
마찬가지로 SSH또한 접속가능해졌다. (라우터에 SSH 허용설정을 따로 해줘야함.)
pfsense를 이용해서 remote vpn을 작성하면
Remote VPN이 정상적으로 작동한다. 192.168.2.0 대역대를 vpn으로 할당했기 때문에 192.168.2.2로 ip가 변경되었다.
venus CTF를 해킹하고 침해사고를 분석을 수행해보겠다.
https://vulnhub.com/entry/the-planets-venus,705/
The Planets: Venus
This mentions the name of this release, when it was released, who made it, a link to 'series' and a link to the homepage of the release. It's common for an author to release multiple 'scenarios', making up a 'series' of machines to attack.
www.vulnhub.com
CTF 사이트에서 venus를 다운받고 수행해본다.
netdiscover -r 192.168.16.0/24 #192.168.16.87 발견
nmap -sC -sV -p- 192.168.16.87 # 열려있는 포트와 스크립트내용 확인
8080포트에 http서비스가 open되어 있는 것을 확인하였다.
cookie값이 base64로 되있는 것을 확인하고, rot13으로 암호화되있는 것을 확인하였다.
hydra로 일치하는 id들을 확인해서 최종 magellan과 비밀번호를 획득가능하였다.
linpeas.sh로 여러가지 취약점을 확인가능 dirtypipe나 pwnkit사용하면 될듯 함.
다음 위의 조건들을 수행해볼 것이다.
간단하게 rocky 리눅스를 가상머신에서 실행하고
chmod +t test.txt 하면 sticky bit 설정완료지만, directory가 아니라서 의미는 없어보인다.
특수문자, 숫자 최소 2개 이상, 최소 10글자 패스워드 만료인 90일을 설정하려면 리눅스의 PAM 파일의 설정들을 변경해주면 된다.
대표적으로 /etc/security/pwquality.conf 또는 /etc/pam.d/common-password 파일을 편집해서 설정함.
/etc/security/pwquality.conf에서 minlen을 10으로 minclass를 2개 이상으로 설정한다.
그리고 패스워드 만료일 90일을 설정하려면 /etc/shadow에서 직접 편집하거나, /etc/login.defs에서 PASS_MAX_DAYS 값을 90으로 설정하면 된다.
wtmp: last 명령어로 수행 - 정상 로그인 기록
btmp: lastb 명령어로 수행 - 로그인 실패 기록
setuid bit 설정 후 권한 상승 확인을 하라고 했으니, c파일을 이용해서 수행해보겠다.
간단한 BoF예제를 위해서 안전하지 않은 함수인 read를 이용해서 확인해보겠다.
buff의 메모리를 덮어씌운건데 메모리 크기를 고려하지않는 read함수에 의해서 a변수의 내용까지 오염되었다. 즉 Buffer Overflow가 발생하였다.
- OSSEC
- Samba
- NFS
- Zabbix
- PMM
- Loganalyzer
- DNS 설정
- SNORT
- Wazuh
설정이 남았는데
Wazuh를 먼저 구축해보면
https://mngprog.tistory.com/115
#24(보안로그 분석)
SIEM(Security Information & Event Management):wazuh: open source SIEM: 기본 cpu와 메모리공간이 많이 듬8gb RAM, cpu 4개, 50GB 하드로 가상머신을 생성해봄. single mode: 하나의 시스템에 wazuh indexer, wazuh server, wazhu dashboa
mngprog.tistory.com
구축을 완료하였다.
NFS(Network File System)
Samba ( 리눅스 - 윈도우 파일 공유)
nmbd - UDP 137, 138 TCP 139 : 부가적인 처리
smbd - TCP 445 : 대부분 처리
LogAnalyzer : 로그내용을 시각화
https://mngprog.tistory.com/103
#17
NFS(Network File System) nfs - rpc(remote Procedure Call)nfslock - 서버의 파일을 잠글 때 필요rpcbind - RPC 요청에 의해 포트를 결정 Samba ( 리눅스 - 윈도우 파일 공유)nmbd - UDP 137, 138 TCP 139 : 부가적인 처리smbd - TCP
mngprog.tistory.com
NFS의 Client쪽에서 tmp.txt파일을 생성하였더니 NFS의 Server쪽에도 tmp.txt가 생성됨 즉 NFS가 성공적으로 구축되었다.
성공적으로 samba가 구축이 완료되었다.
client도 root권한을 주었기 때문에 자유롭게 sambashare 폴더와 sambauser폴더에서 작업할 수 있다.
LogAnalyzer
성공적으로 구축이 완료되었고, 로그들을 시각화하여 볼 수 있게 되었다.
인제 DNS서버를 구축해볼건데,
https://mngprog.tistory.com/101
#15 (시스템 보안)
HTTP(HyperText Transfer Protocol) - APMHTTPS(HTTP Secure) FTP(File Transfer Protocol)FTPS(FTP Secure)SFTP(SSH over FTP) : SSH로 접속 후 FTP 접속 Rocky의 httpd의 conf를 살펴보면 vi /etc/httpd/conf/httpd.conf error나 log의 경로, 에러의
mngprog.tistory.com
park77777.com이란 도메인이 없는 것을 확인하고, zone파일을 생성함.
구축한 DNS 서버를 DNS서버로 변경후에 park77777.com 도메인에 접속해본다.
잘 작동하는 것을 확인할 수 있다.
ps. 방화벽을 열어주고, named 서비스를 재시작해주자!
다음으로 snort를 구축해보면
apt install build-essential libpcap-dev libpcre3-dev libnet1-dev zlib1g-dev luajit hwloc libdumbnet-dev bison flex liblzma-dev openssl libssl-dev pkg-config libhwloc-dev cmake cpputest libsqlite3-dev uuid-dev libcmocka-dev libnetfilter-queue-dev libmnl-dev autotools-dev libluajit-5.1-dev libunwind-dev libfl-dev -y
apt install -y git
git clone https://github.com/snort3/libdaq.git
#libdaq를 다운하고 libdaq 경로에서 bootstap을 실행하고, configure로 설정파일을 실행
./bootstrap
./configure
#make파일 실행 및 make install
make
make install
# gperftools 설치 (성능, 메모리 관리하는 utility)
wget https://github.com/gperftools/gperftools/releases/download/gperftools-2.13/gperftools-2.13.tar.gz
# 압축 해제
tar xzf gperftools-2.13.tar.gz
# gperftools 설치
./configure
make
make instal
# snort3 설치
# 다시 gperf와 libdaq다운받은 위치에서
wget https://github.com/snort3/snort3/archive/refs/heads/master.zip
apt install unzip
unzip master.zip
#snort3-master 경로로 이동
cd snort3-master/
./configure_cmake.sh --prefix=/usr/local --enable-tcmalloc
#혹시 lib가 부족하다면 추가로 apt install로 설치함.
cd build
make
make install
# interface 무작위 모드 설정
ip link set dev enp0s3 promisc on
# ethtool 설치
apt install -y ethtool
# ethtool 설정
ethtool -K enp0s3 gro off lro off
ethtool -k enp0s3
# snort3-nic.service 파일 생성
touch /etc/systemd/system/snort3-nic.service
# service 파일 작성
vi /etc/systemd/system/snort3-nic.service
[Unit]
Description=Set Snort 3 NIC in promiscuous mode and Disable GRO, LRO on boot
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/sbin/ip link set dev enp0s3 promisc on
ExecStart=/usr/sbin/ethtool -K enp0s3 gro off lro off
TimeoutStartSec=0
RemainAfterExit=yes
[Install]
WantedBy=default.target
# 전체적인 프로그램 리로드
systemctl daemon-reload
# snort3 실행
systemctl start snort3-nic
vi /usr/local/etc/snort/snort.lua
# 24 번줄의 $HOME_NET을 사용하는 네트워크 주소로 변경
# 193 번줄에 rules = [[include (룰 경로)]] 추가
variables = default_variables,
rules = [[
include /usr/local/etc/snort/rules/local.rules
]]
# 추가적인 필터링이 필요시 snort.lua 파일 수정
#local rule 파일 생성
touch /usr/local/etc/snort/rules/local.rules
#탐지 실행 명령어
snort -c /usr/local/etc/snort/snort.lua -R /usr/local/etc/snort/rules/local.rules -i enp0s3 -A alert_fast -s 65535 -k none
snort rule 설정을 보면 kali linux에서 web으로의 DDoS 공격과 kali -> CTF 시스템에 /etc/passwd가 들어간 패킷을 보내면 감지하는 룰을 추가하라고 지시했기 때문에, 룰을 설정한다.
로그들이 막 뜨는데, filtering을 통해서 1번만 출력되게 하거나 횟수를 제한시키는게 좋아보인다.
정상 탐지를 확인할 수 있다.
인제 PMM, Zabbix, OSSEC이 남았는데,
PMM을 먼저 구축해보면,
https://mngprog.tistory.com/111
#22 (DB보안)
DB보안추구 DDL(Data Definition Language) - 데이터 정의어DML(Data Manipulation Language) - 데이터 조작어DCL(Data Control Language) - 데이터 제어어 CRUD: Create, Read, Update, Delete /etc/my.cnf.d/mariadb-server.cnf 37번 라인 원격
mngprog.tistory.com
정상적으로 client의 mysql DB의 상태가 PMM에 출력되고있다.
다음으로 NIDS중에 하나인 OSSEC을 수행해보면,
[ Server 설치 명령어 순서 ] - Ubuntu
1. apt install -y build-essential make zlib1g-dev libpcre2-dev libevent-dev libssl-dev libz-dev libsqlite3-dev
2. (curl / wget) wget -q -O - https://updates.atomicorp.com/installers/atomic | bash
3. apt update -y
4. apt install -y ossec-hids-server
5. ls /var/ossec = 설치 경로 , etc/ossec.conf = 환경설정파일 , bin = 실행파일디렉토리
6. vi /var/ossec/etc/ossec.conf -> 5번라인 yes -> no 변경 , 117번라인 밑에 <allowed-ips>192.168.16.0/24</allowed-ips> 추가
# /var/ossec/bin/manage_agents를 실행해서 agent 만들고 키를 추출해서 agent들에게 할당하면 됨.
1. apt install -y build-essential make zlib1g-dev libpcre2-dev libevent-dev libssl-dev libz-dev libsqlite3-dev
2. (curl / wget) wget -q -O - https://updates.atomicorp.com/installers/atomic | bash
3. apt update -y
4. apt install -y ossec-hids-agent
5. vi /var/ossec/etc/ossec.conf -> 5번줄 Server IP 변경(실제동작장비)
6. /var/ossec/bin/manage_agents -> i -> Server 에서 키값 복사해서 붙여넣기
[ Server 명령어 ]
/var/ossec/bin/mange_agents , ossec-control(시작,종료,재시작,상태보기)
/var/ossec/bin/ossec-control status - 상태보기
/var/ossec/bin/manage_agents - 서버에서 에이전트 추가 -> A -> E(연결키생성)
/var/ossec/bin/ossec-control start - 서버 실행
/var/ossec/logs/alerts/alerts.log - 동작 로그 기록
client쪽에 key값을 삽입 후 ossec-control start로 실행해주면
server쪽에서 로그로 확인할 수 있다. 정상적으로 작동이 가능하고 client의 행동을 HIDS로서 감시하게 된다.
마지막으로 Zabbix를 구축해보면
dnf -y update
dnf -y upgrade
dnf install -y epel-release
dnf install -y vim
vi /etc/yum.repos.d/epel.repo
# 맨 밑에 excludepkgs=zabbix* 추가
rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rocky/9/x86_64/zabbix-release-latest-7.0.el9.noarch.rpm
dnf clean all
# 되면 그대로 적용 안되면 dnf --disablerepo=epel install ... 로 적용
dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent2
dnf install httpd php php-fpm mariadb-server -y
systemctl enable --now mariadb
# 보안 설정
mysql_secure_installation
mysql -uroot -p
# mariadb 접속 후
create database my_zabbix_db character set UTF8 collate utf8_bin;
create user 'zabbix_user'@'localhost' identified by '1234';
grant all privileges on my_zabbix_db.* to 'zabbix_user'@'localhost' with grant option;
flush privileges;
sudo zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix_user -p'1234' my_zabbix_db
sudo vi /etc/zabbix/zabbix_server.conf
#107번 db이름 database 이름으로 변경
#123번 유저이름으로 변경
#132번 db password 적용되있으면 적용
sudo vi /etc/zabbix/zabbix_agent2.conf
#82번,135번,146번
firewall-cmd --permanent --add-service=zabbix-server
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload
systemctl restart zabbix-server zabbix-agent2 httpd php-fpm
systemctl enable zabbix-server zabbix-agent2 httpd php-fpm
zabbix 서버쪽은 구축을 완료하였고 client 쪽을 구축해보겠다.
apt upgrade ,apt update
자빅스 저장소 다운
sudo wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-1+ubuntu24.04_all.deb
dpkg -i zabbix하고 탭눌러보면 대충 나옴
apt update
sudo apt install -y zabbix-agent2
sudo vi /etc/zabbix/zabbix_agent2.conf
82번,135번,146번 서버 ip로 변경
sudo apt install -y firewalld
10050, 80, 3306번 포트
sudo firewall-cmd --permanent --add-port=10050/tcp
sudo firewall-cmd --reload
sudo systemctl start zabbix-agent2
sudo systemctl enable--now zabbix-agent2
잘 연결되는 것을 확인할 수 있다.
두번째 문제로서 간단한 DB 구축과 조회
Developers에 ID값이 고유해보이니 primary key로 주고 create하였다.
Cdev, Jdev, Pydev에 문제에서 요구한 권한들을 적용하였다.
'정보보안아카데미' 카테고리의 다른 글
#29)BeeBox (0) | 2025.09.29 |
---|---|
#28 Wargame 2 (0) | 2025.09.18 |
#27 Wargame (0) | 2025.09.17 |
#26 (0) | 2025.09.12 |
#25 (1) | 2025.09.10 |