출처: https://astrocosmos.tistory.com/202 [ASTROCOSMOS:티스토리] '분류 전체보기' 카테고리의 글 목록 (15 Page) :: 하나둘셋넷
728x90

내용

  • 방화벽 활성화/접근권한 부여
  • 백신 clamav 설치, 검사, 감염 파일 이동/삭제

방화벽 활성화

sudo ufw enable

 

활성화 확인

sudo ufw status

 

UFW 상태 확인

sudo ufw status verbose

 

Putty를 통해 접속이 되는지 확인한다. 에러 메시지가 출력된다.

 

방화벽 비활성화

sudo ufw allow ssh comment 'ssh'

 

Putty를 통해 접속이 가능해진다.

 

22번 포트가 잘 되었는지 확인한다.

sudo ufw status verbose

 

모든 IP에서 접곤하는 22번 포트 접속을 허용해주는 설정이고, 보안에 취약하다.

 

위 SSH 설정을 삭제한다.

sudo ufw delete allow ssh
sudo ufw status verbose

 

현재 접근하고 있는 Local IP에서만 22번 포트 접속을 허용해주도록 설정하기 위해 ip를 ghkrdlsgksek.

cat /var/log/auth* | grep Accepted -a

 

위에서 확인한 IP를 기반으로 방화벽 설정

sudo ufw allow from <위에서 확인한 IP> to any port 22
sudo ufw status verbose

 

백신 설치

sudo apt-get update

 

clamav 설치

sudo apt-get install clamav

 

설치한 프로그램으로 /home 디렉토리와 그 하위 디렉토리 검사 실시

clasmscan -r /home

 

감염된 파일을 /virus 디렉토리로 이동

clamscan -r /home --move=/virus

 

감염된 파일을 삭제

clamscan -r /home --remove
728x90

'리눅스_실습' 카테고리의 다른 글

IT 인프라 실습] RAID 0 구성  (1) 2023.11.09
IT 인프라 실습] 리눅스 명령어  (0) 2023.11.08
728x90

RAID 0를 구성해보자

Virutal Box에서 아래의 경로에 따라 하드 디스크 선택기에 들어가 1GB 하드 디스크를 7개 생성한다.

 

관리자 계정으로 변경한다.

 

우분투에 접속하고

sudo -i

 

명령어를 입력하여 Root(관리자) 계정으로 변경한다.

 

 

fdisk -l 명령어를 통해 파티셔닝 정보를 확인한다.

위에서 정상적으로 디스크가 추가되었다면,

/dev/sdb 부터 /dev/sdh 까지 총 7개의 디스크가 생성된다.

fdisk -l

 

실행 키워드

fdisk /dev/sdb

n, Enter, Enter, Enter, Enter

 

 

Command (m for help) : l
Command (m for help) : fd
Command (m for help) : t

 

sdb ~ sdh까지 동일한 과정을 수행한다.

 

모든 과정이 정상적으로 실행되었다면 아래와 같이 화면이 구성된다.

 

Raid 설정을 하기 위한 패키지 도구 mdadm을 설치한다.

apt-get -y install mdadm

 

/dev/sdb1 /dev/sdc1를 Raid 0 구성하여 /dev/md0라고 생성한다.

mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdb1 /dev/sdc1

 

/dev/md0 를 포맷한다.

mkfs.ext4 /dev/md0

 

/dev/md0 과 마운트(연결)할 디렉토리 생성 및 마운트

mkdir /raid0
mount /dev/md0 /raid0
ls /raid0

 

Raid 구성 확인

mdadm --detail --scan

 

 

수정한 내용 적용

update-initramfs -u

 

디스크 확인

df

728x90

'리눅스_실습' 카테고리의 다른 글

IT 인프라 실습] 방화벽  (0) 2023.11.09
IT 인프라 실습] 리눅스 명령어  (0) 2023.11.08
728x90

리눅스 명령어

ls
디렉토리의 내용을 출력한다

ls -al
추가 옵션

man ls
ls 명령의 매뉴얼을 확인한다.

pwd
현재 어떤 디렉토리에 있는지 출력해준다.

whoami
현재 어떤 계정으로 접속되어 있는지 출력한다

history
이전 명령 수행 로그를 출력해준다.

date
현재 시각을 출력해준다.

clear
화면을 클리어 한다.

echo 문자열
echo hello Aivle

 

 

728x90

'리눅스_실습' 카테고리의 다른 글

IT 인프라 실습] 방화벽  (0) 2023.11.09
IT 인프라 실습] RAID 0 구성  (1) 2023.11.09
728x90

KT Aivle School 에이블스쿨 기자단] 11.06(월)~ 11.12(일) Virtual Box, Cacoo

내용

  • 월요일 오전 외출, 오후에 빡세게 따라잡기
  • Virtual Box 설치
  • Cacoo 실습

월요일 오전 외출, 오후에 빡세게 따라잡기

처음으로 외출을 해봤다

 
병원 예약으로 인해 월요일 오전부터 외출을 했다. 새롭게 배우는 IT 인프라 과목의 첫 시간을 빠지고 시작하여 어려움을 겪었지만, 다행히도 1:1 문의에서 친절한 안내를 받아서 오후에 진도를 빠르게 따라잡을 수 있었다.
 

packet tracer로 ping을 통한 연결을 하고 확인하는 과정이다.

 
 

Virtual Box 설치

가상환경에서 ubuntu를 실행하기 위하여 먼저 Virtual Box를 설치하였다.

KT에서 제공받은 LG 그램을 쓰면 설치된 그대로 사용할 수 있어 편리하지만, 직접 설치할 줄 아는게 중요하다고 생각하여 나는 직접 내 노트북에 설치하여 실습을 진행했다.

Virtual Box라고 구글에 치면 어렵지 않게 설치 사이트를 찾을 수 있다. 실습에는 7.0.8 버전을 다룬다.

 Cacoo 실습 

cacoo 서비스를 이용하면, 무료로 간단하게 그림을 그려보고 공유하고, 이를 이미지로 다운받아서 볼 수 있다.

팀원들과 서비스 제안에 대해 의견을 교류할 때 유용할 수 있을 거라 생각한다.

728x90
728x90

KT Aivle School 에이블스쿨 기자단] 10.30(월)~ 11.05(일) 미프, 에이블데이, 기자단 발표

이번주 미프 훈남들

 

저번 미프에서는 현규님이 멋있게 보였고, 이번 미프에서는 민성님, 현빈님이 멋있다고 느껴졌다.
 

안정적인 발표를 보여준 민성님

월요일 발표 직후 반응

 
발표도 발표지만 마지막 저 멘트가 기억에 남았다.
 

높은 응용력을 보여준 현빈님

 
나는 주어진 과제 따라서 지도 정도까지 그리니까 시간이 끝났는데, Naver API 사용해서 지도까지 그린 걸 보고 대단하다고 생각을 했었다. 기회가 된다면 많이 배워보고 싶네요.

기자단 발표

 


처음에 매니저님한테 메세지를 받았을 때는 DX가 모두 있는 Zoom에서 화면 공유하고 발표하는 알았다. 사람들이 많은 곳에서 발표하면서 그릇을 키워볼까 그냥 가만히 있을까 고민을 했는데, 다시 확인을 해보니 우리반에서 진행하는 걸 알게됐고 이정도면 할만하지 생각하고 하겠다고 말씀을 드렸다.

로젠택배 알림이 떠서 최근에 주문한게 없는데 뭘까..? 생각이 들었었다. 읽어보니 발송인이 AIVEL School로 써있었고 선물은 텀블러였다. 소소하게 기분이 좋았고, 나중에 이 텀블러로 커피를 마신다면 인증 사진을 올려야겠다.

728x90
728x90

스트림릿_input_2

 

import streamlit as st
import pandas as pd
from datetime import datetime

 

st.header('날짜 구간으로 데이터 조회하기')

# streamlit\data_subway_in_seoul.csv  
# 한글 encoding='cp949' 추가하여 읽어오고 확인하기 
df = pd.read_csv('streamlit\data_subway_in_seoul.csv', encoding='cp949' )
# 날짜 필드의 데이터 형식 확인하기
st.write('날짜 필드 형식: ', df['날짜'].dtypes )
# 데이터프레임 내용 확인하기
st.write(df)

# 날짜 컬럼을 string에서 datetime으로 변환하기
df['날짜'] = pd.to_datetime(df['날짜'], format='%Y-%m-%d'  )
# 날짜 필드의 데이터 형식 확인하기
st.write('날짜 필드 형식: ', df['날짜'].dtypes )
# 데이터프레임 내용 확인하기
st.write(df)

# slider를 사용하여 날짜 구간 설정하기
slider_date = st.slider(
    '날짜 구간을 선택하세요 ',
    datetime(2021,1,1), datetime(2021,12,31),            # 날짜 전체 구간 : 2021.1.1~2021.12.31
    value=(datetime(2021, 7, 1), datetime(2021, 7, 31)), # 초기 설정 구간 : 2021.7.1~2021.7.31
    format='YY/MM/DD')                                   # 날짜 형식: YY/MM/DD

# slider_date의 구간 날짜 확인하기
st.write('slider_date[0]: ', slider_date[0], 'slider_date[1]: ', slider_date[1] )

# slider_date의 선택된 시작, 종료 날짜를 start_date, end_date에 저장하기
start_date = slider_date[0]
end_date = slider_date[1]

# slider 날짜 구간으로 df를 읽어서 새 sel_df 으로 저장하고 확인하기
sel_df = df.loc[df['날짜'].between(start_date, end_date)]
st.dataframe(sel_df)


# 파일실행: File > New > Terminal(anaconda prompt) - streamlit run streamlit\4-2.input_ans.py

 

날짜 구간으로 데이터 조회하기

 

 

날짜 형식 datetime으로 변경

 

 

슬라이더를 통해 날짜 구간 설정

 

728x90
728x90

Streamlit

# streamlit 라이브러리와 datetime 모듈 불러오기
import streamlit as st
import numpy as np
import pandas as pd
from datetime import datetime  

st.title('Unit 4. Input Widgets')
st.caption('참조사이트: https://docs.streamlit.io/library/api-reference/widgets')

st.header('1. Button')
if st.button('Say hello'):
    st.write('Hello')
else:
    st.write('Goodbye')

st.header('2. Radio button')
genre = st.radio('좋아하는 영화 장르를 선택하세요',('코메디', 'SF', '액션'))

if genre == '코메디':
    st.write('코메디 유쾌하신 분이시군요')
elif genre == 'SF':
    st.write('저도 SF 좋아합니다')
else:
    st.write('멋지십니다.')       

st.header('3. Checkbox')
agree = st.checkbox('I agree')
if agree:
    st.write('😄'*10) 

st.header('4. Select box')
option = st.selectbox('어떻게 연락 드릴까요?',('Email', 'Mobile phone', 'Office phone'))
st.write('네 ', option, ' 잘 알겠습니다')

st.header('5. Multi select')
options = st.multiselect('좋아하는 색을 모두 선택하세요',
         ['Green', 'Yellow', 'Red', 'Blue'],
         ['Yellow', 'Red'])
st.write('선호 색상:')
for i in options: 
    st.write(i)

st.header('6. Input: Text/Number')

st.subheader('**_text_input_**')
title = st.text_input('최애 영화를 입력하세요 ', 'Sound of Music')
st.write('당신이 가장 좋아하는 영화는 : ', title)

st.subheader('**_number_input_**')
number = st.number_input('Insert a number(1-10)', min_value=1, max_value=10, value=5, step=1)
st.write('The current number is ', number)

st.header('7. Date input')
ymd = st.date_input('When is your birthday',datetime(2000, 9, 6))
st.write('Your birthday is:', ymd)

st.header('8. Slider')

st.subheader('**_Slider- 이전 구간_**')
age = st.slider('나이가 어떻게 되세요 ? ', 0, 130, 25)
st.write('I am ', age, ' years old')

st.subheader('**_최소-최대값 내에서 숫자 사이 구간_**')
values = st.slider('값 구간을 선택하세요 ', 0.0, 100.0, (25.0, 75.0))
st.write('Values: ', values)

st.subheader('**_년 월 일 사이 구간_**')

slider_date = st.slider(
    '날짜 구간을 선택하세요 ',
    # min_value=datetime(2022, 1, 1), max_value=datetime(2022, 12, 31),
    datetime(2022, 1, 1), datetime(2022, 12, 31),
    value=(datetime(2022, 6, 1), datetime(2022, 7, 31)),
    format='YY/MM/DD')
st.write('slider date: ', slider_date)
st.write('slider_date[0]: ', slider_date[0], 'slider_date[1]: ', slider_date[1] )

# 년 월 일 시 사이 구간
# slider_time = st.slider(
#     'Select a range of datetime?',
#     datetime(2022, 1, 1, 0, 30), datetime(2022, 12, 31, 0, 30),
#     value=(datetime(2022, 7, 1, 0, 30), datetime(2022, 10, 31, 9, 30)),
#     format='MM/DD/YY - hh:mm')
# st.write('Slider time: ', slider_time)

# 파일실행: File > New > Terminal(anaconda prompt) - streamlit run streamlit\4-1.input_ans.py

 

 

 

728x90
728x90

스트림릿_map_folium_covid

 

import streamlit as st
import folium
import pandas as pd
map_data = pd.read_csv('.\streamlit\covid_map.csv')
# 1. 타이틀과 캡션 표시하기
# 타이틀 : Covid-19 감염현황
# 캡션 : Displaying geographical data on a map using Streamlit and Folium
st.title('Covid-19 감염현황')
st.caption('Displaying geographical data on a map using Streamlit and Folium')

# 2. checkbox를 이용하여 checkbox 선택여부에 따라
#    write 코드를 사용하여 화면에 데이터프레임 값 나타내기 
if st.checkbox('Display Data'):
    st.write(map_data) 

# folium.Map(): Folium에서 지도 객체를 생성
# location: 지도가 초기에 어떤 위치에서 시작할지를 정의
# map_data['lat'].mean()과 map_data['lon'].mean(): 평균 위도와 경도 위치를 지도 중심으로 설정
# zoom_start: 이 매개변수는 지도의 초기 확대 수준 (default=10, 숫자가 클수록 확대)

my_map = folium.Map( location=[map_data['lat'].mean(), map_data['lon'].mean()], zoom_start=3 )

 

# 지도에 원형 마커와 값 추가
for index, row in map_data.iterrows():       # 데이터프레임 한 행 씩 index, row에 담아서 처리 
    folium.CircleMarker(                     # 원 표시 선언
        location=[row['lat'], row['lon']],   # 원 중심- 위도, 경도
        radius=row['value']/10000,           # 원의 반지름 /10000
        color='pink',                        # 원의 테두리 색상
        fill=True,                           # 원을 채움
        fill_opacity=0.8                     # 원의 내부를 채울 때의 투명도
    ).add_to(my_map)                         # my_map에 원형 마커 추가

    folium.Marker(                           # 값 표시 선언
        location=[row['lat'], row['lon']],   # 값 표시 위치- 위도, 경도
        icon=folium.DivIcon(html=f"<div>{row['name']} {row['value']:,.0f}</div>") # row['value']:,.0f - 천 단위 구분기호 추가
    ).add_to(my_map)                         # my_map에 값 추가


# 지도 그리기
# st.components.v1.html : Streamlit 라이브러리의 components 모듈에서 html 함수 사용
# ._repr_html_() : 지도를 HTML 형식으로 표시
st.components.v1.html(my_map._repr_html_(), width=1000, height=800)


# 파일실행: File > New > Terminal(anaconda prompt) - streamlit run streamlit\7-3.folium_covid_ans.py

728x90
728x90

스트림릿_map_folium

import streamlit as st
import folium
import pandas as pd
map_data = pd.DataFrame({
    'lat': [-34, 49, -38, 59.93, 5.33, 45.52, -1.29, -12.97],
    'lon': [-58, 2, 145, 30.32, -4.03, -73.57, 36.82, -38.5],
    'name': ['Buenos Aires', 'Paris', 'Melbourne', 'St Petersburg', 'Abidjan', 'Montreal', 'Nairobi', 'Salvador'],
    'value': [10, 12, 40, 70, 23, 43, 100, 43] 
})

# folium.Map(): Folium에서 지도 객체를 생성
# location: 지도가 초기에 어떤 위치에서 시작할지를 정의
# map_data['lat'].mean()과 map_data['lon'].mean(): 평균 위도와 경도 위치를 지도 중심으로 설정
# zoom_start: 이 매개변수는 지도의 초기 확대 수준 (default=10, 숫자가 클수록 확대)

my_map = folium.Map( location=[map_data['lat'].mean(), map_data['lon'].mean()], zoom_start=2 )
# 지도에 원형 마커와 값 추가
for index, row in map_data.iterrows():       # 데이터프레임 한 행 씩 index, row에 담아서 처리 
    folium.CircleMarker(                     # 원 표시 선언
        location=[row['lat'], row['lon']],   # 원 중심- 위도, 경도
        radius=row['value'] / 5,             # 원의 반지름
        color='pink',                        # 원의 테두리 색상
        fill=True,                           # 원을 채움
        fill_opacity=1.0                     # 원의 내부를 채울 때의 투명도
    ).add_to(my_map)                         # my_map에 원형 마커 추가

    folium.Marker(                           # 값 표시 선언
        location=[row['lat'], row['lon']],   # 값 표시 위치- 위도, 경도
        icon=folium.DivIcon(html=f"<div>{row['name']} {row['value']}</div>"), # row['name'], row['value'] 표시
    ).add_to(my_map)                         # my_map에 값 추가

 

# 타이틀과 캡션 표시하기
st.title('Map with Location Data')
st.caption("Displaying geographical data on a map using Streamlit and Folium")

# 지도 그리기
# st.components.v1.html : Streamlit 라이브러리의 components 모듈에서 html 함수 사용
# ._repr_html_() : 지도를 HTML 형식으로 표시
st.components.v1.html(my_map._repr_html_(), width=800, height=600)

 

# 파일실행: File > New > Terminal(anaconda prompt) - streamlit run streamlit\7-2.folium_map_ans.py

 

728x90

+ Recent posts