반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
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
Archives
Today
Total
관리 메뉴

eldorado

suid/sgid 파일 점검 본문

@ Tips

suid/sgid 파일 점검

eldorado_scratch 2024. 4. 5. 16:25
반응형

suid/sgid 파일 점검

 

일반 유저 권한으로 suid/sgid가 설정된 파일을 실행할 때에는 해당 파일의 소유자 또는 소유그룹 권한으로 작동하게 되므로 suid/sgid는 보안적인 관점에서 매우 중요한 역할을 한다. 이 때문에 /usr/sbin/sendmail과 같이 전통적으로 root 권한의 suid/sgid가 설정된 파일에서 보안 취약성이 많이 발견된 것이 사실이다.

 

따라서 초기 시스템 구축 시 뿐만 아니라 정기적으로 시스템에서 suid/sgid가 설정된 파일을 모니터링 하여 suid sgid가 불필요하다면 파일 자체를 삭제 하거나 s비트를 해제하는 것이 좋다.

 

# find / -type f \( -perm -4000 -o -perm -2000 \)

또는

# find / -type f -perm +6000 -ls

 

먼저 위의 명령어를 실행하여 전체 시스템 내(/)에서 suid(4000) sgid(2000)가 설정된 파일을 검색하도록 한다. 배포판이나 버전에 따라 결과는 조금씩 다를 수는 있지만 일반적으로 다음과 같은 결과가 보일 것이다.

 

위 명령의 결과로 출력되는 각각의 파일에 대해 간단히 살펴보자.

 

/usr/bin/chage (suid)

- chage는 유저의 암호 만기일 정보를 변경하거나 조회하는 명령어인데,

root만 사용하면 되므로 suid가 설정될 필요 없다.

 

/usr/bin/gpasswd (suid)

- /etc/group이나 /etc/gshadow 파일을 관리할 때 사용되는 명령어인데 잘 사용되지 않으므로 굳이 설정할 필요 없다.

 

/usr/bin/wall (sgid)

- 터미널에 연결되어 있는 유저들에게 메시지를 보내고자 할 때 사용되는데,

실제 서버를 이용 시 사용될 이유가 없으므로 해제하는 것이 좋다.

 

/usr/bin/chfn (suid)

- finger로 질의 시 보이는 정보를 변경하는 명령어인데, finger 자체가 보안 문제등 으로 잘 사용되지 않으므로 필요 없다.

 

/usr/bin/chsh (suid)

- bash csh등 로그인시 실행되는 쉘을 변경하는 명령어인데, 쉘을 변경할 필요 가없다면 필요 없다.

 

/usr/bin/newgrp (suid)

- 새로운 그룹으로 로그인하는 명령어인데, 잘 사용되지 않으므로 역시 필요 없다.

 

/usr/bin/write (sgid)

- talk와 같이 다른 유저에게 메시지를 보내는 명령어인데, 서버 운영 시 잘 사용되 지 않고 필요도 없다.

 

/usr/bin/at (suid)

- at cron과 같이 반복적인 작업을 하고자 할 때 사용되는데, at 자체가

cron에 비해 보안 결함이 있고 잘 사용되지 않으므로 필요 없다.

 

/usr/sbin/usernetctl(suid)

- 일반 유저가 인터페이스를 제어하도록 하는 명령어인데, 허용할 필요가 없 으므로 필요 없다.

 

/usr/sbin/userhelper (suid)

- GUI를 통해 암호를 관리하고자 할 때 필요한데, 서버 운영 시 GUI 자체가 보안 상 문제가 될 수 있으므로 필요 없다.

 

/bin/mount (suid)

- 파일 시스템을 마운트 하고자 할 때 필요한데, 일반 유저에게 마운트 권한을 줄 필요가 없으므로 필요 없다.

 

/bin/umount (suid)

- 파일 시스템을 언마운트 하고자 할 때 필요한데, 일반 유저에게 언마운트 권한을 줄 필요가 없으므로 필요 없다.

 

/usr/sbin/lockdev (sgid)

- devices를 잠글 때 필요하며 lock이라는 그룹 권한으로 설정되어 있는데,

그대로 두는 것이 좋다.

 

/bin/ping (suid)

- ping은 잘 알고 있듯이 icmp echo request 패킷을 발송하는 것으로

일반 유저에게 ping을 허용하려면 suid를 그대로 유지하고 일반유저에게 ping을 금지하려면 suid를 해제하면 된다.

 

. 만약 4755 대신 0755로 설정한 상태에서 일 반 유저가 ping을 실행하면 아래와 같은 에러가 나게 된다.

 

.

ping: icmp open socket: Operation not permitted

 

/usr/sbin/traceroute (suid)

- traceroute는 네트워크 경로를 추적하는 명령어로서 일반 유저에게 traceroute 를 허용하려면 suid를 그대로 유지하고, 금지하려면 suid를 해제하면 된다.

 

.

 

/usr/bin/passwd (suid)

- suid가 설정된 파일 중 가장 많이 사용되는 명령어일 것이다.

 

일반 유저가 자 신의 암호를 변경하려면 /etc/shadow 파일을 읽고 쓸 수 있는 권한이 있어야 하는데, 이는 root 권한만이 가능하므로 passwd 파일은 root 소유의 suid가 설정되어 있어야 한다. 따라서 이 파일의 퍼미션을 755등으로 변경하면 오직 root만이 암호를 변경할 수 있게 된다.

 

.

 

/usr/bin/crontab (suid)

- 일반 유저가 cron을 설정하여 사용하도록 허용할 경우에는 suid가 필요하지만

일반 유저가 cron을 사용할 수 없도록 제한할 경우에는 불필요하다.

 

이후 suid가 설정된 파일에서 s 비트를 해제하는 명령어는 아래와 같다.

 

# chmod u-s /usr/sbin/suid_file

위는 user에 설정된 s 비트를 해제(-)하는 명령어이고, 만약 s 비트를 설정하려면 -s 대신 "chmod u+s"를 실행하면 된다.

 

. 또는 s 비트를 해제하려면 아래와 같이 4xxx 대신 0xxx 또는 0을 빼고 실행해도 된다.

 

.

# chmod 0700 /usr/sbin/suid_file 또는 chmod 700 /usr/sbin/suid_file

 

같은 방법으로 sgid가 설정된 파일에서 s 비트를 해제하는 명령어는 아래와 같다.

 

# chmod g-s /usr/sbin/sgid_file

 

위는 group에 설정된 s 비트를 해제(-)하는 명령어이고, 만약 s 비트를 설정하려면 -s 대신 "chmod g+s"를 실행하면 된다.

 

. 또는 s 비트를 해제하려면 아래와 같이 2xxx 대신 0xxx 또는 0을 빼고 실행해도 된다.

 

.

# chmod 0700 /usr/sbin/sgid_file 또는 chmod 700 /usr/sbin/sgid_file
반응형

'@ Tips' 카테고리의 다른 글

[Kubernetes] 타임존 설정  (0) 2024.05.08
CISCO 스위치 NTP 설정  (0) 2021.07.02
스위치 네트워크 기본명령어(2)  (0) 2020.02.28
스위치 네트워크 기본명령어(1)  (0) 2020.02.28
바코반(BACOBAN) 살균티슈  (0) 2020.01.29
Comments