Study/Information Security

클라우드 정보 보안 수업 자료 및 정리 [9회차, echo, $PATH, PAM, Frame-Relay (M,P), Static Routing ]

imaginefuture-1 2024. 12. 5. 17:55

 

 

itkorea 인천 아카데미 클라우드 정보보안 수업 자료 및 정리

 

2024-11-25~2025-05-13

 

정식 수업~

 

매주 월화수목금 9시30분-6시30분까지 과정

 


ECHO명령어랑 '', "",``,$ 이해하기

 

echo $PATH
env(environment 환경변수들 보여주는거임)

 

[root@R91-03 ~]# echo $PATH
/root/.local/bin:/root/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin
[root@R91-03 ~]# env
SHELL=/bin/bash
SESSION_MANAGER=local/unix:@/tmp/.ICE-unix/2210,unix/unix:/tmp/.ICE-unix/2210
COLORTERM=truecolor
HISTCONTROL=ignoredups
XDG_MENU_PREFIX=gnome-
HISTSIZE=1000
HOSTNAME=R91-03
SSH_AUTH_SOCK=/run/user/0/keyring/ssh
XMODIFIERS=@im=ibus
DESKTOP_SESSION=gnome
PWD=/root
LOGNAME=root
XDG_SESSION_DESKTOP=gnome
XDG_SESSION_TYPE=wayland
SYSTEMD_EXEC_PID=2228
XAUTHORITY=/run/user/0/.mutter-Xwaylandauth.JZANY2
GDM_LANG=ko_KR.UTF-8
HOME=/root
USERNAME=root
LANG=ko_KR.UTF-8
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.m4a=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.oga=01;36:*.opus=01;36:*.spx=01;36:*.xspf=01;36:
XDG_CURRENT_DESKTOP=GNOME
VTE_VERSION=6402
WAYLAND_DISPLAY=wayland-0
GNOME_TERMINAL_SCREEN=/org/gnome/Terminal/screen/2f3065e6_c70c_489e_b249_de4bfcad324a
GNOME_SETUP_DISPLAY=:1
XDG_SESSION_CLASS=user
TERM=xterm-256color
LESSOPEN=||/usr/bin/lesspipe.sh %s
USER=
GNOME_TERMINAL_SERVICE=:1.105
DISPLAY=:0
SHLVL=1
QT_IM_MODULE=ibus
XDG_RUNTIME_DIR=/run/user/0
which_declare=declare -f
XDG_DATA_DIRS=/root/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share/:/usr/share/
PATH=/root/.local/bin:/root/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin
GDMSESSION=gnome
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/0/bus
MAIL=/var/spool/mail/root
BASH_FUNC_which%%=() {  ( alias;
 eval ${which_declare} ) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot $@
}
_=/usr/bin/env

 

 

 

 

 

''. "". ehco, $ 실습

 

 

[root@R91-03 ~]# echo $HOSTNAME
R91-03

이러면 현재 호스트명 나옴
echo 하구 $하구 뒤에는 다 대문자(변수값)
$ ㅇㅇㅇ 하면 ㅇㅇㅇ가 가지고있는 환경변수값을 보여줘
''작은 따옴표 single quotes는 그 특수문자의 의미를 제거해버려요
$가 가지고있는데 숨은 값을 보여주는게 아니라 그냥 $PATH자체 문자가 나옴

[root@R91-03 ~]# echo '$PATH'
$PATH

echo '$PATH' is 하면 이 $PATH 문자열이 가지고있는건 ~이거에요
[root@R91-03 ~]# echo '$PATH' is 
$PATH is

"" 큰 따옴표 double quotes

일부는 동작하게하고, 나머지는 동작못하게함
''는 다 못하게 하는거임

[root@R91-03 ~]# echo "$PATH"
/root/.local/bin:/root/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin


[root@R91-03 ~]# echo '"$PATH"'
"$PATH"
캬 ㅋㅋㅋ

\ Backslash


[root@R91-03 ~]# echo \$PATH
$PATH


예를 들어, 늦잠 대비해서 알람 맞추는데 alarm \alarm이라고하면
컴퓨터에서 삑 소리가남 컴퓨터에서는 알람(알려달라고)이라고 인식하는거임

다음에나오는문자의특별한의미를제거한다=''랑 같네?
근데 이건 한개고 ''는 두개임


내가 사용하고있는 폰트가 한글이면 \원하로 나오고
내가 사용하고있는 폰트가 영문이면 백슬러쉬로 나옴

``backquotes백커터는 특수기호 다 살리는거임


[root@R91-03 ~]# echo "Current directory is `pwd`"
Current directory is /root

pwd가 가진 특수값이 나오는거임 =root


[root@R91-03 ~]# echo 'Current directory is `pwd`'
Current directory is `pwd`

작은 따옴표는 글자 그대로~~~

 

 

 

 

 


 

cd /etc/pam.d
ls -l

-하이픈이라고 합니다 마이너스, 대쉬도 맞긴한데 보통 하이픈
-하이픈은 파일이라는 뜻이에요 -file~
맨 앞이가-이면 파일

d는 폴더~ directory
리눅스는 파일, 폴더랑 구분하는건 심볼 기호 d -로하는데, 색깔로도 구분함
파랑이는 폴더 흰개는 파일, 하지만 이건 색깔 변경가능해서 이걸로 구분 ㄴㄴ
d f 맨앞에 심볼 기호로 구분해주세요


일반적인 로그인은 아이디랑 passwd만 맞으면 가는데
pam은 아이디랑 비번 맞아도 추가설정한 설정값도 조건에 맞아야 허용

-rw-r--r--. 1 root root 566 11월  7 09:24 su

예를 들어 su에 pam을 추가하면, switch user할때 추가 조건이 붙는 거임


-rw-r--r--. 1 root root 676 11월  7 09:24 login

 

/etc/pam.d 경로에서 ls -l 결과


 

**PAM (Pluggable Authentication Module)**은 리눅스와 유닉스 계열 운영 체제에서 인증을 관리하는 유연한 프레임워크입니다. PAM은 시스템 관리자에게 인증 방식을 모듈화하여 쉽게 추가하거나 수정할 수 있는 기능을 제공합니다.


PAM의 역할

  1. 통합 인증 관리:
    • 여러 애플리케이션과 서비스(예: SSH, su, sudo, FTP, 로그인 쉘 등)가 각각 다른 인증 방식을 구현할 필요 없이, PAM을 통해 공통된 인증 방식을 사용.
  2. 유연한 구성:
    • 시스템 관리자는 PAM 구성을 변경하여 다양한 인증 방식을 사용할 수 있음. 예를 들어, 암호 기반 인증, 생체 인증(지문), OTP(One-Time Password), 또는 LDAP 등.

PAM의 구성 요소

  1. PAM 모듈:
    • PAM 모듈은 인증 작업을 처리하는 실제 코드입니다.
    • 모듈은 동적으로 로드되며 특정 인증 작업을 수행합니다.
    • 예시:
      • pam_unix.so: 전통적인 UNIX 기반 암호 인증.
      • pam_ldap.so: LDAP 서버를 통해 인증.
      • pam_tally2.so: 로그인 실패 횟수를 기록하고 잠금.
  2. PAM 설정 파일:
    • /etc/pam.d/ 디렉터리에 각 서비스별로 PAM 설정 파일이 존재.
    • 예: /etc/pam.d/sshd는 SSH 서비스의 PAM 인증 설정.
    • 설정 파일 형식:
      <module type> <control flag> <module path> <module arguments>
      
  3. 서비스:
    • SSH, sudo, 로그인 세션 등 PAM 설정이 적용되는 개별 애플리케이션 또는 서비스.

PAM 설정 파일 형식

auth       required   pam_unix.so
account    required   pam_unix.so
password   required   pam_unix.so
session    optional   pam_motd.so motd=/etc/motd

필드 설명:

  1. Module Type:
    • PAM 모듈이 수행할 작업 유형.
      • auth: 사용자 인증(암호 확인 등).
      • account: 계정의 유효성 확인(잠금 상태, 만료 여부).
      • password: 비밀번호 변경 시 사용.
      • session: 세션 관리(로그인 후 메시지 출력, 환경 설정).
  2. Control Flag:
    • 모듈의 동작 결과가 전체 인증 결과에 미치는 영향.
      • required: 실패하면 전체 인증 실패.
      • requisite: 실패하면 즉시 인증 실패(다른 모듈 실행 중단).
      • sufficient: 성공하면 즉시 인증 성공(다른 모듈 실행 중단).
      • optional: 성공 여부가 전체 인증 결과에 큰 영향을 미치지 않음.
  3. Module Path:
    • PAM 모듈의 경로(예: /lib/security/pam_unix.so).
  4. Module Arguments:
    • 모듈에 전달할 추가 설정(예: nullok, debug 등).

PAM의 주요 기능

  1. 사용자 인증:
    • 비밀번호 확인, 토큰 인증, 생체 인증 등 다양한 인증 방식 지원.
  2. 계정 관리:
    • 계정 잠금, 만료일 설정, 허용된 로그인 시간 관리.
  3. 비밀번호 관리:
    • 비밀번호 복잡성 검사, 만료일 설정, 변경 기록 관리.
  4. 세션 관리:
    • 로그인 후 특정 작업 수행(예: MOTD 표시, 사용자 환경 설정).

PAM 예제: SSH 서비스

파일: /etc/pam.d/sshd

auth       required   pam_sepermit.so
auth       include    password-auth
account    required   pam_nologin.so
account    include    password-auth
password   include    password-auth
session    required   pam_selinux.so close
session    required   pam_loginuid.so
session    optional   pam_keyinit.so force revoke
session    include    password-auth

설명:

  • auth required pam_sepermit.so: SSH를 시작하기 전에 SELinux 권한을 확인.
  • auth include password-auth: /etc/pam.d/password-auth의 설정 포함.
  • account required pam_nologin.so: 시스템이 유지보수 모드일 때 로그인 금지.
  • session required pam_selinux.so close: 세션 종료 시 SELinux 설정 초기화.

PAM을 활용한 사용 사례

  1. 로그인 실패 시 계정 잠금:
    • /etc/pam.d/common-auth에 다음 설정 추가:
      auth required pam_tally2.so deny=5 unlock_time=600
      
      • 5회 실패 시 계정을 잠금.
      • 10분 후 잠금 해제.
  2. OTP 기반 인증 추가:
    • pam_google_authenticator.so를 활용하여 OTP 인증 구현.
    • /etc/pam.d/sshd에 다음 추가:
      auth required pam_google_authenticator.so
      
  3. 비밀번호 복잡성 요구:
    • /etc/security/pwquality.conf 설정을 활성화:
      minlen = 12
      dcredit = -1
      ucredit = -1
      

PAM의 장점

  1. 모듈화: 다양한 인증 방식을 쉽게 추가하거나 변경 가능.
  2. 유연성: 각 서비스별로 고유한 인증 정책 설정 가능.
  3. 확장성: 생체 인증, OTP 등 새로운 기술과의 통합 가능.

PAM의 단점

  1. 복잡성: 설정 파일이 많고 잘못 구성하면 인증 문제 발생.
  2. 디버깅 어려움: PAM 오류의 원인을 파악하기 어려운 경우가 있음.

PAM은 리눅스의 강력한 인증 프레임워크로, 시스템 보안을 강화하고 다양한 인증 요구사항을 충족할 수 있는 핵심 도구입니다. 😊

 

 

 

 

 

PAM 모듈을 사용하여 로그인을 금지할껀데,

이건 로컬 특정 계정 로그인 허용 설정

 

 

요건 특정 계정 허용하는 정책을 gedit 이용해서 login파일에 구문 집어넣음

 

 

 

auth required pam_listfile.so item=user sense=allow file=/etc/loginuser onerr=succeed

 

허용 계정들 추가해주기, 참고로 root빼면 리눅스 다시 설치해야함 ㅋㅋㅋㅋ메모장에 root빠져있는 캡쳐인데, 이후에 집어넣음

 

 

참고로 저 user명은 조장들, 선생님 계정이라 난 숙숙 다 잘들어가졌다

 

[root@R91-03 pam.d]# gedit login
[root@R91-03 pam.d]# gedit /login-->하면 새로 메모창 열림 /경로이슈

#%PAM-1.0
auth       substack     system-auth
auth       include      postlogin
account    required     pam_nologin.so
account    include      system-auth
password   include      system-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      system-auth
session    include      postlogin
-session   optional     pam_ck_connector.so

이케 두번째 라인에 구문 추가할꼬임

#%PAM-1.0
auth required pam_listfile.so item=user sense=allow file=/etc/loginuser onerr=succeed
auth       substack     system-auth
auth       include      postlogin
account    required     pam_nologin.so
account    include      system-auth
password   include      system-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      system-auth
session    include      postlogin
-session   optional     pam_ck_connector.so


auth 
authentication 인증
authorize 허용하다

required 규칙에 맞지않으면 거부해

so가 실행파일이에요. 로그인을 허용할 수 있게끔 구동하는 실행파일

item은 유저 대상으로 할꺼에요

sense=allow 유저(계정)을 허용하는 정책이고 얘는 요 파일 file=/etc/loginuser로 할꺼야

/etc/loginuser (계정 1개당 한줄씩 등록)

여기서 만약 user1, user2 등록하면 user1이랑 user2가
요 정책 넘어서 허용되는거임ㅇㅋ?

#root#필수로 추가!해야함! 가장!중!요!

user0 (선생님^^)
user3
user4
user6
user11
user14
user17
만 허용할꺼에요 (각 조장들임)

못들어오는 나머지는 안쓰면 됩니다 
단! root 루트도 무조건 포함 
why? root 안넣으면 root로 못들어옴;; 이건 복구모드로도
안됨;;리눅스 다시 깔아야함;; ㄷㄷ 엄청난 pam


[root@R91-03 pam.d]# gedit login
[root@R91-03 pam.d]# ls /etc/loginuser
ls: cannot access '/etc/loginuser': 그런 파일이나 디렉터리가 없습니다

작업전 파일 있는지 없는지 확인하는거임
이거 안할꺼면, 이 파일 지워야함, 안지우면 동작하는거니까
ㅇㅋ?

파일하나당 계정 한개씩 

참고로 난 user3라서 가능 ㅋ

 

 

 


 


PAM 모듈을 사용하여 로그인을 금지할껀데,

이건 로컬 특정 계정 로그인 차단 설정

 

위에 허용 정책은 #주석처리하고, 차단 정책 구문 집어넣기

 

차단 계정들, 만약 여기에 root집어넣으면 이제 어질어질해지는거다, 리눅스 다시 깔아볼래?

 

잘 막혀있다. 차단 안된 user5부터 로그인이 잘된다

 

 

pam 기존에 있는 환경변수값을 무시하구, 특정 계정 로그인 차단 관리정책을 추가해서 차단하는거임


#auth required pam_listfile.so item=user sense=allow file=/etc/loginuser onerr=succeed
auth required pam_listfile.so item=user sense=deny file=/etc/nologinuser onerr=succeed

 


 

PAM 모듈을 사용하여 로그인을 금지할껀데,

이건 원격 [Telnet] 특정 계정 로그인 차단 설정

 

실습 전 체크

systemctl status telnet.socket
systemctl start telnet.socket
systemctl enable telent.socket

 

 

사진을 보면 알겠찌만 onerr인데 oner 오타 났다. 어쩐지 안되더라...후...나중에 수정 하고 잘됨 ㅋㅋ

 

 

telnet 허용할 유저들 root, user1, user2

 

 

#telnet login allow
auth required pam_listfile.so item=user sense=allow file=/etc/loginuser onerr=succeed
#telnet login deny
auth required pam_listfile.so item=user sense=deny file=/etc/loginuser onerr=succeed

 

gedit remote 파일을 열어서 이걸 추가해준다

그리고 로컬해서 했던것처럼 gedit /etc/loginuser 파일에서 추가 하거나 지워서 허용, 차단 관리 하기

 

 

항상 알파벳을 오타를 잘 확인하자

 


 

 

PAM 모듈을 사용하여 로그인을 금지할껀데,

이건 원격 [SSH] 특정 계정 로그인 차단 설정

 

실습 전 체크
systemctl status sshd

 

 

 

 

 

 


systemctl status ssh는 안되고 systemctl status sshd가 되는이유가 뭐야? d는 뭐 약어야?

 

 

 

 

 

리눅스 시스템에서 **systemctl status ssh**와 **systemctl status sshd**가 다르게 작동하는 이유는 서비스 이름과 관련이 있습니다. 간단히 말해, sshd는 **SSH 데몬(Secure Shell Daemon)**을 나타내는 서비스 이름이고, ssh는 시스템에서 별도의 서비스로 설정되지 않았기 때문입니다.


1. sshd의 의미

  • **sshd**는 **"Secure Shell Daemon"**의 약어입니다.
    • Daemon은 백그라운드에서 실행되며 클라이언트 요청을 처리하는 프로세스를 의미합니다.
    • SSH 서버는 클라이언트에서 연결 요청을 수신하고 처리하는 데몬(서비스)이므로, sshd라는 이름을 사용합니다.
    • 기본적으로 SSH 서버는 sshd라는 이름의 시스템 서비스로 설정됩니다.

2. 왜 ssh와 sshd가 다른가요?

  • ssh:
    • SSH 클라이언트를 나타냅니다.
    • 사용자가 다른 시스템에 접속하기 위해 사용하는 명령어(예: ssh user@host).
    • 이는 클라이언트 프로그램으로, 서버에서 실행되는 데몬과는 다릅니다.
    • 따라서 systemctl에서 **ssh**라는 이름으로 서비스가 존재하지 않는 경우가 대부분입니다.
  • sshd:
    • SSH 서버를 실행하고 관리하는 데몬입니다.
    • 클라이언트 연결 요청을 수신하고 인증 과정을 처리하며, 원격 명령어 실행이나 파일 전송 서비스를 제공합니다.
    • 시스템 서비스로 설정되어 있으며, systemctl 명령으로 상태를 확인할 수 있습니다:
      systemctl status sshd
      

3. 확인 방법

  • 현재 실행 중인 SSH 관련 서비스를 확인하려면 다음 명령어를 사용합니다:출력 예시:
  • sshd.service loaded active running OpenSSH Daemon
  • systemctl list-units | grep ssh
  • sshd 서비스가 활성화되었는지 확인하려면:
  • systemctl is-active sshd
  • sshd 서비스가 설치되어 있는지 확인하려면:
  • systemctl list-unit-files | grep sshd

4. sshd 관련 파일

  • SSH 데몬(sshd)은 다음과 같은 파일과 설정을 기반으로 동작합니다:
    • 설정 파일: /etc/ssh/sshd_config
      • SSH 서버의 동작을 정의합니다(포트 번호, 인증 방법 등).
    • 실행 파일: /usr/sbin/sshd
      • SSH 데몬의 실행 파일.
    • 로그 파일: /var/log/auth.log (또는 /var/log/secure):
      • SSH 접속 기록과 오류 로그.

5. 요약

  • sshd는 SSH 서버(데몬)를 의미하며, 백그라운드에서 클라이언트 연결을 처리하는 역할을 합니다.
  • ssh는 SSH 클라이언트를 나타내며, 서비스 이름으로 등록되지 않았습니다.
  • d는 **"daemon"**의 약자로, 서버 프로세스를 나타냅니다.

이를 통해 SSH 서버의 동작과 클라이언트 명령어의 차이를 이해할 수 있습니다. 😊

 

 

sshd 정책 허용 디나이

 

 

#sshd login allow
auth required pam_listfile.so item=user sense=allow file=/etc/loginuser onerr=succeed
#sshd login deny
auth required pam_listfile.so item=user sense=deny file=/etc/loginuser onerr=succeed

 

는 안된다 ㅋㅋㅋ무슨 문제냐 ㅋㅋㅋ로키야!!알려줘!!!

 

 

 

 

아 원인을 찾았다.

/etc/loginuser 에서 유저를 추가해줘야하는데

/etc/pam.d/loginuser에서 유저 추가해놓고 안된다 ㅇㅈㄹ ㅋㅋㅋㅋ하고있었음

제대로 추가해주니까 잘 먹힌다 ^^

 

항상 경로를 잘 확인하자

 


오후 수업 네트워크 newlab 어제 한 Frame-Relay NBMA P,M 실습

 

템플릿

 

 

이를 바탕으로 작업
네트워크 영역

 

R1은 R2,R3,R4 다 가능 

R2,R2은 서로 통신X (R1에게 정보 못받음X NBMA라서 브로드캐스트 안받아서 서로 정보를 모르고 R1만 암)

R4는 R1,R2,R3다 가능 WHY? (Point to point라 브로드캐스트 받아서, R1한테 R2,R3 정보를 다 받음)

 

new lab Frame-realy (NBMA) point to point, Multipoint

PC1
ip 172.16.1.1/24 172.16.1.254
PC2
ip 172.16.1.2/24 172.16.1.254
PC3
ip 172.16.2.3/24 172.16.2.254
PC4
ip 172.16.2.4/24 172.16.2.254
PC5
ip 172.16.3.5/24 172.16.3.254
PC6
ip 172.16.3.6/24 172.16.3.254
PC7
ip 172.16.4.7/24 172.16.4.254
PC8
ip 172.16.4.8/24 172.16.4.254

R1

conf t
int e0/0
ip add 172.16.1.254 255.255.255.0
no sh

int s2/0
no sh

encapsulation frame-relay
ip add 172.16.123.1 255.255.255.0
frame-relay map ip 172.16.123.2 102 broadcast
frame-relay map ip 172.16.123.3 103 broadcast

int s2/0.14 p
ip add 172.16.14.1 255.255.255.0
frame-relay interface-dlci 104

router rip
network 172.16.0.0
version 2
no auto-summary
end
copy r start

R2


conf t
int e0/0
ip add 172.16.2.254 255.255.255.0
no sh

int s2/0
no sh
encapsulation frame-relay
ip add 172.16.123.2 255.255.255.0
frame-relay map ip 172.16.123.1 201 broadcast


router rip
network 172.16.0.0
version 2
no auto-summary
end
copy r start


R3

conf t
int e0/0
ip add 172.16.3.254 255.255.255.0
no sh


int s2/0
no sh
encapsulation frame-relay
ip add 172.16.123.3 255.255.255.0
frame-relay map ip 172.16.123.1 301 broadcast


router rip
network 172.16.0.0
version 2
no auto-summary
end
copy r start

R4

conf t
int e0/0
ip add 172.16.4.254 255.255.255.0
no sh


int s2/0
no sh
encapsulation frame-relay

int s2/0.14 p
ip add 172.16.14.4 255.255.255.0
frame-relay interface-dlci 401

router rip
network 172.16.0.0
version 2
no auto-summary
end
copy run start

 

템플릿

 

FRSW 포트 설정

 

이를 바탕으로 작업

 

 

올핑 잘감
R1 sh ip ro
R2 sh ip ro
R3 sh ip ro

 

 

R4 sh ip ro

 

 

PC1
ip 172.16.1.1/24 172.16.1.254
PC2
ip 172.16.1.2/24 172.16.1.254
PC3
ip 172.16.2.3/24 172.16.2.254
PC4
ip 172.16.2.4/24 172.16.2.254
PC5
ip 172.16.3.5/24 172.16.3.254
PC6
ip 172.16.3.6/24 172.16.3.254
PC7
ip 172.16.4.7/24 172.16.4.254
PC8
ip 172.16.4.8/24 172.16.4.254


R1

conf t
int e0/0
ip add 172.16.1.254 255.255.255.0
no sh

int s2/0
no sh

encapsulation frame-relay

int s2/0.12 p
ip add 172.16.12.1 255.255.255.0
frame-relay interface-dlci 102

int s2/0.13 p
ip add 172.16.13.1 255.255.255.0
frame-relay interface-dlci 103

int s2/0.14 p
ip add 172.16.14.1 255.255.255.0
frame-relay interface-dlci 104

router rip
network 172.16.0.0
version 2
no auto-summary
end
copy r start


R2

conf t
int e0/0
ip add 172.16.2.254 255.255.255.0
no sh

int s2/0
no sh


encapsulation frame-relay

int s2/0.12 p
ip add 172.16.12.2 255.255.255.0
frame-relay interface-dlci 201

int s2/0.23 p
ip add 172.16.23.2 255.255.255.0
frame-relay interface-dlci 203

int s2/0.24 p
ip add 172.16.24.2 255.255.255.0
frame-relay interface-dlci 204

router rip
network 172.16.0.0
version 2
no auto-summary
end
copy run start

R3

conf t
int e0/0
ip add 172.16.3.254 255.255.255.0
no sh


int s2/0
no sh


encapsulation frame-relay

int s2/0.13 p
ip add 172.16.13.3 255.255.255.0
frame-relay interface-dlci 301


int s2/0.23 p
ip add 172.16.23.3 255.255.255.0
frame-relay interface-dlci 302


int s2/0.34 p
ip add 172.16.34.3 255.255.255.0
frame-relay interface-dlci 304


router rip
network 172.16.0.0
version 2
no auto-summary
end
copy run start


R4


conf t
int e0/0
ip add 172.16.4.254 255.255.255.0
no sh

int s2/0
no sh


encapsulation frame-relay

int s2/0.14 p
ip add 172.16.14.4 255.255.255.0
frame-relay interface-dlci 401

int s2/0.24 p
ip add 172.16.24.4 255.255.255.0
frame-relay interface-dlci 402


int s2/0.34 p
ip add 172.16.34.4 255.255.255.0
frame-relay interface-dlci 403

router rip
network 172.16.0.0
version 2
no auto-summary
end
copy run start

 

 

Static Routing

 

 

캬 선생님 명강의 미쳤다. 이게 스태틱...? 10분만에 설명하는 선생님..이게 ~교육이다~

 

 

PC1
ip 172.16.1.1/24 172.16.1.254
PC2
ip 172.16.1.2/24 172.16.1.254
PC3
ip 172.16.2.3/24 172.16.2.254
PC4
ip 172.16.2.4/24 172.16.2.254
PC5
ip 172.16.3.5/24 172.16.3.254
PC6
ip 172.16.3.6/24 172.16.3.254

R1

conf t
int e0/0
ip add 172.16.1.254 255.255.255.0
no sh

int s2/0
ip add 172.16.12.1 255.255.255.0
no sh 
end
copy r start

conf t
ip route 172.16.2.0 255.255.255.0 172.16.12.2
ip route 172.16.3.0 255.255.255.0 172.16.12.2
ip route 172.16.23.0 255.255.255.0 172.16.12.2

end
copy r start

sh ip route

했을때 r1이랑 직접 연결된건 C로 뜸 
C 172.16.1.0 
C 172.16.12.0
했을때 R1이 잘 모르는거 STATIC으로 연결된 얘들 올라옴
S 172.16.2.0
S 172.16.3.0
S 172.16.23.0

만약 R1만 입력하구 R3를 입력안한다?
그럼 R1핑 갔다가 못 돌아옴 ㅠㅜ
그래서 다 입력 해줘야해요~~

R2

conf t
int e0/0
ip add 172.16.2.254 255.255.255.0
no sh

int s2/0
ip add 172.16.12.2 255.255.255.0
no sh

int s2/1
ip add 172.16.23.2 255.255.255.0
no sh

end
copy r start

conf t

ip route 172.16.1.0 255.255.255.0 172.16.12.1
ip route 172.16.3.0 255.255.255.0 172.16.23.3

end
copy r start


R3

conf t
int e0/0
ip add 172.16.3.254 255.255.255.0
no sh


int s2/1
ip add 172.16.23.3 255.255.255.0
no sh

end
copy r start

conf t

ip route 172.16.1.0 255.255.255.0 172.16.23.2
ip route 172.16.12.0 255.255.255.0 172.16.23.2
ip route 172.16.2.0 255.255.255.0 172.16.23.2


end
copy r start

ip route는 내가 가야할 목적지
R1입장에서는 172.16.2.0 172.16.
R1입장에서는 Interface는 172.16.12.2인거지 거기로 가야 아는거니까

나랑 연결되지않는건 쳐다도 보지말아야해

출발을 못하면 목적지를 몰라요.. Destination unreachable
그럼 등록을 안한거겠찌?

근데 time out이뜬다? 그러면 목적지에서 안보내준거임...


라우터 3개넘어가면 STATIC 잘 안함
머리터지거든!

 

 

 

R1 sh ip route
R2 sh ip ro

 

 

R3 sh ip ro

 

 

sh ip route

했을때 r1이랑 직접 연결된건 C로 뜸 
C 172.16.1.0 
C 172.16.12.0
했을때 R1이 잘 모르는거 STATIC으로 연결된 얘들 올라옴
S 172.16.2.0
S 172.16.3.0
S 172.16.23.0

만약 R1만 입력하구 R3를 입력안한다?
그럼 R1핑 갔다가 못 돌아옴 ㅠㅜ
그래서 다 입력 해줘야해요~~

 

전체 네트워크
172.16.0.0/24

172.16.1.0/24
172.16.2.0/24
172.16.3.0/24
172.16.12.0/24
172.16.23.0/24

 

전체 네트워크
172.16.0.0/24

R1이 알고있는 네트워크
172.16.1.1
172.16.12.1

전체네티워크 - R1이 알고있는 네트워크 빼버리면
R1한테 Static 넣어줘야할 주소들이 나옴
172.16.2.0/24
172.16.3.0/24
172.16.23.0/24

 

전체 네트워크
172.16.0.0/24

R2가 알고있는 네트워크 
172.16.2.0
172.16.12.0
172.16.23.0

전체네트워크 -R2가 알고있는 네트워크

172.16.1.0
172.16.3.0

 

 

전체 네트워크
172.16.0.0/24

R3가 알고있는 네트워크 
172.16.3.0
172.16.23.0

전체네트워크 -R3가 알고있는 네트워크

172.16.1.0
172.16.12.0
172.16.2.0

 

 


 

오늘 메모한거

 

오전 9:24 2024-12-05

오늘은 어제 배웠던 사용자 계정 락하는 방법 8가지 중 7번째 방법을 배워볼거에요~

7. PAM 모듈을 사용하여 로그인을 금지한다!

PAM 모듈은 이중보안임
1. 조건이 맞아도 2.조건이 맞지않으면 금지한다,
1.조건도 맞고 2조건도 맞아야 허용한다 이런st

echo $PATH
env(environment 환경변수들 보여주는거임)
변수값은 대문자로


[root@R91-03 ~]# echo $PATH
/root/.local/bin:/root/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin
[root@R91-03 ~]# env
SHELL=/bin/bash
SESSION_MANAGER=local/unix:@/tmp/.ICE-unix/2210,unix/unix:/tmp/.ICE-unix/2210
COLORTERM=truecolor
HISTCONTROL=ignoredups
XDG_MENU_PREFIX=gnome-
HISTSIZE=1000
HOSTNAME=R91-03
SSH_AUTH_SOCK=/run/user/0/keyring/ssh
XMODIFIERS=@im=ibus
DESKTOP_SESSION=gnome
PWD=/root
LOGNAME=root
XDG_SESSION_DESKTOP=gnome
XDG_SESSION_TYPE=wayland
SYSTEMD_EXEC_PID=2228
XAUTHORITY=/run/user/0/.mutter-Xwaylandauth.JZANY2
GDM_LANG=ko_KR.UTF-8
HOME=/root
USERNAME=root
LANG=ko_KR.UTF-8
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.m4a=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.oga=01;36:*.opus=01;36:*.spx=01;36:*.xspf=01;36:
XDG_CURRENT_DESKTOP=GNOME
VTE_VERSION=6402
WAYLAND_DISPLAY=wayland-0
GNOME_TERMINAL_SCREEN=/org/gnome/Terminal/screen/2f3065e6_c70c_489e_b249_de4bfcad324a
GNOME_SETUP_DISPLAY=:1
XDG_SESSION_CLASS=user
TERM=xterm-256color
LESSOPEN=||/usr/bin/lesspipe.sh %s
USER=
GNOME_TERMINAL_SERVICE=:1.105
DISPLAY=:0
SHLVL=1
QT_IM_MODULE=ibus
XDG_RUNTIME_DIR=/run/user/0
which_declare=declare -f
XDG_DATA_DIRS=/root/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share/:/usr/share/
PATH=/root/.local/bin:/root/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin
GDMSESSION=gnome
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/0/bus
MAIL=/var/spool/mail/root
BASH_FUNC_which%%=() {  ( alias;
 eval ${which_declare} ) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot $@
}
_=/usr/bin/env


[root@R91-03 ~]# echo $HOSTNAME
R91-03


echo 하구 $하구 뒤에는 다 대문자(변수값)
$ ㅇㅇㅇ 하면 ㅇㅇㅇ가 가지고있는 환경변수값을 보여줘
''작은 따옴표 single quotes는 그 특수문자의 의미를 제거해버려요
$가 가지고있는데 숨은 값을 보여주는게 아니라 그냥 $PATH자체 문자가 나옴

[root@R91-03 ~]# echo '$PATH'
$PATH

echo '$PATH' is 하면 이 $PATH 문자열이 가지고있는건 ~이거에요
[root@R91-03 ~]# echo '$PATH' is 
$PATH is

"" 큰 따옴표 double quotes

일부는 동작하게하고, 나머지는 동작못하게함
''는 다 못하게 하는거임

[root@R91-03 ~]# echo "$PATH"
/root/.local/bin:/root/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin


[root@R91-03 ~]# echo '"$PATH"'
"$PATH"
캬 ㅋㅋㅋ

\ Backslash


[root@R91-03 ~]# echo \$PATH
$PATH


예를 들어, 늦잠 대비해서 알람 맞추는데 alarm \alarm이라고하면
컴퓨터에서 삑 소리가남 컴퓨터에서는 알람(알려달라고)이라고 인식하는거임

다음에나오는문자의특별한의미를제거한다=''랑 같네?
근데 이건 한개고 ''는 두개임


내가 사용하고있는 폰트가 한글이면 \원하로 나오고
내가 사용하고있는 폰트가 영문이면 백슬러쉬로 나옴

``backquotes백커터는 특수기호 다 살리는거임


[root@R91-03 ~]# echo "Current directory is `pwd`"
Current directory is /root

pwd가 가진 특수값이 나오는거임 =root


[root@R91-03 ~]# echo 'Current directory is `pwd`'
Current directory is `pwd`

작은 따옴표는 글자 그대로~~~

-----------------------------------------------------------------------------------

cd /etc/pam.d
ls -l

-하이픈이라고 합니다 마이너스, 대쉬도 맞긴한데 보통 하이픈
-하이픈은 파일이라는 뜻이에요 -file~
맨 앞이가-이면 파일

d는 폴더~ directory
리눅스는 파일, 폴더랑 구분하는건 심볼 기호 d -로하는데, 색깔로도 구분함
파랑이는 폴더 흰개는 파일, 하지만 이건 색깔 변경가능해서 이걸로 구분 ㄴㄴ
d f 맨앞에 심볼 기호로 구분해주세요


일반적인 로그인은 아이디랑 passwd만 맞으면 가는데
pam은 아이디랑 비번 맞아도 추가설정한 설정값도 조건에 맞아야 허용

-rw-r--r--. 1 root root 566 11월  7 09:24 su

예를 들어 su에 pam을 추가하면, switch user할때 추가 조건이 붙는 거임


-rw-r--r--. 1 root root 676 11월  7 09:24 login


[root@R91-03 pam.d]# gedit login
[root@R91-03 pam.d]# gedit /login-->하면 새로 메모창 열림 /경로이슈

#%PAM-1.0
auth       substack     system-auth
auth       include      postlogin
account    required     pam_nologin.so
account    include      system-auth
password   include      system-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      system-auth
session    include      postlogin
-session   optional     pam_ck_connector.so

이케 두번째 라인에 구문 추가할꼬임

#%PAM-1.0
auth required pam_listfile.so item=user sense=allow file=/etc/loginuser onerr=succeed
auth       substack     system-auth
auth       include      postlogin
account    required     pam_nologin.so
account    include      system-auth
password   include      system-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      system-auth
session    include      postlogin
-session   optional     pam_ck_connector.so


auth 
authentication 인증
authorize 허용하다

required 규칙에 맞지않으면 거부해

so가 실행파일이에요. 로그인을 허용할 수 있게끔 구동하는 실행파일

item은 유저 대상으로 할꺼에요

sense=allow 유저(계정)을 허용하는 정책이고 얘는 요 파일 file=/etc/loginuser로 할꺼야

/etc/loginuser (계정 1개당 한줄씩 등록)

여기서 만약 user1, user2 등록하면 user1이랑 user2가
요 정책 넘어서 허용되는거임ㅇㅋ?

#root#필수로 추가!해야함! 가장!중!요!

user0 (선생님^^)
user3
user4
user6
user11
user14
user17
만 허용할꺼에요 (각 조장들임)

못들어오는 나머지는 안쓰면 됩니다 
단! root 루트도 무조건 포함 
why? root 안넣으면 root로 못들어옴;; 이건 복구모드로도
안됨;;리눅스 다시 깔아야함;; ㄷㄷ 엄청난 pam


[root@R91-03 pam.d]# gedit login
[root@R91-03 pam.d]# ls /etc/loginuser
ls: cannot access '/etc/loginuser': 그런 파일이나 디렉터리가 없습니다

작업전 파일 있는지 없는지 확인하는거임
이거 안할꺼면, 이 파일 지워야함, 안지우면 동작하는거니까
ㅇㅋ?

파일하나당 계정 한개씩 

참고로 난 user3라서 가능 ㅋ 

pam 기존에 있는 환경변수값을 무시하구, 새로운 조건을 추가해서 차단하는거임


#auth required pam_listfile.so item=user sense=allow file=/etc/loginuser onerr=succeed
auth required pam_listfile.so item=user sense=deny file=/etc/nologinuser onerr=succeed

pam모듈 중
1. 로컬 로그인 정책
2. 원격 로그인정책 [telnet, ssh]



2-1PAM 모듈을 사용하여 로그인을 금지할껀데,
이건 원격 [Telnet] 특정 계정 로그인 차단 설정

체크
systemctl status telnet.socket
systemctl start telnet.socket
systemctl enable telent.socket



#telnet login allow
auth required pam_listfile.so item=user sense=allow file=/etc/loginuser onerr=succeed
#telnet login deny
auth required pam_listfile.so item=user sense=deny file=/etc/loginuser onerr=succeed




-------------------------------------------------------------------------------------------------
2-2PAM 모듈을 사용하여 로그인을 금지할껀데,
이건 원격 [ssh] 특정 계정 로그인 차단 설정


#sshd login allow
auth required pam_listfile.so item=user sense=allow file=/etc/loginuser onerr=succeed
#sshd login deny
auth required pam_listfile.so item=user sense=deny file=/etc/loginuser onerr=succeed

-----------------------------------------------------------------------------------------------


false 랑 nologin의 차이는
false는 로그인 시도하면 즉시 종료, 사용자는 시스템에 접근할 수 없습니다
nologin은 사용자에게 로그인이 불가능하다는 메세지를 제공합니다

LK 명령어 이용하면 잠겼는지 안잠겼는지 확인가능 

passwd -l 비밀번호를 잠가 로그인만 막고싶을때
usermod -L 계정 자체를 잠가 비밀번호 여부와 관계없이 인증을 차단하고 싶을때

차단 chage -E 만료일 계정명 혹은 chage -E 0 계정명
해제 chage -E '' 계정명 혹은 chage -E -1 계정명

grep user0 /etc/passwd

/bin/bash 로그인 셀을 할당해주는거임, 그래서 user1로 로그인할때 저 셀을 할당받아서
저기 셀에서 명령어를 입력가능하게 되는거임

/bin/false(0)
셀을 못부여받았다는거임, 그래서 명령어를 못쳐서 로그인이 금지되는거임
셀대신에 엉뚱한걸 써버리면 로그인이 안되는거임


-------------------------------------------------------------------------------

오후 1:50 2024-12-05
네트워크 수업 시작

lab 시작 Frame-Relay NBMA. Mutipoint랑 point to point 섞어서 lab 만들꺼임


new lab Frame-realy (NBMA)

PC1
ip 172.16.1.1/24 172.16.1.254
PC2
ip 172.16.1.2/24 172.16.1.254
PC3
ip 172.16.2.3/24 172.16.2.254
PC4
ip 172.16.2.4/24 172.16.2.254
PC5
ip 172.16.3.5/24 172.16.3.254
PC6
ip 172.16.3.6/24 172.16.3.254
PC7
ip 172.16.4.7/24 172.16.4.254
PC8
ip 172.16.4.8/24 172.16.4.254

R1

conf t
int e0/0
ip add 172.16.1.254 255.255.255.0
no sh

int s2/0
no sh

encapsulation frame-relay
ip add 172.16.123.1 255.255.255.0
frame-relay map ip 172.16.123.2 102 broadcast
frame-relay map ip 172.16.123.3 103 broadcast

int s2/0.14 p
ip add 172.16.14.1 255.255.255.0
frame-relay interface-dlci 104

router rip
network 172.16.0.0
version 2
no auto-summary
end
copy r start

R2


conf t
int e0/0
ip add 172.16.2.254 255.255.255.0
no sh

int s2/0
no sh
encapsulation frame-relay
ip add 172.16.123.2 255.255.255.0
frame-relay map ip 172.16.123.1 201 broadcast


router rip
network 172.16.0.0
version 2
no auto-summary
end
copy r start


R3

conf t
int e0/0
ip add 172.16.3.254 255.255.255.0
no sh


int s2/0
no sh
encapsulation frame-relay
ip add 172.16.123.3 255.255.255.0
frame-relay map ip 172.16.123.1 301 broadcast


router rip
network 172.16.0.0
version 2
no auto-summary
end
copy r start

R4

conf t
int e0/0
ip add 172.16.4.254 255.255.255.0
no sh


int s2/0
no sh
encapsulation frame-relay

int s2/0.14 p
ip add 172.16.14.4 255.255.255.0
frame-relay interface-dlci 401

router rip
network 172.16.0.0
version 2
no auto-summary
end
copy run start


--------------------------------------------------------------------------
 (Data Link Connection Identifier) 

PC1
ip 172.16.1.1/24 172.16.1.254
PC2
ip 172.16.1.2/24 172.16.1.254
PC3
ip 172.16.2.3/24 172.16.2.254
PC4
ip 172.16.2.4/24 172.16.2.254
PC5
ip 172.16.3.5/24 172.16.3.254
PC6
ip 172.16.3.6/24 172.16.3.254
PC7
ip 172.16.4.7/24 172.16.4.254
PC8
ip 172.16.4.8/24 172.16.4.254


R1

conf t
int e0/0
ip add 172.16.1.254 255.255.255.0
no sh

int s2/0
no sh

encapsulation frame-relay

int s2/0.12 p
ip add 172.16.12.1 255.255.255.0
frame-relay interface-dlci 102

int s2/0.13 p
ip add 172.16.13.1 255.255.255.0
frame-relay interface-dlci 103

int s2/0.14 p
ip add 172.16.14.1 255.255.255.0
frame-relay interface-dlci 104

router rip
network 172.16.0.0
version 2
no auto-summary
end
copy r start


R2

conf t
int e0/0
ip add 172.16.2.254 255.255.255.0
no sh

int s2/0
no sh


encapsulation frame-relay

int s2/0.12 p
ip add 172.16.12.2 255.255.255.0
frame-relay interface-dlci 201

int s2/0.23 p
ip add 172.16.23.2 255.255.255.0
frame-relay interface-dlci 203

int s2/0.24 p
ip add 172.16.24.2 255.255.255.0
frame-relay interface-dlci 204

router rip
network 172.16.0.0
version 2
no auto-summary
end
copy run start

R3

conf t
int e0/0
ip add 172.16.3.254 255.255.255.0
no sh


int s2/0
no sh


encapsulation frame-relay

int s2/0.13 p
ip add 172.16.13.3 255.255.255.0
frame-relay interface-dlci 301


int s2/0.23 p
ip add 172.16.23.3 255.255.255.0
frame-relay interface-dlci 302


int s2/0.34 p
ip add 172.16.34.3 255.255.255.0
frame-relay interface-dlci 304


router rip
network 172.16.0.0
version 2
no auto-summary
end
copy run start


R4


conf t
int e0/0
ip add 172.16.4.254 255.255.255.0
no sh

int s2/0
no sh


encapsulation frame-relay

int s2/0.14 p
ip add 172.16.14.4 255.255.255.0
frame-relay interface-dlci 401

int s2/0.24 p
ip add 172.16.24.4 255.255.255.0
frame-relay interface-dlci 402


int s2/0.34 p
ip add 172.16.34.4 255.255.255.0
frame-relay interface-dlci 403

router rip
network 172.16.0.0
version 2
no auto-summary
end
copy run start


-----------------------------------------------------------------

Static Route

Static Route는 Network 관리자가 직접 네트워크 경로를 설정해 주어야 하며
네트워크관리자가 원하는대로 패킷을 제어 할 수가있지만 대규모
네트워크에서는Static Route만으로 설정과 관리를 한다는 것은 무리가 있다.

라우터가 동작하는 행위를 routing이라고함
정보를 목적지까지 어디로 어떻게 전달해야 가장 효율적일지 경로를 설정하는걸 routing이라고함
네비~~

라우터는 경로가 아무리 많아도 가장 빠른 길을 골라요
그걸 보여주는 명령어가
sh ip ro에요

라우터는 목적지까지 경로를 모르면 출발을 안해요
스위치는 목적지를 모르면 브로드캐스트를 해요 일단 다보내는거임

그래서 라우터는 해킹하기쉽지않음. 출발 조차 안하니까.
"최 적 경 로"

라우팅 프로토콜. 약속해줘~

RIP
IGRP
EIGRP
OSPF
BGP

Routed Protocol은 인터넷을 연결해주는 장비에용~
MS-> TCP방식
APPLE->APPLE Talk 방식임

그래서 tcp랑 apple talk이랑 통신안됨 근데 현실에서는 삼성노트북이랑 맥이랑 연결되죠?
how? 게이트웨이덕분. 통신사에서 게이트웨이로 연결할 수 있게 해주는거임

1. 제일 빠른길 찾아! 2. 찾음 ㅇㅋ->테이블 올려 넹 3. 그리고 이정보를 옆친구 라우터들한테 광고때려

RIP는 metric으로 hop cout를 선택해요

예) 1~17까지 라우터를 연결한다하면, 최대 15개까지밖에 연결 못해요. 왜냐면, rip는 홉카운터
15개를 못넘어가요. 라우터 15개를 못넘어감. 즉 maximum이 15개라는거임
중간에 있는 사람은 앞 뒤로 15개임. 중간은 다 갈 수 있음 굳

최적의 경로를 결정하는 요소==metric 물ㄹ론 라우터들마다 다 다름

Administrative Distance (AD)

고속도로 도로 번호라고 생각하면 됨
ad값이 작은 순위가 우선순위가 높은거임.  예를 들어 IGRP가 100 이고 RIP 120이면 IGRP가 더 좋음 ㅎㅎ

차비는 0원이라 생각하면됨. 직접 연결된 Interface
static route는 1원
igrp는 100원

Static Routing과 Dynamic Routing
정적		동적

정적은 내가 가고싶은 경로를 사용자,관리자가 입력을 해줘야함
예를 들어 sh ip ro할때 나오는 ip를 내가 일일히 다 적어줘야함
동적은 라우터들끼리 자동으로 교환하는거예요. 그래서 목적지로 핑이 떨어질 수 있음

static routing 소규모에 좋음 장점은 목적지를 직접 다 입력하기때문에 안정적이고, 보안에 좋음(가면 안되는걸 안쓰면되니까)
	단점은 네트워크 주소가 계속바뀐다? 그럼 경로를 맨날 업데이트 해줘야함 human issue...
dynamic routing 장점은 빠르고. 효율적이고, 네트워크가 큰 규모에 적합
	단점은 보안 이슈, 느림


라우터는 static으로 세팅하면, 거기만 감~

---------------------------------------------------------------------------------------------

Static new lab


PC1
ip 172.16.1.1/24 172.16.1.254
PC2
ip 172.16.1.2/24 172.16.1.254
PC3
ip 172.16.2.3/24 172.16.2.254
PC4
ip 172.16.2.4/24 172.16.2.254
PC5
ip 172.16.3.5/24 172.16.3.254
PC6
ip 172.16.3.6/24 172.16.3.254

R1

conf t
int e0/0
ip add 172.16.1.254 255.255.255.0
no sh

int s2/0
ip add 172.16.12.1 255.255.255.0
no sh 
end
copy r start

conf t
ip route 172.16.2.0 255.255.255.0 172.16.12.2
ip route 172.16.3.0 255.255.255.0 172.16.12.2
ip route 172.16.23.0 255.255.255.0 172.16.12.2

end
copy r start

sh ip route

했을때 r1이랑 직접 연결된건 C로 뜸 
C 172.16.1.0 
C 172.16.12.0
했을때 R1이 잘 모르는거 STATIC으로 연결된 얘들 올라옴
S 172.16.2.0
S 172.16.3.0
S 172.16.23.0

만약 R1만 입력하구 R3를 입력안한다?
그럼 R1핑 갔다가 못 돌아옴 ㅠㅜ
그래서 다 입력 해줘야해요~~

R2

conf t
int e0/0
ip add 172.16.2.254 255.255.255.0
no sh

int s2/0
ip add 172.16.12.2 255.255.255.0
no sh

int s2/1
ip add 172.16.23.2 255.255.255.0
no sh

end
copy r start

conf t

ip route 172.16.1.0 255.255.255.0 172.16.12.1
ip route 172.16.3.0 255.255.255.0 172.16.23.3

end
copy r start


R3

conf t
int e0/0
ip add 172.16.3.254 255.255.255.0
no sh


int s2/1
ip add 172.16.23.3 255.255.255.0
no sh

end
copy r start

conf t

ip route 172.16.1.0 255.255.255.0 172.16.23.2
ip route 172.16.12.0 255.255.255.0 172.16.23.2
ip route 172.16.2.0 255.255.255.0 172.16.23.2


end
copy r start

ip route는 내가 가야할 목적지
R1입장에서는 172.16.2.0 172.16.
R1입장에서는 Interface는 172.16.12.2인거지 거기로 가야 아는거니까

나랑 연결되지않는건 쳐다도 보지말아야해

출발을 못하면 목적지를 몰라요.. Destination unreachable
그럼 등록을 안한거겠찌?

근데 time out이뜬다? 그러면 목적지에서 안보내준거임...


라우터 3개넘어가면 STATIC 잘 안함
머리터지거든!