DAY9
DAY9

리눅스 서버 설치 계획서


도메인 st.kr
> /home/st/public_html

경로 비교
st: 192.168.0.214/~st
jyb: 192.168.0.214/~jyb

진짜 ip ; 192.168.0.214
가짜 ip ; 10.0.2.102

NAT

설정 및 명령어 ; ip addr, ping, /etc/netplan50[tab] 등

웹 서비스 포트 ; 21, 22, 80
도메인 서비스 포트 ; 22, 53
메일 서비스 포트 ; 25, 110, 143, 993, 995



Bootstrap Example

미션1 st.kr (도메인)연결하기


Bootstrap Example

192.168.0.214 ftp 연결 오류

해결: www서버 네트워크 NAT설정

master@domain
cd /etc/apache2
ls
cat apache2.conf
nano apache2.conf
      #      /etc/apache2/
      #      |-- apache2.conf
      #      | `-- ports.conf
      #      |-- mods-enabled
      #      | |-- *.load
      #      | `-- *.conf
      #      |-- conf-enabled
      #      | `-- *.conf
      #           `-- sites-enabled
      #            `-- *.conf

nano /etc/apache2/sites-available/hosting.conf
cd /etc/apache2/sites-available
sudo nano hosting.conf
< VirtualHost *:80 >
  DocumentRoot /home/st/public_html
  ServerName st.kr
  ServerAdmin st@st.kr
  Errorlog /home/st/public_html/logs/error.log
  CustomLog /home/st/public_html/logs/access.log combined
< /VirtualHost >

a2ensite hosting
systemctl reload apache2

master@web
nano /etc/netplan/50-cloud-init.yaml *
network:
  version: 2
  ethernets:
    enp0s3:
          dhcp4: no
      addresses: [10.0.2.102/24]
      gateway4: 10.0.2.2
      nameservers:
           addresses: [10.0.2.101] < change



Bootstrap Example

미션2 intra.st.kr 연결하기(DAY6칼리에서 st.kr로 접속하기 확인!!!)


nslookup st.kr 해보기!!!

Bootstrap Example

해결1. dns 문제

kali는 inside에 있으므로 dhcp가 작동한다.
utm
dhcp
dns 10.0.2.101 설정
인터넷 재접속

=> nslookup st.kr 확인 안됨


Bootstrap Example

해결2 : 도메인 서버 문제

master@domain
cd /etc/bind
nano named.conf.default-zones
zone "st.kr" {
           type master;
           file "/etc/bind/st.kr.zone";
};

domain.st.kr로 되어있던 내용을 st.kr.zone로 고침

=> nslookup st.kr > 10.0.2.101 확인했으나 nslookup intra.st.kr이 안뜸


Bootstrap Example

해결3 : 웹 서버 문제

master@web
cd /etc/apache2/sites-avaiable/
ls
sudo nano hosting.conf
< VirtualHost *:80>
  DocumentRoot /home/st/public_html
  ServerName intra.st.kr
  ServerAdmin st@st.kr
  Errorlog /home/st/public_html/logs/error.log
  CustomLog /home/st/public_html/logs/access.log combined
< /VirtualHost>

systemctl restart apache2

=> intra.st.kr/index.php 연결됨!

Bootstrap Example

파이어폭스 한글 깨짐 현상

sudo apt update
sudo apt -y install fcitx-lib*
sudo apt -y install fcitx-hangul
sudo apt -y install fonts-nanum






Bootstrap Example

교재:네임서버 이해하기

apt -y install bind9 bind9utils
cd /etc/bind
nano named.conf.options
    21행
    22행
    23행
       dnssec-validation no;
       recursion yes;
       allow-query { any; };

cd /etc/bind
nano named.conf (네임서버 서비스가 시작될 때 제일 먼저 읽는 파일이므로 가장 먼저 확인)
    include "/etc/bind/named.conf.default-zones";
nano named.conf.default-zones
    zone "st.kr" { ~확인

named-checkconf (입력한 내용이 문법상 틀리지 않았는지 확인; 문법 검사)

nano st.kr.zone

named-checkzone st.kr st.kr.zone (문법검사; named-checkzone 도메인이름 설정파일이름)
    zone st.kr/IN: loaded serial 2
    OK

nslookup st.kr 안뜸
해결 -> cd /etc
nano resolv.conf
    nameserver 10.0.2.101

=> 연결

분산처리? (라운드 로빈 방식의 네임서버 구현)
cd /etc/bind
nano st.kr.zone
    www IN CNAME webserver.st.kr.
    webserver 100 IN A 125.246.95.152
          200 IN A 125.246.95.153
          300 IN A 125.246.95.154
systemctl restart named
nslookup st.kr

Bootstrap Example

웹서버 취약점 찾기

#로그 관리 및 저장
웹서버 로그
www.st.kr과 intra.st.kr의 웹페이지는 달라야 한다.

기본 경로
st.kr > /var/www/html
intra.st.kr > /home/st/public_html

nmap -v -
nikto -host 10.0.2.102
htdra -L user.txt -P passwd.txt 10.0.2.102 http-post-form"/login_chk.php.id=^USER^&pw=^PASS^;f"fail -V (공격)


cd /var/log
cd apache2
ls
tail -f other_vhosts_access.log (로그확인)


미션1 .102 서버 정보 수집하기

미션3: 10.0.2.102 서버 정보 수집하기

nmap -v -p1-65535 10.0.2.102
21,22,80 포트 확인가능

경로 설정 주의 nikto -host intra.st.kr > /home/st/public_html
nikto -host 10.0.2.102 > /var/www/html
따라서 intra.st.kr로 정보수집 해야 한다

nikto -host intra.st.kr (정보탐지)
    + Target IP: 10.0.2.102
    + Target Hostname: intra.st.kr
    + Target Port: 80
    + Start Time: 2025-01-02 00:33:20 (GMT-5)
dpkg -l apache2 (실제 서버 내용 확인)
    apache2 2.4.62-1ubuntu1 amd64 Apac>

=> 비교해보면 같음 !!


dnsenum st.kr (정보탐지2)

도메인에 따라 로그위치 달라짐
st.kr > /var/log/apache2/access.log
intra.st.kr /home/st/public_html/logs/access.log

hydra -L user.txt -P passwd.txt intra.st.kr http-post-form "/login_chk.php:id=^USER^&pw=^PASS^:fail" -V (공격)
tail -f access.log (공격로그확인)

Bootstrap Example

공격 대상 미확정 문제

해결
cd /etc/apache2/sites-available
nano hosting.conf
    servername : intra.st.kr


Bootstrap Example

미션4: 본인 이니셜 도메인으로 웹사이트 접속 가능하도록 설정해라


일반적으로 만들어지는 폴더는 웹스캔 기능으로 확인이 가능함
예 : auth.login.includes 기타 등등...
예 : jyb.kr

*심화: jyb.st.kr로 접속할 수 있도록 해라~~
cd /etc/bind
nano named.conf.default-zones
    zone "jyb.kr" {
        type master;
        file "/etc/bind/jyb.kr.zone";
};

nano st.kr.zone
    jyb IN A 10.0.2.102
systemctl restart named

cd /etc/apache2/sites-available
nano hosting.conf
       ServerName jyb.st.kr
systemctl restart apache2

cd /etc/bind
nano jyb.kr.zone (다시확인)
    @ IN NS ns.st.kr     www IN A 125.246.95.152     mail IN A 125.246.95.152     intra IN A 10.0.2.102     inmail IN A 10.0.2.103     jyb IN A 10.0.2.102     php IN A 125.246.95.152     study IN A 125.246.95.152     * IN A 125.246.95.152
systemctl restart named
nslookup jyb.kr

hosting.conf 경로대로 잘 만들어져있는지 확인하기 !!!



Bootstrap Example

미션5: ssh에 접속하면 메일서버를 통해 접속을 알리는 기능 설정


nano /etc/hostname (호스트이름 수정)
    mail2.st.kr
nano /etc/mail/local-host-names (호스트이름 수정)
    mail2.st.kr

nano /etc/mail/sendmail.conf

sudo nano /etc/mail/sendmail.cf
98행 수정: Cwlocalhost ---> Cwst.kr
269행 수정: Addr=127.0.0.1 부분 삭제(smtp부분)
270행 수정: Addr=127.0.0.1 부분 삭제(smtp부분)

nano /etc/mail/access
makemap hash /etc/mail/access < /etc/mail/access
nano /etc/dovecot/dovecot.conf


cd /home
ls
adduser st

[new-mail accounts]
st
st@mail2.st.kr

imap(143)
mail2.st.kr
st
no encryption

smtp(25)
mail2.st.kr
no encryption
st(server requires authentication check 후 다시 check 지우기)
edit - preference => 계정 수정 가능

Bootstrap Example

계정 에러

해결
nano st.kr.zone
    mail2 추가
systemctl restart named