> ether 블라블라 : 맥주소 > inet 블라블라 : 아이피 > eno : 인터페이스 이름
/ 8.8.4.4 : 구글 2차 주소
/ 특정 포트의 프로세스 검색 # netstat -ant | grep 22
/ 서비스 포트 > 잘 알려진 포트(Well known) : 1~1023, http 80, ftp 21, ssh 22, telnet 23, smtp 25, dns 53, dhcp 67, pop3 110 > 등록된 포트(Registered) : Oracle 1521, MsSQL 1433, MySQL 3306 > 동적포트(Dynamic) : 임의로 사용, 클 -> 서버 출발하는 쪽 포트와 도착하는 쪽 포트는 같을 수 없다.
/ 프로세스 검색 # ps -ef | grep sshd
- 두번째 보이는 것은 검색하는 프로세스가 보이는 것이다. - 이것이 보이지 않게 하려면 'ps -ef | grep sshd | grep -v grep'을 하면 된다.
/ 로그인한 계정이 가지고 있는 uid, gid, groups가 뭐냐 # id
- 내가 누구냐 # who am i, whoami
/ 커널을 확인하는 명령어 1(-a옵션을 쓰면 길게 나온다.) # uname -r # uname -a
/ 커널 버전 확인2 # cat /etc/*release*
/ 커널 버전 확인3 # cat /proc/version
/ /(최상위) 하위 디렉토리들
/ proc 디렉토리 - 구동되는 임시값들이 들어감
/ etc 디렉토리
/ bin 디렉토리 - 기본적인 명령파일을 가지고 있는 디렉토리
/ boot 디렉토리 - 리눅스가 부팅할때 기본적으로 로딩하는 정보를 (boot loader)가지고 있음
/ dev 디렉토리 - dvd롬, cd롬 정보를 가지고 있다.
/ home 디렉토리 - 일반 사용자들의 홈디렉토리가 들어가는 곳
/ lib 디렉토리 - 프로그램이 구동될때 참조하는 라이브러리들이 있음
/ mnt 디렉토리 (마운트의 줄임말) - 마운트 정보들이 들어있음
/ root - 관리자 정보가 들어감
/ run - 계속 돌아가고 있을때의 로그가 쌓임
/ var - 로그가 주로 쌓임 - 배리어스의 준말 - 이슈가 있을때의 로그만 쌓임
/ sbin - 중요한 명령어들이 들어가 있는 곳이다. - system bin
/ tmp - 스티키 비트가 관련있다.
/ 패키지 설치
- 설치 시 차이점 > rpm : 로컬에 파일이 있을 경우. rpm -ivh 파일이름.rpm 이것저것 상세히 하나하나 다 설치해야 함 > yum : 인터넷에 파일이 있을 경우. 인터넷상의 장소(레포지토리)에서 설치파일을 끌어다가 설치, 레드햇, CentOS 한큐에 다 지을 수 있음, 의존성 있는 파일들까지 쫙 끌어다가 설치해줌 네트워크가 되어야 함. DNS, nslookup이 되어야 한다. yum lock : 알 수 없는 이유로 잠긴 것 could not reserve host : 네트워크나 dns에 문제가 있을때 no matching list : 인터넷 저장소에 설치하려는 패키지를 찾을 수 없을때
- httpd, nginx, tomcat > 웹서버 구축 > 데몬, 프로세스, 서비스
- httpd가 설치되어 있는지 확인 # rpm -qa httpd # rpm -qa | grep httpd
- netstat -ant | grep 80 > httpd를 설치하자 마자 이 명령어를 치면 아무것도 안나옴
- 시스템 시작 명령어 # service httpd start 가 systemctl start httpd로 바뀜(CentOS부터는 systemctl로 해야함. 어순 주의)
- 시스템 활성화 # systemctl enable httpd - 서버가 켜지거나 꺼질때 또 실행을 시켜줘야해서 활성화를 시켜줌 - 자동으로 알아서 구동이 된다.
- 명령어를 연달아 두개 실행하기 > && 를 사이에 두고 다른 명령어를 적어주면 된다. > 앞 명령어와 뒤의 명령어를 연결시켜 주는 역활이다. > '&&' 앞 명령어가 실행성공이 되어야 뒤 명령어도 실행이 된다.
> ';' 으로 연결하면 둘중에 하나가 실패해도 실행된다.
# ps -ef | grep httpd - 부모 프로세스 하위로 자식프로세스들이 생긴다.
# ls -l /proc/7854/exe - httpd의 프로세스들이 proc 디렉토리 하위에 존재하고 있다.
# ps -ef | grep httpd | grep -v grep
- 네트워크의 상태 조회 # netstat -antup | grep httpd > a : > n : > t : > u : > p :
- 127.0.0.1 : 루프백 아이피
- 외부에서 접근하게 하려면 방화벽을 열어주어야 한다.
/ 방화벽 설정
- 방화벽 확인 # systemctl status firewalld - 데몬으로 돌아가는 애들은 이름뒤에 'd'가 붙는다.
* 이름뒤에 d가 붙는 애들 -> net-snmp : snmpd / bind : named * 설치할때 이름이랑 데몬이름이 달라서 헷갈릴 수 있지만 자주 쓰이는 애들이라 걱정 ㄴㄴ하다.
- 방화벽 설정 # firewall-config (GNOME Desktop에서 창을 띄우기) - 설정 부분 : 런타임 -> 영구적 : 영구적으로 설정해야 킬때마다 켜짐. - 왼쪽의 public > 서비스탭의 http 체크 - 옵션 > Firewalld 불러오기 클릭 후 닫기 : 영구적으로 했기때문에 저장이 된다.
- 방화벽 설정된 내용 확인하기 # firewall-cmd --list-all
> 이제 외부에서도 접근할 수 있게 되었다.
/ 윈도우에서 tcping 테스트 하기 - 특정 아이피의 포트가 나에게 열려있는지 확인한다. > '다운로드 링크'에서 'tcping.exe'파일을 다운받고 'C:\Windows\System32'경로에 위치시킨다. * 계속 하겠냐고 물어보면 계속 하겠다고 클릭하기
- cmd창에서 테스트를 해본다. # tcping 아이피 포트
/ 세션정보가 끊어지는것 확인 # netstat -ant | grep 80
/ 로그확인 - 위치 및 파일 : /var/log/httpd/access_log # cd /var/log/httpd/ # cat -n access_log : 전체 내용을 확인하기 # tail -f access_log : 파일의 최신내용을 계속 업데이트 해서 보기. 끝의 10줄을 계속 업데이트 해서 보여줌
- 영구적 저장(껏다 켜도 다시 실행되게 하려면)permanent옵션을 꼭 하고 reload를 하기 - 껏다 켰을때마다 다시 키게 하려면 permanent/reload를 안해도 됨
# firewall-cmd --list-all - ports에 값이 들어간것을 확인할 수 있다.
# cat /etc/services | grep ssh - 포트와 서비스 이름을 찾기 - /etc/services이 위치와 파일이름이 시험에 자주 나온다 함
# rpm -qc httpd - 서비스의 설정파일이 설치된 위치 확인
# rpm -ql httpd - 설치하면서 생긴 디렉토리랑 파일 확인 - 이중 /var/www/html이 웹 페이지가 보여지는 파일이 위치하는 곳이다.
/ 웹페이지에 보여지는 파일을 수정 후 반영하기
/ 프로세스 동작방식 - Standalone 방식 : 혼자 늘 항상 대기, 웹 서비스 등. 늘 떠있느라 자원을 소모한다. - 슈퍼데몬(Xinetd) : 호출하면 실행, 프로세스. 늘 대기하지 않는다. 퍼포먼스 차원에서는 슈퍼데몬이 좋다. - 두개의 차이는 리마 시험에 종종 나온다.
=======================================
/ 복습 (뭐 뭐 있었나 써보기) - 서버 리부팅 : - 시스템종료 : > showdown -h now = shutdown -P 는 같다. > poweroff [옵션] 이라는 것으로 종료할 수도 있다. > systemctl halt > systemctl poweroff
/ 런레벨 - init 0 : 시스템 종료 - init 1 : 싱글모드, 복구모드(console모드) - init 2 : 멀티유저모드, NFS X - init 3 : 완전 멀티유저모드 -> cli 모드, NFS ok - init 4 : 사용x - init 5 : xWindows 지원, 완전 멀티유저모드 - init 6 : 시스템 리부팅
/ 프로세스 죽이기 # kill -l - SIGINT : 인터럽트, 실행중지 CTRL+C - SIGHUP : hangup, 대기시켰다가 재시작 - SIGQUIT : 키보드를 사용한 종료 CTRL+\ - (중요)SIGKILL : 무조건 프로세스를 강제 종료. kill -9 pid - SIGTERM : kill -15 pid. 저장한거 다 저장하고 정상적인 종료를 시킴. 킬 -9랑 -15를 많이 비교함 - SIGCONT : continue. STOP된것을 다시 실행 - SIGSTOP : 무조건 정지. 즉각 정지. 9는 종료지만 이것은 정지이다. 19 - SIGTSTP : CTRL+Z. 실행을 정지했다가 다시 실행시키기 위해서 대기시키는 신호
-라우터에서 ping 테스트 시 맨처음에 . 이 나오는 이유 > 맥 어드레스를 확인하기 때문에
- Secondary IP 주소 사용이란? > 랜카드 하나에 여러개하는것 >en #conf t #int f0/0 #ip add 192.168.100.129 255.255.255.224 #ip add 192.168.100.161 255.255.255.240 sec #ip add 192.168.100.1 255.255.255.128 sec #no sh
- 세컨더리 어드레스(secondary address) vs VLAN
- Secondary IP는 좋지 않아서 Inter-Vlan 방식을 적용할것 스위치(허브) 특성상 하나의 패킷이 들어올때 전체 포트에 신호를 발생(플러딩) - CSMA/CD (충돌감지방식) 이후 이 문제를 해결하기 위해 스위치(지능형) 에 VLAN 방식을 도입하여 브로드캐스트도메인을 나누는 역할 을 통해 멀티캐스트 및 유니캐스트가 가능하도록 설정 하는 기술로 발전 됨 포트 단위로 브로드캐스트도메인을 나누고 콜리전도메인을 나눈 결과로 플러딩 현상을 최대한 줄일 수 있으며 이런 적용 기술을 통해 충동감지방식이 더이상 필요 없게 됨
스위치 쪽에는 vlan database 를 설계하고 그에 맞춰서 라우터 쪽에 Inter-Vlan 설정과 encapsulation (암호화? - 인코딩) 를 적용하여 태깅 작업을 수행함. 이때, 태깅 기술은 IEEE802.1q 방식을 적용하며 하나의 라인에 여러개의 VLAN 을 통과 시킬때 적용해야 하는 기술임
- 이때 스위치에는 VLAN 설정을 라우터에는 Router-on-a-stick 즉 Inter-Vlan 방식을 적용
- 스위치 계정 정보 까먹었을때(패킷트레이서에서만) 콘피그에서 인터페이스 클릭 > reload 명령어 입력
ip를 맥으로 -> arp
- 검색해볼것 lan, vlan, arp, inter-vlan, 태깅기술(IEEE802.1q 등등), 패킷 트레이서의 약어와 원래 명령어 정적 라우팅, 동적 라우팅, 스위치에 트렁크 주는것 - 연습해볼것 2진수, 10진수, 8진수, 16진수 변환
- 네트워크 환경에서 컴퓨터(노드)사이에 통신을 하기 위해 각 컴퓨터에 부여된 주소(라고 생각하면 된다.) * 사실은 각 컴퓨터라기보단 랜카드에 부여된 것인데 일단은 이해를 쉽게 하기위해 컴퓨터라고 생각하자. 또는 핸드폰.. - 이때 아이피 주소는 네트워크 ID와 호스트 ID로 나뉘게 되는데 예를 들면 이런것이다. ex) 내 아이피가 192.168.10.100라고 했을때 [192.168.10]까지는 네트워크 주소라고 말하고 의미는 '집주소'같은 것이다. 그리고 아이피의 맨 끝인 [.100]부분은 호스트 주소라고 말하고 의미는 '상세주소'같은 것이다.
IP
네트워크 ID
호스트 ID
192.168.10.100
192.168.10
.100
주소
기본 집 주소
상세 주소
서울시 중랑구 면목동 00-00번지 101동 201호
서울시 중랑구 면목동 00-00번지 101동
201호
/ IP의 구조
- ip는 32비트로 나누어진다.
1
1
0
0
0
0
0
0
1
0
1
0
1
0
0
0
0
0
0
0
1
0
1
0
0
1
1
0
0
1
0
0
- 근데 이렇게 화면에 표시하면 보기가 너무 불편하니 8비트씩 잘라서 4부분으로 나누고 점찍고 10진수로 표시한다.
1
1
0
0
0
0
0
0
1
0
1
0
1
0
0
0
0
0
0
0
1
0
1
0
0
1
1
0
0
1
0
0
192
168
10
100
첫번째 옥탯
두번째 옥탯
세번째 옥탯
네번째 옥텟
- 나눠진 8비트를 부르는 말은 '옥텟'이다. - ip는 4개의 옥텟 구조로 되어있다고 할 수 있다.
/ IP 클래스
- 옛날 사람들이 ip를 뭔가 효율적이고 적정하게 배분하기 위해 첫번째 옥탯의 규칙으로 클래스를 나누었다. - 첫번째 옥텟의 '앞선 비트'에 따라 A, B, C, D, E 클래스로 나누어진다. (이것을 대역에 따라 나눈다고 한다.) - 시작 ip주소는 각 옥텟의 비트가 제일 작을때를 뜻하고, 각 옥텟의 수가 점점 올라가서 최대값이 되면 끝 주소가 된다. - 클래스 A는 대규모,클래스 B는 중규모,클래스 C는 소규모 네트워크 환경에 쓰인다. - 클래스 D는 멀티캐스트용, E는 연구/개발용 혹은 미래에 사용하기 위해 남겨놓은 것으로 일반적으로 사용되지 않는다. - 클래스 A에서 첫 옥텟이 00000000(0)인것과 01111111(127)인 ip는 예약이 되어 있어서 사용할 수 없다.
* A, B, C, D나눈게 이해가 잘 안되면 돈으로 잠시 생각해보자. A = 1,000원 ~ 1,999원 B = 2,000원 ~ 2,999원 . . . 뭐 대충 이런식으로 구간을 나눠놓은 것이라고 생각하면 된다.
- 각 클래스를 대규모, 중규모, 소규모 별로 쓴다고 했는데 어떻게 그렇게 쓰느냐... 하면 클래스별로 네트워크ID로 사용하는 옥텟의 갯수가 정해져 있다.
클래스 A
0
네트워크 ID 옥탯 1개
호스트 ID 호스트 ID 갯수 = 2의 24승 = 약1,670만개
클래스 B
1
0
네트워크 ID 옥탯 2개
호스트 ID 호스트 ID 갯수 =2의 16승 = 약 6만5천개
클래스 C
1
1
0
네트워크 ID 옥탯 3개
호스트 ID 2의 8승 = 256개
- 이게 뭔 의미이냐..하면 클래스 A의 경우, ip의 32비트 중에 앞의 8자리는 그냥 회사 번호라고 생각하면 되고 뒤의 24자리가 각 사원컴퓨터 번호라고 생각하면 1,670만명의 사원이 있다고 볼 수 있다. 1,670명이 아니라 1,670만명. 클래스 B의 경우 ip의 32비트 중에 앞의 16자리를 회사 번호라고 생각하면 뒤에 16비트로는 6만5천명의 사원컴퓨터가 된다.
- 위처럼 네트워크ID와 호스트ID를 구분하기 위해 쓰는 것이 서브넷 마스크(subnet mask)이다. - '서브넷 마스크'라는 것의 생김새는 ip와 비슷하게 생겼다.옥텟.옥텟.옥텟.옥텟 - 근데 각 옥텟의 구성이 '10101010.11011010.00101010.00110011' 이런식으로 되면 안된다. - '11111111.00000000.00000000.00000000'처럼 연속된 1과 연속된 0으로 구성되어야 한다. - 네트워크 ID가 되는 부분은 1로 표시하고, 호스트ID가 되는 부분은 0으로 표시한다.
클래스
서브넷 마스크 2진수
서브넷 마스크 10진수
클래스 A
11111111.00000000.00000000.00000000
255.0.0.0
클래스 B
11111111.11111111.00000000.00000000
255.255.0.0
클래스 C
11111111.11111111.11111111.00000000
255.255.255.0
- ...? - 이것이 뭐 어쩌라는 것이냐면.. 예를 들어 '클래스 A로 ip주소를 10.10.10.10을 할당 받았다'그러면 아래와 같이 파악할 수 있다. (첫번째 옥탯이 네트워크 ID 8개로 모두 채워졌구나 하고.)
10
10
10
10
네트워크 ID 11111111
호스트 ID 00000000.00000000.00000000
'클래스 B로 ip주소를 172.10.10.10을 할당 받았다'면 아래와 같이 파악할 수 있다. (두번째 옥탯까지 네트워크 ID 16개로 모두 채워졌구나 하고.)
172
10
10
10
네트워크 ID 11111111.11111111
호스트 ID 00000000.00000000
'클래스 C로 ip주소를 192.168.10.10을 할당 받았다'면 아래와 같이 파악할 수 있다. (세번째 옥탯까지 네트워크 ID 24개로 모두 채워졌구나 하고.)
192
168
10
10
네트워크 ID 11111111.11111111.11111111
호스트 ID 00000000
- 네트워크ID가 뭐지.. 호스트ID가 뭐지.. 하면 위에 적은 집주소, 상세주소를 떠올려보자. 회사에서 내 아이피가 B클래스이고 '172.10.10.10' 라면 [172.10]까지는 특정 회사에 대해 묶여 있는 것(네트워크ID)이고 그 뒤의 [.10.10]은 그 회사에 있는 컴퓨터를 특정지을 수 있는 것(호스트 ID)이다. 직원이 만약 10명이면 ip를 대충 이런식으로 받았을것이다. 172.10.10.0 172.10.10.1 172.10.10.2 . . . 172.10.10.9 172.10.10.10
- 또, 서브넷 마스크를 프리픽스(Prefix)라는 방법을 이용해서 아이피뒤에 표시해주기도 한다. - '클래스 A로 ip주소를 10.10.10.10을 할당 받았다'를 보면 네트워크ID의 갯수가 8개이므로 '10.10.10.10/8' 이렇게 표시한다. - '클래스 B로 ip주소를 172.10.10.10을 할당 받았다'를 보면 네트워크ID의 갯수가 16개이므로 '172.10.10.10/16' 이렇게 표시한다. - '클래스 C로 ip주소를 192.168.10.10을 할당 받았다'를 보면 네트워크ID의 갯수가 24개이므로 '192.168.10.10/24' 이렇게 표시한다. - 이게 뭔말이냐면 보통 아이피를 클래스 A다, 클래스 B다 이렇게 말 안하고 '192.168.10.10/24'이런식으로 표기하는데, 이때 프리픽스의 숫자를 보고 '네트워크ID가 24자리까지 있구나. 이건 클래스 C다'하고 알아야 한다는 것이다.
- 여기까지 모두 이해되었다면 이제.. 단순히 A, B, C클래스로 나누었을때의 단점을 알아보고 이에대한 대응방안으로 나온 서브넷팅이라는 것을 알아볼 차례이다. - ip를 단순히 A, B, C클래스로 나누어 할당을 하려고 보니 안쓰는 ip가 대거 발생하는 문제가 생겼다. - 예를 들어 어떤 회사가 50개의 아이피를 할당해달라고 요청했을때 클래스C로 할당을 하자니 256개중에 약 200개가 사용하지 않는 ip가 되어버린다.. ex) 192.168.10.0/24
클래스 C
1
1
0
네트워크 ID 50개의 ip가 필요한 회사에
호스트 ID 2의 8승 256개를 할당해버림
- 어쩔까..어쩔까.. 하다가 나온것이 '호스트ID쪽의 비트를 쪼개보자!'하고 서브넷팅이다.
/ 서브넷팅
- 만약 'ip가 100개 필요한 상황이다'하면 일단 비트로 몇개를 만들 수 있나 보자. 1비트로는 0, 1이니까 2개 만들 수 있고(2의 1승 = 2개) 2비트로는 00, 01, 10, 11 이니까 4개를 만들 수 있다. (2의 2승 = 4개) 3비트로는 000, 001, 010, 011, 100, 101, 110, 111. 총 8개를 만든다. (2의 3승 = 8개) 이런 식으로 몇 비트로 ip 100개를 충당할 수 있을까.. 생각해보면 7비트로 128개를 만들면 ip 100개는 충당할 수 있다는 결론이 나온다.
1
1
0
0
0
0
0
0
1
0
1
0
1
0
0
0
0
0
0
0
1
0
1
0
0
0
0
0
0
0
0
0
네트워크 ID
호스트 ID 7비트로 128개 만듬
- 이때 7비트로 호스트ID를 만들게 됬을때 4번째 옥탯의 맨 앞에 있는 1비트는 어떻게 되는거냐, 이 비트는 네트워크ID로 쓰게되는데 이걸 서브넷 구분 비트라고 한다.
- 만약 ip가 10,000개 필요하다면? 보자보자.. 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384 ..니까 2의 12승. 12비트를 호스트ID영역으로 만들고 나머지는 네트워크 ID로 만들면 되겠다.
- 10,000개 필요한데 16,000개나? 라고 할 수 있지만 6만5천개 만든것보다 낫잖아.. 하는것이 서브넷팅이다. - 그림을 보면 알겠지만 몇번째 옥탯에 있는 비트자리에서 나뉘어지는가에 따라 클래스B에서 할당하는지 클래스C에서 할당하는지 알 수 있다.
- '몇개를 할당한다' 까지는 알겠으면 이제 범위를 구하는 쪽도 알아보자. - 서브넷팅이라는 개념이 사실 위에서 서술한대로도 설명할 수 있지만 또 다른 방식으로도 서술해보자면 - 클래스 C에서 할당가능 한 ip의 갯수는 256개인데, 이때 256개라는 뜻은 네번째 옥탯의 8비트. 즉 00000000(10진수 0) ~ 11111111(10진수 255)까지라서 256개가 카운트 된것이다. - 이때 8비트의 맨 앞자리 수를 0 또는 1로 고정시켜서 7비트로만 범위를 카운트해보면 127개씩 범위가 나온다.
자릿수
1
2
3
4
5
6
7
8
첫번째 경우
0
0000000 ~ 1111111
두번째 경우
1
0000000 ~ 1111111
첫번째 경우 00000000(10진수 0) ~ 01111111(10진수 127) 로 범위가 나오고 두번째의 경우 10000000(10진수 128) ~ 11111111(10진수 255)로 범위가 나온다. 그리고 각 갯수는 256개를 반으로 쪼갠 127개가 된다. - 첫번째 경우192.168.10.0~192.168.10.127 두번째 경우192.168.10.128~192.168.10.255 (파란색은 네트워크ID영역이고주황색은 호스트ID영역이다.)
* 2진수가 바로바로 10진수로 변환이 안되면 일단은 2진수 계산기 사이트를 이용해보자. 그치만 계산할줄은 알아야 한다.
- 이번엔 맨 앞자리수 말고 맨앞 두자릿수를 00, 01, 10, 11로 고정시키고 6비트로 범위를 나눠보면 어떻게 될까?
자릿수
1
2
3
4
5
6
7
8
첫번째 경우
0
0
000000 ~ 111111
두번째 경우
0
1
000000 ~ 111111
첫번째 경우
1
0
000000 ~ 111111
두번째 경우
1
1
000000 ~ 111111
첫번째 경우 00000000(10진수 0) ~ 00111111(10진수 63) 로 범위가 나오고 두번째 경우 01000000(10진수 64) ~ 01111111(10진수 127) 로 범위가 나오고 세번째 경우 10000000(10진수 128) ~ 10111111(10진수 191) 로 범위가 나오고 네번째의 경우 11000000(10진수 192) ~ 11111111(10진수 255)로 범위가 나온다. 그리고 각 갯수는 128개를 반으로 쪼갠 64개가 된다. ex) 첫번째 경우 192.168.10.0 ~ 192.168.10.63 두번째 경우 192.168.10.64 ~ 192.168.10.127 세번째 경우 192.168.10.128 ~ 192.168.10.191 네번째 경우 192.168.10.192 ~ 192.168.10.255 파란색은 네트워크ID영역이고 주황색은 호스트ID영역이다.
- 클래스 C에서 봤으니 클래스 B에서도 한번 예를 들어볼까나 클래스 B에서 할당가능한 호스트ID ip의 갯수는 약 65,000개인데 이때 65,536개는 8+8비트. 즉 16비트의 00000000.00000000(10진수 0) ~ 11111111.11111111(10진수 65535)까지라서 65,536개가 카운트 된것이다. - 이때도 똑같이 16비트에서 맨 앞자리 비트를 0 또는 1로 고정시켜서 15비트로만 범위를 카운트해보면 32,768개씩이 된다.
자릿수
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
첫번째 경우
0
0000000.00000000 ~ 1111111.11111111
두번째 경우
1
0000000.00000000 ~ 1111111.11111111
첫번째 경우 00000000.00000000(10진수 표현 0.0) ~ 01111111.11111111(10진수표현 127.255) 로 범위가 나오고 두번째의 경우 10000000.00000000(10진수표현 128.0) ~ 11111111.11111111(10진수표현 255.255)로 범위가 나온다. 그리고 각 범위의 갯수는 65,536개를 반으로 쪼갠 32,768개가 된다. ex) 첫번째 경우129.10.0.0~129.10.127.255 두번째 경우129.10.128.0~129.10.255.255 파란색은 네트워크ID영역이고주황색은 호스트ID영역이다.
* 2진수가 바로바로 10진수로 변환이 안되면 일단은 2진수 계산기 사이트를 이용해보자. 그치만 계산할줄은 알아야 한다.
- 이번에도 맨 앞자리 비트 말고 앞 두자리 비트를 00, 01, 10, 11로 고정시키고 14비트로 범위를 나눠보면 어떻게 될까?
자릿수
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
첫번째 경우
0
0
000000.00000000 ~ 111111.11111111
두번째 경우
0
1
000000.00000000 ~ 111111.11111111
세번째 경우
1
0
000000.00000000 ~ 111111.11111111
네번째 경우
1
1
000000.00000000 ~ 111111.11111111
첫번째 경우00000000.00000000(10진수 0) ~00111111.11111111(10진수 63.255) 로 범위가 나오고 두번째 경우01000000.00000000(10진수 64.0) ~01111111.11111111(10진수 127.255) 로 범위가 나오고 세번째 경우10000000.00000000(10진수 128.0) ~10111111.11111111(10진수 191.255) 로 범위가 나오고 네번째의 경우11000000.00000000(10진수 192.0) ~11111111.11111111(10진수 255.255)로 범위가 나온다. 그리고 각 범위의갯수는 32,768개를 반으로 쪼갠 16,384개가 된다. ex) 첫번째 경우129.10.0.0~129.10.63.255 두번째 경우129.10.64.0~129.10.127.255 세번째 경우129.10.128.0~129.10.191.255 네번째 경우129.10.192.0~129.10.255.255 파란색은 네트워크ID영역이고주황색은 호스트ID영역이다.
- 이때 위에서 말했던 00, 01, 10, 11 이런식으로 아이피 대역을 4개로 나누든 00, 01 두개로 나누든 했던 부분을 서브넷 구분 비트라고 하고 요 부분은 네트워크ID로 쓰이게 된다.
- 바로 위 예시의 첫번째 경우 129.10.0.0~129.10.63.255 범위에서 129.10.55.56 라는 아이피를 할당 받았다면 129.10.55.56/18으로 표기할 수 있는데, 그 이유는 아래의 구조와 같기 때문이다.
/ 이쯤 되면 사실 그냥 비트 쪼개기 놀이 하는 느낌인데 뭐 시험이나 실무 이런곳에서 어떻게 쓰이는지 살펴보자.
[1교시] / CentOS에서 ifconfig에서 inet이 000.000.000.000형태로 안보일때 - 네트워크를 재시작 - 서버 재시작 - 우측 상단의 컴퓨터모양의 아이콘밑에 점점점으로 되어있을것이다.
/ 리눅스의 구조 - 커널(Kernel) : 중간에 인터렉션 하는 기능, 상호작용 - 쉘(Shell) : 사용자의 명령어를 받아서 결과를 출력 - 응용 프로그램
/ 지금 로그인한 사람의 이름 # id - uid : 유저아이디 - gid : 그룹아이디 - groups : 그룹의 모임
/ 내가 누구게 # who am i
/ 지금 서버에 접속해 있는게 누구야 # who # who are you
/ ls - 디렉토리 안의 파일 및 폴더목록을 보여준다. - ls 특정디렉토리위치 : 특정 디렉토리 위치내의 파일 및 디렉토리 목록을 보여준다. - -l 옵션 : 리스트 형식으로 표시한다. - -a 옵션 : 숨김파일까지 모두 표시한다. - -al : 옵션들은 붙여서 쓸 수 있다.
/ alias - 단축어를 알 수 있는 명령어
/ 파일을 만들기 # touch testfile : 임의의 testfile을 만든다. - 터치로 만드는것은 더미파일을 만드는 것이다. 용량이 0 - 같은 명령어를 한번더 날렸을때 파일이 없으면 만들고, 있으면 mac time만 변경된다. >mac 타임을 바꿀 수 있는 기능을 가지고 있다.)
/ 디렉토리 만들기 # mkdir testdir : testdir폴더를 만든다. - 파일을 만들때의 권한과 디렉토리를 만들때의 권한이 조금 다르다. > 디렉토리 : d rwx r-x r-x : 755 권한 > 파일 : - rw- r-- r-- : 644 권한
/ 디렉토리 삭제하기 # rmdir testdir : testdir폴더를 삭제한다.
/ 권한 - rwx rwx rwx : 소유자 소유그룹 기타사용자 - rwx : 읽기(4) 쓰기(2) 실행(1) - 디렉토리는 맨 앞에 d가 붙는다. -> drwxrwxrwx - 권한에 대한 숫자를 더해서 소유자 권한에 표시한다. > rwx : 7 / r-w : 5 / r-- : 4
/ 질문 - 디렉토리 권한이 r--로만 되어있으면 : 폴더내부로 들어갈 수 없다. x는 디렉토리에 접근할 수 있는 권한이다.
[2교시]
/ 권한 변경 # chmod 755 testfile : testfile의 권한을 rwxr-wr-w(755)권한으로 변경한다. - + : 특정 권한을 추가한다. > u+x : 소유자에 실행권한을 추가한다. > u-x : 소유자에 실행권한을 뺀다. > g+w : 그룹권한에 읽기 권한을 추가한다. > a+x : 모두에게(소유자, 그룹, 이외) 실행권한을 추가한다. - = : 특정 권한을 지정한다. > o=wx : 아더유저에게 wx권한을 부여한다. > u=rwx : 소유자에게 rwx권한을 부여한다. - ex) chmod u+x, o=wx testfile : testfile의 권한을 사용자에게는 읽기권한을 추가하고, 아더는 권한을 읽기/실행 권한으로 지정한다.
/ 권한 명령어 - chmod : 권한을 변경한다. - chown : 파일 소유자를 변경한다. - chgrp : 소유그룹을 변경한다. - chattr : 속성(attribute)을 변경한다. (읽기전용으로 만든다던지, 삭제가 안된다던지, 지울때 내용이 저장되게 한다던지) > 변경한 속성을 확인할 때 # lsattr 파일이름 > 넣을때는 +속성, 뺄때는 -속성 > a 속성 : 추가만 > i 속성 : 파일 수정 x
/ 특수권한 - rws r-x r-x file : SUID SetUID 4755 (setuid가 설정되어 있으면 4000으로 시작되고) - rwS r-x r-x file : - rwx r-s r-x file : SGID SetGID 2755 (setgid가 설정되어 있으면 2000으로 시작되고) - rwx r-S r-x file : - rwx r-x r-t file : Sticky bit 1755 (스티키 비트가 설정되어 있으면 1000으로 시작된다.) - rwx r-x r-T file : - ex ) rws r-s r-t : 7755 - 권한은 사실 앞에 0755처럼 0이 붙는다. - chmod로 수정한다. - 소문자로 들어가 있으면 성공, 대문자로 들어가있으면 권한이 제대로 적용이 안된경우 - SetUID, SetGID는 해당 권한으로 파일을 실행한다. - 스티키 비트를 지정하면 소유자가 아니더라도 내부에다가 파일을 만들거나 변경할 수 있다. (rwx권한) - 스티키 비트가 적용되어도 삭제는 되지 않는다. - 스티키가 적용된 대표적인 디렉토리 : /tmp.
[3교시]
/ umask 설명 - 디렉토리 0777 rwx rwx rwx // 여기서 0022 --- -w- -w- // 이걸 빼면 0755 rwx r-w r-w // 이것이 된다. - 파일 0666 rw- rw- rw- //여기서 0022 --- -w- -w- // 이걸 빼면 0644 rw- r-- r-- // 이것이 된다.
/ netstat - 윈도우 서버 netstat -anp tcp | findstr 22 > a옵션 : 다 찾아줘 > n옵션 : 목록으로 표현해줘 > p옵션 : 프로토콜. ex) tcp 프로토콜을 찾아줘 > findstr : ex) 22번을 찾아줘 - 리눅스 서버 netstat -ant | grep 22 > t 옵션 : 프로토콜을 찾아줘 > p 옵션 : 프로세스 이름을 알려줘 > grep : 검색 명령어 - 결과 > LISTEN : 서비스를 기다리고 있다. > :22 : sshd 포트
/ netstat 2 # netstat -antp | grep 22
/ 방화벽 종류 - Selinux : 잘 안씀 - TCP Wrappers : 거의 은퇴함. 잘 안씀 - Firewalld : 그래픽 지원이 된다. Centos 7에서는 잘 쓴다. 초급 사용자들이 많이 쓴다. - iptables : 시험에 잘 나온다. 디테일하게 방화벽을 설정하고 싶을 경우 많이 쓴다. 고수들이 많이 쓴다.
/ ps -ef | grep sshd - 프로세스를 찾는다. - e 옵션 : 모든 정보를 다 보여줘 - f 옵션 : full 포멧으로 보여줘 - | grep 문자열 : 문자열이 들어가는 프로세스를 검색해줘
- 이걸 하면 결과가 2개 나오는데 grep --color=auto sshd는 내가 검색해서 그 프로세스가 나온것이다. - 내가 검색하고 있는 프로세스를 안보이게 하려면 ps -ef | grep sshd | grep -v grep로 하면 된다. > -v 옵션 : 제외하고 보여줘
/ lsof # lsof -i tcp:22 - 열려있는 파일들의 목록을 보여줘 - i 옵션 : 인터페이스
- p 옵션 : 프로세스로 검색 # lsof -p 프로세스번호 : 프로세스가 돌아가는 모든 것들이 나옴
# ls -l /proc/프로세스번호/exe : 해당 연결되는 프로세스를 찾을 수 있다.
- /proc 디렉토리 : 프로세스 임시값들이 임시저장되어서 위치하는 디렉토리. 파란색 하나하나가 다 pid이다. - /proc/meminfo :
/ 포트 - 잘 알려진 포트 : 1~1023 > 80, 21, 22, 23, 53 - 등록된 포트 : 1024~49151 > MsSQL 1433, Oracle 1521, MySQL 3306 - 동적 포트 : 49152~65535 > 임의로 할당, 사용할 수 있다. 클라이언트가 서버로 갈때 갈고가는 포트다. - 포트 규칙을 정해주는 곳이 있다 : IANA
[4교시]
/ man 명령어 - 명령어에 대한 메뉴얼을 볼 수 있다.
/ 서버에 어떤 사용자가 있는지 확인 - 홈디렉토리를 확인해본다.
- 루트 사용자는 /root에 가지고 있어서 home에 나오지 않는다.
/ 계정목록 # cat /etc/passwd > 프로세스를 실행하기 위한 계정(?)도 나온다.
/ 사용자 만들기 # useradd tuser
- cat /etc/passwd 명령어를 쳤을때 맨 밑에도 표시된다.
- 이때 규칙이 있다. > 7개의 항목을 :으로 나누어 표시한다. > 처음 만드는 사용자는 1000으로 시작하고 그 다음부터는 1001, 1002식으로 1씩 커진다. > root는 유저/그룹 아이디가 0이라 0으로 표시된다. > 실제로 로그인을 하는 정보들만 7번째에 /bin/bash에 데이터가 표시된다. > 시스템을 건드리는 애들은 유저아이디는 0이 아니더라도 그룹아이디는 0이다. > 로그인 안 하는데 7번째 배시쉘이 /bin/bash이다? 그럼 비정상임 > bin의 유저/그룹이 0:0이다? 그럼 비정상임. 1:2:3:4:5:6:7 root:x:0:0:root:/root:/bin/bash centos:x:1000:1000:centos:/home/centos:/bin/bash tuser:x:1001:1001::/home/tuser:/bin/bash 사용자::유저아이디:그룹아이디:코멘트:홈디렉토리:배시쉘
/ 사용자를 추가할때 관련있는 파일/디렉토리 - /etc/login.defs : 여기서 참조해서 사용자를 만들게 된다. > PASS_MAX_DAYS : > PASS_MIN_DAYS : > PASS_MIN_LEN : > PASS_WARN_AGE : > UID_MIN : > UID_MAX : > ENCRYPT_METHOD : 패스워드 암호화 알고리즘을 무엇으로 하는 지 - /etc/default/useradd > GROUP : > HOME : 홈디렉토리는 여기 밑에다가 만들어 주세요. > INACTIVE : > EXPIRE : > SHELL : 쉘을 무엇을 쓸것인지 > SKEL : > CREATE_MAIL_SPOOL : - /etc/skel 디렉토리 >
/ 사용자 지우기 - userdel 사용자이름 : 만 하면 홈디렉토리는 안지워진다.
- userdel -r 사용자이름 : 사용자 홈 디렉토리까지 지운다.
[5교시]
/ shadow파일 # cat /etc/shadow ( | grep 사용자 ) - 패스워드가 들어있는 파일(패스워드는 /etc/login.defs파일의 ENCRYPT_METHOD항목에 의해 암호화 되어 있다.) - passwd파일에서는 6번째가 홈디렉토리이고 shadow파일에서는 6번째가 warn age를 표시한다. - !! or * -> 패스워드가 아직 설정되어 있지 않아서 pw를 사용한 로그인이 잠겨있을때 표시된다. - 패스워드 부분에 !!도 없으면(지워버리면) 패스워드가 없는것이다. 그냥 로그인이 막 된다. - 비밀번호 부분이 $숫자$블라블라$블라블라2 형식인데, > 무차별(무작위) 대입공격(Brute force Attack 사전공격), 무지개 공격을 대비하여 > $암호화알고리즘$난수값(솔팅)$비밀번호 형식으로 되어있다.
[1교시] / 시험에 나오는 것 - 개발자가 누구냐 : 리누스 토발스 - 커널, 컴파일러, 쉘, 프로그램이 무엇인가 - 리처드 스톨만 - GNU 프로젝트 - GPL 라이선스 - 소스코드 공개 등등
/ 리눅스 배포판 종류 - 데비안 : good - 레드햇 : 가장 점유율이 높음 - 우분투 : good - 슬랙웨어 : 가장 오래된 배포판
/ 리눅스 계열 - 레드햇 계열(Red Hat Enterprise) : CentOS, Fedora > 운영 관리 특화 - 데비안 계열(Debian) : Ubuntu, Kali > 개인용, 해킹보안, 개발
/ Rocky Linux - CentOS에서 나온 운영체제
[2교시] / 대표 배포판 - 데비안 : 안정성을 기반으로 개인이 사용할 수 있도록 - 레드햇 : 기업용 - 슬랙웨어 : 제일 오래됨 - 우분투
/ SLS - 최초의 리눅스 배포판 이름
/ 순서 페도라 > 레드헷 > CentOS > 록키
/ 교안 - 김장우 > 교안 > 220414_과평_정보보안산업기사
/ VMnet8의 IPv4 세팅 - VMware > Edit > Virtual Network Editor > 하단의 Change > VMnet8 선택 > 아래의 Subnet IP를 192.168.111.0으로 변경 - cmd에서 fpconfig로 확인 - VMware를 설치했을 경우 실습환경과 동일하게 세팅하기 위해
/ VMware에 CentOS 설치 - Create > Typical > I will 어쩌고 세번째 옵션 > Linux 선택, 버전 CentOS 7 64-bit > 이름 빈칸 없이 짓기, 경로는 D:\CentOS\머신명 > 20GB, singl file 선택 > 전체 내용 확인하고 피니쉬 - Edit virtual machine settings > USB Controller, 사운드카드, Printer Remove > CD/DVD 선택 > Use ISO image file에서 iso파일 선택 > OK - Power on 어쩌고 버튼 클릭 - ContOS 8을 하고 싶다면 버전은 레드햇8을 선택하면 된다. - 용량을 20GB로 해도 한번해 용량을 차지하지 않는다.
[3교시] / CentOs 파티션 나누기 - 디스크를 나눠서 사용하는 FDISK (program) > 파티셔닝 > swap 영역 : 가상메모리 영역, HDD -> 메모리 가상, 하드디스크를 가상메모리처럼 쓰는 것, 윈도우에서는 시스템 페이징, 1~1.5배정도 스왑 영역을 할당, 보통 8~16G정도 할당 > / 영역 : 윈도우 C드라이브와 비슷함 > boot, var, usr : 우리가 안줘도 시스템이 알아서 줌 - swap 먼저 2048으로 추가하고 /는 그냥 추가
/ 암호 - 취약, 사전에 있는 단어, 사전검사 등 메시지 표시 - 해커 프로그램 pw 모아놓은 파일에 있다는 뜻 - pw길이가 최소 8글자는 되어야 한다. - pw깨기공격(무차별대입공격) > Brute Force Attack > 대처 -> pw저장 암호화 ... A-> A2, B-> B2 > 무지개공격(Rainbow Attack) : 암호화된 pw를 모아서 공격 > 대처 -> 솔팅(Salting)기법 : pw를 암호화할때, 중간 난수를 삽입. 암호화 되는 결과가 일정x
/ Kdump - 활성화하시겠습니까 언체크
/ 터미널 - [root@localhost ~] - root : 로그인해있는 계정 - @localhost : 리눅스 서버 이름 - ~ : 로그인해 있는 계정의 홈 디렉토리
/ ifconfig 확인 - inet의 아이피가 나오는지 확인 ex)192.168.111.128
/ ping - ping 아이피로만 쓰면 계속 감 - 컨트롤 + c로 끊을 수 있다.
/ nslookup - nslookup www.naver.com - 보이는 Server : vmware가 제공하는 ip
/ os 설치 및 부팅 시 기본루틴 - ifconfig - ping - nslookup
[4교시] / 화면보호기 - 개인업무 보안 : 10분 이상 자리를 비웠을 때 화면보호기를 설정해야 한다.
/ 패스워드 작성 규칙 - 조건 : 영문 대문자, 영문 소문자, 숫자, 특수문자 - 2가지 조건이면 10글자 이상 - 3가지 조건이면 8글자 이상 - 연상할 수 있는 개인신상정보로는 생성하면 안된다. - 관리자 계정은 30~60일 마다 교체 권고 - 사용자 계정은 60~90일 마다 교체 권고
/ 서버 이름 바꾸기 # hostname : 서버이름 확인 명령어 # vi /etc/hostname - 호스트 파일을 저장해도 리부팅 해야 적용이 된다.
/ vi 편집기 - 텍스트 기반 편집기 vi, emac, pico - gdit : 그래픽 기반 편집기 - vi로 바로 들어오면 명령모드 - i, a를 누르면 입력/수정 모드로 변환된다. - 입력 수정 모드 : i,a등을 눌러 수정할 수 있을때 - 명령모드 : 들어가자 마자 - ex 명령모드 : :wq를 들어갔을 때
/ selinux - 방화벽 옵션 - 실무에서는 쓰지 않아서 비활성화 시킬것이다. # getenforce : 활성화 되어 있는지 확인하는 명령어 # sestatus : 활성화 되어 있는지 확인하는 명령어 - 이동 : /etc/sysconfig - selinux파일을 수정 # vi /etc/sysconfig/selinux - SELINUX = enforcing부분을 disabled로 변경한다. - 리부팅을 해야 적용이 된다. - 미국에서 넣어라 했다는 썰이 있음
/ 네트워크 설정 (gui) - 우측 상단의 컴퓨터 모양 클릭 or 설정>네트워크 클릭 - 네트워크 설정 창에서 톱니바퀴 > IPv4 선택 > 주소 부분을 수동으로 - 주소 : 192.168.111.101 - 네트 마스크 : 255.255.255.0 - 게이트웨이 : 192.168.111.2 - 네임서버(DNS) 서버 : 168.126.63.1
[5교시] / 네트워크 설정 - nmtui (cli, gui 둘다) - nmtui > Edit a connection > 첫번째 엔터 - 여기에는 게이트웨이가 없다? : 아이피 끝의 /24는 255.255.255.0과 같다. - prefix > cifs : 네트워크 나눌때 > 255.255.255.0을 이진수로 표현하면 > 11111111.11111111.11111111.0인데, 이때 1이 24개라서 /24 - Device : 24비트 정보가 2개라 48비트 - 숫자로 된것은 논리주소 - 00:0C:어쩌고 이런식으로 된것은 하드웨어 주소, 맥어드레스(MAC), 앞의 00:00:00(24bit)는 밴더주소(vendor)주소라 해서 제조사 별로 같고, 뒤에는(24bit) 호스트 주소이고 모두 다르다. - 관리자가 수정할 수 없는 주소는 하드웨어 주소. 맥 어드레스 이다.
/ 아이피가 저장되는 장소는 어디인가 # cd /etc/sysconfig/network-scripts/ - 여기가 centOS 서버의 네트워크 설정들이 모아져 있는 디렉토리이다. - ifcfg : 인터페이스 콘피그 - cat ifcfg-eno16777728 > ONBOOT="yes" : 부팅할때 해당 콘피그가 자동으로 올라올 것이다.
/ 이전에 있던 곳으로 돌아가기 # cd -
/ 홈디렉토리로 가기 # cd ~
/ VMware 스냅샵 찍기 - 상단의 시계에 플러스 있는 아이콘 클릭 > 이름 입력 후 테이크 스냅샷 - 스냅샷을 찍으면 뒤로가는 아이콘이 활성화 된다. - 렌치모양 시계를 클릭하면 스냅샷 찍은 여러 시점을 관리할 수 있다. - 스냅샷을 찍으면 그만큼 하드디스크를 차지하게 된다.
/ 기본 명령어 # id : 현재 로그인한 사용자 정보를 보여주는 명령어 # whoami : 현재 로그인한 사람이 누구인지 보여줌 # who am i : 현재 로그인한 사람이 누구인지 보여줌 - pts : sudo # who : 리모트로 접속 한 사용자 목록을 보여주는 명령어 - 결과 화면을 보고 명령어를 맞출 수 있어야 한다. # date : 현재 시간을 표시해주는 명령어
/ history - /root/.bash_history : 입력했던 명령어 히스토리 파일 - !번호 : 히스토리 번호에 있는 명령어를 실행한다. - !! : 바로 앞전에 썻던 명령어를 재실행 한다. - !알파벳 : 알파벳이 들어간 명령중에 제일 최근에 실행한 명령어를 재실행 한다. - 명령어 실행 후 바로 cat .bash_history를 하면 메모리에만 데이터가 있어서 모든 히스토리가 보이지 않는다. 해서 history -a명령어를 실행하면 하드디스크에 데이터가 들어가서 cat .bash_history를 했을때 모든 히스토리 명령이 보이게 된다. - history -c : 메모리의 목록을 클리어 한다. history 명령어에서만 클리어 되고 .bash_history는 따로 더 작업해야 없어진다.
/ Driver Booster Free - iobit.com - Driver Updater > Driver Booster Free 다운로드 - 컴퓨터 구입(조립pc 등) 후 각 장치들 세팅이 잘 맞는지 확인 or 드라이버 업데이트 확인
/ IObit Uninstaller - iobit.com - Must-have Tools > IObit Uninstaller 다운로드 - 프로그램을 이 프로그램으로 삭제해야 프로그램파일즈 폴더에서도 삭제된다. - 그냥 제어판에서 삭제하면 폴더나 레지스트리까지 삭제되지 않음.
/ 업데이트 - Speedup > Advanced Systemcare Free 다운로드 - 속도 향상 > 작업모드 켜기 - 관리 > 수동모드 전체 선택 > 검사 > 자동 해결 & pc 재시작
[2교시]
/ 마이크로소프트 & 한컴 오피스 한글 2010 설치 - 클라이언트보다 낮은 버전을 써야 클라이언트쪽에서 폰트가 깨지지 않는다. - 해서 실습은 2010버전으로 설치한다.
/ 백업 - 날짜 별 백업
/ 휴지통 삭제 - 시프트 + del : 휴지통 완전 삭제
/ VMware 설치
/ cve - Common Vulnerabilities and Exposures - 직역하자면 공통 취약점과 식별자인데, 한마디로 수많은 취약점을 공통화 하여 고유하게 넘버링을 한 것이다. - CVE는 모든 종류의 소프트웨어 취약성에 부여된다.
/ 제로데이 - 컴퓨터 소프트웨어의 취약점을 공격하는 기술적 위협 - 해당 취약점에 대한 패치가 나오지 않은 시점에서 이루어지는 공격을 말한다. - 제로데이 -1 데이 : 취약점을 안사람이 취약점을 안 알려주고 공격하는 것 - 라피드7.com에 계속 해서 올라옴
/Cisco Packet Tracer 5.3.3 설치 - 홈, 네트워크, 회사 네트워크 등의 개인 네트워크 / 공항 어쩌고 둘다 체크하고 액세스 허용
[3교시]
/ 아오메이 백어퍼 설치 - 최적화 후 진행
/ Cisco Paket Tracer 실습 - Options > Preferences > Always Show Port Labels 체크 - Font > Colors : 블랙 화이트 블랙 화이트
[4교시] / 지금까지 한것 - OS-Win10 Setup - 최적화 - IOBit.com 드라이브 업데이트 멀웨어 언인스톨 시스템 케어 - OA-app 설치 MS-office HNC - App 설치 VM ware packet tracer - Utility 알집 - 최적화 업데이트 HDD 정리
- windows PC 10의 코어(Kernel)는 Windows Server 2016,2019,2022의 코어와 같다.
/ 자격증 - 네트워크관리사 - 인터넷보안전문가
/ cmd 창 띄우는 법 - 윈도우버튼에서 오른쪽 > 실행 > cmd 검색 - 몇개의 명령어 입력 후 화살표를 위아래로 누르면 이전에 썻던 명령어를 다시 확인할 수 있다. - 드래그를 한다음에 오른쪽 클릭을 하면 임시저장 복사가 됨
/ cmd 명령어 1 - ipconfig : 내가 사용하고 있는 ip주소를 확인하는 명령어 - VMnet은 가상네트워크 서버를 설치했을때 나오는 것이다. - IPv4 : 인터넷 프로토콜의 버전4의 주소. 다른 사람과 겹칠 수 없다. - IPv4도 있고 IPv6도 있다. - 서브넷마스크 : ip가 들어가 있으면 무조건 있음(울타리) - 255.255.255.0은 울타리 느낌 - 게이트웨이 : 대문느낌, 서브넷에서 데이터가 왔다갔다 하는 대문 - 맨위에 있는 IPv6? : 4버전에서 생긴 문제(주소가 부족해짐)를 해결하기 위해 새로 나온 버전 - /all 명령어 : 디테일하게 조회할 수 있다. - 물리적 주소 - DHCP - DNS 서버 - 예시 문제 : DNS서버를 확인할 수 있는 명령어는? (ipconfig /all /all을 빼면 오답이다.) - 예시 문제 : 리눅스에서 쓰지 않는 명령어는? ifconfig - 리눅스의 ifconfig 명령어와 같다.
/ cmd 명령어 2 - ping 목적지IP - 8.8.8.8은 구글의 IP - 168.126.63.1은 kt의 IP - 메아리처럼 신호를 보내고 응답을 하는지 알아보는 명령어 - 굉장히 많이 쓰는 명령어 - 00ms 데이터가 다녀온 시간 - 리눅스든 윈도우든 명령어가 똑같다. - 우리나라에서 미국까지는 일본을 거쳐서 해저로 연결되어 있다.(KT) - 해서 우리나라로는 왕복 시간이 작은데(테스트 시 1ms) 미국으로는 왕복 시간이 크다.(테스트 시 31ms) - 응답시간은 체크가능 한데, 회선 체크는 안된다.(불났는지는 모른다.) - 8.8.8.8, 168.126.63.1은 둘다 기억해 두자. 해외, 국내 아이피 체크할때 대표적으로 사용하는 아이피
/ cmd 명령어 3 - 윈도우 : tracert 목적지IP - 리눅스 : traceroute 목적지IP - 회선(경로) 체크하는 명령어 - 출발 : 강의실의 게이트웨이에서 출발 - 거쳐가는 경로를 홉(6번까지 있으면 5홉) - 각 번호별로 확실하게 하기 위해 3번 체크 - 밀리세컨을 안보여주는건 보안장비나 뭐 무슨 사정이 있어서 안보여주는 것 - 8.8.8.8로 할때 - 해외망으로 넘어갈때 시간이 크게 뛰었다.(8번에서 33ms으로 시간이 올라감) - 112로 시작하는것까지는 국내인것같은데 확인해보자
/ ip - ip : 인터넷 프로토콜의 약어
[2교시]
/ 아이피가 국내인지 해외인지 확인 - https://whois.nic.or.kr - 아이피를 소유하고 있는 회사 분사를 보여줌 - 72.14.243.228를 검색하니까 해외 기관에서 관리하고 있다고 나옴 - 밑에 내리면 Country등 국가를 알 수 있다.
/ 프로토콜 - 네크워크상에서 주고받는 약속, 규약 - 대표적인 프로토콜은 풀네임을 알아두자. - 데이터를 전송하는 대표적은 프로토콜은 아래3개 - TCP tcp (Transmission Control Protocol) : 전달을 컨트롤 - 신뢰성이 높다. - 전달속도가 느리다. - 메일서버 등을 사용 - 받았니 안 받았니? - UDP udp (User Datagram protocl) - 신뢰성은 떨어지나 전달속도가 빠르다. - 내 신호를 받아랏. 난 그럼 이만 - 미디어 서비스, 스트리밍 서비스에서 많이 사용 - ICMP icmp (Internet control Management Protocol) - ping : icmp기반으로 검색하는 대표적인 명령어 - 데이터를 직접적으로 하기보다는 똑똑똑~ 느낌으로
/ TCP/IP - 인터넷이 사용하고 있는 신호전달 체계 - 인터넷이 가장 기본적으로 사용하고 있는 규약 - 데이터를 신뢰성있게 전달하기 위해서
/ TCP/IP를 확인할 수 있는 명령어 - netstat - 내 pc의 네트워크의 연결 상태를 확인 - 윈도우, 리눅스 동일 - 로컬 주소 : 외부와 연결된 내부들 - 외부 주소 : 내 컴퓨터와 연결된 외부들 - 외부 주소를 살펴보고 이상하면 체크하는 것 - 이것으로 취약점 분석을 하기도 함 - --help 옵션 : 사용법을 알려주는 옵션 - -a 옵션 : 모든 연결 및 수신 대기 포트를 표시 - -n 옵션 : 주소 및 포트 번호를 숫자 형식으로 표시 - -p [프로토콜] 옵션 : 특정 프로토콜만 표시할때 - 옵션을 -an으로 붙여쓸 수 있다. - -an : 제일 많이 쓰인다. - -anp tcp : 많은 목록 중 tcp만 표시해준다. - netstat -an | more : 한페이지씩 보겠다. - netstat -anp tcp | find "443" : 큰따옴표 안 내용을 찾아줘 - netstat -anp tcp | findstr 443 : 위와 같음. 큰따옴표 없이 검색 - icmp는 여기서는 안뜬다.
/ 공유폴더 접근하여 자료가져오기 - start \\192.168.0.250 - 강의실 파일서버 - 공유폴더 접근하는 것 - 명령차에서 쓸때는 start 경로 - 실행창에서 쓸때는 그냥 경로로 검색
[3교시]
/ 제일 중요하고 빈도가 높은것 - OSI 7 LAYER : 오픈 시스템 언더커넥션 - TCP/IP LAYER
/ OSI 7 계층 - 보안장비를 만들던 뭘 만들던 전세계 어디에서나 통용되도록 약속한 통신 규약 - 순서를 기억해야 함 - PDNT SPA 이렇게 앞 스펠링으로만 해서 외운다고 함
/ TCP/IP 4계층 - OSI의 어느 계층과 매칭이 되는지 - OSI와 매칭되는 장비의 성격 등을 알아야 함
/ PHYSICAL, DATALINK 계층(1,2 계층)의 역활 - 데이터를 전달하기 위해서 준비하는 부분
/ 네트워크 - 어디로 쏠지 하는것이 라우팅
/ 트랜스포트 - 전달, End-to-end Service
/ 세션 - 응용프로그램간의 연결 성립, 대화제어
/ 프리젠테이션 - 데이터표현, 압축, 보안기능
/ 어플리케이션 - 전자메일, 파일전송
/ 네트워크 장비 - Repeater : 신호가 약해지면 쎄게 해줌 - HUB : 단순히 연결을 시켜줌 - L2 스위치 - L3 라우터 : 어디로 갈지길을 정해준다.
/ 계층에 따른 데이터 단위 - 시험에서 종종 나옴 - 각 계층에서 쓰는 데이터 단위가 무엇이냐 - 비트 프레임 패킹 세크먼트 메시지
/ 서비스 포트들의 규칙 - IANA, 서비스와 포트 매칭 - 0~1023 : 잘 알려진 포트. Well known. 서비스가 예약을 해서 이미 사용하고 있다. - MsSQL 포트 : 1433 - Oracle 포트 : 1521 - MySQL 포트 : 3306 - 1024~49151 : 등록된 포트. Registered - 49152~65535 : 동적포트. Dynamic. 정해지지 않은 포트 - 시험에 잘 알려진 포트에 들어가는 것은? 식으로 잘 나옴
/ nslookup - 네임서비스를 찾는 것 - 호스트를 물어보면 아이피를 알려줌 - 전화번호부같은 것 - 리눅스 동일 - DNS : 도메인 네임 서비스 - 명령어만 쓰고 엔터를 누르면 '>' 리다이렉트 표시로 바뀌며 nslookup명령창으로 바뀜 - 명령어만 쓰면 PC에 세팅되어 있는 정보를 불러옴
[4교시]
/ 네트워크 환경을 확인하는 법 - ncpa.cpl : 윈도우에서 네트워크 환경을 연다. - 이더넷 선택 > 우클릭 > 속성 > 인터넷 프로토콜 버전4 선택 > 속성 - 자동으로 ip 주소 받기 : DHCP
/ 자동으로 ip를 받는지 확인하는 법 - ipconfig /all의 결과 중 '자동 구성 사용'이 '예'로 되어있고, 'DHCP 사용'이 예이거나 아니요로 되어있음
/ DHCP - 네트워크에 연결되면 자동으로 ip를 할당받는 것 - Dynamic Host Configuration Protocol - 스마트폰도 이 서비스를 쓰고 있음 - 자동으로 아이피를 받아온 시점과 반납을 해야하는 시점이 있음(임대 시작 날짜, 임대 만료 날짜) - 만료시간이 다 되어도 자동으로 계속 쓴다고 응답하면 계속 쓸 수 있게 됨
/ DHCP 서버 - DHCP 서비스를 제공하는 서버 - DHCP클라이언트가 요청하면 응답을 해줌 - CS 구조 : Client / Server 구조
/ nslookup에서 물어보는 대상을 임시로 바꾸는 법 - 검색 : 텔코3사 DNS서버 - 외워두면 편함 - 리눅스에서도 동일함 - kt : 168.126.63.1 - sk : 219.250.36.130 - lg : 164.124.101.2 - 구글 : 8.8.8.8 - nsloolup명령창에서 - server 164.124.101.2 으로 하면 기본 네임서버를 lg로 바꿈 - dhcp를 아예 바꾸는건 아니고 명령창 안에서만 잠시 바꾸는 것임 - 취업했을 때 DNS, ns, nslookup을 가장 헷갈려 한다고 함
/ 강사님 개인 경험 사담 - lg공유기 사용, 스마트 티비가 잘 안나오는 상황, 인터넷도 안됨 - ipconfig로 게이트웨이 확인 - ping 게이트웨이아이피, ping 8.8.8.8 등 확인 - 잘 가고 나오는데 인터넷이 안됨 - nslookup으로 naver.com조사 -> 안감 - nslookup 명령어 중 server를 써서 kt로 바꾼 후 다시 naver조사 -> 잘됨 - sk, 구글에서도 잘됨 - 이것은 lg dns서비스가 문제가 있는것이구나 인식