안녕하세요! 여러분의 소중한 리눅스 서버, 오늘도 안녕하신가요? 🖥️ 겉으로는 평온해 보여도, 보이지 않는 곳에서는 수많은 위협이 도사리고 있습니다. 🕵️♂️ 작은 보안 허점 하나가 큰 사고로 이어질 수 있죠. 그래서 오늘은 우리 서버를 철옹성으로 만들기 위한 리눅스/유닉스 서버 보안 핵심 진단 리스트를 상세히 알아보겠습니다. 각 항목을 꼼꼼히 따라오며 내 서버의 보안 상태를 점검해보세요!

👤 계정 관리: 모든 보안의 첫걸음
계정 관리는 보안의 가장 기본이면서도 가장 중요한 부분입니다. 권한이 탈취당하면 모든 것을 잃는 것과 마찬가지니까요.
- 👑 Root 계정 원격 접속 제한 (U-01) 시스템의 모든 권한을 가진 root 계정에 원격(Telnet, SSH)으로 직접 접속하는 것을 막아야 합니다. 공격자가 root 계정을 탈취하면 시스템은 그대로 장악당하고 맙니다. 일반 계정으로 접속 후 su나 sudo를 사용하는 습관을 들여야 합니다.
- 🛡️ Root 계정 su 제한 (U-45) su 명령어는 아무나 사용해서는 안 됩니다. 특정 그룹(예: wheel 그룹)에 속한 사용자만 su 명령어를 통해 root 권한으로 전환할 수 있도록 제한하여, 권한 상승 시도를 통제해야 합니다.
- 🚨 Root 이외 UID '0' 금지 (U-44) UID '0'은 root 계정만의 고유 번호입니다. 만약 다른 계정이 UID '0'을 가지고 있다면, 그 계정 역시 root와 동일한 막강한 권한을 가지게 됩니다. 이런 계정은 즉시 찾아서 수정하거나 삭제해야 합니다.
- 🔑 강력한 패스워드 정책 설정 (U-02, U-46, U-47, U-48) 추측하기 쉬운 패스워드는 문을 열어두는 것과 같습니다.
- 최소 길이: 8자 이상으로 설정
- 복잡성: 영문·숫자·특수문자 조합 강제
- 사용 기간: 최대 90일 이하, 최소 1일 이상으로 설정하여 주기적인 변경을 유도합니다.
- 🤫 패스워드 파일 보호 (U-04) /etc/passwd 파일에 암호화된 패스워드가 직접 저장되어 있으면 위험합니다. 쉐도우 패스워드 시스템을 사용하여 패스워드를 /etc/shadow 파일에 안전하게 보관하고, /etc/passwd의 패스워드 필드는 'x'로 표시되는지 꼭 확인하세요.
- 🔒 계정 잠금 임계값 설정 (U-03) 무차별 대입 공격을 막기 위해, 로그인 실패 횟수를 10회 이하로 제한해야 합니다. 일정 횟수 이상 실패하면 계정이 자동으로 잠기도록 설정하여 공격자의 시도를 무력화합니다.
- ⏳ 세션 타임아웃 설정 (U-54) 자리를 비운 사이 누군가 내 컴퓨터를 만진다면? 생각만 해도 끔찍하죠. 일정 시간(권장 600초/10분) 동안 활동이 없으면 자동으로 로그아웃되도록 설정하여 비인가자의 접근을 방지하세요.
- 🧹 불필요한 계정 제거 (U-49) 퇴사자나 더 이상 사용하지 않는 시스템 계정은 잠재적인 보안 위협입니다. 주기적으로 점검하여 깔끔하게 삭제해주세요.
- 👨✈️ 관리자 그룹 최소화 (U-50) root 그룹(GID 0)에는 꼭 필요한 최소한의 계정만 포함시켜 권한 남용의 가능성을 줄여야 합니다.
- 🆔 동일 UID 금지 (U-52) 서로 다른 계정이 같은 UID를 사용하면 권한 충돌이 발생하고, 감사 추적도 어려워집니다. 모든 계정은 고유한 UID를 가져야 합니다.
📂 파일 및 디렉터리 관리: 중요 정보 사수하기
중요한 설정 파일의 권한 관리를 소홀히 하면 시스템 설정이 변조되거나 정보가 유출될 수 있습니다.
- 🔐 중요 계정 정보 파일 보호 (U-07, U-08)
- /etc/passwd: 소유자는 root, 권한은 644 이하
- /etc/shadow: 소유자는 root, 권한은 400 이하 (오직 root만 읽을 수 있도록!) 로 설정하여 계정 정보 파일의 변조를 원천 차단합니다.
- 🌐 호스트 및 서비스 설정 파일 보호 (U-09, U-10)
- /etc/hosts: 소유자는 root, 권한은 600 (DNS 변조를 통한 파밍 공격 방지)
- /etc/(x)inetd.conf: 소유자는 root, 권한은 600 (불법 서비스 등록 방지)
- 📜 로그 및 서비스 포트 파일 보호 (U-11, U-12)
- /etc/syslog.conf: 소유자는 root(또는 bin, sys), 권한은 640 이하 (로그 설정 변조 방지)
- /etc/services: 소유자는 root(또는 bin, sys), 권한은 644 이하 (서비스 포트 변조 방지)
- 🦸♂️ SUID, SGID 설정 파일 점검 (U-13) SUID/SGID는 일반 사용자도 파일 소유자/그룹의 권한으로 파일을 실행하게 해주는 강력한 기능이지만, 공격자에게는 권한 상승의 통로가 될 수 있습니다. 불필요한 파일에 설정된 SUID/SGID는 즉시 제거해야 합니다.
- ✍️ World Writable 파일 점검 (U-15) perm -2 옵션으로 누구나 쓰기 가능한 파일을 찾아보세요. 이런 파일들은 시스템에 악성 코드를 심는 데 악용될 수 있으므로, 반드시 필요한 경우가 아니라면 쓰기 권한을 제거해야 합니다.
- 🤝 .rhosts, hosts.equiv 사용 금지 (U-17) r 계열 서비스(rlogin, rsh 등)에서 사용하는 신뢰 기반 인증 파일은 보안에 매우 취약합니다. 이 파일들이 존재하지 않도록 하여 인증 없는 원격 접속을 차단하세요.
- ❓ 소유자 없는 파일/디렉터리 점검 (U-06) find / -nouser -o -nogroup 명령어로 주인 없는 파일이나 디렉터리를 찾아보세요. 관리의 사각지대에 있는 이런 파일들은 삭제하거나 적절한 소유자를 지정해주어야 합니다.
- 🛤️ PATH 환경변수 보안 설정 (U-05) PATH 환경변수에 현재 디렉터리('.')가 포함되어 있거나, 특히 맨 앞에 있다면 악성 스크립트가 우선 실행될 위험이 있습니다. PATH의 맨 끝에 추가하거나 아예 제거하는 것이 안전합니다.
⚙️ 서비스 관리: 불필요한 문은 잠그기
사용하지 않는 서비스는 꺼두는 것이 기본! 켜져 있는 서비스는 보안 설정을 강화해야 합니다.
- 🚫 취약한 r 계열 서비스 비활성화 (U-21) rlogin, rsh, rwho 등은 인증 과정이 매우 취약하므로 반드시 비활성화해야 합니다. 지금은 SSH가 있으니 걱정 없죠!
- 🤫 정보 유출 서비스 비활성화 (U-19, U-20) 사용자 정보를 유출할 수 있는 finger 서비스나, 익명 파일 접근을 허용하는 Anonymous FTP는 보안상 큰 위협이 될 수 있으므로 비활성화하는 것이 좋습니다.
- 💥 DoS 공격에 취약한 서비스 비활성화 (U-23) echo, discard, daytime 등은 서비스 거부(DoS) 공격에 악용될 수 있는 오래된 서비스입니다. 모두 비활성화해주세요.
- 🚪 NFS 서비스 보안 (U-24, U-25) NFS(Network File System)를 사용하지 않는다면 서비스를 중지하고, 사용한다면 /etc/exports 파일에 접근을 허용할 특정 호스트만 명시하여 엄격하게 통제해야 합니다.
- 📧 Sendmail 보안 강화 (U-30, U-31, U-70) 오래된 버전의 Sendmail은 보안에 취약합니다. 최신 버전으로 업데이트하고, 스팸 메일 중계를 제한하며, expn/vrfy 같은 정보 유출 가능성이 있는 명령어는 비활성화해야 합니다.
- 🗺️ DNS 보안 강화 (U-33, U-34) BIND 버전을 항상 최신으로 유지하고, 허가된 서버에게만 존 트랜스퍼(Zone Transfer)를 허용하여 DNS 정보가 통째로 유출되는 것을 막아야 합니다.
- 🙈 웹 디렉터리 리스팅 제거 (U-35) 웹 서버 설정(httpd.conf)에서 Indexes 옵션을 제거하세요. 이 옵션은 웹 디렉터리의 파일 목록을 그대로 보여주기 때문에 공격자에게 중요한 정보를 노출할 수 있습니다.
- 📦 웹 프로세스 권한 제한 (U-36) Apache 같은 웹 서버 데몬은 절대 root 계정으로 실행하면 안 됩니다. apache, nobody 등 별도의 낮은 권한 계정으로 실행하여, 웹사이트가 해킹당하더라도 시스템 전체가 장악되는 최악의 상황을 막아야 합니다.
- ⬆️❌ 상위 디렉터리 접근 금지 (U-37) 웹 설정에서 AllowOverride 지시자를 None으로 설정하면 .htaccess 파일을 통한 추가 설정이 불가능해집니다. 이를 AuthConfig 등으로 적절히 설정하여 상위 디렉터리로 접근하려는 시도를 막을 수 있습니다.
📜 패치 및 로그 관리: 끊임없는 감시와 보강
보안은 한 번에 끝나는 것이 아니라, 지속적인 관심과 관리가 필요합니다.
- ✨ 최신 보안패치 적용 (U-42) 운영체제(OS) 및 주요 소프트웨어(Apache, PHP, OpenSSL 등)의 보안 취약점은 계속해서 발견됩니다. 벤더사의 권고에 따라 주기적으로 최신 보안 패치를 적용하여 알려진 위협을 제거하세요.
- 🕵️♀️ 로그 정기적 검토 및 보고 (U-43) 시스템 로그(wtmp, sulog 등)는 침입의 흔적을 찾을 수 있는 중요한 단서입니다. 정기적으로 로그를 검토하여 비정상적인 접근 시도나 권한 사용 내역을 확인하고, 문제가 발생했을 때 보고할 수 있는 체계를 갖춰야 합니다.
- ✍️ 정책에 따른 시스템 로깅 설정 (U-72) /etc/syslog.conf (최근에는 rsyslog.conf) 파일에 명확한 로깅 정책을 설정하여, 필요한 모든 보안 관련 로그가 빠짐없이 기록되도록 해야 합니다.
휴, 정말 많죠? 😅 하지만 이 항목들을 꾸준히 점검하고 관리한다면, 여러분의 리눅스 서버는 훨씬 더 안전해질 것입니다. 보안은 '이벤트'가 아니라 '프로세스'라는 점을 잊지 마세요. 오늘 바로 여러분의 서버를 점검해보는 것은 어떨까요?
'일반IT > 리눅스' 카테고리의 다른 글
| 리눅스 자동화의 첫걸음: 셸 스크립트와 Cron 완벽 가이드 🤖 (0) | 2025.10.10 |
|---|---|
| 리눅스 파일 검색의 달인으로 거듭나기: find 명령어 완전 정복 🧙♂️ (0) | 2025.10.10 |
| 🚀 리눅스 저장소 유연하게 관리하기: LVM, PV, VG, LV 완벽 정복! (0) | 2025.10.10 |
| 🕰️ BPF와 eBPF, 리눅스 커널의 혁명을 이끈 역사 feat.슈퍼파워관찰자 🚀 (0) | 2025.09.09 |
| eBPF로 네트워크 트래픽을 후킹하는 기술: 리눅스 커널의 특별한 '감시자' (3) | 2025.08.04 |