포스트

리눅스 수업 정리

리눅스 패스워드 저장 위치 및 그룹 설정과 권한, wheel 그룹, 가상호스트와 DNS 설정에 대한 학습


cat 명령어를 사용해 /etc/shadow 파일을 확인해보자.


먼저 cat 명령어가 어디에 있는지 확인해야 한다.


1
2
3
4
[root@localhost ~]# which cat
/usr/bin/cat
[root@localhost ~]# ls -l /usr/bin/cat
-rwxr-xr-x. 1 min users 68568 Jan  2 13:54 /usr/bin/cat


현재 사용자의 권한은 755로 소유자인 min은 모든 권한, users 그룹은 읽고 실행하는 권한, 다른 사용자들은 읽고 실행하는 권한을 가지고 있다.


cat 명령어에 특수 권한을 부여해 일반사용자가 /etc/shadow를 확인할 수 있다면 보안에 정말 치명적일 것이다. 연습해보며 조심하자.


1
[root@localhost ~]# chmod 4775 /usr/bin/cat


chmod 명령어로 /usr/bin/cat 명령의 소유자인 root의 권한으로 실행하도록 할 수 있다.


일반적으로는 chmod 755 [파일 또는 디렉토리명]이라는 명령어를 입력한다.


이 때 문제는 cat 명령어를 통해 일반적인 상황에서는 확인할 수 없는 /etc/shadow 파일 등을 보려면 특수한 권한이 필요한데,


권한에 대한 숫자를 지정하는 방법과, 특정 문자로 심볼릭하게 권한을 부여하는 방법이 있다.


1
[root@localhost ~]# chmod u+s /usr/bin/cat


numeric한 방법인 4755, symbolic한 방법인 u+s가 있고 효과는 동일하다.


이제 cat 명령으로 원래는 볼 수 없었던 /etc/shadow 등의 파일을 확인할 수 있다.


setUID, setGID


numericsymbolic효과결과
chmod 4755 [파일명]chmod u+s [파일명]소유자 권한으로 해당 파일(바이너리 명령)을 실행-rwsr-xr-x.
chmod 2755 [파일명]chmod g+s [파일명]그룹 권한으로 파일을 실행-rwxr-sr-x.


setGID의 경우 setUID에 비해 잘 사용되지 않는다..


주 그룹과 부 그룹


1
2
3
4
5
[root@localhost ~]# usermod -g [그룹명] [사용자명]

# 그룹명 혹은 번호를 지정해 사용자의 주 그룹을 변경하는 명령어이다.

[root@localhost ~]# usermod -G [그룹명] [사용자명]


그룹명 혹은 번호를 지정해 사용자의 부 그룹을 추가하는 명령어이다. 해당 사용자의 부 그룹을 한꺼번에 추가하고 싶다면 ”,” 로 구분한다.


e.g. [root@localhost ~]# usermod -G wheel,games kk1


kk1 유저의 부 그룹으로 wheel과 games 그룹을 추가한다.


특정 사용자(wheel 그룹의 사용자들)만 su 명령어 사용


1
[root@localhost ~]# vim /etc/pam.d/su
1
2
3
...
#auth       required    pam_wheel.so    use_uid
...


해당 부분의 주석을 해제한다. 그러면 su 명령어는 wheel 그룹에 속한 사용자들만 사용할 수 있게된다.


root를 제외한 다른 그룹이 su 명령을 소유하더라도 /etc/pam.d/su를 통해 위의 방법으로 수정한다면 root와 wheel 그룹만 su 명령을 사용할 수 있게 된다.


1
2
3
4
5
6
7
[root@localhost ~]# vim /etc/group

...
...
wheel:x:10:root,hong,kim
...
...


그룹 파일을 수정하는 방법으로도 그룹에 추가할 수 있다.


usermod -G wheel [사용자명] 으로도 추가할 수 있다.


이 방법은 해당 사용자의 부 그룹으로 추가하는 방법이고, 주 그룹을 변경하는 방법은 옵션에 소문자 g를 사용하는 방법이다.


1
[root@localhost ~]# usermod -g wheel kk1


다른 방법으로는 su 명령어에 특수권한을 부여하는 방법이 있다.


1
2
3
4
[root@localhost ~]# which su
/bin/su
[root@localhost ~]# ll /bin/su
-rwsr-xr-x. 1  root root 32096 Apr 14 05:43 /bin/su


위의 권한을 갖고 있다면


1
2
3
[root@localhost ~]# chgrp wheel /bin/su
[root@localhost ~]# ll /bin/su
-rwxr-xr-x. 1  root wheel 32096 Apr 14 05:43 /bin/su


chgrp 명령어로 사용 그룹 권한을 변경할 수 있지만. -rwsr-xr-x에서 -rwxr-xr-x로 바뀌게 된다.


su 명령을 소유주 권한(root)로 실행할 수 없게 된다. 다시 특수권한을 부여해줘야 한다.


1
2
3
[root@localhost ~]# chmod 4750 /bin/su
[root@localhost ~]# ll /bin/su
-rwsr-xr-x. 1  root wheel 32096 Apr 14 05:43 /bin/su


위의 명령 “chmod 4750 /bin/su”와 같은 효과를 내는 명령은 다음과 같다.


chmod u+s /bin/su


포트 번호를 확인하는 명령


1
[root@localhost ~]# netstat -nlp | grep [원하는 서비스]


혹은 다음의 명령을 사용한다.


1
[root@localhost ~]# ss -ant


PAM을 사용한 ssh 보안 강화


PAM은 Pluggable Authentication Module;착탈형 인증 모듈


사용자를 인증하고 그 사용자의 서비스에 대한 엑세스를 제어하는 모듈화된 방법을 일컫는다.


해당 모듈이 모인 폴더가 /etc/pam.d/이고 이 아래에 su 파일을 조작한다.


/etc/ssh/sshd_config 에서 root로의 접근을 막고, ssh 포트 번호를 변경한다.


-> ssh 설정 변경 후에는 systemctl restart sshd


그 이후 /etc/pam.d/su 에서 주석 해제해 활성화.


가상 호스트 방식 (Virtual Host)


하나의 IP와 80번 포트로 여러 개의 웹사이트를 운영할 수 있는 기술이다.


1
2
3
4
5
6
7
8
9
10
11
12
13
시나리오

    - 가상 도메인 : kosa.vm
    - 네임 서버 : ns1.kosa.vm

    - IP : 192.168.1.20/24
    - GW : 192.168.1.2
    - DNS1 : 192.168.1.20
    - DNS2 : 8.8.8.8    

    - 호스트 생성
    -> www1.kosa.vm    => 홈 디렉토리 /www1/index.html => www1 site
    -> www2.kosa.vm    => 홈 디렉토리 /www2/start.html => www2 site

가상호스트를 구현해서 사이트를 구성하자..

1
2
[root@localhost ~]# yum -y install caching-nameserver
[root@localhost ~]# vim /etc/named.conf
1
2
3
4
5
6
7
8
9
10
11
12
options {
    listen-on port 53 { any; };
    listen-on-v6 port 53 { ::1; };
    directory       "/var/named";
    dump-file       "/var/named/data/cache_dump.db";
    statistics-file "/var/named/data/named_stats.txt";
    memstatistics-file "/var/named/data/named_mem_stats.txt";
    secroots-file   "/var/named/data/named.secroots";
    recursing-file  "/var/named/data/named.recursing";
    allow-query     { any; };
    ...
}


1
[root@localhost ~]# vim /etc/named.rfg1912.zones  
1
2
3
4
5
6
7
8
...
zone "kosa.vm" IN {
    type master;
    file "kosa.vm.zone";
    allow-update { none; };
};

:wq


=> 도메인 영역 생성


주의사항으로는 zone 파일의 소유권이 root.named 로 유지되어야 정상적으로 작동할 수 있다.


=> 존 파일 생성을 /var/named 디렉토리 안에서 진행


/var/named 안에 파일 중 named.localhost 라는 파일을 복사해 우리가 만든 사이트 kosa.vm의 zone 파일을 만드는데,


cp 명령어에 -p 옵션으로 소유자와 소유그룹에 대한 정보까지 함께 복사해야 한다


다음 명령을 수행

1
2
[root@localhost ~]# cd /var/named
[root@localhost named]# cp -p named.localhost kosa.vm.zone
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.