nmcli device 명령어로 device 상태 조회
ens224를 nmtui로 추가함
다시 nmcli 해보면 연결됨으로 변경됨
[root@localhost ~]# ssh admin@10.10.12.252
Unable to negotiate with 10.10.12.252 port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1
[root@localhost ~]# ssh -V
OpenSSH_8.0p1, OpenSSL 1.1.1k FIPS 25 Mar 2021
취약한 레거시 알고리즘(sha1)만 지원하는 호스트와 연결이 거부됨.
연결할 호스트의 버전을 최신으로 업데이트 하거나 추가작업 필요
디피헬만
A = g의 a제곱 mod p
B = g의 b제곱 mod p
B의 a제곱 mod P = A의 b제곱 mod p 동일
취약한 버전과 ssh 키 교환 하는법
1) ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 admin@주소
+ ssh 상세정보는 localhost -v, -vv, -vvv, -vvvv 상세정보 확인 가능
2) vi $HOME/.ssh/config 파일에 키 교환 방법 저장
( 내용 : Host 접속할호스트주소
KexAlgorithms +diffie-hellman-group1-sha1 )
# tree .ssh
.ssh
├── config
└── known_hosts
.ssh 폴더에 키 저장됨.
MRTG 트래픽 모니터링 네트워크 트래픽을 모니터링하고 시각화하는 오픈 소스 소프트웨어 도구
SNMP를 사용하여 네트워크 장비에서 트래픽 데이터 수집
그래프로 변환하여 웹 인터페이스를 통해 표현
트래픽 모니터링, 데이터 시각화, 멀티 플랫폼 지원, 간편한 설정, 확장성 등.
SNMP
네트워크 장비를 모니터링하고 관리하기 위한 표준 프로토콜
관리자가 네트워크 성능을 모니터링하고 장비의 문제를 진단하며 성능을 최적화할 수 있도록 함
관리시스템NMS와 네트워크 장비 간의 통신을 위해 사용함
UDP 161포트 : SNMP 에이전트
UDP 162포트 : 트랩 포트(NMS로 메시지 보낼때 사용)
구성요소
- SNMP 관리자 : 수집된 데이터를 분석하여 네트워크 모니터링
- SNMP 에이전트 : 장비에 설치된 소프트웨어. 상태와 데이터를 수집해 관리자로 전송
- 관리 정보 베이스 MIB : 장비에서 관리되는 객체들의 데이터베이스. OID로 식별되고 다양한 매개변수와 상태를 나타낸다
동작방식
- GET 요청 : 관리자가 에이전트에게 특정 OID 값 요청
- SET 요청 : 관리자가 에이전트에게 특정 OID 값 설정 요청
- GETNEXT 요청 : 관리자가 에이전트에게 특정 OID 이후의 값 요청 (NIB 트리 탐색)
- TRAP : 에이전트가 관리자에게 특정이벤트 또는 상태변경 알림
버전별차이
v1
- 보안기능 거의 없음, 커뮤니티 스트링 사용하여 인증v2p- 파티 기반 보안 모델. 복잡하고 구현이 어려움v2u- 사용자 기반 보안 모델 사용. v3 모델의 전신이 됨.
v2c
- v1 개선 버전, 커뮤니티 스트링 사용하여 인증. 커뮤니티 기반 보안 모델. 단순하고 구현이 쉬움.
v3
- 보안 기능 강화
- 사용자 기반 보안 모델USM 도입 (메시지 인증, 데이터 암호화, 접근제어)
- username/password 제공
실습환경셋팅
APM 설치 dnf -y install mariadb mariadb-server php-{cli,fpm,zip,gd,mbstring,curl,xml,pear,bcmath,json,pdo} httpd php php-mysqlnd git 웹서버 설정파일 수정 sed -i '43s/<FilesMatch \\.(php|phar)$>/<FilesMatch \\.(php|html|phar)$>/' /etc/httpd/conf.d/php.conf sed -i '902s/;date.timezone =/date.timezone = Asia\/Seoul/' /etc/php.ini sed -i '197s/short_open_tag = Off/short_open_tag = On/' /etc/php.ini sed -i '388isecurity.limit_extensions = .php .html' /etc/php-fpm.d/www.conf 웹서버 스타트 systemctl enable --now php-fpm systemctl enable --now httpd DB 설정 sed -i '21icollation-server=utf8_general_ci' /etc/my.cnf.d/mariadb-server.cnf sed -i '22icharacter-set-server=utf8' /etc/my.cnf.d/mariadb-server.cnf sed -i '23iskip-character-set-client-handshake' /etc/my.cnf.d/mariadb-server.cnf sed -i '24ibind-address=127.0.0.1' /etc/my.cnf.d/mariadb-server.cnf DB 스타트, 패스워드 재설정 systemctl enable --now mariadb mysqladmin -p password '111111' [엔터] cat << EOF > ~/.my.cnf [client] # host = localhost # user = root password = 111111 EOF |
mrtg 설치
dnf -y install net-snmp net-snmp-utils mrtg
vi /etc/snmp/snmpd.conf
com2sec notConfigUser default public
=> com2sec 명령은 보안 이름을 정의함. 주석처리한다.
com2sec local localhost COMMUNITY
com2sec mynetwork NETWORK/24 COMMUNITY
=> COMMUNITY를 public로 변경하여 주석해제. NETWORK/24를 알맞게 수정
com2sec <sec.name> <source> <community>
이런 형식인데 sec.name은 보안이름, source는 요청출처(ip 주소나 범위 등)
community는 커뮤니티 스트링을 의미.
연습용이므로 public
group <group.name> <sec.model> <sec.name>
group MyRWGroup any local
group MyROGroup any mynetwork
any => v2c로 수정
group.name은 보안 그룹 이름
sec.model은 보안 모델
sec.name은 보안 이름
즉 v2c 보안모델로 지정해준것
view all included .1 80
80번 라인 주석해제. all이라는 뷰를 정의한다. MIB 트리의 루트(.1)를 포함하며 80은 특정 서브트리의 깊이를 나타냄
view <view.name> <incl/excl> <subtree> [<mask>]
view.name은 뷰의 이름
incl/excl은 포함, 또는 제외를 지정
subtree는 MIB 트리의 서브트리 지정
mask는 선택사항인데 서브트리의 특정 부분을 지정할 수 있는 마스크.
any => v2c
0 => exact 로 변경
access MyROGroup "" v2c noauth exact all none none
=> MyROGroup그룹에 대해 v2c 보안모델과 noauth 보안수준 사용. all 뷰에 대해 읽기 권한이 있으나 쓰기, 알림 권한은 없음
access <group.name> <context> <sec.model> <sec.level> <prefix> <read> <write> <notif>
context : 컨텍스트 이름 지정
prefix : MIB 트리의 프리픽스 지정
read : 읽기권한 있는 뷰의 이름 지정
write : 쓰기권한 있는 뷰의 이름 지정
notif : 트랩알림 권한 있는 뷰의 이름 지정
저장후 시작
# systemctl enable --now snmpd
# systemctl status snmpd
# systemctl stop firewalld
# netstat -nltpu | grep snmpd
tcp 0 0 127.0.0.1:199 0.0.0.0:* LISTEN 28465/snmpd
udp 0 0 0.0.0.0:161 0.0.0.0:* 28465/snmpd
# snmpwalk -v2c -c public localhost system
로컬호스트로 시스템 가동
snmpwalk -v2c -c public localhost system 옵션
=> v2c 버전, 커뮤니티 스트링 public, localhost 사용
snmpwalk -v2c -c public localhost
=> MIB 트리의 루트에서 시작하여 모든 OID 탐색. 시스템 전체 상태를 확인할때, 어떤 정보가 에이전트에 의해 제공되는지 확인할때.
snmpwalk -v2c -c public localhost system
=> MIB 트리의 system 부분만 탐색. 기본적인 상태와 정보를 빠르게 확인할때
system MIB 그룹 : 시스템의 기본 정보를 포함한다
- sysDescr : 시스템 설명
- sysObjectID : 시스템 객체 ID
- sysUpTime : 업타임
- sysContact : 연락처
- sysName : 이름
- sysLocation : 위치
- sysServices : 서비스
cfgmaker를 사용하여 MRTG의 설정파일을 생성 : /etc/mrtg/mrtg.cfg
cfgmaker
- 자동화된 설정 파일 생성
- 네트워크 장비의 snmp 정보를 기반으로 mrtg 설정 파일을 자동 생성
- SNMP 프로토콜을 사용해 서버, 네트워크 장비 인터페이스 정보 수집
- 다양한 옵션을 제공하여 사용자 지정 가능
# cfgmaker \ --global 'Options[_]: bits,growright' \ --snmp-options=:::::2 \ --ifref=descr \ --ifdesc=descr \ public@대상 IP 주소 > /etc/mrtg/mrtg.cfg |
생성된 파일을 수정
vi /etc/mrtg/mrtg.cfg
WorkDir 수정
mkdir /var/www/html/mrtg
폴더만들고
for i in 1 2 3; do env LANG=C mrtg /etc/mrtg/mrtg.cfg; done
for문 실행. 처음 실행시 에러나지만 두번째 실행시에는 안남.
vi /etc/cron.d/mrtg
*/5 * * * * root LANG=C LC_ALL=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg --lock-file /var/lock/mrtg/mrtg_l --confcache-file /var/lib/mrtg/mrtg.ok |
주기적으로 실행하기위해 cron 폴더에 등록함.
cd /etc/httpd/conf.d/
rm -f mrtg.conf
systemctl restart httpd.service
ls /var/www/html/mrtg/
dnf -y install mc
dnf로 mc를 설치하고
http://192.168.100.10/mrtg/192.168.100.10_ens160.html
나의 ip 주소에 들어가서 확인해본다
5분단위여서 조금 더 기다리니 녹색표시가 생겼다
# LANG=C dnf grouplist Last metadata expiration check: 1:35:57 ago on Sun Jul 28 15:51:35 2024. Available Environment Groups: Server with GUI Minimal Install Workstation Virtualization Host Custom Operating System Installed Environment Groups: Server Installed Groups: Headless Management Available Groups: Container Management .NET Core Development RPM Development Tools Development Tools Graphical Administration Tools Legacy UNIX Compatibility Network Servers Scientific Support Security Tools Smart Card Support System Tools |
트래픽 발생시키기
dnf -y groupinstall "Server with GUI"
dnf로 큰 용량을 설치해본다
Max 43.2 Mb 로 변동되었다.
라우터에 SNMP 설정
conf t
snmp-server community public RO
snmp-server location "Server Room"
snmp-server contact 이메일주소
end
# snmpwalk -v2c -c public 10.10.12.252 | head
SNMPv2-MIB::sysDescr.0 = STRING: Cisco IOS Software, 3700 Software (C3745-ADVENTERPRISEK9_IVS-M), Version 12.4(15)T14, RELEASE SOFTWARE (fc2)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2010 by Cisco Systems, Inc.
Compiled Tue 17-Aug-10 12:55 by prod_rel_tea
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.9.1.110
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (820451) 2:16:44.51
SNMPv2-MIB::sysContact.0 = STRING: admin@linuxmaster.net
SNMPv2-MIB::sysName.0 = STRING: R1.linuxmaster.net
SNMPv2-MIB::sysLocation.0 = STRING: "Server Room"
SNMPv2-MIB::sysServices.0 = INTEGER: 78
=> 설정해준 3700번대 라우터가 확인됨
# snmpwalk -v2c -c public 10.10.12.252 system
# cfgmaker \
--global 'Options[_]: bits,growright' \
--snmp-options=:::::2 \
--ifref=descr \
--ifdesc=descr \
public@10.10.12.252 > /etc/mrtg/mrtg-router1.cfg
# vi /etc/mrtg/mrtg-router1.cfg
# for i in 1 2 3; do env LANG=C mrtg /etc/mrtg/mrtg-router1.cfg; done
# vi /etc/cron.d/mrtg
*/5 * * * * root LANG=C LC_ALL=C /usr/bin/mrtg /etc/mrtg/mrtg-router1.cfg --lock-file /var/lock/mrtg/mrtg_l --confcache-file /var/lib/mrtg/mrtg.ok
내용추가
라우터인 fastethernet 관련 항목이 추가되어있다
ping 10.10.12.252
ping으로 실행해놓고
http://192.168.100.10/mrtg/10.10.12.252_fastethernet0_1.html
접속해본다
스스로 실습 : 스위치를 mrtg로 모니터링
스위치 : 10.10.12.251