ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [산대특] VNC, 방화벽, 시스템 시간, > >>, ifconfig/iptables, FQDN, wireshark, promisc,
    [산대특]클라우드기반 빅데이터 활용 정보 시스템보안과정/Linux 2024. 8. 19. 18:08

    0819

     

    외부에서 현재 호스트에 접속할 수 있는 호스트들을 지정해서 적용되게 하는 것을

    TCP Wrapper 라고 하고, 안에 /etc/hosts.allow 와 /etc/hosts.deny 파일이 있다. 

     

    시스템은 먼저 /etc/hosts.allow 파일을 보고, 나중에 /etc/hosts.deny 파일을 본다.

    이는

    => ACL(Access Control List) 과 iptables 등 에서 하는 설정과 유사하게,

    허용할 설정(롤, 엔트리)를 먼저 설정, 나중에 거부할 것을 설정 하는 것과 같은 이치이다. 

    ACL 에서는 거부 설정을 하지 않아도 default로 implicitiy(암묵적)으로 거부설정이 있다. 

     

    더보기

    실습 /etc/hosts.allow 와 /etc/hosts.deny

    [root@centos7-10-1 centos]# nano /etc/hosts.allow 

    ssh 는 192.168.100 대 인터넷 애들은 전부 들어올 수 있다. 
    rlogin 으론 쟤 한명 들어올 수 있다.

     

     

    [root@centos7-10-1 centos]# nano /etc/hosts.deny 

    이렇게 하면 쟤 못 들어오고 

    다 상관없이 못 들어오게 하려면 
    ALL : ALL 하면 된다.  == 모든 원격 : 모든 호스트 

     

    두 파일 모두 원상 복구 하고 끝 

     

    tightVNC, tigerVNC 는 모두 VNC 프로그램이다.

     

    Linux 머신은 원격으로 많은 사용자가 이용하고, 관리자가 모든 것을 처리할 수 없기에, 관리자의 권한을 위임 받은 사용자들, 특수한 인원만 원격으로 접속하여 관리자적 작업을 수행하게 된다. 

     

    가끔 원격에서 root 로 접속하는 것을 시스템적으로 막혀 있어 허용 설정을 해야할 때가 있다. 

    => /etc/securetty 파일을 없애거나 이동시키면 된다. (tty는 콘솔이다)

    더보기

    VNC 실습

    [root@centos7-10-1 centos]# yum -y install pixman pixman-devl libXfont

     

    [root@centos7-10-1 centos]# yum install tigervnc-server
    타이거 VNC 서버를 설치함

     

    [root@centos7-10-1 centos]# su - centos

    [centos@centos7-10-1 ~]$ pwd
    /home/centos

    [centos@centos7-10-1 ~]$ vncpasswd
    Password: 센토스
    Verify: 센토스
    Would you like to enter a view-only password (y/n)? n
    A view-only password is not used
    [centos@centos7-10-1 ~]$ su - root
    Password: 

    현재 로그온 할 사용자에 대한 패스워드를 만드는 중

     

    센토스 먼저 만들고 

     

    [root@centos7-10-1 ~]# vncpasswd
    Password:
    Verify:
    Would you like to enter a view-only password (y/n)? n
    A view-only password is not used

     

     

     

    [root@centos7-10-1 ~]# firewall-cmd --permanent --zone=public --add-port=5903/tcp
    success

    [root@centos7-10-1 ~]# firewall-cmd --permanent --zone=public --add-port=5901/tcp
    success

    [root@centos7-10-1 ~]# firewall-cmd --permanent --zone=public --add-port=5902/tcp
    success

    VNC 포트 열어주기

     

    [root@centos7-10-1 ~]# firewall-cmd --reload
    success

     

    [root@centos7-10-1 ~]# iptables -nL --line-numbers

    잘 되어 있다. 

    [root@centos7-10-1 ~]# firewall-cmd --reload

    success

    [root@centos7-10-1 ~]# systemctl enable firewalld
    [root@centos7-10-1 ~]# systemctl is-enabled firewalld
    enabled
    [root@centos7-10-1 ~]# systemctl start firewalld.service
    [root@centos7-10-1 ~]# netstat -nltp | grep LISTEN

    하면 X가 있어야 하는데 없었다. 

     

    [root@centos7-10-1 ~]# service vncserver restart
    Redirecting to /bin/systemctl restart vncserver.service
    Failed to restart vncserver.service: Unit not found.

    [root@centos7-10-1 ~]# nano .vnc/xstartup

    직접 만든다. 

     

    # chmod 755 .vnc/xstartup

    권한을 변경해준다. 

     

    [root@centos7-10-1 ~]# cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
    [root@centos7-10-1 ~]# cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:2.service

     

    [root@centos7-10-1 ~]# nano /etc/systemd/system/vncserver@\:1.service 

     

    [root@centos7-10-1 ~]# nano /etc/systemd/system/vncserver@\:2.service

     

    [root@centos7-10-1 ~]# systemctl daemon-reload
    [root@centos7-10-1 ~]# systemctl enable vncserver@:1.service
    [root@centos7-10-1 ~]# systemctl enable vncserver@:2.service
    Created symlink from /etc/systemd/system/multi-user.target.wants/vncserver@:2.service to /etc/systemd/system/vncserver@:2.service.

     

    다시 해보면

    [root@centos7-10-1 ~]# netstat -nltp | grep LISTEN

    tcp6       0      0 :::6001                 :::*                    LISTEN      7302/Xvnc

    tcp6       0      0 :::6002                 :::*                    LISTEN      8180/Xvnc

    잘 뜬다

     

     

     

     

    이제 우분투 가서 들어가본다.

    root@ubuntu10-1:/home/ubuntu# apt -y install tigervnc-viewer

    설치하고

     

    root@ubuntu10-1:/home/ubuntu# vncviewer 192.168.100.137:1

    해서 

    1번의 비번 centos 를 입력하면 

    VNC의 그래픽적 원격 연결이 잘 된다. 

     

    Windows 에서도 VNC 를 다운하면 거기서도 들어갈 수 있다. 

    ## 번외
    firewall-config 
    echo $DISPLAY 
    했을때 암것도 안뜨면
    export DISPLAY=:0
    환경변수 추가 후 
    firewall-config 
    다시 해본다

     

     

    .파일_명, .디렉터리_명이면 숨김 속성을 가지게 된다. 
    이를 확인하려면 ls -a ~ 해서 -a 옵션이 있어야 된다. 

     

    Socket 이란 '서버의_IP:포트' 를 의미한다. 

    => 소켓 오류의 대부분은 방화벽 문제이다. 

     

    => 방화벽은 iptables, firewall-config  와 firewall-cmd ~ 세가지 방법으로 설정할 수 있다.
      firewall-config 설정이 가장 확실하고, 급할 때(DoS, DDoS, .. 등)는 iptables가 좋다.

     

    방화벽은 서버에서 www, ftp, mail, proxy, vnc, … 서비스를 실행했을 때 외부에서 해당 서비스의 포트로 연결되게 해주는 설정

     

    ex)

      httpd라는 서버 서비스를 시작시킬 때 
    1) service httpd start       <= 약간 리거시
    2) systemctl start httpd   <= 최근
    3) /etc/init.d/http start    <= 매우 리거시
    로 시작시킬 수 있다.

     

      ** 서비스_명d 형태는 Daemon 으로서 서버에서 백그라운드로 해당 서비스의 요청을 기다리는 모듈이다. 

     

    mv A B 할 때 A와 B가 같은 디렉터리 안에 있으면 이름 변경

    서로 다른 디렉터리면 이동

     

    rename A B 는 파일_명이 아니라 확장자 를 일괄변경할 떄 사용

    더보기

    [root@centos7-10-1 ~]# touch abc.txt
    [root@centos7-10-1 ~]# ls
    abc.txt  anaconda-ks.cfg  initial-setup-ks.cfg  ROOT

     

    [root@centos7-10-1 ~]# mv abc.txt xyz.txt
    [root@centos7-10-1 ~]# ls
    anaconda-ks.cfg  initial-setup-ks.cfg  ROOT  xyz.txt

    [root@centos7-10-1 ~]# mv xyz.txt /tmp/
    [root@centos7-10-1 ~]# ls /tmp/
    ~~
    xyz.txt

    이동이 된다. 

     

    더보기

    [root@centos7-10-1 ~]# setup
    Authentication == 인증

    엔터 

    cancel > system services 가면

     

    여러가지 서비스에 대한 실행과 거부

     

    더보기

    [root@centos7-10-1 ~]# system-config-keyboard
    없으니까 설치

    [root@centos7-10-1 ~]# yum -y install system-config-*
    여기서 일부 설치가 안된 것은 따로 설치

    [root@centos7-10-1 ~]# yum -y install system-config-keyboard

    다시 
    [root@centos7-10-1 ~]# system-config-keyboard

     

     

    필요하면 설정해줄 수 있는 것. 

    혹은 아까 firewall-config 클릭해서 누르는것처럼 그런식으로 여러가지 설정을 할 수 있다. 

     

     

    Linux 의 시간 설정

    컴퓨터의 시간에는 마더보드의 배터리(CMOS(시몬스) Battery, 하드웨어 클락, 이게 없으면 하드웨어 시간이 달라진다)가 지원해주는 hardware clock과 운영체제가 지원해주는 system clock 이 있다.

     

    # date 

    KST(Korea Stardard Time)는 한국 표준시

    UTP(Universal Time Coordinated(중재/조절))는 국제 표준시

    => 중요한 이유 해커

     

    더보기

    [root@centos7-10-1 ~]# rdate -p time.bora.net
    rdate: [time.bora.net] Mon Aug 19 11:24:33 2024

    외부 타임서버가 나온다.

    [root@centos7-10-1 ~]# rdate -s time.bora.net

    외부의 타임서버와 동기화 하겠다. s == sync
    rdate == remote(원격) date

    소프트웨어 시스템시간은 얼마든지 조정할 수 있다. 

     

    [root@centos7-10-1 ~]# hwclock --show

    Mon 19 Aug 2024 11:26:32 AM KST  -0.177808 seconds

    하드웨어 시간 보는거

     

    [root@centos7-10-1 ~]# hwclock --systohc

    [root@centos7-10-1 ~]# hwclock --hctosys

    [root@centos7-10-1 ~]# ## reboot

     

    이런식으로 하면 동기화가 가능하다. 

     

     

     

    어느 실행 프로그램의 위치를 알고 싶으면

    which ~ 식으로 해주면 된다. 
    => which, locate, whereis, .. 등이 있다.

     

    더보기

    # which rdate
    /usr/bin/rdate

     

    [root@centos7-10-1 ~]# nano /etc/rc.local 

    [root@centos7-10-1 ~]# date 122415052021.22
    Fri Dec 24 15:05:22 KST 2021

    시간 바꿔주고 
    부팅해본다. 

     

    부팅 하기 전 파일에 설정 했으므로 시간은 원래 시간대로 제대로 되어 있었다. 

    명령어

    0>표준 입력

    1>표준 출력

    2>표준 에러

     

    > 는 리다이렉트로 읽는데 좌측의 실행을 우측으로 넘긴다는의미이다.

    >> 는 double redirect로서 좌측의 실행을 우측에 추가한다는 의미이다. 

    vice versa 해서 (역 (逆) 도 가능하다) <, << 도 가능. 

     

    Vi, Vim 은 전통적인 편집기

    nano ~/gedit ~ 는 약간의 그래픽이 지원되는 시스템에서 사용

     

    완전 CLI 모드에선 Vi 를 쓴다. 

     

      참고로 Global DNS에 대한 설정은 
    ■ OpenDNS : 208.67.222.222나 208.67.220.220, 
    ■ KT : 168.126.63.1이나 168.126.63.2, 
    ■ SK 브로드밴드 : 221.139.13.130나 210.94.0.73
    ■ LG 유플러스 : 164.124.101.2나 203.248.252.2
    ■ Google : 8.8.8.8나 8.8.4.4
    ■ 클라우드 플레어 : 1.1.1.1나 1.0.0.1 주소를 사용하면 된다. 

     

    종속적일 때를 Proprietary 하다고 한다.

    종속성이 커지면 시장 장악력이 커져 위험하다.

     

    더보기

    필요한 폰트는 /usr/share/fonts에 넣어두고>fc-list | sort 해서 확인하고>fc-cache 하면 사용할 수 있다.

    하면 폰트들이 주루룩 나옴

     

    네트워크 관련은

    ifconfig , ip address 해서 IP 주소 등 확인할 수 있다. 

     

    CentOS/Rocky에서는 /etc/sysconfig/network-scripts/ifcfg-ens33

    Ubuntu에서는 /etc/network/interfaces에서 설정

     

    특히 인터넷 연결은 /etc/resolv.conf 파일에서 DNS 서버의 IP 주소를 확인

     

     

    하나의 호스트에 여러 NIC를 끼울 수 있는데 이를 multi-homed machine으로 부른다.

     

    FQDN(Fully Qualified Domain Name)

    단일 호스트_명을 도메인에 가입된 상태로 해주는 주소로서

    ex) centos10-1이라는 호스트_명을 <= /etc/hostname 에서 확인

    centos10-1.kahn.edu 식으로 해서 kahn.edu 도메인에 속한 호스트를 표시해주는 것을 말한다. 

    이런 설정은 /etc/hosts 파일에서 해준다. 

     

    더보기

    FQDN

    [root@centos7-10-1 centos]# hostname
    centos7-10-1
    [root@centos7-10-1 centos]# nano /etc/hosts

    이러면 IP주소를 쓰지 않아도 갈 수 있다. 
    원래 이렇게 IP주소를 쳐야 했는데 


    [root@centos7-10-1 centos]# ping 192.168.100.134
    맵핑을 해둬서 아래처럼 host 이름으로 쳐도 ping이 가게 된다.  위==아래
    [root@centos7-10-1 centos]# ping ubuntu10-1

     

    /etc/hosts 파일은 이름 풀이를 하는 DNS(Domain Name Service) 서버(호스트_명을 IP 주소로 변환)가 제일 먼저 찾는 곳

     

    DNS 서버 이름 풀이 순서

    /etc/hosts 파일을 보고 > local DNS server > global DNS server 를 찾는다.

    ==> ** /etc/hosts 파일에

    192.168.100.100(해커머신_IP) http://www.naver.com 하면 http://www.naver.com 

    은 해커_머신과 연결되게 된다 !!!!!!

    (promisc 악용)

     

    더보기

    우분투에서 
    root@ubuntu10-1:/home/ubuntu# apt -y install wireshark-qt

    슈퍼유저 = root
    일반 사용자도 캡쳐하게 하겠니? 예아스!

     

    root@ubuntu10-1:/home/ubuntu# nano /etc/hosts

    이런식으로 도메인 명을 건들여서 도메인 이름으로 해커가 바꾸면 
    일반인을 자기 쪽으로 들어오게 하는 고론…

     

    root@ubuntu10-1:/home/ubuntu# apt -y install apache2
    root@ubuntu10-1:/home/ubuntu# service apache2 start
    root@ubuntu10-1:/home/ubuntu# ufw allow 80/tcp


    ubuntu@ubuntu10-1:~$ firefox http://localhost

    하면

    하면 아파치 서버 페이지가 뜬다. (html 설정 해두지 않아 특별하게 뜨는 것은 없다)

     

    root@ubuntu10-1:/home/ubuntu# wireshark
    킨 상태로 
    ens33 더블클릭

     

    firefox 를 키면 로그가 다 보인다. 

     

    ubuntu@ubuntu10-1:~$ firefox http://www.daum.net

    이렇게 하면 아까 봤던 아파치 페이지가 보인다. 

     

    이런식으로 속일 수 있다. 

     

    root@ubuntu10-1:/home/ubuntu# cd /var/www/html/
    root@ubuntu10-1:/var/www/html# ls
    index.html
    root@ubuntu10-1:/var/www/html# echo "<h1>This is Ubuntu Home</h1>" > /var/www/html/index.html

    이렇게 html 을 만들어두면

     

    요로코롬 간단히 보인다

     ping 은 타겟머신과의 연결을 확인(check whether target machine is alive or dead)
    ping request 와 ping reply 로 대응
    ping -c 3 192.168.100.100 식으로 하면 3번만 ping
    ping -t 20 http://www.daum.net 하면 TTL(Time To Live) 해서 20개의 라우터를 통과할 때까지 타겟을 찾는다
    ping -r 192.168.100.2(GW) -c 3 http://www.naver.com 하면 신뢰할 수 있고(해킹 당하지 않은) 
    인증된 게이트웨이를 통과해서 네이버에 도달
     
     traceroute(OR tracert(Win)) 192.168.100.100 식으로 하면 경과하는 라우터의 경로를 볼 수 있음
    => ping, tracert 는 SNMP (심플 네트워크 매니지먼트 프로토콜) 프로토콜을 사용

     

    => 해킹에서는 게이트웨이를 통한 해킹이 많다. 

    내부에서 외부로 연결할 때에는 모두 게이트웨이를 통하기 때문에 

    게이트웨이만 장악하면 내부의 모든 호스트들의 외부로 오가는 정보를 볼 수 있다.

     

    (일부)빅 포털 사이트는 외부에서 ping 등에 응답을 하지 않게 설정해두기도 한다. 

    더보기

    root@ubuntu10-1:/var/www/html# apt -y install traceroute

    방화벽으로 막아서 안보이게 해놨다. 

     

    root@ubuntu10-1:/var/www/html# apt -y install net-tools

     

    root@ubuntu10-1:/var/www/html# ifconfig ens33 down
    이러면 인터넷 끊기고 

    이렇게 하면 켜진다. 

    이렇게 하면 MAC 주소와 IP주소가 보인다. 

     

    전 세계적으로 유일한 것이
    (국가번호) 지역번호)전화번호   <= 82-02-123-3456
    IP 주소                                  <= 210.46.34.25
    MAC 주소                              <= ab:cd:ef:gh:ij:k1 
    OID(Object IP)                      <= QR-code, Bar-code 등에 사용되는 코드

     

     

    ifconfig 했을 때
    IP 주소 등의 정보가 있는데 만일 Promisc(uous) 가 있으면 매우 위험한 상태

    => 네트워크 를 모니터링하기 위해서 사용, 해커가 보기 쉽다. <= 대역폭이 매우 늘어난다. 

     

    더보기

     

    BT 사상머신의 wireshark 를 켜준다. 

    로키 > 센토스

    와이어샤크 껐다가 다시 키고 
    로키에서 네이버를 키면 패킷이 모아진다.

     

    다시 BT 가서 멈추고 

    우클릭 해서 Follow TCP Stream 해서 보면

    https 로 되어 있는 것은 Secure 되어 있기 때문에 글자가 깨지게 되어 내용이 보이지 않는다. 

     

     

    BT 머신의 NIC를 promisc 모드로 해두면 

    실제 BT 머신과 관계가 없어도 주변의 Win7, Ubuntu, CentOS, Rocky 등의 머신이 

    인터넷에 들어가거나 telnet 등의 모든 정보를 볼 수 있다.

     

     

    뿌엥 힘들다

연의 취업 도전기.