일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 함수 인자값 id
- JSON
- linux
- 설정
- 추천 사이트
- 리눅스
- 순서 보장
- cmd
- BindingResult
- 개발시작전 자세
- 타임리프
- 자바스크립트 인라인
- 룸북
- 하모니카 OS 5
- 타임리프와 스프링
- Java
- 명령어
- 프로젝트 클린
- #{..}
- StringUtils.hasText
- 스프링부트
- js
- Test 룸북 사용하기
- 시퀀스 조회
- 다른사람 프로젝트 수정전 가져야할 자세
- Intellij
- select
- 비밀번호 변경 명령어
- it
- 추천 프로그램
- Today
- Total
웹개발 블로그
[6일차] 0416 본문
■ cut : 주어진 파일에서 특정 부분만 추출해준다.
d(delimiter)로 파일의 구조에서
ㄴ Tab, Space, ,, ;, 등을 지정
f: 특정 열 지정
콜론(델리미터라고 불린다)으로 구분되어 있찌?
etc/passwd에서
=>💥💥사용자 정보를 가지고 있는 /etc/passwd에서 x는 이 사용자의 패스워드를 사용자의 해시된 패스워드를 가지고 있는 /etc/shadow 파일에서 패스워드를 체크한뒤 로그인할 수 있다는 의미. (사용자가 로그온 할떄 /etc/shadow 파일에서 확인 후 로그인 해라)
ㄴ /etc/passwd 파일명만 바뀌어도 로그인이 안되서 재설치를 해야해..
ㄴ snapshot찍어 놓은게 있다면 다행이야. 다시 되돌리면 되니까.
etc/passwd는
root: x: 0: 0: root: /root: /bin/bash
사용자 /etc/shadow에서 패스워드 확인 uid, gid 표시되는 이름 홈디렉터리 사용하는 쉘
ㄴ 첫번째열과 7번째 열
root:$6
$ZjdQ1tyDOJqbV81k$y.4nczzqp.Gh4jjq/Ofg7xb0ojw9DJQzNl7fkpu4dCJcfc3suKPlzFb8Au89g.d/8PK7pg2ua19WqolxI7ked0::0:99999:7:::
사용자 sha512로 암호화됨
salt: 패스워드 해시를 더욱 복잡하게 추가함
~: rootoor의 해시
패스워드의 만료일, .... 정보
diff, cmp, comm은 원본과 비교 파일의 차이를 보인다.
diff --help 해서 사용법을 보는데 -urN을 옵션으로 쓴다.
정규표현식 패턴으로 검색해주는 – grep, fgrep(grep -F), egrep(grep -E)와 pgrep
정규 표현식에서는 원하는 패턴을 잘 짜는 것이 중요한데 수십 ~ 수백 줄 파일을 열고 일일이 원하는 것을 찾아서 수정해야 하는 경우 간단히 한 줄의 명령어로도 해낼 수 있기 때문이다.
💥정규표현식 패턴들
패턴 설명
[aeiou] a, e, i, o, u 중 어느 문자라도 들어있는 것
[a-z] a부터 z 사이의 문자가 들어있는 것. 알파벳 소문자
[a-z][A-Z] a부터 z 사이와 A부터 Z 사이의 문자가 들어있는 것. 알파벳 대소문자
[0-9] 0부터 9 사이의 숫자가 들어있는 것
^[ ], [^ ] ^[ ]는 [ ] 내용으로 시작됨, [^ ]는 [ ] 내용의 부정 <= ^[^#]
^pattern 주어진 패턴으로 시작되는 줄 <= ^#
pattern$ 주어진 패턴으로 끝나는 줄. 단독으로 $를 쓰면 빈 줄 <= #$
^[a-z][0-9]$ 시작은 a부터 z 사이의 문자, 끝은 0부터 9사이의 숫자인 줄
[.], [...] .는 임의의 문자 1개, ...는 임의의 문자 3개 <= [a...e] cf. a???e
pattern+ 이전 패턴과 하나 이상으로 매치되는 어구 <= root+
pattern* 이전 패턴과 매치되지 않는 어구 <= root*
pattern? 이전 패턴과 하나만 매치되는 어구 <= root?
(abc)+ 'abc' 패턴과 하나 이상으로 매치되는 줄. +는 적어도 하나 이상을 의미
()는 여러 정규 표현식을 하나로 묶기도 한다
v 부정의 의미 <= v #는 #이 없는 줄을 보임
c 갯수를 표시 <= c #는 #이 있는 줄의 갯수
| 두 개의 정규 표현식에서 OR 의미
{n}, {n,m} 지정된 정규 표현식에 n번 일치, 최소 n에서 최대 m번 일치
[: ~ :] 클래스
[:alnum:], [:alpha:], [:digit:], [:punt:]
alnum은 영문이나 숫자와 일치, alpha는 영문자와 일치, digit는 숫자와 일치
punt는 구두점(, . )과 일치
=>[a-e]는 {abcde}로써 a,b,c,d,e 중 하나, d..은 d로 시작되는 세 문자, [Dd]atabase는 D나 d로 시작되는 database,
[ak]는 a나 k 중 하나,
^a는 a로 시작, ^$는 모든 빈줄, #$는 #으로 끝나는 줄,
a$는 a로 끝남,
v #은 #이 없는 줄 보임,
c #은 #이 있는 줄의 갯수를 나타낸다.
a. ls doc[A-E]는 A, B, C, D, E 중 일치되는 것 모두
b. ls doc[AE]는 A나 E 중 일치되는 것 모두
c. ls doc{A..E}는 A로 시작 E로 끝나는 총 4자리 것
d. ls doc{AE}는 AE로 된 것
su(shift user) 는 현재 사용자에서 다른 사용자로 변환(전환)할 때 사용되는데
centos 사용자에서
su (root 생략가능) 하고 root의 패스워드를 주면 현재 디렉터리에서 사용자만 root로 전환된다.
su - (root) 하고 root의 패스워드를 주면 root 사용자로 전환되면서 root 사용자의 홈디렉터리 /root로 전환된다.
녹화 음질이 다 꺠져버렸다,..
=>4/17날 오는 메시지링크 들어가서 마저 보자.
[두번째 시간]
💥해킹/보안에 최종 목적은
ㄴ root/Administrator의 패스워드를 알아내는 것.
ㄴ 데이터베이스 해킹도 MySQL/Oracle/MS SQL 등이 단독으로 실행되지 못하고 Windows/Linux/UNIX 운영체제 위에서 실행되고 있기 때문에 이들의 기본이 되는 Windows/Linux/UNIX 운영체제의 관리자 패스워드를 알면 이 데이터베이스에도 들어갈 수 있다.
ㄴ 그래서 Oracle에서는 Windows user/Orcale user를 분리해서 운영하고 있다.
=> 윈도우 운영체제위에서 작동하잖아?(한글, 워드, 데이터베이스) 그치?
=> 최근의 Cloud에서는 데이터베이스를 운영할 때 -e $USER=root -e $PASSWORD=rootoor 식으로 환경변수로 주어서 실행시킨다. 패스워드가 시스템에 저장되어 있지 않기 때문에 매우 보안이 좋아진다. (클라우드는 단독으로 실행되기 때문)Reverse Engineering(역공학)을 이용하면 시스템에 저장되어 있는 패스워드를 메모리에서 추출할 수 있다.
명령어 : yum -y install httpd
ㄴ 테스트할 파일 다운로드~
리눅스 패키지 설치에서 dependency는 해당 파일과 연관된 파일을 말하는데 '아래 한글'이면 인쇄하기 위해서 필요한 '프린터 드라이버'나 '각종 글꼴'들을 말한다.
이전에는 이들 파일을 일일히 설치해 주어야만 했지만
현재는 yum, apt 명령어로 어느 패키지를 설치하면 알아서 종속적 파일들도 설치해준다.(매우 편리하다)
=> 파이썬과 같은 오픈 소스에서는 연관된 파일들의 버전 관리가 매우 까다롭다.
이동 해야하는 곳
💥 cd /etc/httpd/conf
■ tr set1 set2 해서 set1을 set2로 변경해주는데 [: :] 클래스를 사용하면 더욱 편리하게 작업할 수 있다. 클래스는
alnum, alpha, blank, lower, digit, lower, upper, print, space, special, xdigit를 사용할 수 있다.
■ egrep [옵션] [패턴] 파일 grep과 거의 유사하므로 grep을 참고하자. egrep 명령어는 정규표현식으로 작성한 검색어를 파일 내에서 검색한다.
ㄴ egrep는 grep -E와 동일하다.
egrep -v '^[[:space:]]*(#.*)?$' httpd.conf | cat -n
egrep -v '^[[:space:]]*(#.*)?$' httpd.conf > httpd.conf.ori
■ sed는 파일을 갈무리해서 보이는데(변경도 가능) 한 줄씩 읽어서 작업을 수행하기 때문에 버퍼 메모리를 적게 사용해서. ....못적음
■
[세번쨰 시간]
abc.txt파일이 없어서 ㅎㅎ. 강의 다시보고 만들고 따라해보자
sed G abc.txt | cat -n
sed -e '2,4d' abc.txt | cat -n
sed -e 's/b/x/g' abc.txt | cat -n
sed -i '2,5,s/b/Z/g' abc.txt | cat -n
cat -n abc.txt
sed -n '2,4p' abc.txt | cat -n
sed -e '/^$/d' httpd.conf && sed -e '/^#/d' httpd.conf | cat -n <-- 빈줄도 제거하고 싶었는데 안되서 패스하신다고 하심 ㅋㅋ
ㄴ sed -e '/#/d;/^ *$/d' httpd.conf | cat -n <-- 이게 맞나
chmod & chown
■💥chmod는 파일/디렉터리에 대한 권한 설정
ㄴ 문자식 : u+x, g-x, o+x-w
ㄴ 숫자식(뉴메릭) : 777에서 조절하는데 r(4)+w(2)+x(1)이다.
=>chmod +x abc.txt하면 실행파일이 된다. +x는 u+x, g+x, o+x인데 a+x로 표시하기도 한다.(한번에 변경)
(기본적으로는 user-group-other로 표시된다.)
디폴트로 파일을 생성하면 644이고 디렉터리는 755이다.
=> 여기에 맨 앞에 4(setUID), 2(setGID), 1(stickBit)를 추가해줄 수 있다.
=> /etc/bashrc에서 보면 umask에 022로 되어 있어서 777-022=755, 파일 생성시 666-022=644가 되는것!
-> 변경해볼까?
-> 변경해볼까? chmod 600 ABC
■ chown는 파일/디렉터리에 대한 소유권 설정
user:group으로 지정하면 된다.
사용자 생성/삭제 등
■ adduser(=useradd) :
adduser park -u 600 (-p park) -d /home/park –s /bin/bash && echo 'park:park' | chpasswd -c SHA512
=> (괄호뺴고 해도 난 안되네 ㅎㅎ) adduser park -u 600 -p park -d /home/park –s /bin/bash && echo 'park:park' | chpasswd -c SHA512
ㄴ adduser kim -u 601 -p kim -d /home/ko -s /bin/bash && echo 'ko:ko" | chpasswd -c MD5
ㄴㄴ 저번시간에 만든 ko랑 관계가 있다!! 근데 좀 이상하네 뭘 입력하고 떠서 ctrl+c해서 종
=>별도의 패스워드 없이 바로 만들 수 있음.
사용자 지우기
■ deluser 사용자명
=> deluser kim
iF) 사용자가 출산 휴가 등 일시적으로 회사를 비울때도 있지? 무조건 삭제가 답이 아닐때🔽
0416(4) 이어서보기
■ 사용자 생성 시 자동으로 관여되는 파일들
1) /etc/default/useradd에 의해서 사용자의 홈디렉터리, 사용 쉘, GID등이 지정된다. => /etc/skel 파일과 관련됨.
2) /etc/login.defs 파일에 의해서 사용자의 패스워드에 대한 설정등이 지정된다.
3) /etc/skel 디렉터리에 의해서 사용자 홈 디렉터리에 들어가서 속성이 지정된다. <-- 💥보안상 이 디렉터리가 중요
[root@centos1 conf]# cat /etc/default/useradd
[root@centos1 conf]# cat /etc/login.defs
/etc/skel 폴더에 mal.txt만들기
사용자 만들기(/etc/passwd와 /etc/shadow에 영향을 미친다!)
=> 강의보면서 다시 정리하자
***패스워드 변경에 대해서 관리자는 일반 사용자와 다른 권한을 가지고 있는데
일반 사용자는 자신의 패스워드 변경 시 이전 패스워드를 알아야 새로운 패스워드로 변경할 수 있지만
관리자는 사용자의 패스워드 변경시 이전 패스워드를 묻지 않는다.
ㄴ 단지 새로운 패스워드만 설정할 수 있다.
[네번째시간]- 0416(5)
+ 정리하는 부분이라서 강의정리 파일 꼭 붙여넣기!
centos 사용자가 /etc/shadow 파일은 못봐!!
근데?!!
이렇게 관리자가 pwunconv해준다면?
다시 centos사용자로 돌아와서 head -5 /etc/passwd 보게되면
x부분에 해시값이 들어가는거지
다시 pwconv로 돌아가려면
x부분에 해시값이 이제 안보이지?
(보안상 굉장히 중요해!! pwunconv)
■ usrmod는 기존 사용자의 쉘, 홈 디렉터리 등을 변경해준다.
=> Linux에서는 사용자를 생성하면 자신의 이름의 그룹에 속하게 된다.
***gropu을 왜만들까? 그룹에 권한을 준 뒤, 그룹에 사용자를 넣어서 해당 그룹의 모든 사용자들이 동일한 권한을 가지게한다.(ex 경리과 사람들은 근무자들에 월급명세서를 볼 수 있겠지?)
ㄴ그룹 생성 -> 그룹에 권한(r,w,x) 부여 -> 그룹에 사용자들을 넣음.
※ 연결되서 보면은 => 윈도우 서버(글로벌 로컬 그룹, 유니버셜 그룹 등), db (db에서는 Role로 권한을줘)
39분부터~
+
외국에서 알바뛸때
한국에서 네일 공부하고 가면 굳!
[다섯번째 시간] -6
관리자 root는 자신의 이름 root로 쉘 에서 작업할 시
cat -n /etc/sudoers
sed -i '98a/centos ALL=(ALL) ALL' /etc/sudoers
=> 98줄 뒤에 추가
강의 다시 보기..
sudo usermod -f wheel -a hong (hong 만들지 않았음, 강사님은 만드심)
💥su -c 'head -10 /etc/shadow'
sudo sed -i '109s/^#//' /etc/sudoers
=> 109줄에 있는 주석 해제
sudo sed -n '109p' /etc/sudoers
=> 109줄 확인
(어려운 부분)
PAM(Pluggable Authentication Module)
PAM은 /etc/pam.d에 있는 모듈별 파일로 인증을 관리하는데 이 디렉터리는 ...
=> d가 붙으면 데몬
crond, .login, passwd, reboot, remote, setup, sshd, su, sudo, xserver등이 보인다
=> 서버에서 여러 서비사가 실행되면 인증등에서 각 파일별로 인증 설정을 할 수 있지만 이보다 상위 개념인
/etc/pam.d 디렉터리에 있는 모듈에서 일괄적으로 설정해주면 보안이 좋아진다.
(다음시간에 데몬에 대해 설명 해주신다고 하심)
nano /etc/pan.d/sudo
nano /etc/pam.d/su
ㄴ required가 찐!
=> #제거 = 주석 해제 (저장 : ctrl +o >enter>ctrl+x)
의미 : sudo로만 .. 강의보고 정리(0416 - 6)
[6번째 시간]- 못찍었다 ㅎㅎㅎ.... (4/17일날 보내주는 강의 보자.. 오늘알았음 이것도 ㅋㅋㅋ)
명령어 : top
리눅스에서 실행되고 있는 리소스 정보는 top이라는 명령어로 프로세스를 확인해서 볼 수 있다
=> ctrl+c 종료
pstree해서 연관된 프로세스들을 볼 수 있다.
=> systemd가 짱
nice는 top했을때 나오는 cpu 점유율이다. -20~19가지 레벨로 보인다
renice는 nice의 우선순위를 변경할 때 사용된다.
nice -n -15 tar xvfz linux-4.2.tar.gz식으로 하면 이 파일에 대한 작업이 다른 작업보다 빠르게 처리된다.
renice -n -10 pid#하면 nice가 실행중에서 조절된다.
=> 일반적으로 관리자가 한다.
프로세스는 ps -ef 명령어로 볼 수 있다.
kill -9 PID# 해서 실행중인 프로세스를 죽일 수 있다. <== skill -kill pid#
kill -19 pid# 일시정지 <== skill -top pid#
kill -1 pid# 재시작 <== skill -cont pid#
실행중인 작업은 (관리자는 해커가 무슨 작업을 하는지 확인할 필요가 있다)
cat /etc/passwd & <-- 엔퍼센트를 붙여주면 백그라운드로 실행된다.
ㄴ bg : 백그라운드로 작업을 보낸다.
ㄴ fg %job_id : 백그라운드 작업을 포 그라운드로 올린다.
ㄴ jobs : 모든 백 그라운드 작업을 보인다.
less /root/.bash_profile > bpro &
현재 서버에 접속한 사용자의 정보는
w : 접속한 사용자의 정보
who : 접속한 사용자의 현재 정보
users: 접속한 사용자 정보
last : 로그인 성공 정보
💥lastb : 로그인 실패 정보
daemon은 서버 서비스가 실행되는 것을 말한다,
데몬은 /etc/daemon.d 디렉터리에 서비스가 들어 있다.
일반적으로 리소스를 많이 사용해서 하나의 호스트에서 하나의 서비스가 실행되는 경우를
standalone daemon이라 불린다.
=> mail server, web server, database server
=> 이들은 서비스를 systemctl start httpd식으로 서버 서비스를 직접 실행하게 해주고
작은 리소스를 사용해서 하나의 호스트에 여러 데몬을 실행시킬 때 각 데몬은 super daemon의 child damon이라고 한다.
=>dhcp, ssh, telnet, dns, ....등은 이들을 대표하는 supser daemon인 xinetd를 실행시켜두고 자식 데몬에게 연결 요청이 오면 이 슈퍼데몬이 자식데몬이 실행되게 해준다.
=>telnet으로 연결이 들어오더라도 systemctl xinetd start 해서 슈퍼데몬을 실행시켜 주어야 한다.
'◆정보보안 > 리눅스' 카테고리의 다른 글
[5일차] 0415 (0) | 2023.04.15 |
---|---|
[4일차] 0409 리눅스 (0) | 2023.04.09 |
[3일차] 0408 강의 + 리눅스 (0) | 2023.04.08 |