#Check Point

while read CheckPoint
do
rm -f -v $L_PATH/$CheckPoint/$(date -d -182days '+%Y-%m-%d')* 2>&1 | tee -a $D_PATH/del-`date +%F`.txt
rm -f -v $S_PATH/$CheckPoint/$(date -d -365days '+%Y-%m-%d')* 2>&1 | tee -a $D_PATH/del-`date +%F`.txt
done < $CPFWs

#PALO-ALTO

while read PaloAlto
do
find $L_PATH/$PaloAlto/ -mtime +365 -exec rm -fv {} \; 2>&1 | tee -a $D_PATH/del-`date +%F`.txt
done < $PAFWs


#secui

find $L_PATH/secuilog/ -mtime +180 -exec rm -fv {} \; 2>&1 | tee -a $D_PATH/del-`date +%F`.txt
find $S_PATH/secuilog/ -mtime +365 -exec rm -fv {} \; 2>&1 | tee -a $D_PATH/del-`date +%F`.txt
find $S_PATH/SDS-Mgmt/ -mtime +365 -exec rm -rfv {} \; 2>&1 | tee -a $D_PATH/del-`date +%F`.txt



'OS > Linux' 카테고리의 다른 글

SAMBA 4.6.5 설치 삽질기  (0) 2017.06.23
(방화벽) 로그 저장 while문 파일 입력  (0) 2017.02.16
cifs 마운트시 유의점  (0) 2016.08.31
리눅스 파일 시스템 구조  (0) 2016.03.02
PCB  (0) 2016.03.02

SAMBA 4.6.5 설치 삽질기

OS/Linux 2017. 6. 23. 19:39 Posted by ­행복
이것을 적어두지 않으면 아까운 지식이므로 내가 적는다.

종합적인 흐름의 기법으로(내가 잘 알아보기만하면 되므로) 이슈를 위해 고뇌한 흔적을 위주로 적을 예정이다.

참고문헌 :
samba 패키지를 yum 없이 수동으로 설치하는 방법
samba.org의 직접 삼바패키지 빌드하는방법
samba 취약점 조치하신분의 티스토리 블로그


상황 : 호스팅업체 나야나의 리눅스서버 samba 랜섬웨어 감염으로 긴급조치 지시 하달

운영하지도 않는 리눅스 서버의 samba 버전 취약으로 버전업을 위한 조치
해당 리눅스 서버는 centos6버전이며 자체가 다음카카오와 동기화된 레포지토리를 구축하고 있다.

현재 samba 버전은 3.6.9-169.el6_5

조치방법 :
1. 그동안 업데이트 안한 레포지토리를 daumkakao repository 와 동기화
lftp -c "set ftp:passive-mode off; mirror -c -e -i rpm http://anonymous@ftp.daumkakao.com/centos/ /SYSLOG-NW/www/centos"

(내 기억에는 daumkakao ip의 80포트로 방화벽을 오픈한 상태)

그다음 레포지토리 데이터베이스를 재구성해야함 우선 centos 6버전의 패키지들은 6.9폴더에 있고, 64비트 os 만 할 것이므로 다음의 명령을 수행

createrepo --no-database /SYSLOG-NW/www/centos/6.9/os/x86_64
createrepo --no-database /SYSLOG-NW/www/centos/6.9/updates/x86_64
createrepo --no-database /SYSLOG-NW/www/centos/6.9/extras/x86_64
createrepo --no-database /SYSLOG-NW/www/centos/6.9/centosplus/x86_64


 그런 다음, 내가 클라이언트 입장에서 서버의 레포지토리에 접속을 해야 하므로 다음과 같이 입력
나는 파일 이름을 el6.repo라고 명명하였으며 /etc/yum.repos.d/ 아래에 텍스트 파일로 저장하면 됨

파일이름 : el6.repo
[i-bases]
name=Rhel $releasever - $basearch - base
baseurl=http://192.168.0.100/centos/6.9/os/$basearch
enabled=1
gpgcheck=0

[i-updates]
name=Rhel $releasever - $basearch - updates
baseurl=http://192.168.0.100/centos/6.9/updates/$basearch
enabled=1
gpgcheck=0

[i-extras]
name=Rhel $releasever - $basearch - extras
baseurl=http://192.168.0.100/centos/6.9/extras/$basearch
enabled=1
gpgcheck=0

[i-centplus]
name=Rhel $releasever - $basearch - centosplus
baseurl=http://192.168.0.100/centos/6.9/centosplus/$basearch
enabled=1
gpgcheck=0


레포지토리 주소가 192.168.0.100이다.


그리고 나서 yum update all 한 후 레포지토리 한번 갱신해주고(설치는안함)
yum update samba 명령으로 samba 버전을 3.6.9-169.el6_5 에서 3.6.23-43.el6_9로 올리게 됨

근데, 랜섬웨어 패치는 samba 4.6버전임...

그래서 다음 명령을 수행
yum remove samba
yum install samba4

그리고 /etc/samba/smb.conf에 다음을 추가해줘야만 했다.

파일이름 : smb.conf
==== Share Definitions ====
[SYSLOG-NW]
        comment = syslog
        path = /SYSLOG-NW
        browseable = yes
        guest ok = no
        writable = yes
        printable = no

그리고 service smb restart
그랬더니 없어졌던 SYSLOG-NW 공유폴더를 다시 사용할 수 있었다.

이제 마운트를 하고 썼던 다른 서버에서 오류가 났다. 그 서버에 다시 마운트하기
(클라이언트 리눅스에서 마운트) mount -t cifs //182.192.0.100/SYSLOG-NW /SYSLOG-NW -o user='root',password='password'


여기까지 성공. 그런데 빌어먹을 다음 레포지토리의 samba4 버전이  4.2.10-10.el6_9로 조치필요한 4.6.5버전보다 훨씬 낮은거 아닌가 참나

그래서 할 수 없이 samba.org에 올라온 버전을 받고, 압축을 풀고, make install 까지 하고도 뭐가 문제인지 몰라 고민하던 와중에

이거대로 했더니 성공하였다.(출처 상단 블로그 링크)
- 구동스크립트 복사
cd ../packaging/RedHat/
cp smb.init /etc/init.d/smb
cp samba.pamd /etc/pam.d/samba

- samba의 데몬과 실행파일들을 PATH 변수의 디렉토리에 모두 링크
ln -s /usr/local/samba/sbin/* /usr/sbin
ln -s /usr/local/samba/bin/* /usr/bin

-samba 서버 시작
/etc/init.d/smb start  또는 service smb start
여기서, 또 퍼미션이 막혀서
chmod 744/etc/init.d/smb 해주니까 실행됨

재부팅되도 실행되도록
chkconfig --level 3 smb on
해당 명령도 적어둠


그런데 smbstatus를 자꾸만 실행해도
Can't load /etc/samba/smb.conf - run testparm to debug it
이렇게 오류 메시지가 나와서
 cp /etc/samba/smb.conf /usr/local/samba/etc/smb.conf
이렇게 조치를 해줌

->새로운 4.6버전은 /usr/local/samba/etc/smb.conf가 기본 설정값임을 확인했다.

Failed to find entry for user root.
이렇게 나와서
smbpasswd -a root
해서 password 넣었더니 samba 사용자가 생김. 기존 yum으로 install 해서 쓰던 samba랑 다른 양상










의문점 :
왜 마운트가 안되는걸까 미치겠네

'OS > Linux' 카테고리의 다른 글

1년 이상 된 로그 삭제해서 삭제목록 리스트 남기기  (0) 2017.12.07
(방화벽) 로그 저장 while문 파일 입력  (0) 2017.02.16
cifs 마운트시 유의점  (0) 2016.08.31
리눅스 파일 시스템 구조  (0) 2016.03.02
PCB  (0) 2016.03.02

(방화벽) 로그 저장 while문 파일 입력

OS/Linux 2017. 2. 16. 17:10 Posted by ­행복
bash쉘 프로그래밍

장비 일일 로그를 일 단위로 crontab 돌리는 경우

- 문제
1. 새로운 고객사 장비가 도입/제거 되었을 경우, crontab의 쉘스크립트를 매번 수정해 주어야 하는 불편함을 겪었다.
2. 고객사가 많은 경우, 같은 내용 경로만 다른 스크립트 내용을 고객사 개수만큼 사용하여 코드의 길이가 길고 보기 어렵다.

- 해결
파일에서 입력을 받고 while문 한 단위로
종료하는 경우로 해결

- 코드예시

#####example.sh######
CPFWs=/syslog/CPFWs.txt
#읽어올 파일 변수 설정
while read SampleVariable
#변수이름은 자유롭게
do
scp -v /opt/$SampleVariable/$(date -d -1days '+%Y-%m-%d)*.log root@1.1.1.1:/syslog/$SampleVariable/ >> /script/log/$SampleVariable"_"log_$(date -d -1days '+%Y-%m-%d').log 2>&1
done < $CPFWs
#읽어올 파일 변수를 done뒤에 입력

'OS > Linux' 카테고리의 다른 글

1년 이상 된 로그 삭제해서 삭제목록 리스트 남기기  (0) 2017.12.07
SAMBA 4.6.5 설치 삽질기  (0) 2017.06.23
cifs 마운트시 유의점  (0) 2016.08.31
리눅스 파일 시스템 구조  (0) 2016.03.02
PCB  (0) 2016.03.02

cifs 마운트시 유의점

OS/Linux 2016. 8. 31. 18:55 Posted by ­행복

리눅스 서버A(192.168.1.1)는 smb daemon으로 cifs 서비스중이다.
서버A는 /LOG-NW이라는 디렉토리를 cifs로 공유하고 있었으며 cifs 공유명은 'log'이다.

확인방법
# smbclient -L 192.168.1.1
입력하면 결과가 다음과 같다.
Sharename  Type    Comment
log                 Disk     nw log file


서버B(192.168.1.2)에서 /LOG-NW로 같은 이름의 빈 디렉토리를 만들어 놓았고,
서버 A에 있는 /LOG-NW 디렉토리를 cifs방식으로 mount 하려고 한다.

이때 주의할 점은, 마운트 시킬 경로를 리눅스 경로(/LOG-NW)를 넣는 것이 아니라
공유한 이름의 Sharename으로 나오는 경로(log)를 넣어야 한다는 것이다.
이는 윈도우 공유 개념이라서 그런 것 같은데
이것때문에 너무 고생을 해서 올린다.


mount -t cifs //192.168.1.1/LOG-NW /LOG-NW -o user='root',password='pass'
이렇게 내리면
Samba mount error(6): No such device or address
라는 메시지만 나올뿐이다.

다음과 같이 Sharename의 경로를 적어주면 바로 마운트된다.
mount -t cifs //192.168.1.1/log /SYSLOG-NG -o user='root',password='pass'

그리고 B서버에서 df 명령어로 확인하면
//192.168.1.1/log
로 소개되는 것을 볼 수 있다.


'OS > Linux' 카테고리의 다른 글

SAMBA 4.6.5 설치 삽질기  (0) 2017.06.23
(방화벽) 로그 저장 while문 파일 입력  (0) 2017.02.16
리눅스 파일 시스템 구조  (0) 2016.03.02
PCB  (0) 2016.03.02
ssh rsa key 확인 없이 로그인  (0) 2016.02.22

리눅스 파일 시스템 구조

OS/Linux 2016. 3. 2. 01:01 Posted by ­행복


http://terms.naver.com/entry.nhn?docId=2270394&cid=51173&categoryId=51173

http://terms.naver.com/entry.nhn?docId=2270394&cid=51173&categoryId=51173

'OS > Linux' 카테고리의 다른 글

(방화벽) 로그 저장 while문 파일 입력  (0) 2017.02.16
cifs 마운트시 유의점  (0) 2016.08.31
PCB  (0) 2016.03.02
ssh rsa key 확인 없이 로그인  (0) 2016.02.22
find명령어 -perm 옵션에서 +,-의 차이  (0) 2016.02.11

PCB

OS/Linux 2016. 3. 2. 01:00 Posted by ­행복

Process Control Block


- 운영체제가 Process를 관리(제어)하기 위하여 Process의 상태 정보를 저장하고 있는 구조체

- PCB는 Process생성시 생성되며, 종료시까지 주기억장치에 유지됨

※ 프로세스는 시작 종료가 느리다.(PCB를 메모리 할당/해제하는데 오버헤드 발생)

※ 모든 프로세스는 1개의 PCB를 가진다.(멀티스레드는 하나의 PCB를 공유한다 -> 시작/종료의 오버헤드 감소)

task_strut라는 구조체에 정의


PCB가 유지하는 정보

□ 프로세스 상태(Process State)

   - CPU에 할당할 프로세스 결정을 위해

   - OS의 Process Scheduler에 의해 결정

   ※ 프로세스 상태 전이(Process State Transition)에 따라 값 변경됨

□ 프로세스 번호(PID)

□ 프로그램 카운터(PC) - 프로세스가 다음에 실행할 명령어의 주소

□ 레지스터

□ 프로세스의 모든 정보를 실시간으로 기록(CPU 사용시간, 메모리 정보, 할당된 자원 정보 등)



Context Switching - 1. 인터럽트나 system call 발생시 2. CPU Quantum을 모두 소모한 경우 3. I/O 입출력을 위해 CPU가 대기해야 하는 경우 4. 선점형 스케쥴러 사용중인 OS에서 우선순위가 낮아진 경우(특히, 멀티 프로그래밍 환경)

예> CPU가 위의 경우 중 한가지에 의해, Process2를 실행해야 하는 경우

Process1의 작업을 PCB1에 저장하고 Process2의 state를 PCB2로부터 reload하여 Process2의 작업을 재개(CPU에 Process2를 할당)

※ 단점 : 해당 과정에서 overhead 발생(선점형 CPU 스케줄링이므로)

(멀티 프로그래밍 환경에서 프로그램 처리보다 Context Switching이 더 자주 일어나 CPU를 효율적으로 사용하지 못할 수 있음)

'OS > Linux' 카테고리의 다른 글

cifs 마운트시 유의점  (0) 2016.08.31
리눅스 파일 시스템 구조  (0) 2016.03.02
ssh rsa key 확인 없이 로그인  (0) 2016.02.22
find명령어 -perm 옵션에서 +,-의 차이  (0) 2016.02.11
umask  (0) 2016.02.10

ssh rsa key 확인 없이 로그인

OS/Linux 2016. 2. 22. 09:51 Posted by ­행복
crontab등을 통해 타 서버로 접속이 필요한 경우, 자동 로그인이 구현이 되어있어야 하는 경우가 있다.
해당 경우 유용하게 쓸 수 있는 방법을 알아보자.

A -> B 로 자동 접속 구현을 하고 싶다.

서버A의 사용자 a
서버 B의 사용자 b가 있다고 가정

ssh-keygen이라는 명령어를 사용한다. key는 계정별로 생성된다.

A의 a계정에서> ssh-keygen -t rsa

그러면 a의 홈디렉토리/.ssh 에 개인키와 공개키가 생성된다.
id_rsa : 타인에게 노출되면 안되는 개인키(chmod 600)
id_rsa.pub : B서버에 전달하여야 하는 공개키(chmod 640)


id_rsa.pub를 b의 홈디렉토리/.ssh의 authorized_keys라는 파일에 추가해줌

A의 a계정에서> cat /home/a/.ssh/id_rsa.pub | ssh b@B 'cat >> .ssh/authorized_keys'

b@B의 예시 : root@192.168.0.10


파일 전송 후 키 정상 등록 확인

A의 a계정에서> ssh -T b@B

패스워드 안물어보면 성공


'OS > Linux' 카테고리의 다른 글

cifs 마운트시 유의점  (0) 2016.08.31
리눅스 파일 시스템 구조  (0) 2016.03.02
PCB  (0) 2016.03.02
find명령어 -perm 옵션에서 +,-의 차이  (0) 2016.02.11
umask  (0) 2016.02.10

find명령어 -perm 옵션에서 +,-의 차이

OS/Linux 2016. 2. 11. 01:19 Posted by ­행복

find -perm 옵션의 +,- 차이점이 궁금해서 다음과 같은 실험을 해봤다.


1. test 디렉토리에 1~7이라는 파일을 만든 후, 각각의 chmod를 100~700으로 설정

root@kali:~/Documents# mkdir test

root@kali:~/Documents# cd test

root@kali:~/Documents/test# for i in {1..7}; do touch $i; done

root@kali:~/Documents/test# for i in {1..7}; do chmod "$i"00 $i; done



2. 다음과 같이 권한이 설정됨

root@kali:~/Documents/test# ls -al

total 8

drwxr-xr-x 2 root root 4096 Feb 11 01:08 .

drwxr-xr-x 4 root root 4096 Feb 11 01:08 ..

---x------ 1 root root    0 Feb 11 01:08 1

--w------- 1 root root    0 Feb 11 01:08 2

--wx------ 1 root root    0 Feb 11 01:08 3

-r-------- 1 root root    0 Feb 11 01:08 4

-r-x------ 1 root root    0 Feb 11 01:08 5

-rw------- 1 root root    0 Feb 11 01:08 6

-rwx------ 1 root root    0 Feb 11 01:08 7

root@kali:~/Documents/test#



3. 300 권한(write, executable)을 갖는 파일을 perm +,- 옵션을 주면서 검색


root@kali:~/Documents/test# find . -perm 300

./3


root@kali:~/Documents/test# find . -perm -300

.

./7

./3


root@kali:~/Documents/test# find . -perm +300

.

./5

./6

./7

./1

./2

./3



4. 결론

부호 없음 : 정확히 일치하는 결과 출력

+기호 : 부분집합 (w,x를 포함)시 출력

-기호 : 교집합 (w,x 중 하나라도 포함)시 출력



참고자료

http://hackerschool.org/HS_Boards/zboard.php?id=Free_Lectures&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&keyword=root&select_arrange=hit&desc=asc&no=1836

'OS > Linux' 카테고리의 다른 글

cifs 마운트시 유의점  (0) 2016.08.31
리눅스 파일 시스템 구조  (0) 2016.03.02
PCB  (0) 2016.03.02
ssh rsa key 확인 없이 로그인  (0) 2016.02.22
umask  (0) 2016.02.10

umask

OS/Linux 2016. 2. 10. 23:19 Posted by ­행복


기본 umask의 설정

- /etc/profile에 "umask 022" 등을 설정

- 또는 /etc/login.defs에 "umask 022" 등을 설정


개인별 umask 설정

- 홈 디렉토리의 환경설정 파일(.profile)이나 쉘 환경설정 파일(.bashrc .cshrc)에 기록

- 로그인과 동시에 설정을 불러옴


현재 쉘에 한해 일시적 umask 설정

- umask 022 (직접 커맨드 입력)


umask 값과 실제 적용 상관관계

- umask와 실제 적용은 8의 보수 관계이다.

- 기본적으로 파일은 실행권한(x)이 생성되지 않는다.

  (아래 표와 같이 x는 모두 제외된 그림이 된다.)

- 디렉토리는 실행권한이 그 디렉토리의 접근권한을 뜻한다.

umask

File

Directory

0

6(rw-)

7(rwx)

1

6(rw-)

6(rw-)

2

4(r--)

5(r-x)

3

4(r--)

4(r--)

4

2(-w-)

3(-wx)

5

2(-w-)

2(-w-)

6

0(---)

1(--x)

7

0(---)

0(---)


예시

umask

권한 모드

File

Directory

077

600(rw- --- ---)

700(rwx --- ---)

007

660(rw- rw- ---)

770(rwx rwx ---)

022

644(rw- r-- r--)

755(rwx r-x r-x)


출처 및 참고자료

http://coffeenix.net/doc/_mirror/async.kjist.ac.kr/shell/node13.html


'OS > Linux' 카테고리의 다른 글

cifs 마운트시 유의점  (0) 2016.08.31
리눅스 파일 시스템 구조  (0) 2016.03.02
PCB  (0) 2016.03.02
ssh rsa key 확인 없이 로그인  (0) 2016.02.22
find명령어 -perm 옵션에서 +,-의 차이  (0) 2016.02.11