리눅스 보안 | 해킹하려면 왜 리눅스를 배워야 할까?? (자막포함) 141 개의 정답

당신은 주제를 찾고 있습니까 “리눅스 보안 – 해킹하려면 왜 리눅스를 배워야 할까?? (자막포함)“? 다음 카테고리의 웹사이트 ppa.maxfit.vn 에서 귀하의 모든 질문에 답변해 드립니다: https://ppa.maxfit.vn/blog. 바로 아래에서 답을 찾을 수 있습니다. 작성자 보안프로젝트[boanproject] 이(가) 작성한 기사에는 조회수 1,812회 및 좋아요 41개 개의 좋아요가 있습니다.

리눅스 보안 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 해킹하려면 왜 리눅스를 배워야 할까?? (자막포함) – 리눅스 보안 주제에 대한 세부정보를 참조하세요

보안프로젝트( www.boanproject.com )에서 제공하는 IT보안 무료 강의입니다. \” #해킹 하려면 왜 #리눅스를 배워야 할까?? (자막포함)
이전에 공개했던 영상에서 자막을 추가했습니다. 자막은 장애 청년들이 시청할 때 도움이 되시고, 출퇴근 시간에 소리 없이 보실 수 있도록 만들고 있습니다. 많은 관심 부탁 드리고, 앞으로 강의들도 지속적으로 자막 처리와 재미있는 요소를 반영하도록 할게요~
보안프로젝트 #인프런 강의는 아래 링크에서 신청할 수 있습니다.
https://www.inflearn.com/instructors/20967/courses

리눅스 보안 주제에 대한 자세한 내용은 여기를 참조하세요.

리눅스 보안 이슈를 해결하는 4가지 방법 | 가비아 라이브러리

백신 소프트웨어 사용하기. 리눅스 보안 방법 가운데 가장 간단한 것은 백신 소프트웨어를 사용하는 것입니다. · 보안성이 높은 비밀번호 설정하기 · 접근 제어를 통해 보안 …

+ 더 읽기

Source: library.gabia.com

Date Published: 9/16/2022

View: 5353

Linux 보안설정에 관한 모든것 : 네이버 블로그

Linux 보안설정에 관한 모든것 출처 : 몰라욧 2012.06.14 리눅스 보안관련 문서 #0 – 리눅스 서버 보안의 최근 동향과 기본 원칙

+ 여기에 더 보기

Source: blog.naver.com

Date Published: 9/11/2022

View: 4689

리눅스의 보안 위협, 점점 더 증가하고 있다

그래서 공격자들은 리눅스를 진지하게 연구하기 시작했고, 그 성과가 최근 몇 개월 동안 가시적으로 나타나고 있다. [보안뉴스 문정후 기자] 대수롭지 …

+ 여기를 클릭

Source: www.boannews.com

Date Published: 9/21/2021

View: 7766

글로벌 칼럼 | 리눅스 보안이 윈도우나 맥OS보다 우수한 이유

즉 모든 사람을 위한 운영체제는 아니다. 보안을 중요한 장점으로 내세운 리눅스 배포판은 데비안(Debian)에 기반을 둔 패롯 리눅스(Parrot Linux)다.

+ 여기에 보기

Source: www.itworld.co.kr

Date Published: 3/17/2022

View: 426

리눅스 보안 관리 ( Linux 사용법 및 활용 Ⅰ)

물리적 보안. ○ Boot loader 암호. – boot: linux single 부팅 시 root 권한 획득. – /etc/lilo.conf 수정 (다음의 내용을 추가). ○ restricted.

+ 여기를 클릭

Source: coffeenix.net

Date Published: 2/19/2021

View: 6591

리눅스의 기본 보안설정 – CONORY

리눅스의 기본 보안설정 · 1. SSH로 root 계정 · 2. 특정 계정만 su 명령을 사용할 수 있게 하기 · 3. FTP 사용안함 · 4. 일반계정 접속시 노출 디렉토리 …

+ 더 읽기

Source: conory.com

Date Published: 2/24/2022

View: 8937

시스템 보안 및 관리

시스템 보안 관리. 1) 리눅스 보안의 소개. 웹서버의 전체 중 약 70% 차지; 오픈소스 소프트웨어이기 때문에 보안에 취약하다는 지적이 있었지만 위협 …

+ 여기에 표시

Source: laughcryrepeat.tistory.com

Date Published: 10/2/2021

View: 2806

리눅스 서버 보안 1 – IT창고

이러한 시설들의 취약점을 분석, 평가를 해야만 하는데 분석, 평가하는 메뉴얼 가이드를 찾아보았고 직접 보안점검을 해보겠습니다. 리눅스의 취약점 …

+ 여기에 보기

Source: gsk121.tistory.com

Date Published: 11/12/2022

View: 9471

[ET단상]효과적인 리눅스 보안을 위한 방안 – 전자신문

리눅스 서버는 윈도 서버보다 취약점이 적고 보안이 강력한 것으로 여겨진다. 일부분 타당한 이야기지만 보안을 소홀히 한다면 각종 위협에 노출되고, …

+ 여기에 자세히 보기

Source: www.etnews.com

Date Published: 12/9/2022

View: 2511

보안 강화 리눅스 – 위키백과, 우리 모두의 백과사전

보안 강화 리눅스(Security-Enhanced Linux, 간단히 SELinux)는 미국 국방부 스타일의 강제 접근 제어(MAC)를 포함한 접근 제어 보안 정책을 지원하는 매커니즘을 제공 …

+ 자세한 내용은 여기를 클릭하십시오

Source: ko.wikipedia.org

Date Published: 12/15/2022

View: 7999

주제와 관련된 이미지 리눅스 보안

주제와 관련된 더 많은 사진을 참조하십시오 해킹하려면 왜 리눅스를 배워야 할까?? (자막포함). 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

해킹하려면 왜 리눅스를 배워야 할까?? (자막포함)
해킹하려면 왜 리눅스를 배워야 할까?? (자막포함)

주제에 대한 기사 평가 리눅스 보안

  • Author: 보안프로젝트[boanproject]
  • Views: 조회수 1,812회
  • Likes: 좋아요 41개
  • Date Published: 2021. 1. 17.
  • Video Url link: https://www.youtube.com/watch?v=jaga4oLDDQI

Linux 보안설정에 관한 모든것

시스템 보안 Linux 보안설정에 관한 모든것 하늘땅별땅 ・ URL 복사 본문 기타 기능 공유하기 신고하기 Linux 보안설정에 관한 모든것

출처 : 몰라욧 2012.06.14

리눅스 보안관련 문서

#0 – 리눅스 서버 보안의 최근 동향과 기본 원칙

리눅스 서버 보안의 최근 동향

“해킹 및 크래킹, 더욱 증가”

최근에 발생하고 있는 Linux 서버시스템에 대한 해킹(Hacking)사례는 더욱 증가하고 있습니다.

그 이유는 Linux 서버시스템이 많이 보급되었고, 그러한 Linux 서버시스템들이 인터넷데이타센터(IDC)에 많이

입주해 있고, Linux 서버시스템을 이용하는 기업들이 일정수준의 시스템보안인력을 확보하지 않고 있고, 마지막으로

서버시스템 해킹방법을 익히는 동호회가 결성되고 있으며 해킹 방법과 관련자료가 많이 배포되고 있기 때문입니다.

요즘 해킹 사례의 가장 큰 문제점은 단순히 서버시스템에 침입을 한 기쁨과 오랫동안 그 침입상태가 노출되지 않도록

하는 기쁨을 맛보는 수준을 넘어, 서버시스템에 있는 자료들을 삭제해 버리는 것입니다.

이러한 파괴적인 해킹을 크래킹(Cracking)이라고 부르는데, 최근 크래킹 사례가 국내 여러 곳에서 발생하고 있습니다.

따라서, 해킹 및 크래킹에 서버시스템을 운영하고 있는 기업들은 나름대로 대비를 하는 것이 바람직합니다.

만약 서버시스템 운영자가 보안기술이 취약하다고 판단될 경우에는 보안전문업체에 서비스를 의뢰하는 것이

바람직하며, 자체적인 대비나 보안전문업체에 서비스를 의뢰하지 않은 경우 서버시스템내에 있는 소중한 자료가

불시에 손실을 당할 수 있으며, 손실된 자료를 100% 복구하기 어려우며, 그리고 자료 복구에 많은 비용을 필요로

하게 됩니다.

해킹을 당한 사례를 보면 그 원인이 다양한데, OS에 내재되어 있는 기본 오류를 해킹한 것, 시스템에 등록된 이용자

ID를 이용한 것, 불특정 다수가 접근 가능한 서비스의 취약성을 해킹한 사례가 대부분입니다.

서버시스템 해킹 후 그 서버시스템을 제3의 서버시스템을 공격하거나 해킹하는 중간 도구로 이용하는 사례가 많습니다.

크래커들은 해킹된 시스템에 대량의 packet을 발생하는 program을 설치하여 제3의 서버시스템에게 대량의 packet을

전송합니다.

이 경우 제3의 서버시스템은 정상적인 이용자들의 packet을 처리할 수 없는 상황에 이르게 됩니다.

이것을 분산서비스공격(Distributed Denial of Service 공격, DDoS 공격)이라고 합니다.

[이러한 서비스공격을 받는 서버시스템들은 대응방안이 실질적으로 없는 상황입니다. 이로 인해 2000년 초에 미국의

주요 Website들이 서비스를 제공하지 못하는 상황이 발생했었습니다.]

또는 제3의 서버시스템에 어떤 접근 가능한 서비스 포트(port)들이 있는지 탐색을 합니다.

이것을 포트스캐닝(Port Scanning)이라고 합니다.

아니면 현재 해킹한 서버시스템에 등록되어 있는 이용자들이 제3의 서버시스템에 접근할 때, 그때의 이용자 ID와

password를 낚아채어 알아낸 뒤, 제3의 서버시스템으로 쉽게 Login 하기도 합니다.

이것을 스니핑(Sniffing)에 의한 해킹이라고 합니다.

리눅스 서버 보안의 기본 원칙

“필요한 것만 운영하고, 접근을 최대한 제한”

이 문서 앞부분의 “최근동향”에서 해킹을 당한 사례의 원인이 OS에 내재되어 있는 오류, 시스템에 등록된 이용자

ID 유출, 불특정 다수가 접근 가능한 서비스의 취약성 때문이라고 언급하였습니다.

OS에 내재되어 있는 오류는 OS Kernel을 Upgrade하는 것 방법 밖에는 없습니다.

따라서 시스템관리자는 OS Kernel에 대한 갱신정보를 주기적으로 파악해야 합니다.

그렇지 않으면 OS 오류가 발표되자마자 초보적인 해커들이 그 정보를 가지고 인터넷에 있는 시스템들을 탐색하여

해킹을 하므로, 어떤 서버 시스템이나 해킹을 당할 수 있습니다.

시스템에 등록된 이용자 ID 및 비밀번호가 유출되어 해커가 시스템 안으로 들어올 경우 심각한 상황이 발생하게 됩니다.

이 문서(보안안내, Linux, 00-10-01)에서는 시스템의 이용자 ID와 관계된 보안 대비에 대해서는 다루지 않습니다.

다만, 이용자의 비밀번호에 대소문자, 숫자, 기호를 포함하여 복잡하게 하고, 일정주기로 변경하도록 하며,

비밀번호가 스니핑 등에 의해 노출되지 않도록 일반 telnet 보다는 secure shell (ssh)등을 이용할 것을 권장합니다.

불특정 다수가 접근 가능한 서비스들 web(http), dns(dns), mail(smtp, pop3), telnet, ftp 등은 해당 서비스를

제공하지 않는 경우를 제외하고는 해킹시도에 노출되어 있다고 할 수 있습니다.

따라서 이들 서비스를 제공한다고 가정할 경우 이들 program에 대해서는 지속적인 보완조치(patch)를 하여야 하며,

제공하지 않는 서비스 program은 수행하지 않는 것이 원천적으로 해킹시도에 노출되는 것을 피할 수 있는 방법입니다.

필요한 서비스만을 수행시키는 방법에 대해서는 “/etc/inetd.conf 수정”과 “/etc/rc.d/init/의 파일들”에서 설명하도록

하겠습니다.

시스템 보안의 원칙에 대한 결론은 필요한 것만 운영하고, 특정한 곳으로부터의 접근만을 허용하라는 것입니다.

불특정 다수에게 노출되는 서비스 Daemon에 대해서는 지속적으로 Patch를 해주어야 합니다.

리눅스 보안관련 문서 #1 – chmod700 변경

리눅스의 명령어중에는 가장 많이 쓰이는 ls라든지 cd 명령어들이 있습니다.

여기에 나열되는 명령어들은 일반적으로 서버 관리자들만이 쓰는 명령어이며, 일반 클라이언트(유저)들은 거의

사용을 하지 않는 명령어 들입니다.

하지만, 작은 명령어 하나로도, 리눅스 서버가 해킹이 될 수 있음을 절대로 잊으시면 안됩니다.

따라서 일반 클라이언트들이 쓰지 않는 명령어들(사용할 필요가 없는 명령어들)에 대해서는 퍼미션을 운영자만이

사용할 수 있도록 변경 해 줄 필요가 있습니다.

chmod 700으로 변경해줘야할 명령어들

▶ /usr/bin/finger(chmod 700 적용) — 현재 접속자 현황을 보는 명령어(계정명, 서버의 이용자등 내부정보 유출 방지)

▶ /usr/bin/nslookup(chmod 700 적용) — 현재 네임서버의 상태를 보는 명령어(서버의 IP등 내부정보 유출 방지)

▶ /usr/bin/suidperl(chmod 700 적용) — perl 명령어(CGI를 이용한 불법적인 루트권한 획득 방지)

▶ /usr/bin/whereis(chmod 700 적용) — 파일 찾는 명령어(gcc, cc 등의 중요 파일 위치 보호)

▶ /usr/bin/cc(chmod 700 적용) — 컴파일 명령어(이용자가 해킹 프로그램 컴파일 방지)

▶ /usr/bin/sperl5.00503(chmod 700 적용) — perl 명령어(CGI를 이용한 해킹 방지)

▶ /usr/bin/pstree(chmod 700 적용) — 데몬상태 파악(서비스중인 포트정보 유출 방지)

▶ /usr/bin/rlog(chmod 700 적용) — 원격지 로긴(불법적인 원격지 해킹 방지)

▶ /usr/bin/rlogin(chmod 700 적용) — 원격지 로긴(불법적인 원격지 해킹 방지)

▶ /usr/bin/which(chmod 700 적용) — 파일 찾는 명령어(gcc,cc등의 중요 파일 위치 보호)

▶ /usr/bin/who(chmod 700 적용) — 현재 접속자 현황(계정명, 서버의 이용자등 내부정보 유출 방지)

▶ /usr/bin/w(chmod 700 적용) — 현재 접속자 현황(계정명, 서버의 이용자등 내부정보 유출 방지)

▶ /usr/bin/top (chmod 700 적용) — 시스템 정보 보기(시스템 사용 정보유출 방지)

▶ /usr/bin/find (chmod 700 적용) — 파일 찾는 명령어(gcc, cc등의 중요 파일 위치 보호)

▶ /bin/mail (chmod 700 적용)

▶ /bin/ps (chmod 700 적용)

▶ /etc/hosts (chmod 700 적용)

▶ /etc/hosts.deny (chmod 700 적용)

▶ /etc/hosts.allow (chmod 700 적용)

▶ /usr/bin/lynx (chmod 700 적용)

▶ /usr/bin/wget(chmod 700 적용)

▶ /usr/bin/gcc(chmod 700 적용) — 컴파일 명령어(이용자가 해킹 프로그램 컴파일 방지)

▶ /usr/bin/c++(chmod 700 적용) — 컴파일 명령어(이용자가 해킹 프로그램 컴파일 방지)

▶ /usr/bin/make(chmod 700 적용) — 인스톨 명령어(이용자가 해킹 프로그램 컴파일 방지)

gcc, c++, make 명령어를 막게 되면 일반사용자들이 C언어로 작성된 프로그램을 컴파일하지 못하여 불평을

호소하는 경우가 있는데, 이런 경우는 이 명령어를 사용할수 있는 그룹을 설정해 주면 됩니다.

(일반적으로 wheel이라는 그룹을 많이 사용하며, 다른 그룹을 등록해서 사용해도 무관합니다.)

리눅스 보안관련 문서 #2 – anonymous ftp 막기

Anonymous ftp

‘anonymous’는 ‘익명의’,’무명의’라는 의미를 가진 형용사입니다.

즉, 익명의 사용자가 사용할 수 있는 FTP라는 의미를 갖는데, 쉽게 말하면 공개되어 있는 FTP사이트로 해당

FTP서버에 그 서버의 계정이 없는 사용자도 접속하여 파일을 업/다운할수 있는 FTP서버를 말합니다.

취지는 좋지만, anonymous ftp는 해킹의 온상이 된다고 일컬어질 정도로 굉장히 위험한 서비스 입니다.

익명성을 가진 사용자가 서버에 접속하는것을 인증하는것이므로, 해커나 크래커들에게는 쉽게 서버에 접근 할 수

있는 길을 내 주는것입니다.

anonymous ftp 막기

#vi proftpd.conf (/etc 에 위치)

중략

에서

UserAlias anonymous ftp //이부분을 주석처리 해줍니다.

wq (저장후 종료)

리눅스 보안관련 문서 #3 – Telnet 사용 막기

Telnet은 원격지에서 자신의 서버에 접속해서 작업을 할 수 있는 상당히 유용한 서비스중의 하나입니다.

특히 Text기반이기때문에 속도도 상당히 빠르며, vi를 이용한 컴파일이나, 혹은 프로그램의 추가, 삭제등이 가능

하므로 인증된 사용자가 아닌 불법 침입자가 접속했을 경우 서버가 위험해질 확률이 높습니다.

Telnet에 접속하기 위해서는 계정 즉 ID와 패스워드가 필요합니다.

하지만, ID와 패스워드는 누출이 되었을 경우 특히 superuser 계정이 누출되었다고 가정했을 경우

superuser 계정을 획득한 사람이 서버를 스펨메일의 경유지로 사용한다던지, ICQ의 서버로 사용한다든지 하는

위험을 떠나서 자신의 데이터가 전부 불법 침입자의 손 안으로 들어가게 됩니다.

때문에, 계정으로만으로는 서버에 위치한 데이터를 완벽하게 지킬수 있다고 할 수는 없습니다.

하지만 인터넷에 연결 되기 위해서는 IP주소를 가지고 있어야 합니다.

이것을 이용해서 특정 IP에만 Telnet 서비스를 이용할 수 있도록 막아주는 설정입니다.

Telnet 사용 막기

ip 거부

#vi hosts.deny (/etc에 위치)

in.telentd:ALL

wq(저장후 종료)

ip 허가

#hosts.allow (/etc에 위치)

ALL : (IP 추가)

wq (저장후 종료)

저장후 다음과 같이 inet을 재시동 해 줘야 합니다.

#/etc/rc.d/init.d/inet restart

먼저 모든 IP를 막아준 다음, 허용된 IP만을 승인 해 주도록 하면 됩니다.

리눅스 보안관련 문서 #4 – Ping사용 막기

ping은 회선의 속도를 체크 해주는 좋은 명령어지만, 악용을 했을 경우 서버에 많은 피해를 줄 수 있습니다.

실질적으로 서버의 이용자 ID를 해킹하는 형식의 해킹이 있기도 하지만 해킹의 종류에는 서비스를 하지 못하도록 하거나 혹은 서비스 이용에 지장을 주도록 하는 해킹도 있습니다.

‘ping공격’이라고 일컬어지는 이 해킹방법은 서버에 부하를 계속적으로 줌으로써, 서비스의 이용에 지장을 주도록 할 확률이 높습니다.

‘ping 공격’을 막기 위해서는 다음과 같이 프롬프트상에서 작성해주시면 됩니다.

#echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all //ping 막기

#echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all //ping 열기

리눅스 보안관련 문서 #5 – chkconfig 사용법(부팅시 수행되는 서비스)

자신의 서버를 부팅할 경우 어떤 데몬이 살아있고, 어떤 데몬이 죽어있고, 어떤 데몬을 사용할 수 있는가를

아는것이 해킹을 막을 수 있는 가장 유용한 방법입니다.

chkconfig를 이용하여, 데몬중에 반드시 있어야할 데몬을 남겨두고는 전부 죽이는게 해킹을 방지할 수 있는 지름길

입니다.

#chkconfig –list (/sbin 밑에 위치)

#chkconfig –help (참고)

#chkconfig –level 3 sendmail off (사용방법예)

#chkconfig –list (하면 나오는것들)

xfs 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔

anacron 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔

apmd 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔

arpwatch 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔

atd 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔

keytable 0:끔 1:끔 2:켬 3:켬 4:켬 5:켬 6:끔

gpm 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔

inet 0:끔 1:끔 2:끔 3:켬 4:켬 5:켬 6:끔

netfs 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔

network 0:끔 1:끔 2:켬 3:켬 4:켬 5:켬 6:끔

random 0:끔 1:켬 2:켬 3:켬 4:켬 5:켬 6:끔

ipchains 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔

pcmcia 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔

kdcrotate 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔

kudzu 0:끔 1:끔 2:끔 3:켬 4:켬 5:켬 6:끔

linuxconf 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔

lpd 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔

nfs 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔

nfslock 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔

identd 0:끔 1:끔 2:끔 3:켬 4:켬 5:켬 6:끔

portmap 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔

rstatd 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔

rusersd 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔

rwalld 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔

rwhod 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔

sendmail 0:끔 1:끔 2:켬 3:켬 4:켬 5:켬 6:끔

syslog 0:끔 1:끔 2:켬 3:켬 4:켬 5:켬 6:끔

snmpd 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔

crond 0:끔 1:끔 2:켬 3:켬 4:켬 5:켬 6:끔

ypbind 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔

yppasswdd 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔

ypserv 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔

proftpd 0:끔 1:끔 2:끔 3:켬 4:켬 5:켬 6:끔

named 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔

이중 켜야할것은 보통 9개정도밖에 안됩니다.

3번레벨을 기준으로, keytable,inet, network,random,kudzu,sendmail,syslog, crond,proftpd 나머지는 off

시켜주는것이 바람직합니다. (자기의 환경에 맞춰서 설정해주시기 바랍니다.)

참조문서는 http://www.osfs.net/redhat/security-guide-01.doc

리눅스 보안관련 문서 #6 – find 관련 명령어

find 명령어는 쉽게는 파일을 찾을때 사용하지만, 특히 자신의 서버에 불법 침입자가 들어와서 어떠한 일을

했는지 알아낼때도 사용할 수 있습니다.

특히 find 명령어를 이용한 백도어 탐색이라던지 해커가 심어놓은 파일들을 검색해서 두번다시 같은 방식으로

자신의 서버에 불법 침입자가 들어오는것을 방지 해야 합니다.

#find /dev -TYPE f // /dev/MAKEDEV만떠야함 (백도어 찾기)

일반적으로 크래커들은 백도어는 하나두개정도가 아니라 만들수 있는만큼 만들고 나간다고 생각하시면 됩니다.

게다가 백도어는 찾기도 힘들지만, 복구하기도 상당히 힘듭니다. 따라서 해킹 혹은 크래킹을 당했다고 생각이 드시면

중요한 문서들을 백업을 하시고 리눅스를 다시 설치하는걸 권장해 드립니다.

위의 명령어로 물론 백도어를 찾을수는 있지만, 찾을 수 있는 백도어는 한두개에 불과할 것입니다.

#find / -ctime -1 //하루동안 만들어진 화일 (해킹당한듯 싶으면 확인 )

절대로 위의 명령어를 신뢰하지 마시기 바랍니다.

해커나 크래커는 자신이 왔다간 흔적을 결코 남기는일이 없습니다.(초보 해커, 크래커일경우는 모르지만..)

심지어 그날 만들어진 혹은 수정된 화일의 날짜를 변경해놓고, 또한 로그파일까지 지우고 나가는게 해커/크래커 입니다.

단지 위의 명령어로 참고만 하시기 바랍니다.

#find / -nouser (화일에 소유자가 없는 경우의 화일)

리눅스의 모든 파일과 디렉토리에는 소유자가 다 붙습니다.

따라서 일반사용자의 사용 디렉토리에서 화일에 소유자가 없다는것은 한번쯤 의심을 해볼필요가 있습니다.

#find /home/khsheen -user root

(일반사용자인데 root로 되어 있는 화일도 의심해볼 필요가 있습니다)

리눅스 보안관련 문서 #7 – ./etc/inetd.conf 파일의 수정

./etc/inetd.conf 파일은 네트워크의 서비스를 정의하고 있는 파일로서, 정의되어진 서비스가 많이 있습니다.

따라서, 보안 사고를 막기 위해서는 반드시 필요한 서비스 외에는 차단하는것이 좋습니다.

기본적으로 telnet, ftp, pop3 이외의 서비스들은 주석처리 할것을 권장드립니다.

물론 다른 서비스는 닫아놓았는데, 이외의 것이 열려있다면 해킹의 가능성이 있습니다.

이때는 다시 그 서비스를 주석처리 하고 다음과 같은 명령어로 확인하시기 바랍니다.

#ps -ef | grep inetd // 프로세스 확인

#kill -HUP PID //리셋

#vi inetd.conf (/etc에 위치)

telnet

ftp

pop3

// 나머지는 주석처리

wq (저장후 종료)

* 팁> 프로세스를 죽일경우 다음과 같은 명령어로 죽일 수 있습니다.

#kill -9 PID

리눅스 보안관련 문서 #8 – 스팸메일/메일폭탄 대처요령

스펨메일이나 메일밤은 ping공격과 마찬가지로, 서버에 부하를 주는 일명 ‘버퍼오버플로우 공격’의 일종입니다.

‘서버에 부하를 줘봤자 얼마나 주겠어?’라고 생각하실진 모르지만, ‘서버’라는 컴퓨터는 보통 PC와는 달라서, 대부분의 서버의 경우 Dual CPU를 가지고, 최소 2Mbps급 이상의 인터넷 회선에 묶여서 작동이 되므로, 초당 몇십개의 메일을 보낼 수 있습니다.

초당 몇십개는 1분에 최소 200~300개의 메일을 날릴 수 있다는 말인데, 이 공격을 한개 서버에서 계속 받게 되면

1시간이면 12,000~ 20,000개의 메일을 처리해야 합니다.

때문에 서버는 자연스럽게 느려질 수 밖에 없으며, 정상적인 웹 서비스를 하기보다는 받은 메일 처리에 훨씬 많은 리소스를 할애할 수 밖에 없습니다.

이 공격을 당했을때 다음과 같이 현재 메일폭탄 혹은 스펨메일이 날아오는 IP에 대해서 block을 해놓으시면 됩니다.

access 수정 (/etc/mail 에 위치)

access 화일은 메일을 보낼수 있도록 RELAY를 하는 기능을 합니다.

이 화일을 열어 공격 호스트의 아이피를 막아주면 됩니다.

#vi access (/etc/mail)

localhost.localdomain RELAY

localhost RELAY

127.0.0.1 RELAY

211.***.***.*** (자기 아이피) RELAY

ip REJECT(스팸메일이 날아오는 IP 막기)

wq (저장후 종료)

access file을 데이터 베이스화 하기

#makemap hash /etc/mail/access < /etc/mail/access 리눅스 보안관련 문서 #9 - 해킹이 확실한 경우 대처요령 해킹을 당했을 경우에는 많은 방식의 대처요령이 있습니다. 공격 호스트에 대한 파이어월/라우터/시스템등에서 차단하는 방법, 공격 호스트에 대한 역공격 방법등 많은 대처 요령 이 있지만, 대부분의 공격 호스트들은 공격을 했던 해커/크래커의 중간 경유지 역할밖에 안돼는 경우가 허다합니다. 그렇다고 해서 공격에 대해서 묵인만을 한다면, 공격을 했던 해커/크래커들은 지속적으로 다른 방식의 공격을 계속 하게 되며, 몇차례 공격을 막을수는 있겠지만 결국 해킹을 당하게 될 것입니다. 적극적인 공격 대응이 다음에 일어날 해킹/크래킹을 미연에 방지 할 수 있는 진정한 대응법입니다. 먼저 공격을 당했다면, 공격 사이트의 주소, 연락처등을 알아 내는게 중요합니다. 하지만 웹 서버를 살리는것이 급선무입니다. 웹 서버가 계속적으로 서비스 되지 않을 경우 업체의 신인도와 밀접한 관계를 맺게 되므로, 다음과 같이 하셔서 먼저 웹 서버를 다시 구동시키신 후, 중요 파일을 백업받고 리눅스를 다시 설치하시는게 가장 빠른 복구 방법입니다. 해킹을 당했을 경우, 급한 나머지 서버를 종료 시키시거나 리부팅 시키시면 재부팅이 안되거나 혹은 데몬이 살아나지 않을 확률이 굉장히 높습니다. 특히나 서버가 KIDC에 있기 때문에 사무실이나 자택에서는 Telnet접속으로 최소한의 응급 조치는 하고 난 다음 서버를 재 세팅하러 이동하셔야 합니다. 다음과 같이 하시면 최소한 리부팅은 됩니다. #/etc/rc.d/rc.SYSinit 권한을 755로 줍니다. 사실상 해킹을 당했을 경우 가장 좋은 방법은 port(랜선)을 제거하는(인터넷과 접속을 끊는)것입니다. 그다음 설치된 해킹툴을 제거해야하는데, 앞에서도 말씀 드렸지만, 백도어나 해킹툴을 100% 찾고, 제거하는것보다 다시 설치하시는걸 권장 드립니다. 하지만 그게 어려울 경우 혹은 응급조치로는 다음과 같이 프로세스를 확인해서 해킹툴을 제거할 수 있습니다. shell-prompt> kill -9 이상한 프로세스 id

마지막으로 중요 data를 백업하신 후 재 설치를 권장 드립니다.

자신의 서버에 조치를 취하셨다면 이제는 해커/크래커를 추적을 해야 합니다.

앞에서도 말씀 드렸지만 적극적인 대응법만이 자신의 서버를 안전하게 지킬 수 있는 방법입니다.

관련 공격 사이트의 정보는 도메인 주소나 IP 주소로 나타납니다.

각종 로그파일들(리눅스 기본 로그파일은 공격자가 지우고 접속을 종료했을 확률이 높습니다.)을 바탕으로

위의 도메인 주소 혹은 IP주소를 먼저 추적을 합니다.

DNS nolookup, traceroute, whois 기능을 제공해주는 윈도우 공개 도구들은 여기 있습니다.

Netlab : http://www.listsoft.com/eng/programs/pr134.htm

tucow : http://tucows.mirror.ac.uk/dns95.html

IP주소나 도메인 주소를 알았다면 다음 사이트에서 보다 많은 정보를 얻으실 수 있습니다.

국내에 공격 호스트가 있을 경우 : whois.nic.or.kr

공격 호스트가 최상위 도메인일 경우 : http://www.arin.net/whois/arinwhois.html

공격 호스트가 Asia – Pacific 지역일 경우: http://www.apnic.net/apnic-bin/whois.pl

공격 호스트가 유럽 지역일 경우 : http://www.ripe.net/db/whois.html

위의 자료를 바탕으로 침해 사고 대응팀에 연락을 하시면 됩니다.

※ 참고 : 한국 침해사고대응팀

전화 : (02) 3488-4119

팩스 : (02) 3488-4129

E-mail : [email protected]

핫라인 : 018-312-4119

리눅스 보안관련 문서 #10 – 기타 보안 관련 내용

기타 보안 관련 내용에서는 앞에서 다루지 않았던 기타 보안내용들을 다루고 있습니다.

여기에서는 .inc 파일의 위험성, 사용자들의 패스워드 관리, shell 없에기, 보안 패치하기, 해킹 관련 소식 접하기

등의 내용을 다루고 있습니다.

1) .inc 파일의 위험성

만약 자신의 서버에 php와 mysql db가 설치 되어있다면 가장 최근에 이슈가 되었던 inc파일에 대해 읽어보시기

바랍니다.

먼저 .inc 파일이란? inclued 시키는 파일의 확장자를 많은 프로그래머들이 .inc로 저장을 하고 있습니다.

일종의 버릇을 이용한 해킹으로 프로그래머들이 .inc로 include시키는 버릇을 이용한 해킹 방법입니다.

대부분의 프로그밍, 특히 웹 프로그래밍의 경우 db를 열었다 닫았다 하면서 유출 될 수 있는 db의 ID와 패스워드를

숨기기 위해서 include를 사용하는데, 웹상에서 공개된 소스에는 파일명이 대부분 connect.inc를 사용합니다.

하지만 웹 서버는 .inc에 대한 확장자의 정보를 가지고 있지 않고있기 때문에, .inc 파일을 브라우져상에서 직접

읽어들이면, 해당 .inc 파일이 다운로드 되는 맹점이 있습니다.

위의 버릇과 웹 서버의 맹점을 이용해서 db의 ID와 패스워드가 누출됨으로써, 해킹을 당했던 사례가 있습니다.

다음과 같이 설정하셔서 .inc 파일을 php와 같이 인식시키도록 하시면 위와 같은 해킹을 방지할 수 있습니다.

웹 서버의 설정파일 (httpd.conf)를 엽니다.

#vi httpd.conf (/usr/local/apache/conf/ 에 위치)

AddType application/x-httpd-php .php .html .php3 .php4 .phtml .inc

AddType application/x-httpd-php-source .phps

위와같이 설정 해 주시면, .inc 파일이 .php와 동일하게 인식이 되므로, 노출을 막으실 수 있습니다.

또한 telnet, ftp 사용시 group을 같게 해주고 각 계정의 root Directory를 퍼미션을 705로 처리해 주면 다른 유저가

다른 사용자의 계정에 들어 갈수가 없습니다.

만약 755로 한다면 다른 유저에게도 읽을 권한이 생겨서 connect 스크립트를 읽을 수 있어 db접속 아이디/passwd를

얻을수 있습니다.

2) 사용자들의 패스워드 관리

등록된 사용자(클라이언트)들의 패스워드를 자주 갱신하게 만듦으로써, 해킹의 위험성을 줄일 수 있습니다.

shell-prompt>vi /etc/login.defs

이중 아래의 스크립트를 일정기간 설정해서 사용자들의 패스워드를 바꾸게 만듭니다.

PASS_MAX_DAYS 99999 //이부분을 일정기간으로 잡아주면 됩니다.

3) shell 없에기

쉘(Shell)이란? 셀은 사전적인 의미처럼 리눅스 운영체제를 감싸고 있는 껍데기입니다.

즉, 사용자로 부터 입력을 받아 이르 해석하여 해당하는 명령을 찾아 그에 따른 작업을 리눅스 커널에 요청하고,

작업 수행 결과를전달 받아 이름 다시 사용자에게 나타내주는 명령 해석기 역할을 담당합니다.

MS-DOS 의 ‘command.com’과 같은 역할을 수행합니다.

shell의 종류는 다음과 같이 있습니다.

이름 위치 설명

Bourne Shell /bin/sh 모든 유닉스에서 기본적으로 제공되는 쉘이지만, 기능이 미약하여 이후기능을 보강한 많은 다양한 쉘들이 등장했습니다.

간단히 스크립팅을 지원하기 때문에 대부분의 쉘 스크립트들이 boune shell을 기준으로 제작되었습니다.

C Shell /bin/csh BSD계열 유닉스의 광범위한 배포에 따라 상당히 많은 사용자를 확보하고 있는 쉘로써, 스크립트 구문이 C언어와 유사하여 C Shell 이라 불립니다.

TC Shell /bin/tcsh 공개 소프트웨어로, C Shell의 기능을 모두 지원하며, Emacs편집기와 유사한 라인 편집 방식을 지원합니다.

Korn Shell /bin/ksh 대부분의 유닉스 시스템에서 표준으로 사용하고 있는 쉘로서, C Shell과 TC Shell의 기능을 모두 지원합니다.

BASH(Bourne Shell Again shell) /bin/bash 리눅스에서 기본적으로 사용되는 쉘로서 FSF의 GNU 프로젝트의 일환으로기존의 유닉스 쉘들을 대체시킬 목적으로 제작되고 있습니다.

기존 쉘들의 장점들을 모두 수용하고 있으며 스크립트는 Bosurne Shell과 호환이 됩니다.

[표 10-1 shell의 종류와 역할]

메일 계정만 사용하는 경우, 즉 shell이 필요없는 사용자가 맣은데 특히 웹 호스팅 사용자의 경우 이런 경우가 많습니다.

이경우 shell을 최대한 주지 않음으로써, 해킹의 확률을 조금이나마 줄일 수 있습니다.

shell-prompt>vipw

khsheen:x:500:502::/home/gdm:/bin/false

위의 설정으로 khsheen이라는 유저에게 shell을 부여하지 않게 됩니다.

특히 서버에 등록된 사용자가 많은경우 사용자가 관리에 신경을 많이 써야하는데, ‘last’명령을 사용하여,

자주 telnet으로 접속하는 사용자는 history를 자주 살펴보는것이 좋습니다.

shell-prompt>last | grep pts

4) 보안 패치하기

서버 보안에서 가장 중요한것은 역시 패치입니다.

서버에 버그가 발견되면, 해커나 크래커 역시 그것을 바로 발견한다고 생각하면 됩니다.

(실지로 해커나 크래커가 버그를 이용해서 불법 침입을 함으로써, 버그가 발견되는 경우가 많습니다.)

서버에 최신 패키지를 설치하는것은 위의 경우를 최소한으로 줄이는 역할을 하며, 때문에 보안 뉴스를 많이, 또한

빨리 접하는것이 굉장히 중요한데, 특히 커널 업데이트는 상당히 중요합니다.

커널 최신정보를 확인하기 위해서는 다음과 같이 하시면 됩니다.

shell-prompt>finger @www.kernel.org

[zeus.kernel.org]

The latest stable version of the Linux kernel is: 2.2.17

The latest beta version of the Linux kernel is: 2.4.0-test11

The latest prepatch (alpha) version *appears* to be: 2.4.0-test12-pre4

여기에서 보면 Linux kernel is : 2. 2. 17이라는 부분이 있는데 이 부분으로 버전을 알 수 있습니다.

맨 앞의 2는 획기적인 변화가 있을경우를 나타내는 숫자이며, 다음 2의 경우 안정화 버전과 개발화 버전을 나타내는

숫자입니다.(홀수일 경우 개발화 버전이며 짝수일 경우 안정화 버전입니다.)

맨 뒤의 17은 몇번의 패치가 있었는지를 나타내는 숫자입니다.

그리고 기타 패키지에 대한 버그는 빨리 접하고 패치를 해야 합니다.

가장 많이 쓰는 레드햇인 경우 다음에서 확인하실 수 있습니다.

http://www.redhat.com/support/errata/index.html

5) 해킹 관련 소식 접하기

해킹 관련 홈페이지나 웹 사이트를 참조하시는것도 좋지만 다음의 홈페이지는 알아놓으시는게 좋습니다.

한국 정보 보호 센터 : http://certcc.or.kr/

해커스 뉴스 : http://www.hackersnews.org/

시큐어 뉴스 : http://www.securenews.co.kr/

리눅스 보안관련 문서 #11 – 포트 스캔 및 열린 포트 관리하는 법

포트 스캔(Port Scan)은 어떻게 보면 양날의 검과 같습니다.

서버 관리자에게의 포트 스캔은 보안의 역할을 하기 좋지만, 해커나 크래커들에게는 불법 침입에 반드시 필요한

도구 입니다.

기본적으로 포트스캔 툴을 사용하면, 현재 자신의 서버의 포트에 대한 정보를 알 수 있습니다.

포트스캔이 없는 경우 다음과 같이 입력하시면 자신의 서버의 포트를 체크할 수 있습니다.

netstat -an

위의 명령어를 입력하면 포트 번호, 접속상태, 접속자 ID를 얻을 수 있습니다.

여기에서 접속 상태는 다음과 같습니다.

Listening : 현재 열린 포트로써, 누군가의 접속을 기다리는 포트

Established : 정상적으로 연결이 된 포트

Time_wait : 접속 후 다른 명령이나 신호를 기다리는 상태

그중 열린 포트 번호를 적으시고 아래 표를 참조하여 필요하지 않은 서비스 데몬이 실행중이면 닫아주시면 됩니다.

이런 데몬 실행 상태는 /etc/inetd.conf 파일을 열어보시면 됩니다.

해당하는 서비스를 실행하지않고 싶을 경우 # 주석문으로 처리하면 됩니다.

리부팅했을 때 적용하고 싶은 경우에는 아래 KIDC 서버 보안책에 나온 방법을 참조하시기 바랍니다.

listen,Established,Time_wait 이라고 나와 있지 않으면 실행이 되고 있지 않으므로 걱정안하셔도 됩니다.

데몬 기능, 실행확인, 중지방법 권장여부

Amd Automount데몬, 해당서버의 파일접근시 자동으로 마운트

# rpcinfo -p localhost => 실행 확인

# /etc/rc.d/init.d/amd stop => 실행 중지

# chmod a-x /etc/init.d/amd => 다음 boot시에 실행중지 아니요

Boot paramd 구형 Sun 워크스테이션 boot시 필요한 데몬

# rpcinfo -p localhost

# /etc/rc.d/init.d/bootparamd stop

# chmod a-x /etc/rc.d/init.d/bootparamd 아니요

Gated OSPF 라우팅 데몬, 현재 한양대학교 시스템은 라우팅 필요없음

# netstat -a => UDP 포트 520 번이 열려있는지 확인

# /etc/rc.d/init.d/gated stop

# chmod a-x /etc/rc.d/init.d/gated 아니요

Httpd WWW 서비스 데몬

# netstat -a => TCP 포트 80 번이 열려있는지 확인

# /etc/rc.d/init.d/httpd stop

# chmod a-x /etc/rc.d/init.d/httpd 웹서비스필수

Ircd 인터넷 채팅 데몬(Internet Relay Chat)

# netstat -a => TCP 포트 4400,6667,6668,7000

UDP 포트 7007 이 열려있는지 확인

# /etc/rc.d/init.d/ircd stop

# chmod a-x /etc/rc.d/init.d/ircd 사용시에만

Lpd 프린터 데몬, lpr 명령어 사용시 사용되어짐

# netstat -a => TCP 포트 515번이 열려있는지 확인

# /etc/rc.d/init.d/lpd stop

# chmod a-x /etc/rc.d/init.d/lpd 프린터없으면

불필요

mcserv MC(Midnight Commander)의 서버, 외부에서 MC를 이용해 접속가능

# netstat -a => TCP포트 3,1024 번이 열려있는지 확인

# /etc/rc.d/init.d/mcserv stop

# chmod a-x /etc/rc.d/init.d/mcserv 아니요

named DNS 서비스 데몬(도메인 이름을 IP로 바꾸는 서비스)

# netstat -a => TCP,UDP 포트 53번이 열려있는지 확인

# /etc/rc.d/init.d/named stop

# chmod a-x /etc/rc.d/init.d/named 멀티도메인경우

nfs nfs(Network File System) 데몬을 띄우는 스크립트

rpc.nfsd, rpc.mountd 데몬이 수행, nfs 서버로 운영되는 경우만 사용

# rpcinfo -p localhost => mountd와 nfs가 등록되었는지 확인

# /etc/rc.d/init.d/nfs stop

# chmod a-x /etc/rc.d/init.d/nfs 아니요

portmap RPC 서비스 연결을 제어하는 역할을 수행

# netstat -a => TCP,UDP 111번이 열려 있는지 확인

# /etc/rc.d/init.d/portmap stop

# chmod a-x /etc/rc.d/init.d/portmap 꼭 닫을것

routed RIP 라우팅 프로토콜 데몬

# netstat -a => UDP 포트 520번이 열려있음

# /etc/rc.d/init.d/routed stop

# chmod a-x /etc/rc.d/init.d/routed 아니요

sendmail e-mail을 주고 받는 데몬

메일서버로 사용하지 않은 경우 필요 없음

# netstat -a => TCP 포트 25번이 열려져 있는지 확인

# /etc/rc.d/init.d/sendmail stop

# chmod a-x /etc/rc.d/init.d/sendmail 필요에따라

smb Samba 서비스(리눅스와 윈도우의 파일이나 프린터자원 공유) 제공,

smbd, nmbd 데몬을 수행

# netstat -a => TCP 포트 139, UDP 포트 137,138 확인

# /etc/rc.d/init.d/smb stop

# chmod a-x /etc/rc.d/init.d/smb 아니요

snmpd 네트워크 상황을 모니터링할 때 사용되는 데몬

# netstat -a => UDP 포트 161번 확인

# /etc/rc.d/init.d/snmpd stop

# chmod a-x /etc/rc.d/init.d/snmpd 아니요

squid HTTP,Gopher,Ftp등의 캐싱을 담당하는 프락시 데몬

# netstat -a => TCP 포트 3128, UDP 포트 3130 확인

# /etc/rc.d/init.d/squid stop

# chmod a-x /etc/rc.d/init.d/squid 아니요

syslog 시스템에서 일어나는 여러가지 상황을 기록해주는 데몬

다음의 명령어는 syslog를 작동하지 못하게 하는 것임

정상 작동중이라면 아래의 중지 및 변경 명령어를 수행하지 말 것

# netstat -a => UDP 포트 514 번 확인

# /etc/rc.d/init.d/syslog stop

# chmod a-x /etc/rc.d/init.d/syslog 사용필수

xntpd 현재시간을 세계유명 time 관련 사이트에 주기적으로 비교하여

시간을 맞추어주는 NTP(Network Time Protocol) 데몬

# netstat -a => UDP 포트 123 번 확인

# /etc/rc.d/init.d/xntpd stop

# chmod a-x /etc/rc.d/init.d/xntpd 아니요

inet 인터넷 관련 데몬(telnetd, ftpd, fingerd, rlogind 둥)을 실행 시킬수 있게 하는 데몬,

일반적으로 수행하고 해당 서비스 데몬을 수행하지 못하도록 inetd.conf 파일을 수정함

# /etc/rd.d/init.d/inet stop

# chmod a-x /etc/rc.d/init/inet 사용안하는게좋음

ftp inetd.conf를 수정하여 각종 서비스의 수행을 제한

# netstat -a => TCP 포트 21번 확인

# vi /etc/inetd.conf (ftp로 시작하는 라인을 #으로 막음)

# killall -HUP inetd => 대소문자 구별을 정확히 할 것 필요에 의하여

telnet ftp와 동일한 방법, TCP 포트 23번 확인 telnet으로 시작하는 라인을 #으로 막음 필요에의하여

gopher ftp와 동일한 방법, TCP 포트 70번 확인 gopher로 시작하는 라인을 #으로 막음 필요시만

shell 원격지에서 접근하는 rsh의 수행을 제한

/etc/hosts.equiv를 /dev/null로 링크 시킬 것 ftp와 동일한 방법

TCP 포트 514번 확인, shell로 시작하는 라인을 #으로 막음 절대 아니요

login 원격지에서 접근하는 rlogin의 수행을 제한

/etc/hosts.equiv를 /dev/null로 링크 시킬 것 ftp와 동일한 방법,

TCP 포트 513번 확인 login로 시작하는 라인을 #으로 막음 절대아니요

pop-2, pop3 외부에서 e-mail을 받아가서 확인할 때 사용되는 서비스 ftp와 동일한 방법,

TCP 포트 109, 110번 확인 pop-2,pop-3로 시작하는 라인을 #으로 막음 불필요시

talk& ntalk UDP 포트 517, 518번 확인, ftp막는법과 같음 사용안하는게좋음

imap TCP 포트 143 번 확인, ftp막는법과 같음 사용안하는게좋음

finger TCP 포트 79번 확인, ftp막는법과 같음 사용안하는게좋음

time TCP 포트 37번 확인, ftp막는법과 같음 사용안하는게좋음

auth TCP 포트 113번 확인, ftp막는법과 같음 사용안하는게좋음

# /etc/rd.d/init.d/inet restart

서버 관련 보안방법과 연계해서 보시면 도움이 됩니다.

리눅스 보안관련 문서 #12 – 리눅스 보안 툴

#1 – TCPwrapper

이 문서는 Linux 서버시스템의 취약성 및 취약성 보완방법과 관계된 것 중 작은 부분을 안내하는 것이며,

Linux 서버시스템의 모든 취약점과 보안 조치 방법을 제공하는 것이 아니며, 문서의 내용 중 기술적으로 부적절한

설명 및 인쇄상의 오류가 있을 가능성이 있으니, 이 문서에 따라 Linux 서버 시스템에 적용하는 과정에서 발생하는

문제에 대해서는 책임지지 않음을 미리 알려 드립니다.

본글은 인터넷제국과 (주)베스트한컴에서 제공합니다.

TCPwrapper

– Wietse Vanema에 의해 고안된 TCPwrapper 는 호스트레벨에서 특정 프로토콜과 포트에 따른 접속허가를 손쉬운

rule 이용해 줄 수 있는 일종의 packet dropper 입니다.

① 스캔대상

inetd를 이용해 시스템상에 데몬을 띄울 경우, tcpd를 이용해 원하지 않는 곳으로부터의 접근을 호스트레벨에서

원천적으로 봉쇄하며, 정해진 rule 들을 /etc/hosts.allow 와 /etc/hosts.deny를 통해 효과적으로 줄 수 있습니다.

② 장점

꼭 필요한 곳으로부터의 접근만 허용하거나, 믿지못할 곳으로부터의 접근을 거부하는 등의 rule을 자유자재로 줄 수

있으며, 필요없는 데몬들에 대한 정보를 제공해 줌으로써, 관리자들이 쓸데없는 데몬을 띄우지 않도록 해준다.

③ 단점

rule 에 의해 정의된 곳에서만 접근할 수 있거나하기 때문에, 필요에 따라 rule을 자주 바꿔야하는 불편함이 따를 수

있으며, 일단 connection을 성공시킨 뒤 이를 drop 하는 형태를 띄므로, 많은 request 가 있을 경우 서버는 IP diagram

으로부터 source address를 분석하여 이를 rule 에 따라 적용시켜야 하므로 서버에 많은 로드가 걸린다.

④ 확장가능성

호스트 레벨에서의 패킷 필터링 기능으로 TCP wrapper 만큼 좋은 것은 없지만, 필요에 따라 능동적으로 rule 등을

변화할 수 있는 여건이 마련된다면 더욱 효과적일 것입니다.

⑤ 구할 수 있는 곳

ftp://ftp.cert-kr.or.kr

TCP Wrapper 활용

“제한된 곳으로부터의 접근만 허용”

Linux 서버 시스템에서 일반인 즉 불특정다수에게 제공하는 서비스, 예를 들면 WEB(HTTP), DNS, MAIL(SMTP) 등을

제외하고 Linux 서버 시스템에 접근하는 것을 최대한 제한하고 특정한곳으로부터의 접근만 허용하는 것이 보안의 기본입니다.

특히 시스템운영자만이 서버에 접근해서 파일을 수정하거나 자료를 upload/download 하는 경우 telnet 및 ftp에 대한 접근이 모든 곳에 대해 허용해 놓으면 해킹시도에 노출이 됩니다.

Red Hat 6.2 version에서는 TCP Wrapper(tcpd)가 기본으로 제공이 됩니다.

따라서 이것을 이용해 운영자가 이용하는 시스템, 즉 사무실 PC의 IP address에 대해서만 접근을 허용할 것을 권장합니다.

TCP wrapper를 설정하는데 관계되는 파일은 /etc/hosts.deny, /etc/hosts.allow 입니다.

/etc/hosts.deny 정의된 것은 접근이 차단되는 것을 의미하는데 계속 강조해 온 바와 같이 모든 서비스에 대해

모든 곳의 접근을 차단하는 설정을 권장합니다.

예는 다음과 같습니다.

$ more /etc/hosts.deny

#

# hosts.deny This file describes the names of the hosts which are

# *not* allowed to use the local INET services, as decided

# by the ‘/usr/sbin/tcpd’ server.

#

# The portmap line is redundant, but it is left to remind you that

# the new secure portmap uses hosts.deny and hosts.allow. In particular

# you should know that NFS uses portmap! ALL:ALL

앞의 ALL은 모든 서비스를 의미하며, 뒷 부분의 ALL은 모든곳(IP address)을 의미합니다.

그리고 접근이 허용되어야 하는 서비스와 접근하는 곳을 /etc/hosts.allow에 등록을 합니다.

다음 예에서는 ssh2d와 ipop3d에 대해서는 모든 곳을 허용해 놓았고, telnet 접근에 대해서는 10.10.10.10 만 허용해

놓은 것입니다.

$ more /etc/hosts.allow

#

# hosts.allow This file describes the names of the hosts which are

# allowed to use the local INET services, as decided

# by the ‘/usr/sbin/tcpd’ server.

# sshd2:ALL in.telnetd: 10.10.10.10 ipop3d:ALL

위 /etc/hosts.allow와 같이 in.telnetd에 대해 특정 IP address로부터의 접근만을 허용시켜 놓고, /etc/inetd.conf

파일에서 telnet 부분의 # 을 제거하여 서비스를 활성화하고, inet 서비스 Daemon을 Reset 한 후 다른 IP address에서

접근이 되는지 되지 않는지 확인을 해 보시기 바랍니다.

접근을 허용하는 IP address는 여러 명이 사용하는 서버시스템보다는 개인 PC의 IP address를 권장합니다.

TCP wrapper 및 /etc/inetd.conf, 불필요한 시작 script등에 대한 관련 내용은

http://kldp.org/Translations/html/Beowulf_Install_Admin-KLDP/Beowulf_Install_Admin-KLDP-12.html

에서도 얻을 수 있습니다.

TCP Wrapper에서 서비스 및 접근자 목록을 지정하는 예를 아래 더 보여드립니다. 참고하시어 활용하시기 바랍니다.

ALL: 210.124.122.0/255.255.255.0 모든 서비스에 대해 210.124.122.0 ~ 210.124.122.255 로부터의 접근을 제어

ALL: 210.124.122.0/255.255.255.0 211.53.209.0/255.255.255.0 모든 서비스에 대해 210.124.122.0 ~ 210.124.122.255,

211.53.209.0 ~ 211.53.209.255 로부터의 접근을 제어

in.telnetd: 210.124.122.0/255.255.255.0 telnet 서비스에 대해 210.124.122.0 ~ 210.124.122.255 로부터의 접근을 제어

in.telnetd: 211.53.209.0/255.255.255.0 EXCEPT 211.53.209.1 telnet 서비스에 대해 211.53.209.0 ~ 211.53.209.255

로부터의 접근을 제어하는데, 그 중에서 211.53.209.1 은 제외함

#2 – NFSwatch, Drawbride, Netlog

이 문서는 Linux 서버시스템의 취약성 및 취약성 보완방법과 관계된 것 중 작은 부분을 안내하는 것이며,

Linux 서버시스템의 모든 취약점과 보안 조치 방법을 제공하는 것이 아니며, 문서의 내용 중 기술적으로 부적절한

설명 및 인쇄상의 오류가 있을 가능성이 있으니, 이 문서에 따라 Linux 서버 시스템에 적용하는 과정에서 발생하는 문제에 대해서는 책임지지 않음을 미리 알려 드립니다.

본글은 인터넷제국과 (주)베스트한컴에서 제공합니다.

NFSwatch

– 특정 서버와 클라이언트 사이에 오고가는 NFS 관련 패킷들을 모니터링할 수 있는 도구입니다.

① 스캔대상

로켈 네트웍 상에서의 NFS 관련 패킷이 어디에서 어느곳으로 어떻게 옮겨가는지 등을 체크할 수 있습니다.

② 장점

NFS 에 관계된 패킷들만을 모니터링 할 수 있으므로, NFS 관련 공격이 발생하는지에 관한 체크가 가능합니다.

③ 단점

NFSwatch 에 의해 남겨진 로그파일을 전문적인 지식이 없는 관리자들은 전혀 분석할 수 없으므로, 이런 경우

무용지물이 될 가능성이 많습니다.

④ 확장가능성

이 경우에도 보다 효과적인 유저 인터페이스의 지원과 레포팅 기능이 요구됩니다.

⑤ 다운로드

ftp://coast.cs.purdue.edu/

Drawbridge

tiger를 제작한 TAMU에서 제작된 것으로, 두 개의 이더넷 카드를 장착한 PC를 통하여 패킷 필터링을 가능케하는

도구입니다. 이를 위한 rule 들을 주기가 여간 까다로운 도구가 아닐 수 없습니다.

① 스캔대상

주어진 rule 에 따라 패킷을 호스트레벨에서 필터링하는 일종의 wrapper 라고 할 수 있으며, 네트웍상의 브릿지에

설치될 경우 패킷 필터링을 통하여 인증되지 않은 곳에서의 접근을 봉쇄할 수 있습니다.

② 장점

drawbridge 는 아래의 세가지 도구로 구성되며 각각의 특징은 아래와 같습니다.

filter manager – 패킷 필터링 rule 을 정의하는 도구입니다.

filter compiler – 주어진 rule 에 따라 필터를 생성시키는 도구입니다.

filter – 서버의 형태로 사용되며, 패킷들의 source IP address를 통해 패킷필터링을 적용하는 도구입니다.

③ 단점

네트웍 구성에 따라 효과적일지 아닐지 구분되므로, 때에따라 무용지물이 될 가능성이 있다.

④ 확장가능성

방화벽과 같은 bastion 호스트에서의 패킷 필터링 또는, 라우터레벨에서의 패킷 필터링을 통한 네트웍 레벨에서의

접근을 막을 수 있는 방법으로의 발전도 가능할 것입니다.

⑤ 구할 수 있는 곳

ftp://net.tamu.edu/pub/tools

Netlog

IP spoofing 이 널리 알려짐에 따라, TCP 와 UDP 등의 패킷 전송상황을 모니터할 수 있는 netlog 가 등장하게

되었습니다. tcplog ger 와 udplogger를 통하여, 자신의 호스트로의 접속 뿐만 아니라, 서브넷 상에서 이동하는 모든

패킷들을 볼 수 있습니다.

하지만, 패킷만 보여줄뿐, 이를 분석하는 루틴들은 제공되지 않으므로, 관리자의 세심한 배려와 상당한 지식이 요구되는

모니터링 도구입니다.

① 스캔대상

로컬 네트웍 상을 오가는 UDP, TCP 패킷들을 모조리 캡춰할 수 있는데, 위의 방법을 통해 특정 포트에 연속적인 패킷이

계속해서 들어올 경우 IP spoofing 등의 공격 등을 의심할 수 있게 됩니다.

② 장점

Netlog 는 간단히 tcplogger, udplogger, netwatch, extract 와 같이 네 개의 프로그램들로 구성됩니다.

이들 각각의 역할과 특징 을 살펴보면 아래와 같습니다.

tcplogger – 서브넷 내의 모든 TCP connection 들을 로그파일로 남길 수 있다.

udplogger – 스브넷 내의 모든 UDP connection 들을 로그파일로 남길 수 있다.

netwatch – 실시간으로 네트웍 TCP/UDP connection 들을 모니터링할 수 있다.

extract – tcplogger와 udplogger 에 의한 로그파일들을 분석하는데 쓰인다.

즉, 위의 서브툴들을 이용하여, 필요에 따라 프로토콜에 따른 로그파일들을 구성하여, 네트웍 내에서의 이상징후를

발견하는데 아주 유용하게 쓰인다. 이와같은 기능을 하는 보안도구로는 tcpdump 가 있다.

③ 단점

IP spoofing 등의 우려가 전혀 없는 경우에도 netlog 를 이용할 경우, 로그파일의 크기가 상당한 크기를 잡아먹으므로,

이에 대한 낭비가 우려됩니다.

또한, 관리자의 능력이 뛰어나지 않을 경우 도저히 결과를 분석할 수 없다.

Solaris 에서는 tcplogger 의 경우 컴파일 자체가 불가능한데, 다양한 운영체제 상에서 활용이 불가능합니다.

④ 확장가능성

특정 rule 을 통하여 특정 상황이 발생할 때 console 등에 경고 메시지를 주는 방향으로 인터페이스의 개선이

필수적입니다.

⑤ 구할 수 있는 곳

ftp://net.tamu.edu/pub/security/netlog-1.2.tar.gz

============================================================================================

#3 – ISS, SATAN, Cpm

ISS(Internet Security Scanner)

공개용으로 개발된 iss-1.3 버전은 포트 스캔을 통해 vulnerability를 체크하는 루틴과, NIS 맵을 통해 체크하는 것,

그리고 NFS 관련 vulnerability 체크, 그리고 TCP 관련 데몬들의 vulnerability를 체크하는 기능을 갖고 있습니다.

이는 또한 상용으로도 널리 개발되고 있습니다.

① 스캔대상

guest, bbs, lp 등의 시스템 내의 불필요하거나, 보안적인 측면에서 공격대상이 될만한 계정의 유무를 remote 로

조사하며, 각종 프로그램의 vulnerability 를 remote 로 체크합니다.

NFS 상의 export 된 정보를 검색합니다. 또한, 현재 시스템의 사용자들의 목록을 remote 에서 보여줍니다.

② 장점

iss 는 아래의 보조 프로그램들로 분석될 수 있으며, 각각의 장점들을 들어보기로 하겠습니다.

nfsbug – World exportable 한 파일시스템을 검색하며, 이를 해커가 mount 할 수 있는지 없는지를 portmapper 를

사용하여 검색합니다.

Ypx – NIS map 을 네트웍 상에서 검색할 수 있으며 이를 통해 NIS 서버의 패스워드 파일 등을 얻을 수 있습니다.

Strobe(Super optimised TCP port surveyor) – portmapper 를 이용하여 ypx 와 nfsbug 의 소형화를 구현한 것입니다.

즉, iss 의 서브루틴으로서가 아니라, 하나의 독립적인 프로그램으로 관리자가 사용할 수 있습니다.

③ 단점

iss 는 위에서 볼 수 있듯이, 철저한 remote 시스템의 vulnerability 와 정보 등을 캐내는 것이 주요 임무입니다.

때문에, 해커 들이 remote attack 에 있어서 가장 애용할 수 있는 보안도구 중 하나라고 할 수 있습니다.

게다가 소스코드의 공개로 인해 이들 소코드가 변형되어 직접 공격에 가담되기도 합니다.

④ 확장가능성

iss 제작자의 말을 빌자면, iss-1.3 버전은 완벽히 코드가 완성된 것이 아니라고 하며, 실제로 소스코드를 읽어보더라도

위와 같은 것을 발견할 수 있습니다.

또한, 특정 포트를 찍어서, 메시지를 주고받음으로 인해서 remote 시스템 상의 포트에 어떠한 데몬들이 떠있는지

등을 간단히 확인할 수 있기 때문에, 다양한 변화가 가능할 것입니다.

실제로 위와같은 점 때문에, wizard 의 제작에도 iss 가 많이 참조되었습니다.

⑤ 구할 수 있는 곳

ftp://ftp.cert-kr.or.kr/pub/Security/tools/iss13.tar.gz

http://iss.net/iss

SATAN(Security Administrator Tool for Analyzing Networks)

COPS를 제작한 Sun Microsystems 의 Dan farmer 에 의해 네트웍 vulnerability 체크를 중점적으로 하기위해 개발된

satan 은 개발당시까지 알려진 거의 모든 네트웍 hole 들을 다루고 있습니다.

때문에, 해커들에 의해 remote attack 의 한 방법으로 애용되기도 하였는데, 이와 반대되는 성격의 courtney 와

gabriel 이란 satan 방어용 보안도구도 존재할 정도입니다.

① 스캔대상

FTP 서비스의 vulnerability 를 체크한다. NIS 맵을 통하여 패스워드 파일에 접근하여 암호화된 패스워들 파일을 볼 수

있습니다.

portmapper 를 이용하여 NFS 시스템의 export 검사를 수행하며, Sendmail Vulnerability 를 체크합니다.

TFTP vulnerability 를 체크하며, 특정 X 서버가 접근 가능한지 아닌지의 여부를 체크하고, REXD 와 rsh vulnerability

를 체크합니다.

② 장점

외부 시스템에 대한 보안 레벨을 체크함으로써, 로컬 네트웍 상에서의 전반적인 보안 레벨을 관리자가 인식할 수

있습니다. 이전까지 네트웍 레벨에서의 버그나 hole 들에 대한 체크를 수행해주는 보안도구가 없었음을 감안할 때

굉장히 효과적인 도구 입니다.

③ 단점

SATAN 을 이용하여 해커에 의해 공격할만한 목표대상이 remote attack 이 가능해질 수 있습니다.

SATAN 수행도중 SATAN 의 secret key 가 노출될 경우 역으로 해커에 의해 공격당할 가능성이 있으며, 서버에 로드를

가중시킵니다.

④ 확장가능성

계속된 업그레이드가 진행되지 않아, 체크 가능한 버그리스트가 최신 버전이 아니기때문에, SATAN 만으로의

네트웍 레벨 체크만으로 모든 유형의 remote attack 을 방어하는 것은 불가능합니다.

⑤ 구할 수 있는 곳

ftp://ftp.cert-kr.or.kr/security/tools/satan-1.1.1.tar.Z

==========================================================================================

Cpm (Check Promiscuous Mode)

packet sniffing 과 같이 ethernet 상에 뿌려지는 패킷을 해커는 자신의 시스템의 인터페이스를 열어 이들을 감지할

수 있게 되는데, 이때 네트웍 인터페이스는 ‘promiscuous mode’로 전향되며, 때문에 관리자는 CERT에서 개발된

cpm을 통해 promiscuous mode 인지 아닌지를 확인할 수 있게 됩니다.

① 스캔대상

packet sniffing 이 일어나고 있을 경우, 시스템의 네트웍 인터페이스는 promiscuous mode 로 구성됩니다.

현재 로컬 이더넷 상에 이러한 promiscuous mode 로 동작되는 시스템이 있는지의 여부를 체크해 준다.

② 장점

보통 인터넷 상에서 흔히 볼 수 있는 packet sniffer 의 경우 telnet, ftp, rlogin 등의 connection 이 성공되기 까지의

암호 화되지 않은 128byte 를 잡아서 이를 로그파일로 남기는 기능을 합니다.

때문에, login prompt 상에서 128 바이트 이상의 쓰레기 문자를 쓰느라 시간을 허비해야했지만, 하지만, cpm 을

이용하여 이더넷 상에 스니퍼가 돌고 있는지의 여부를 판단하고, 손쉽게 connection 을 이룰수 있습니다.

③ 단점

인터넷은 라우터를 통해 패킷이 목적지로 진행되어 가며, 라우터가 존재하는 로컬 네트웍 상에서는 이 라우터를 통해

가는 암호화되지 않은 패킷들은 스니핑하는 해커에게 손쉽게 잡히게 됩니다.

때문에, 로컬 네트웍 상에서의 promiscuous mode 를 체크하는 방법만으로는 스니핑을 완벽히 피할 수 없습니다.

④ 확장가능성

S/key 와 같은 보안도구와의 연동 또는, ATM(Asynchronous Transfer Mode)의 이용 등으로 위와같은

packet sniffing 을 피할 수 있을 것입니다.

⑤ 구할 수 있는 곳

ftp://cert.org/pub/tools/

#5 – Tiger, ttywatcher, Npasswd

Tiger

COPS 와 매우 비슷한 성격을 띄고 있으며, 파일 시스템 내부의 vulnerability 체크와 suid 체크 등의 기본적인 체크리스트에 따라 호스트를 스캔하는 기능을 갖고 있습니다.

① 스캔대상

root 소유의 파일들의 퍼미션이 적절히 설정되어있는지의 체크 각각의 사용자들의 .rhosts 파일과 .netrc 파일의 검사,

/var/spool/mail 등의 mail 디렉토리의 적절한 내용들의 검사 NFS와 NIS 에 관계된 데몬들과 환경설정이 올바르게 되었는지의 체크

② 장점

verbose 모드를 통하여, 관리자가 현재 어떠한 작업이 수행중인지 확인 할 수 있습니다.

날짜별로 결과를 저장하여, 시스템에 어떠한 변화들이 있을 수 있는지 확인할 수 있습니다.

자체 설정체크 루틴을 이용하여 시스템에 알맞는 체크를 수행하기때문에, 불필요한 작업들은 건너뛸 수 있게 됩니다.

③ 단점

Cops 와 마찬가지로, 지속적인 버전 업그레이드가 계속되지 않는 한, 최근에 발생한 버그나 hole 들에 대한 대응능력을

상실 한합니다.

네트웍 기반에서의 체크기능은 NIS 와 관련한 몇몇 데몬들에 대한 체크밖에 수행할 수 없다는 단점이 있습니다.

④ 확장가능성

대학기관에서 공개되는 보안도구이기 때문에, 지속적으로 관련된 문서와 버전업이 전망됩니다.

⑤ 구할 수 있는 곳

ftp://sc.tamu.edu/pub/security/tiger/

ttywatcher

UNIX 시스템에서 사용자와 시스템과의 통신은 바로 tty를 통해 커널과 통신함으로써 이루어집니다.

ttywatcher 의 경우 커널 드라이버를 생성하여, 시스템 내에 로그온한 모든 tty 와 커널과의 통신을 도청할 수 있는

기능을 제공하여 주는데 물론, 해커들 이 악용할만한 소지가 있는 보안도구이긴 하지만, 평소 의심하던 사용자를

감시하기에는 굉장히 좋은 도구입니다.

① 스캔대상

커널과 tty 와의 통신을 도청하는 형태를 띄며, 이를통해 stdin과 stdout으로의 모든 입출력을 관리자가 볼 수 있습니다.

커널과 통신하기 위해서는 /dev 디렉토리 상에 c 타입의 tty 파일을 생성하여 커널과 통신하게 됩니다.

즉, 위의 tty 파일은 ot her와 group 에게는 read 와 write 가 금지되어 있으므로, root 의 권한으로 다른 사람의 tty 를

도청하는 것입니다.

② 장점

ttywatcher 는 불법적인 계정의 사용자나 해커에 대한 trap의 용도로 아주 유용하게 사용될 수 있습니다.

즉, 해커나 해커로 의심 되는 계정의 사용자의 활동을 모니터링하거나 log 파일로 남김으로써 유일한 증거로

채택될 수 있는 점 등입니다.

③ 단점

해커에 의해 이용될 경우 개인적인 프라이버시 뿐만 아니라, 네트웍 내의 다른 호스트로의 접속과정 등을 모니터링 함으로써 로컬 네트웍 전체에 큰 타격을 입힐 수가 있게 됩니다.

때문에, 절대 SUID 모드로 설치되어서는 안되며, local attack 을 당하지 않을 정도로 시스템 보안을 철두철미하게 해두어야 합니다.

④ 확장가능성

일반적으로 로컬 네트웍 상의 사용자를 제어하기 위한 목적의 IP watcher 의 기능에 착안하여 개발된 ttywatcher 는 IP watcher 와 비슷한 기능으로의 확장이 가능할 것입니다.

또한, 사용하기 편리한 인터페이스 등의 이유로 관리자나 해커들에게 꾸준 한 사랑을 받을 것입니다.

⑤ 구할 수 있는 곳

http://nad.infostructure.com/watcher.html

Npasswd

기본적으로 시스템에 설치되어있는 /bin/passwd 를 대체하는 툴로서, 추측이 가능한 암호나 empty 암호를 사용불가하게 만들어, 사용자 암호를 보다 강력하게 만들 수 있는 도구입니다.

① 스캔대상

Npasswd 는 UNIX 시스템내에 기본적으로 들어있는 /bin/passwd 를 대체하는 역할을 띕니다.

즉, 패스워드 갱신이나 변화시에 예 전 암호와 어느 정도 이상의 변화를 주어야 함을 경고하며, 계정과 비슷한 암호는

사용하지 못하도록 하며, 특수문자를 반드시 하나이상 사용하도록 하는 등, 암호 생성시부터 신경을 쓰게끔하는

도구인만큼 직접적인 버그나 hole 등의 체크와는 거리가 멉니다 .

② 장점

암호 생성시에 각별한 신경을 쓰게 함으로써, local attack 에 대한 빈도수를 낮출 수 있습니다.

즉, 모든 local attack 이 일단, 시스템 내의 접근가능한 기회가 있어야 가능한 것이므로, 취약한 암호계정을 삭제하거나,

바꿈으로써 이러한 기회를 줄일 수 있 게 됩니다.

③ 단점

사용자들이 익숙한 암호를 못쓰게 됨으로 발생하는 불편함이 따를 수 있습니다.

shadow 암호화 루틴과 연동할 경우 잘못 설치하여 shadow 암호와의 연동이 잘못될 경우 시스템에 로그인할 수

없는 문제점들 이 발생할 수 있다.

④ 확장가능성

앞서 말하였듯이, shadow 암호화 루틴과의 연동을 적절히 설정하였을 경우, C2 레벨의 운영체제의 보안등급에

이를 수 있습니다.

오렌지북에서 정의한 운영체제에 대한 보안등 급으로 A, B, C1, C2, D 의 등급으로 나누어지며, A 등급의 경우

불법적인 도용이 불가능한 완벽한 시스템을 일컬으며, D 시스템 의 경우 DOS 등과같이 아무에게나 접근이 허용된 운영체제를 가리킵니다.

⑤ 구할 수 있는 곳

ftp://ftp.cert-kr.or.kr/Security/tool/Npasswd

#6 – Crack, Cops

Crack

UNIX 시스템에서의 /bin/passwd 는 DES(Data Encryption Standard)을 따르므로, 역함수를 구하기는 굉장히 까다로울 뿐만 아 니라, 엄청난 시간이 걸리는 일이지만, 사용자별로 암호를 추측하여, 이를 /bin/passwd 에 의하여

암호화시킨 뒤 이를 /etc/passwd 파일 내의 암호화된 정보와 비교하여 암호를 추적하는 것이 바로 crack 입니다.

① 스캔 대상

/etc/passwd 파일의 각각의 사용자당 두 번째 항목의 암호화된 패스워드 내용을 통해 추측이 가능한 암호인지 아닌지를 판별 해서 알려주는 기능이 crack 의 가장 기본적인 기능입니다.

암호화 함수의 역함수를 통해 암호를 추출해내는 방식이 아니므로, 추측을 가능케하는 사전이 필요합니다.

즉, 사용되는 사전의 크기와 특징에 따라 crack 의 성능이 좌우될 수 있다.

② 장점

SYSTEM V Rel.4 이전의 UNIX 시스템은 /bin/passwd 자체가 취약한 암호인지 아닌지의 여부를 판단하지 못합니다.

때문에, 관리 자들이 crack 을 이용하여 적절한 암호인지 아닌지의 여부를 판단하여, 이를 경고할 수 있습니다.

③ 단점

해커에 의해 crack 이 사용될 경우 시스템 내의 암호가 취약한 사용자의 권한이 도용당할만한 소지가 큽니다.

이는 local attack 뿐만 아니라 잘못된 ftp 환경설정 등을 통한 서버의 /etc/passwd 파일이나, tftp 등을 이용하여 remote attack 으로 발전할 가 능성이 얼마든지 있기 때문에, 보다 효과적인 Npasswd 나 Passwd+ 등의 사용을 권해 드립니다.

관리자에 의해 crack 이 수행된다 하더라도, 이는 추측한 암호를 DES에 의해 암호화하여 비교하는 단순한 작업을 무수히 많이 하므로 시스템 내에 굉장한 로드를 유발한다.

④ 확장가능성

외국인의 경우 암호의 사용 기반이 영어이며, 한국인의 경우 2벌식이나, 3벌식 한글자판을 기본으로 암호가 대부분 구성된다 는 가정이 설 때, crack 의 기반이 되는 사전파일의 좋으냐 나쁘냐에 따라 crack 의 성능이 좋은지 나쁜지가 좌우되기 때문에, 좋은 사전을 구성하거나, 만드는 작업이 필요합니다.

⑤ 구할 수 있는 곳

ftp://cert.org/pub/tools/crack/

COPS(Computerizes Oracle and Password System)

널리 알려진 문제되는 파일을 체크섬을 통하여 vulnerability 체크를 수행하며, 파일 시스템 내의 여러 permission 과 setuid 등에 대한 체크도 수행합니다.

① 스캔 대상

시스템 내의 중요한 파일, 디렉토리, 디바이스 등에 대한 퍼미션 체크 crack 알고리즘을 이용하여 추측가능한 암호들을 검증, /etc/passwd, group 파일내의 UID 0 등의 기본적인 체크, /etc/rc 파일에 의한 내부의 vulnerable 체크와 crontab 에 의해 실행되는 프로그램들에 관한 체크, 중요한 파일들의 체크섬을 이용한 변조여부 체크, 사용자들 각각의 초기화 파일의 퍼미션 체크, anonymous ftp 환경설정이 제대로 이루어져있는지의 체크, /etc/hosts.equiv 를 통하여 NFS 설정이 제대로 되어있는지 등의 여부를 체크합니다.

② 장점

인터넷 보안의 고전이라 불리우는 “System Administration Guide” 의 저자인 Dan farmer 에 의해 제작되어서, 기본 적인 시스템 내의 많은 버그와 hole 들에 대한 충실한 설명을 덧붙여 준다. shell 상태에서 관리자가 보안을

위해 신경써야 할 점들을 대부분 Cops 는 훌륭히 소화해줍니다.

③ 단점

crack 등과 같은 다른 루틴들을 많이 포함하고있어, 실행시간이 굉장히 길고 이에따른 시스템내의 로드도 상당합니다.

설치방법이 간단히 ‘make’ 만으로 이루어지지만, 불필요한 루틴들도 모두 설치되는 등 자신의 시스템에 맞게끔

고쳐야할 필요성이 있습니다.

최신 버그나 hole 들에 대해서는 전혀 대응할 수 없으며, OS 별로 나타나는 특정 버그나 hole 들에 대한 대응책이 없으며, 단지 vulnerable 한지의 여부만 판단 및 경고하여줄 뿐, 이에대한 처방은 하여주지 않으므로 cops 에 의해

나타난 보고서를 통해 적절한 관리자의 행동을 수반해야합니다.

④ 확장가능성

Cops 는 시스템 내부의 많은 버그와 hole 들에 대한 vulnerable 체크를 수행해주지만, 네트웍 기반에서의 체크는 현재 전혀 해주지 않고 있기때문에, 네트웍 기반의 체크가 추가된다면, 상당히 효과적으로 사용될 수 있을 것입니다.

인스톨 과정이 보다 효과적으로 진행된다면, 관리자들에게 큰 도움을 줄 수 있을 것입니다.

각각의 OS 별로 나타나는 버그나 hole 들에대한 데이터베이스화된 rule 들의 정의를 통해서 보다 나은 보안도구로 쓰일 수 있을것 입니다.

⑤ 구할 수 있는 곳

Cops 는 보안 관련 도구들 중에서도 가장 널리 알려진 것들에 속하므로 대부분의 anonymous FTP 서버에서 구할 수 있지만, 원내에서 가장 쉽게 찾을 수 있는 곳은 아래와 같다.

ftp://ftp.cert-kr.or.kr/pub/Security/tool/cops_104.tar.Z

인쇄

리눅스의 보안 위협, 점점 더 증가하고 있다

[이미지 = utoimage] [보안뉴스 문정후 기자] 대수롭지 않게 보이는 것들, 혹은 거기 있는 줄도 몰랐던 사소한 것들이 꽤나 큰 문제를 일으키는 사례가 보안 업계에서는 흔히 나타난다. 좋은 예가 있으니 ELF 바이너리 형태로 기획된 리눅스 멀웨어다. 리눅스라는 것이 광범위하게 우리 생활 곳곳에 퍼지고 있는데, 대부분의 우리는 그걸 잘 인지하지 못하고 있다. 거기 있는데 있는 줄 모르고 있다가 큰 코 다치게 되는 것이다.포티가드랩스(FortiGuard Labs)의 전문가들이 조사한 결과 최근 들어 ELF 멀웨어를 비롯해 다양한 종류의 리눅스 멀웨어들이 무서운 속도로 증가하는 중이라는 사실이 드러났다. 2021년 한 해 동안 리눅스 멀웨어의 양은 두 배 넘게 증가했으며, 올해 1사분기 동안에는 무려 네 배나 늘어났다고 한다. 물론 2배나 4배를 가지고 ‘기하급수적’이라고 말하는 건 어색하지만, 무시하기도 힘든 수치인 것도 분명하다.리눅스 멀웨어가 다양해지면서 증가하고 있다는 건 사이버 공격자들의 관심이 리눅스 체제로 쏠리기 시작했다는 걸 나타낸다. ELF 형태로 나타나는 멀웨어 중 가장 많이 눈에 띄는 건 머스틱(Muhstik)이라는 것으로, 감염된 시스템을 봇으로 만드는 기능을 가지고 있다. 알려진 취약점을 익스플로잇 하는 방식으로 증가하는 것으로 알려져 있다. 머스틱이 곧잘 익스플로잇 하는 것 중 하나는 아틀라시안 컨플루언스(Atlassian Confluence)라는 인기 높은 웹 기반 협업 툴이다. 컨플루언스를 익스플로잇 한 공격자들은 후속으로 백도어나 채굴 멀웨어를 심는다.또 눈에 띄는 새로운 리눅스 멀웨어에는 레드쏘르(RedXOR)가 있다. 리눅스 시스템을 공격해 데이터를 외부로 빼돌리는 기능을 가지고 있으며 지난 10월에는 포티가드가 선정한 탑10에 들기도 했다. 그 외에는 코발트 스트라이크(Cobalt Strike)의 비컨(Beacon)의 악성 버전인 버밀리온 스트라이크(Vermilion Strike)가 있다. 공격자들이 원격에서 피해자 시스템에 접근할 수 있게 해 준다.리눅스는 점점 더 많은 곳에서 활용되고 있으며, 그 추세는 쉬이 꺾이지 않을 것으로 보인다. 공격자들이 앞으로 더 거세게 리눅스를 노릴 것이라는 건 유치원생들도 예측할 수 있다. 그렇다는 건 마이크로소프트의 리눅스용 윈도 서브시스템(Windows Subsystem for Linux)과 같은 요소들이 주요 먹잇감이 될 것도 예상 범주에 들어간다. 참고로 리눅스용 윈도 서브시스템은 리눅스 바이너리 실행파일들을 윈도에서 실행시킬 수 있게 해 주는 장치다.필자가 하고 싶은 말은 하나다. 리눅스 환경이 점점(이라고 하기에는 무서울 정도의 속도로) 위험해지고 있다는 것이다. 그렇다면 대처를 해야 하는데, 사실 ‘리눅스를 보호한다’는 말처럼 애매한 것도 드물다. 리눅스를 보호한다는 건 무슨 뜻일까? 간단히 말해 우리가 알고 있는 각종 정보보안의 방법론들을 통합하여 회사를 보호한다는 뜻이다. 회사 내 모든 사용자, 장비, 애플리케이션을 아우를 수 있는 보안 정책, 보안 기술, 보안 솔루션이 필요하고, 이런 보호 장치들이 늘상 가동되고 있어야 한다.중앙 관리 체제로 보안 정책이 제대로 시행되고 있는지 살피고, 각종 기기들과 애플리케이션이 제대로 설정되어 있는지도 모니터링 하며, 최신화 여부 역시 주기적으로 검사해야 한다. 회사 전체의 네트워크 구성 요소들을 꼼꼼하게 파악해서 수상한 사건이 발생했을 때 즉각 알아챌 수 있도록 하는 것도 필수적이다. 여러 곳에서 제각각 수집된 데이터와 첩보를 중앙에서 모으고 분석해 좀 더 큰 그림을 이해할 수 있어야 한다. 리눅스라는 게 어느 한 전용 시스템에만 설치되는 게 아니다 보니 자연스럽게 조직 전체의 보안 강화를 꾀하는 방식으로 리눅스를 보호할 수밖에 없다.리눅스 생태계에서 발생하고 있는 위협을 다루기 위해 조직들은 바삐 움직여야 한다. 특히 OT 네트워크를 보유하고 있는 회사라면 더 그렇다. 실시간으로 위협을 탐지하고 자동으로 제거하는 기술들에 대하여 알아보고 구매하는 것도 좋은 방법일 수 있다. 또한 새로운 IT 요소(예 : 애플리케이션)를 도입하기 전에 보안성 검토를 진행하는 프로세스와 문화를 정착시키는 것도 중장기적으로 현명하다. 또 하나, 행동 기반 보안 도구나 정보 분석 솔루션을 구축하여 공격자들의 정찰 단계부터 어렵게 만드는 것도 리눅스를 보호하는 강력한 방법 중 하나다.리눅스를 보호하려고 방법을 찾아 보는 보안 담당자들이나 IT 관리자들이 기억해야 할 건 리눅스가 대부분 백엔드 시스템들의 기반이 된다는 것이다. 최근에는 사물인터넷 장비들이나 컨테이너 기술에도 리눅스가 빠지지 않고 등장한다. 특히 절대 다운되면 안 되는 애플리케이션이나 장치들에 리눅스가 있는 경우가 많다. 공격자들의 구미가 당길 만한 이야기다.아직 공격자들은 리눅스에 대한 공격을 준비 중에 있다. 아마 공부를 적잖이 하고 있을 것으로 예상한다. 그렇다는 건 이 시기에 IT와 보안 업계 역시 준비를 시작해야 한다는 뜻이 된다. 리눅스가 중대한 골칫거리가 되고 나서 공부하면 늦어도 한참 늦다.글 : 데렉 만키(Derek Manky), 부회장, FortiGuard Labs[국제부 문정후 기자( [email protected] )]

www.boannews.com) 무단전재-재배포금지>

글로벌 칼럼 | 리눅스 보안이 윈도우나 맥OS보다 우수한 이유

Offcanvas

Some text as placeholder. In real life you can have the elements you have chosen. Like, text, images, lists, etc.

리눅스의 기본 보안설정

리눅스를 새로설치하게되면 대부분 기본값으로 보안설정이 되어있지않습니다. 즉, 기본값으로 운영하게 되면 서버보안이 상당히 취약해 집니다. 아마도 보안은 생각하지않고, 편의를 위한 기본값인 것 같습니다.

아래는 리눅스로 서버운영시 꼭 해야 될 보안설정입니다. 안해도 서버운영엔 지장이 없지만, 보안엔 문제가 있겠죠..

1. SSH로 root 계정 직접 로그인 차단

SSH는 다른사람들도 로그인을 시도 할 수 있음을 명심해주세요. 아이디와 패스워드를 알게되면 누구나 시스템에 접근이 가능합니다. 더군다나 root 계정의 아이디는 모두 동일하게 “root”로 정해져있습니다.

따라서 SSH상에서 root 계정에 직접 로그인하는 것을 막아야합니다. 대신 일반계정에 접속한다음 su 명령으로 root 계정으로 전환하면 됩니다.

먼저 로그인을 할 수 있는 일반계정을 생성합니다. (여기서는 conory라는 계정을 생성하겠습니다.)

# useradd conory # passwd conory

/etc/ssh/sshd_config 파일에서 PermitRootLogin 설정을 no 로 변경합니다.

# vi /etc/ssh/sshd_config

PermitRootLogin no

그리고 sshd 서비스를 재시작하면 됩니다.

# service sshd restart

2. 특정 계정만 su 명령을 사용할 수 있게 하기

1번 사항을 적용하였다면 su 명령으로만 root 권한을 획득할 수 있을 것입니다. 이 중요한 su명령을 아무나 사용하게 두어서는 안되겠죠.. 특정 사용자 계정에서만 su 명령을 사용할 수 있도록 해봅시다.

/bin/su 명령파일을 wheel 그룹 소유로 돌리면 wheel 그룹에 속한 계정만 su 명령을 사용할 수 있습니다. 저는 conory 계정에서만 su 명령을 사용할 수 있도록 해보겠습니다.

먼저 wheel 그룹에 conory 계정을 추가합니다.

# vi /etc/group

wheel:x:10:root,conory

그리고 /bin/su 파일의 소유그룹을 변경합니다.

# chown root.wheel /bin/su

마지막으로 su 파일을 변경할 수 없도록 속성을 변경합니다.

# chmod 4750 /bin/su # chattr +i /bin/su

3. FTP 사용안함

일반 FTP는 보안에 취약하므로 사용을 하지않는 것이 좋습니다. 대신 보안에 좋은 SFTP를 사용하면 됩니다.

리눅스를 설치하면 FTP 프로그램은 다행히 깔려있지않습니다. 그래서 딱히 설정해줄 것은 없고, 추후 FTP를 사용하지않길 권장합니다.

SFTP은 SSH 서비스만 활성화되어있으면 접속할 수 있습니다.

4. 일반계정 접속시 노출 디렉토리 퍼미션 변경

일반계정으로 접속하면 자신의 홈디렉토리가 먼저 노출되게 됩니다. 하지만 자신의 홈디렉토리 이외의 상위 디렉토리 또한 같이 노출됩니다. 이 문제는 바로 상위 디렉토리가 공개 읽기 퍼미션을 갖고 있기 때문에 그렇습니다.

그래서 다른 사용자에게 노출되기 원치않는 디렉토리는 퍼미션을 변경하는 것이 좋습니다. (755->701)

저는 홈 디렉토리 퍼미션을 변경했습니다.

# chmod 700 /home/system

5. tmp 디렉토리 보안

웹 서버를 운영하면 tmp 디렉토리의 역할이 중요해집니다. 이 디렉토리는 아무나 읽고, 쓰고, 실행할 있도록 기본으로 셋팅되어져있습니다. 그렇기때문에 웹에서 tmp 디렉토리에 악성파일을 넣는 것이 가능합니다. 만약 악성파일이 실행되기라도 한다면 보안에 치명적이겠죠.

애초 OS 설치시 tmp 파티션을 따로 나누어 설치하는 것이 좋습니다. 그렇지않다면 tmp 파티션을 따로 나눌 필요가 있습니다.

* 주의 : tmp 디렉토리를 사용하는 프로세스가 구동중이라면 관련된 프로세스를 중단한 상태에서 작업을 진행하세요. (nginx, php, mysql등..)

A. 파티션 확인 / tmp 디렉토리 백업

tmp 파티션이 있는 지 확인합니다.

# df -h

tmp 491M 0 491M 0% /tmp

이런 /tmp 항목이 없다면 파티션이 없는 겁니다.

작업 마지막 단계에 복원할 tmp 디렉토리 백업본을 만듭니다.

# cp -Rp /tmp /tmp-backup # cp /etc/fstab /etc/fstab.backup

B. tmp 파티션이 없는 경우 (/tmp 디렉토리만 있음)

파티션이 있는 경우는 아래 작업을 수행할 필요없이 C 단계를 수행하면 됩니다.

* 파티션 생성및 포맷

# cd /var # dd if=/dev/zero of=tmpmount bs=1 count=0 seek=원하는 파티션 용량. 예)5G # mkfs.ext4 /var/tmpmount

* /etc/fstab 에 파티션 내용 추가

# echo “/var/tmpmount /tmp ext4 defaults,nodev,nosuid,noexec 0 0” >> /etc/fstab

* /tmp 파티션 마운트

# mount -o defaults,nodev,nosuid,noexec /var/tmpmount /tmp

* 소유권과 사용권한 부여

# chmod 0777 /tmp # chown root.root /tmp

C. 이미 tmp 파티션이 존재하는 경우

이 경우 간단히 /etc/fstab에서 tmp 파티션부분을 변경하면 됩니다.

* /etc/fstab 파티션 속성추가

# vi /etc/fstab

UUID=…. /tmp ext4 defaults,nodev,nosuid,noexec 1 2 위 처럼 tmp 파티션부분에 부분색 부분을 추가하면 됩니다.

nodev : 장치 사용 금지 nosuid : root 권한 금지 noexec : 바이너리 파일 실행금지

* 파티션 재 마운트

# mount -o remount /tmp

D. /tmp 디렉토리 복원 및 /var/tmp 심볼릭 링크

* /tmp 복구와 백업 삭제 (아까 백업한 tmp 데이터 복원)

# cp -Rp /tmp-backup/* /tmp/ # rm -rf /tmp-backup

* /var/tmp 심볼릭 링크

# rm -rf /var/tmp/ # ln -s /tmp/ /var/tmp

@ /var/tmp 디렉토리를 제거하고, 보안 작업된 tmp 디렉토리를 사용하도록 심볼릭 링크를 겁니다.

* 재부팅

# reboot

6. 시스템 중요파일 속성변경

일반계정 사용자가 시스템 파일을 악용하여 위험에 빠지게 할 수 있습니다. 따라서 시스템 중요 파일의 속성을 변경하여 일반계정 사용자가 함부로 사용하지못하게 할 필요가 있습니다. root 계정만 사용할 수 있도록 변경해보겠습니다.

파일의 퍼미션을 100으로 변경해 소유자 root만 실행할 수 있게 하고, +i 옵션을 부여해 파일의 복사/수정/삭제를 금지합니다.

* gcc, g++ 컴파일러

# chmod 100 /usr/bin/gcc /usr/bin/g++ # chattr +i /usr/bin/gcc /usr/bin/g++

@ g++은 기본 설치가 아니므로 필요하면 따로 설치해야합니다. yum install gcc-c++

* ps 명령 (프로세스 관리)

# chmod 100 /bin/ps # chattr +i /bin/ps

* ping 명령

# chmod 100 /bin/ping # chmod 100 /bin/ping6

* 그이외의 관리자 명령어

# chmod 750 /usr/sbin/useradd # chmod 750 /usr/sbin/userdel # chmod 750 /usr/sbin/usermod # chmod 750 /usr/bin/top # chmod 750 /sbin/fdisk # chmod 750 /sbin/mkfs* # chmod 750 /sbin/fsck*

# chmod 100 /usr/bin/pstree

# chmod 100 /usr/bin/w # chmod 100 /usr/bin/who # chmod 100 /usr/bin/find # chmod 100 /bin/df # chmod 100 /bin/netstat # chmod 100 /sbin/ifconfig # chmod 100 /usr/bin/make

# chmod 700 /usr/bin/wget # chmod 700 /usr/bin/curl

# chattr +i /usr/sbin/useradd # chattr +i /usr/sbin/userdel # chattr +i /usr/sbin/usermod # chattr +i /usr/bin/top # chattr +i /sbin/fdisk # chattr +i /sbin/mkfs* # chattr +i /sbin/fsck*

@ chattr +i를 적용하면 yum 업데이트를 할 수 없습니다. 그럴때는 chattr -i 로 해제하면 됩니다.

7. ping 테스트 응답차단

고전수법이지만 ping으로 서버속도를 저하시킬 수 있습니다. 그래서 ping 응답을 미리 차단시킬 필요가 있습니다.

ping을 차단 하려면 net.ipv4.icmp_echo_ignore_all 설정을 1로 변경하면 됩니다.

# sysctl -a | grep net.ipv4.icmp_echo_ignore_all

net.ipv4.icmp_echo_ignore_all = 0

그러면 설정 값을 변경해봅시다.

# vi /etc/sysctl.conf

/etc/sysctl.conf 파일 하단에 아래 설정값을 입력하고 저장시키면 됩니다. net.ipv4.icmp_echo_ignore_all=1

이 변경을 재부팅을 해야 적용됩니다. 재부팅 없이 일시적으로 변경하려면 아래 명령을 실행하면 됩니다.

# /sbin/sysctl -w net.ipv4.icmp_echo_ignore_all=1

이제 ping [서버ip] 이렇게 해봐도 아무런 응답이 없게 되었습니다.

8. SetUID, SetGID 점검

리눅스 해킹의 대부분은 SetUID, SetGID를 이용해 이루어지고 있다고 해도 과언이 아닙니다. 때문에 이 보안점검은 아주 중요한 점검이 될 것입니다.

SetUID(퍼미션 : 4000), SetGID(퍼미션 : 2000)은 파일에 부여하는 퍼미션 속성의 일종입니다. 이 속성이 부여된 파일을 실행할 경우 사용자 권한으로 실행되는 것이 아니라 해당 파일의 소유자(SetUID)나 그룹(SetGID)의 권한으로 실행됩니다. 예를 들어 파일의 소유자가 root이면 파일을 실행할 동안 잠깐 root 권한을 얻게 됩니다.

따라서 이를 악용한다면 root 권한을 획득해 마음대로 시스템을 제어할 수 있을 것입니다.

보안 취약점 생길 수 있는 SetUID, SetGID가 왜 필요할까요?

퍼미션 4000대(SetUID)가 부여된 /usr/bin/passwd 파일을 예로 들어 보겠습니다. /usr/bin/passwd 파일은 passwd 명령어 파일입니다. 그리고 passwd는 계정 비밀번호를 변경할때 사용하는 명령어입니다. 원래 계정 비밀번호 변경은 관리자(root)의 고유권한이 였습니다. 하지만 일반사용자는 직접 비밀번호를 변경하길 원했습니다. 그 결과 /usr/bin/passwd 파일에 파일소유자 root 권한을 잠깐 빌려주는 SetGID 속성이 부여된 것입니다. 일반계정에서 비밀번호 변경이 가능한 것도 passwd 명령을 실행할때 root 권한이 잠깐 부여된 덕분입니다.

이런 장점도 있지만, 보안에 취약하다는 단점도 있습니다. 그렇기에 SetUID, SetGID 점검이 필요한 것입니다.

방법은 간단합니다. root 소유의 파일중 퍼미션 4000(SetUID), 2000(SetGID)이 부여된 파일들을 찾아 일반사용자에게 굳이 필요하지않는 파일은 SetUID, SetGID 속성을 제거하면 됩니다. 아래 명령어를 이용하면 해당 파일을 찾는 데 도움이 될 것입니다.

* 퍼미션 4000(SetUID)이 부여된 root 소유파일 찾기

# find / -user root -perm -4000 -print

* 퍼미션 2000(SetGID)이 부여된 root 소유파일 찾기

# find / -user root -perm -2000 -print

* 필요없는 파일 퍼미션 변경 (조치)

# chmod 100 /bin/ping

/usr/bin/chsh

/usr/bin/gpasswd

/usr/bin/wall

/usr/bin/write

/usr/bin/chage

/usr/bin/chfn

/usr/bin/at

/usr/bin/mount

/usr/bin/umount

/usr/bin/crontab

/usr/bin/newgrp

/usr/sbin/usernetctl

/bin/ping

/usr/bin/sudo

->sudo 명령은 su 명령으로 대체할 수 있습니다. 안쓸거면 필요없죠..

위 파일들은 SetUID, SetGID 속성을 가졌음에도 불구하고, 일반 사용자에게는 굳지 필요없는 파일들입니다. 퍼미션 변경 조치를 해주세요.

시스템 보안 및 관리

laughcryrepeat

시스템 보안 관리

1) 리눅스 보안의 소개

웹서버의 전체 중 약 70% 차지

오픈소스 소프트웨어이기 때문에 보안에 취약하다는 지적이 있었지만 위협에 대응해 지속적으로 패치를 만들고 업데이트 .

2) 물리적 보안

1. 물리적 보안의 설명

기본적으로 보안에 민감한 서버에 대해 허가받지 않은 사용자가 물리적으로 접근하지 못하게 하는것.

2. 물리적 보안 방안

cctv, 동작감지 열화상카메라, 자동잠김 강화도어 등.

3) 시스템 보안

1. BIOS 보안

BIOS 설정을 변경해 부팅하여 리눅스의 복구모드로 진입 가능하므로 BIOS에 비밀번호를 설정.

2. 패스워드 보안

– root 사용자는 허가되고 제한된 사용자에게만 부여.

UID가 0이면 root 사용자의 권한을 갖기 때문에 /etc/password 파일 중 UID가 0인 사용자가 있는지 점검

$cat /etc/passwd |grep x:0:

root:x:0:0:root:/root:/bin/bash

– root 사용자만 읽을 수 있는 SHA512로 해시를 만들어내는 /etc/shadow를 사용하는 것이 안전.

– 무작위 대입 공격을 방어하려면 강력한 패스워드를 설정해야 하는데 PAM 중 pam_cracklib.so를 사용할 수 있다.

– 사용자가 패스워드를 정기적으로 변경하도록 chage 명령어나 User Manager 어플리케이션 사용.

특정 사용자 패스워드 만료일을 90로 설정

$charge -M 90

3. 관리자 계정 보안

– root 사용자의 로그인은 제한하고 su 또는 sudo 명령어를 통해 필요할 때 일시적으로 관리자 권한을 부여

로그인 제한을 위해 /etc/passwd 파일의 root 사용자의 셸 설정을 /sbin/nologin으로 변경

– SSH 프로토콜을 통한 root 사용자 로그인을 막기위해 /etc/ssh/sshd_config 파일에서 PermitRootLogin no를 기입

4) 서비스 및 운영 보안

1. 필수 서비스만 사용

사용하지 않는 서비스나 응용프로그램은 보안의 취약점이 될 수 있으므로 사용하는 서비스만 남기고 삭제.

2. 시스템 정보 숨김

로그인할 때 /etc/issue 또는 /etc/issue.net의 내용이 사용자 터미널에 출력되므로, 보안상 해당 파일을 수정.

3. 부트로더 패스워드 설정

root 패스워드 분실시 복구모드로 진입하거나 단일 사용자 모드로 부팅하여 root의 패스워드 변경.

이를 방시하기위해 부트로더에 패스워드 설정한다.

grub 에 패스워드를 설정하기위해 grub-crypt 명령어를 사용

$grub-crypt

4. 보안 서비스 사용

원격 터미널 접속을 위해 telnet 보다는 ssh를 사용

telnet은 암호화되어 있지 않은 평문으로 패킷을 주고받기 때문에 tcpdump, wireshark와 같은 패킷 캡쳐 도구를 통해 사용자 정보가 노출될 수 있다.

5) 파일 시스템 보안

1. 소유권과 허가권

파일 및 디렉터리의 소유권 및 허가권을 필요한 만큼만 설정.

다른 사용자의 허가권을 rwx로 부여하는것은 위험하다.

사용자에게 임시로 root 권한을 줄 수 있는 Set-UID, Set-GID, Sticky-Bit 와 같은 특수권한의 사용은 관리되어야 함.

2. lsattr

파일의 속성을 출력. 파일의 속성은 파일 허가권과 동일 의미는 아님.

lsattr [option] file

3. chattr

파일의 속성을 수정하는 명령어

chattr [option] mode file

4. getfacl

파일의 ACL(access control list)을 확인하는 명령어.

파일의 이름, 소유자, 그룹과 ACL 정보를 함께 출력.

gerfacl [option] file or directory

5. setfacl

– 파일이나 디렉터리에 ACL을 설정하는 명령어

– 리눅스의 기본허가권은 파일에 대한 소유자, 그룹, 다른사용자의 허가권만 지정할 수 있을뿐 특정 사용자마다 허가권을 세밀하게 권한을 부여할수 없음. 이러하나 제약을 극복하고 각 파일이나 디렉터리의 접근에 대한 세밀한 권한을 부여하는 보안 통제방식

– access ACL과 기본 ACL 두가지 종류

access ACL은 지정한 파일이나 디렉터리에 설정한 임의의 ACL 의미

기본 ACL은 필수는 아니지만 디렉터리에 설정가능.

기본 ACL이 설정된 디렉터리에 access ACL이 지정되지 않은 파일이 생성된다면 해당 파일은 디렉터리의 기본 ACL 사용.

setfacl [option] file or derectory

6) 네트워크 보안

1. sysctl 을 통한 보안 강화

/proc/sys 디렉터리 이하의 커널 매개변수는 확인하거나 설정하는 명령어로서 세부커널 설정을 통해 리눅스 보안강화할 수 있다.

/proc/sys/net 이하에는 네트워트 관련 커널 설정을 할 수 있는 경로.

sysctl [option] variable[=value]

systemstl을 통한 보안 강화 예시

보안 위협 조치방법 서버 날짜 정보 유출 /proc/sys/net/ipv4/tcp_timestamps를 0으로 설정하여 외부에서 서버의 날짜 정보를 확인할 수 없도록 한다. SYN_FLOODING 공격 – TCP 연결설정의 특성(3-way handshake)을 이용한 공격.

클라이언트는 서버에 연결하기 위해 SYN 패킷을 전송하고 서버는 SYN,ACK 패킷을 응답하고 클라이언트의 ACK 응답을 최종적으로 기다림. 이때 백로그 큐에 연결정보를 저장하는데, 이러한 ACK 응답없는 연결이 누적되면 백로그 큐가 가득차서 더이상 서버가 연결을 받을수 없는 상태가 된다.

– /proc/sys/net/ipv4/tcp_syncookies를 1로 설정해 TCP 세션 연결시 ACK 패킷이 오지 않을때 백로그 큐를 낭비하지 않도록 한다.

– 또는 /proc/sys/net/ipv4/tcp_max_syn_backlog 의 크기를 늘려줘서 백로그 큐가 가득 차지 않도록 함. ping 차단 – ping은 서버가 동작중인지 확인하여 해킹을 위한 기본 단서가 되는 정보가 됨.

– /proc/sys/net/ipv4/icmp_echo_ignore_all 의 값을 0으로 바꿔 ping에 대한 응답을 주지 않을 수 있음. 스머프 공격 – IP 브로드캐스트 주소를 통해 네트워크로 ICMP 패킷을 전송하는 분산 서비스 거부공격.

– /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts 를 0으로 설정해 예방 과다 세션 공격 – 세션을 수십만개를 만들어 서버가 더이상 동작하기 어려운 상황을 만들수 있는데, 이를 예방하기위해 세션 종료시간을 짮게 설정.

– /proc/sys/net/ipv4/tcp_fin_timeout 에 원하는 만료시간(초단위) 설정. tcp keepalive time 설정 /proc/sys/net/ipv4/tcp_keepalive_time의 값을 초단위로 변경하여 시스템 자원낭비 예방 로컬 포트 사용범위 설정 /proc/sys/net/ipv4/ip_local_port_range를 변경하여 서버가 실제 사용하는 포트의 범위를 설정하여 실제 악성코드가 포트를 점유할 가능성 줄임. IP 포워딩 기능 제한 – 라우터가 아닌 서버가 IP포워딩 기능을 갖는것은 보안츼 취약점이 될 수 있음.

– /proc/sys/net/ipv4/ip_forward를 0으로 변경하여 취약점 예방.

SELinux(Security-Enhanced Linux)

1) SELinux 의 개요

1. 필요성

root 권한 취약점에 대한 리포트를 모니터링하고 패치를 적용하려는 노력 해야함

root 권한으로 실행하는 데몬을 최소로 유지해야 하지만 포트번호 1024이하의 잘 알려진 포트의 경우 root만 사용할 수 있음.

root권한이라 하더라도 미리 지정한 권한으로 리소스를 접근 가능하게 하는 강제 접근 제어가 가능.

2. 정의

미국 NSA National Security Agency 에 의해 연구된 프로젝트, 강제 접근제어 MAC: Mandatory Access Control 와 같은 접근제어 정책을 제공하는 리눅스 커널 보안 모듈

MAC은 모든 주체와 객체에 대해 국부적으로 허가하는 접근제어 정책.

모든 접근은 불가이며, 정책에 따라 필요한 기능에 대해서만 사용권한을 안전하게 부여하는 것.

3. 특징

리눅스 커널의 기본 기능으로 일반적인 리눅스 배포판을 사용하면 기본으로 포함.

리눅스 배포판에는 이미 사전에 잘 정의된 정책이 탑재

제로데이공격으로 시스템이 공격을 받더라도 피해를 최소화

2) SELinux의 설정 및 해제

1. SELinux의 동작 모드

레드햇 CentOS는 기본으로 enforce mode로 동작하고 정책에 어긋나는 동작은 거부

enforce SELinux의 정책을 적용한 상태

정책을 위반하는 동작은 차단 permissive 정책 위반행위가 차단되지는 않지만 로그는 남겨짐.

처음 SELinux를 도입할 때 permissivea 모드에서 위반 동작을 해결하고 단계적으로 enforce 모드로 넘어가는것도 좋음. disable 정책 적용을 비활성화

2. SELinux의 모드 확인하기

sestatus 명령어로 모드 확인

setenforce 명령어로 enforce 모드로 변경가능

/etc/sysconfig/selinux 파일에 SELINUX 변수의 값을 수정하여 영구 반영.

시스템 보안 유틸리티

1) ssl(Secure Shell)

1. ssh의 정의

원격의 서버나 시스템에 안전하게 연결하기 위한 프로토콜

호스트와 클라이언트 간의 패킷을 암호화하여 주고 받음으로써 보안에 강함.

포트번호는 22번

2. ssh 연결 준비사항

레드햇에서는 openssh-clients 패키지를 통하여 ssh 클라이언트를 설치

$sudo yum install -y openssh-clients

원격 컴퓨터에는 ssh 서버를 설치하고 실행중이어야 하고, IP 주소 또는 도메인명을 제공해야 함.

3. ssh 서버의 설치

openssh-server 패키지를 설치

$sudo yum install -y openssh-server

$sudo yum install -y openssh-server sshd 서비스를 시작

$sudo server sshd start

$sudo server sshd start 부팅할 때 자동으로 sshd 데몬을 시작하려면 다음과 같이 환경설정을 추가

$sudo chkconfig sshd –add

$sudo chkconfig sshd on –level 2,3,4,5

4. 비밀번호 인증을 통한 ssh 서버 접속

openssh-clients 패키지를 설치하면 ssh 명령어를 사용.

-l 옵션을 사용해 로그인 사용할 계정을 입력하고 원격지의 IP주소를 입력하면 ssh연결을 간단히 할 수 있음.

$ssh -l francis 192.168.100.100

-l 옵션을 사용해 로그인 사용할 계정을 입력하고 원격지의 IP주소를 입력하면 ssh연결을 간단히 할 수 있음. $ssh -l francis 192.168.100.100 현재 로그인한 계정과 동일한 계정으로 ssh에 접속하려면 간단히 IP 주소만 입력해도 됨.

$ssh 127.0.0.1

$ssh 127.0.0.1 ssh 포트번호가 1800dlfkaus -p 옵션을 사용해 포트번호를 변경하여 접속

$ssh -p 1800 [email protected]

5. 인증키를 통한 ssh 자동 접속

ssh-keygen 명령어로 비밀키와 공개키를 생성하고 공개키를 원격서버에 복사해두면 비밀번호 입력없이 ssh 접속이 가능.

-t 옵션을 통해 알고리즘을 결정할 수 있는 dsa 또는 rsa등을 지정

$ssh-keygen -t dsa

$ssh-keygen -t dsa 홈디렉터리의 .ssh디렉터리에 비밀키인 id_dsa와 공개키인 id_dsa.pub 생성됨

ssh서버에 .ssh 디렉터리를 생성한다

$ssh 192.168.100.100 mkdir .ssh

$ssh 192.168.100.100 mkdir .ssh scp명령어를 사용해 .ssh 디렉터리의 id_dsa.pub을 authorized_keys 이름으로 복사

$scp id_dsa.pub 192.168.100.100:.ssh/authorized_keys

$scp id_dsa.pub 192.168.100.100:.ssh/authorized_keys ssh접속을 위한 준비는 모두 끝났고 비밀번호 없이 자동으로 접속

$ssh 192.168.100.100

6. sshd 환경설정

sshd 데몬의 환경설정은 /etc/ssh/sshd_config 에서 수행.

데몬스크립트의 위치는 /etc/rc.d/init.d/sshd

sshd 데몬의 주요 환경설정 항목

Port ssh가 사용하는 포트. 기본값 22 PermitRootLogin yes로 설정하면 ssh [email protected]와 같이 root 로 로그인 가능 AllowUsers 허용된 사용자만 ssh 접속이 가능하도록 함.

모두 사용 가능하게 하려면 공백으로 두고 특정 사용자로 지정하려면

– AllowUsers francis chris

– francis chris 사용자만 ssh 접속 가능 LoginGraceTime 사용자의 로그인을 기다리기 위한 대기시간

보통 2m로 설정하는데 무차별 대입 공격을 막기위해 더 짧게 설정하면 안전 PasswordAuthentication 비밀번호 인증을 통한 접속 활성화 여부를 설정

공개키 인증을 사용하지 않는다면 반드시 yes 로 설정 PubkeyAuthentication 보안강화를 위해 공개키 기반 인증을 사용

yes는 사용, no 는 미사용 TCPKeepAlive yes로 설정하면 지속적으로 keppalive 메시지를 전송하여 연결상태를 체크

네트워크 문제가 발생하면 리소스를 계속적으로 점유하지 않도록 반환하고 연결 끊음.

2) PAM(Puggable Authentication Module)

1. PAM 의 설명

리눅스 시스템에서 사용자가 어플리케이션이나 서비스를 이용하고자 할때 동적으로 인증할 수 있는 공유 라이브러리 스위트

저수준의 인증 모듈을 고수준의 API로 통합하여 어플리케이션에 대한 동적 인증 지원을 제공.

이를 통해 인증 시스템의 세세한 사항을 알 필요없이 동적인증 기능을 수행하는 어플리케이션 개발 가능.

2. PAM 환경설정하기

환경설정 주요항목은 /etc/pam.conf 파일과 /etc/pam.d 디렉터리.

만약 /etc/pam.d 디렉터리가 존재한다면 /etc/pam.conf 설정은 무시.

3) PAM 환경설정 샘플

1. PAM 환경설정

#%PAM-1.0

auth required pam_securetty.so

#사용자가 root 권한으로 로그인 하려고할 때 /etc/security 파일에 해당 사용자가 존재하는지 체크.

auth required pam_unix.so nullok

# 사용자에게 패스워드를 입력받아 /etc/shadow 파일이 존재한다면 해당 파일의 정보와 체크하고 그렇지 않으면 /etc/passwd 파일의 정보를 사용하여 패스워드 체크를 수행. nullok 는 공백 패스워드를 허용하겠다는 의미

auth required pam_nologin.so

#/etc/nologin 파일이 존재하고 사용자가 root가 아니파면 인증을 실패.

auth required pam_unix.so

#패스워드 인증에 앞서 계정에 대한 검증작업을 수행.

password required pam_cracklib.so retry=3

#패스워드가 만료되면 pam_cracklib.so는 새로운 패스워드를 입력하라는 메시지를 사용자에게 출력. retry=3 의미는 강한패스워드 입력기회 2회.

password required pam_unix.so shadow nullok use_authtok

#pam_unix.so 가 제공하는 passwd 인터페이스를 통해 사용자의 패스워드를 변경

#shadow는 사용자가 패스워드를 변경할 때 셰도우 패스워드 파일을 생성함.

# use_authtok 는 사용자에게 새 패스워드를 묻지않고 앞서 실행했던 password 모듈에서 받은 패스워드 사용할 수 있게 함.

session required pam_unix.so

# pam_unix.so가 세션 관리 역할을 수행. /var/log/secure 에 세션 시작부터 끝까지 사용자 명과 세션 유형을 로그로 남김.

3) sudo(Super User DO)

1. 설명

사용자가 잠시 root 권한을 요구하는 프로그램을 실행해야 할 때 sudo 명령어를 사용.

Windows의 관리자 권한으로 실행 기능과 유사

/etc/sudoers 파일에 등록된 사용자만 사용가능하다.

2. /etc/sudoers 파일 편집하기

user는 사용자명이나 그룹명을 뜻하고 hostname 은 로그인한 컴퓨터 의미

runas-user는 해당 사용자가 실행하는 계정을 의미하고 runas-group은 해당 사용자가 실행하는 그룹을 의미

commands 는 root 권한으로 실행을 허가하는 명령어를 뜻하며 여러개 입력 가능.

ALL=ALL 의미는 로그인 위치에 관계없이 모든 명령어에 대해 sudo 명령어 사용 할 수 있다는 의미.

visudo 명령어를 사용해 /etc/sudoers 파일을 편집.

$sudo visudo

%mygroup ALL=(ALL:ALL) ALL

3. sudo 명령어 사용하기

chris 사용자 및 mygroup의 권한으로 /home/chris/newfile 디렉터리를 생성

$sudo -u chris -g mygroup mkdir /home/chris/newfiles

주요 보안 도구

1) nmap(Network Mapper)

1. 설명

nmap 은 네트워크 탐지 및 보안 감사를 위한 오픈소스 도구

단일 호스트에 대한 스캔뿐 아니라 거대한 네트워크도 스캔할 수 있도록 설계

nmap은 주로 호스트가 네트워크상에서 검색 가능한지 사용하고 있는 포트가 무엇이 있는지 스캔 용도로 주로 사용.

2. 동작 원리

TCP 포트 확인을 위해 SYN 패킷을 113번 포트로 보내 상대방 호스트가 SYN/ACK 패킷을 보내오면 열려있고

RST 패킷을 보내오면 닫힌 포트로 판단.

3. nmap 의 설치

yum 패키지 관리도구를 통해 설치

$sudo yum install -y nmap

4. 사용예시

호스트 이름으로 스캔하면 호스트의 IP 주소, DNS 레코드, 포트정보 등을 확인

$nmap google.com

2) tcpdump

1. 설명

네트워크 인터페이스의 송수신 패킷 캡쳐를 수행하는 명령행에서 실행할 수 있는 네트워크 트래픽 모니터링 도구

네트워크 응용 프로그램이나 데몬의 오류나 네트워크의 상태를 분석하고 원인을 찾는데 도움을 줌.

2. 주요예제

eth0 인터페이스를 통해 송수신되는 재킷을 모두 캡쳐

$sudo tcpdump -i eth0 -n

eth0 인터페이스에 대해 192.168.1.3 호스트의 5060 포트로 송수신되는 모든 패킷을 캡쳐하여 /usr/src/dump 파일에 생성.

-vvv 옵션 사용하면 상세히 정보남김

$sudo tcpdump -i eth0 host 192.168.1.3 and port 5060 -n -vvv -w /usr/src/dump

3) tripwire

1. 설명

호스트 기반 침입 탐지 시스템으로서 외부 침입으로 인한 파일시스템상의 주요 시스템 파일의 변경을 탐지하는 무결성 도구.

시스템이 정상 운영 상태일 때 전체 파일들의 스냅샵을 보관하고 파일의 변경이 발생했을 때마다 스냅샷과 비교하여 침입이 이루어졌는지 판단.

2. tripwire의 설치

epel-release 레파지터리 설치하고 tripwire 패키지 다운로드

$sudo yum install epel-release

$sudo yum install tripwire

3. tripwire의 실행

사이트 키와 로컬 키 준비

$sudo tripwire-setup-keyfiles

$sudo tripwire-setup-keyfiles 시스템 최초 스냅샷 생성

$sudo tripwire –init

$sudo tripwire –init 새로운 파일이 생성되었음을 제대로 체크하는지 확인하기위해 임의의 파일 생성

touch tripwire-check-files

touch tripwire-check-files 스냅샷과 현재 파일 시스템의 상태를 비교

$sudo tripwire –check

$sudo tripwire –check 결과파일을 report.txt로 생성

$sudo twprint –print-report –twrfile /var/lib/tripwire/report/localhost.localdomain-20191105-151441.twr > report.txt

$sudo twprint –print-report –twrfile /var/lib/tripwire/report/localhost.localdomain-20191105-151441.twr > report.txt report.txt 의 결과의 중간에 Tripwire Data Files 항목에 1개의 파일이 추가되었음을 확인

4) Nessus

1. 설명

상용 취약점 스캐너. 세계에서 가장 많이 사용하는 취약점 스캐너

2. 특징

해커가 원격으로 접속해 민감한 데이터에 접근하는 취약점을 탐지

오픈 메일 릴레이나 중요 패치 미적용 등 잘못된 시스템 설정을 탐지.

시스템 계정의 빈 패스워드나 기본 패스워드 등 탐지

TCP/IP 스택의 패킷을 악의적으로 조작하여 서비스 거부 공격의 수행을 탐지.

3. Nessus 설치

패키지 다운로드

$sudo rpm -ivh Nessus-8.7.2-es6.i386.rpm

데몬 시작

$sudo /sbin/service nessusd start

https://localhost.localdomain:8834/에 방문해 설치 완료

5) GnuPG(GNU Privacy Guard)

1. 설명

PGP를 대체하기 위한 자유 소프트웨어

공개키 기반 암호화와 디지털 서명 관련 기능을 제공.

2. 공개키 기반 암호화

키 교환에 따른 키 유출을 막을수 있다.

송신자는 공개키로 평문을 암호화하여 수신자에게 전송.

수신자는 개인키를 사용해 암호문을 복호화하여 평문을 얻음.

이때 개인키 교환이 일어나지 않기 때문에 키 유출이 발생하지 않음.

3. 디지털 서명

개인키는 다른 사람과 교환하지 않고 본인만 소유,

개인키로 원문을 암호화 하고 서명된 문서를 수신측에 보냄.

수신자는 공개키를 통해 서명된 문서를 복호화하여 문서가 발신자로부터 온 문서인지 검증.

개인키와 공개키는 쌍이기 때문에 다른 개인키로 암호화되어 있다면 해당 공개키로 서명된 문서를 복호화 할 수 없음.

6) John The Ripper

무료 패스워드 크래킹 도구.

유닉스 시스템에서 처음 개발됨.

미리 준비하나 단어 사전을 기반으로 무작위 대입공격을 수행하여 패스워드를 알아내는 방식을 취함.

악의적인 목적으로 크래킹 용도로 사용될 수도 있지만 서버의 패스워드 보안성을 파악하기 위한 진단 목적으로 활용 가능.

리눅스 서버 보안 1

우리나라에는 주요정보통신기반시설이 있는데 주요정보통신기반시설은 정보통신기반 보호법 제9조에 따라 관리기관은 매년마다 취약점 분석, 평가를 해야만 합니다. 5년 전 까지만 해도 100몇 개정도 되는 시설이 현재는 굉장히 많아졌습니다.

이러한 시설들의 취약점을 분석, 평가를 해야만 하는데 분석, 평가하는 메뉴얼 가이드를 찾아보았고 직접 보안점검을 해보겠습니다.

리눅스의 취약점 분석, 평가 항목으로 각 항목과 중요도가 나와있습니다. 단 취약점 분석,평가를 진행하며 자체인증모듈pam에 관한 부분은 따로 모아서 확인하도록 하겠습니다.

1. 계정관리

1.2 패스워드 복잡성 설정

패스워드 같은 경우는 영문, 숫자, 특수문자를 조합하여 계정명과 상이한 8자 이상의 패스워드 설정하는게 일반적입니다.

길이가 짤거나 사용자계정에서 유추 가능한 단어로 패스워드를 만들지 않으면 됩니다.

1.4 패스워드 파일 보호

쉐도우 패스워드를 사용하거나, 패스워드를 암호화하여 저장하는 경우가 양호이므로 cat으로 한번 root계정을 살펴보면 패스워드가 x 로 되어있는걸 알수있습니다. 패스워드 정책 변경은 pwconv명령어가 쉐도우 패스워드이고 pwunconv가 일반 패스워드 정책입니다.

1.5 root 이외의 UID가 ‘0’ 금지

UID=0은 root와 동일한 권한을 가지게 되기 때문에 UID가 0인 계정은 있으면 안되며 중복이 되어서도 안됩니다.

따로 테스트계정을 만들었습니다.

/etc/passwd파일에서 UID를 확인합니다. 만약 테스트 계정의 UID를 수동으로 0으로 바꾸게되면 root와 동일한 권한을 가지게 됩니다.

ex)

계정명:암호:UID:GID

UID를 보기 편하게 확인할수있습니다. UID가 중복되는 것을 쉽게 확인해볼수있습니다.

(1.7 & 1.8 & 1.9)

1.7 패스워드 최소 길이 설정

Brute Force Attack(무작위 대입 공격)나 Password Guessing(패스워드 추측 공격)을 피하기 위하여 패스워드의 최소 길이가 설정되어있는지 확인합니다.

최소길이 8자리 이상이면 보안 양호입니다.

vi 편집기로 직접 수정해주면 됩니다.

/etc/login.defs 파일을 수정하는데 27번째 줄에 있습니다.

1.8 패스워드 최대 사용기간 설정

최대 기간을 설정하지 않을 경우 일정 기간이 지나도 유출된 패스워드로 접속할 수 있기 때문에 패스워드를 주기적으로 변경해야합니다. 보안 양호는 최대 사용기간이 90일 이하로 설정되어 있는 경우입니다.

1.9 패스워드 최소 사용기간 설정

최소 사용기간을 설정하지 않을 경우 사용자에게 익숙한 패스워드로 변경하거나 재사용하기에 정기적인 변경이 무의미해질수있습니다. 보안양호는 최소 사용기간이 1일~1주일로 설정되어 있는 경우 입니다.

1.10 불필요한 계정 제거

OS나 package를 설치하면 디폴트로 생성되는 계정이 있는데 이러한 계정중에 사용하지않는 계정이나 존재조차 몰랐던 계정은 삭제해줘야만 합니다.

기본적으로 차단하는 Default 계정은 아래와 같습니다.

adm, lp, sync, shutdown, halt, news, uucp, operator, games, gopher, nfsnobody, squid 등 같은계정

userdel 명령어와 -r옵션으로 홈디렉토리까지 삭제할수있습니다. userdel 명령어와 -r옵션으로 홈디렉토리까지 삭제할수있습니다.

계정의 존재여부로 필요한지 안필요한지는 passwd파일에 홈디렉토리가 있는지로 알아볼수도 있습니다.

1.11 관리자 그룹에 최소한의 계정 포함

시스템을 관리하는 root계정이 속한 그룹은 시스템 운영파일에 대해 접근권한을 가지기 때문에 최소한의 계정만이 등록되어 있어야만 합니다. 최소한이 아닌 아예없는 편이 가장 좋습니다.

root 계정에 4번째 그룹이 비워있거나 꼭 필요한 최소한의 계정만 포함되어있으면 됩니다. 수정방법은 /etc/group 파일에서 vi편집기로 직접 수정하면 됩니다.

1.12 계정이 존재하지 않는 GID 금지

존재하지 않는 계정에 GID가 설정되어 있다면 삭제해줘야만 합니다.

명령어 groupdel 로 그룹에 GID를 삭제할수있습니다.

1.13 동일한 UID 금지

UNIX 시스템은 모든 사용자계정에 UID를 부여하는데 UID로 사용자의 정보를 대응합니다.

root계정에 관한 UID는 위에서 확인했으므로 root계정 이외에 계정 UID가 중복되는지 확인합니다.

cat /etc/passwd

1.14 사용자 Shell 점검

로그인이 필요없는 계정을 이용하여 시스템에 접근할 위험이 있습니다. 보안 양호상태로는 로그인이 필요하지 않는 계정에 /bin/false , /sbin/nologin 쉘이 부여되야합니다.

일반적으로 로그인이 불필요한 계정은 아래와 같습니다.

adm, lp, sync, shutdown, halt, news, uucp, operator, games, gopher, nfsnobody, squid 등

보안점검할 때 모호한 경우 “/etc/shadow” 파일에서 패스워드 존재 여부 찾아보면 됩니다.

/etc/shells 파일에서 시스템에서 사용할 수 있는 쉘을 확인할수있습니다.

Tip

쉘 종류는 zShell 등 다양한 쉘이 존재합니다.

사용자 계정 로그인 쉘 변경

usermod -s [쉘경로] [계정명]

1.15 Session Timeout 설정 (중요)

계정이 접속되어있는 상태로 방치될 경우 권한없는 사용자에게 공격당할 경우가 있기에 일정 시간동안 어떠한 이벤트가 없다면 연결을 종료하는 Session Timeout설정을 꼭 해줘야만 합니다.

Session Timeout설정은 두가지가 있습니다.

1. 서버에 직접 입력

/etc/profile 파일에 직접 스크립트를 작성합니다.

CentOS 리눅스는 /etc/profile -> ~/.bash_profile -> ~/.bashrc -> /etc/bashrc 순서로 스크립트를 읽어서 부팅되며 4가지 파일안에 위와 같은 스크립트를 작성해주면 됩니다.

2. 원격접속 프로그램을 이용(로그인 스크립트 기능)

xShell 프로그램이나 타 쉘 프로그램을 사용하면 편의 기능에 TMOUT=600 을 붙여도 됩니다.

최소한으로 담당자가 어딘가 다른 장소로 이동시 Win + L 사용하여 화면 잠금을 꼭 해줍니다.

2. 파일 및 디렉토리 관리

2.1 root 홈, PATH 디렉토리 권한 및 PATH 설정

root계정의 PATH환경변수에 “.”가 포함되어있으면 root계정의 인가자로 인해 비인도적으로 현재 디렉터리에 위치하고 있는 명령어가 실행될 수 있습니다 “.”이 /usr/bin이나 /bin/sbin 등 명령어들이 위치하는 디렉토리보다 우선하여 위치하고 있을 경우 root계정 인가자가 특정 명령을 실행할 경우 비인가자가 불법적으로 위치시킨 파일이 실행하여 안 좋은 결과가 생길수있습니다.

출력되는 PATH 변수 내에 “.” 또는, “::” 포함 여부 확인합니다.

ex)

(수정 전) PATH=.:$PATH:$HOME/bin

(수정 후) PATH=$PATH:$HOME/bin

환경변수 파일은 OS별로 약간씩 다를 수 있습니다.

2.2 파일 및 디렉토리 소유자 설정

쉽게 보면 현재 기준으로 소유자가 존재하지 않는 파일 및 디렉토리가 있을 경우 삭제해줍니다.

find / -nouser -print 명령어와 find / -nogroup -print 명령어로 찾아봅니다. (-print 옵션은 안사용해도 기본값으로 적용됩니다.)

간단한 테스트를 위하여 테스트계정에 적용된 파일을 만들고 테스특정을 삭제한후 find 명령어로 소유자가 없는 파일을 확인해보았습니다.

찾아낸 파일은 rm명령어로 삭제하면 됩니다. 만약 이러한 파일이 많을 경우 find / -nouser -delete 명령어로 한번에 삭제가 가능합니다. 위에 찾을떄 find 에러메세지는 find명령어가 끝나서 나오는 결과로 메모리에 find가 없기에 에러메세지가 출력되는것이기에 정상입니다.

에러메세지 출력을 안보려면 find / -nouser 2> /dev/null 명령어로 깔끔하게 확인할수있습니다.

2.3 /etc/passwd 파일 소유자 및 권한 설정

passwd파일은 사용자계정에 대한 정보들이 있으므로 관리자 이외의 사용자가 접근해서는 안됩니다.

보안 양호상태는 /etc/passwd파일이 root소유자이며 권한은 644이하이면 됩니다.

ex)

chown root /etc/passwd

chmod 444 /etc/passwd

2.4 /etc/shadow 파일 소유자 및 권한 설정

위에 /etc/passwd파일과 마찬가지인 이유이며 /etc/shadow파일은 /etc/passwd파일에 계정암호가 있는 파일입니다.

보안 양호상태는 /etc/shadow파일이 root소유자이며 권한은 400이하여야만 합니다.

ex)

chown root /etc/shadow

chmod 400 /etc/shadow

2.5 /etc/hosts 파일 소유자 및 권한 설정

/etc/hosts파일은 ip주소와 호스트네임을 매핑하는데 사용되는 파일로 접근권한이 잘못설정될 경우 보안사고가 일어날수있습니다.

리눅스에서 도메인 주소를 사용 시 파일 확인 순서는 첫번째가 /etc/hosts 이며 두번째가 /etc/resolv.conf(DNS Server)입니다.

보안 양호상태는 /etc/hosts파일의 소유자가 root이며 권한이 600이하인 경우 입니다.

ex)

chown root /etc/hosts

chmod 600 /etc/hosts

2.6 /etc/(x)inetd.conf 파일 소유자 및 권한 설정

현재는 많이 사용하지 않는 (x)inetd.conf 입니다. (x)inetd.conf는 인터넷 슈퍼데몬 서비스 설정 파일로 외부 네트워크 요청이 있을 시 (x)inetd.conf 에 등록된 내부 프로그램인 인터넷 서비스들의 데몬을 실행시켜주는 역활을 합니다.

현재 테스트PC 리눅스는 mini버전 리눅스로 테스트를 위하여 telnet-server 패키지를 다운받아서 테스트해봅니다.

chkconfig –list 명령어로 데몬들을 확인할수있는데 xinetd기반 서비스도 확인해볼수있습니다.

보안양호 상태는 소유자가 root이며 권한은 600이 아닌 경우 바꿔주면 됩니다.

2.7 /etc/syslog.conf 파일 소유자 및 권한 설정

/etc/syslog.conf는 CentOS 5버전때 로그데몬이며 6버전부터는 /etc/rsyslog.conf 입니다.

보안 양호상태는 /etc/rsyslog.conf파일이 소유자가 root이며 권한은 644이하여야만 합니다.

ex)

chown root /etc/syslog.conf

chmod 644 /etc/syslog.conf

2.8 /etc/services 파일 소유자 및 권한 설정

서비스 관리를 위하여 사용되는 /etc/services 파일이 일반사용자에 의해 변경이 가능하면 보안사고가 일어날수있기 때문에 접근제한을 해야만 합니다.

보안 양호상태는 /etc/services 파일이 root 소유자이며 권한은 644이하인 경우 입니다.

2.9 SUID, SGID, Stick bit 설정 파일 점검(중요)

SUID, SGID가 설정된 파일은 root권한 획득 및 정상서비스 장애를 발생시킬수 있기 때문에 꼭 철저한 관리가 필요합니다.

find / -user root -type f \( -perm -04000 -o -perm -02000 \) -xdev -exec ls -al {} \; 명령어로 Set이 걸려있는 파일들을 확인할수있습니다.

확인을 위하여 간단한 테스트를 해보겠습니다.

test.c 파일 소스코드

접기 #include

int main(void) { setuid(0); system(“/bin/bash”);

} 접기

위와 같이 root계정으로 권한상승될수있기 때문에 꼭 Set이 걸린 파일은 중요 관리 파일이 됩니다.

악의적인 사용자들은 보통 Set이 걸린 파일을 백도어 용도로 사용합니다.

불필요하게 Set이 걸린 파일은 chmod -s 으로 Set권한을 삭제해야만 합니다.

[ET단상]효과적인 리눅스 보안을 위한 방안

“리눅스 서버는 안전하고 강력해서 보안이 필요 없다.” “위협이 있다는 건 알지만 리눅스 서버를 사용하는 이상 걱정이 없지 않을까?”

리눅스 서버는 윈도 서버보다 취약점이 적고 보안이 강력한 것으로 여겨진다. 일부분 타당한 이야기지만 보안을 소홀히 한다면 각종 위협에 노출되고, 피해 위험성이 크다. 그동안 취약점은 윈도를 통해 성행했다. 그러나 리눅스 커널 취약점도 늘어나는 추세를 보이고 있다. 리눅스 악성코드 역시 점점 많이 생성되고 있다.

리눅스 플랫폼을 공격하는 악성코드 수 역시 상당하다. 수십만 개에 이르는 악성코드가 리눅스에 맞춰 디자인됐다. 최근 기존 윈도 대상 악성코드가 리눅스 버전 악성코드로 출현되고 있다.

리눅스 서버를 가장 많이 사용되는 곳은 고객과의 접점이 많은 웹 서버다. 세계 웹 서버 60% 이상이 리눅스 운용체계(OS)를 사용한다.

국내에서 리눅스 서버에 대한 위협이 본격 대두된 것은 2017년에 발생한 ‘인터넷나야나’ 사태다. 웹호스팅 업체 인터넷나야나는 153개 리눅스 서버가 변종 랜섬웨어 ‘에레보스’에 감염됐다. 인터넷나야나 서비스를 이용하는 3400여 기업 웹사이트, 데이터베이스(DB), 멀티미디어 파일이 피해를 봤다. 나야나 사태 후에도 동일한 악성코드를 이용한 공격이 홈페이지 제작과 호스팅 업체에서 발생했다.

리눅스 서버 변종 랜섬웨어가 조직 평판과 재정에 미치는 영향을 고려하면 비즈니스 프로세스 측면에서 서버와 시스템을 보호하는 것이 굉장히 중요하다.

리눅스는 다양한 오픈소스 기반을 근본으로 하기 때문에 보안 홀이 파악하기 어렵다. 다양한 배포판에 여러 커널 버전이 있어 관리도 쉽지 않으며, 하나의 취약점에서 수많은 악성코드가 생성되기도 한다.

오픈소스 특성상 세계 커뮤니티 도움을 받아 패치가 즉각 이뤄진다는 점에서 한편으론 폐쇄성 OS에 비해 보안 강화가 용이한 점이 장점으로 꼽힌다. 그러나 이는 운영되고 있는 서버 OS와 애플리케이션(앱)을 실시간으로 업데이트한다는 전제 아래 논의되는 것이다. 데이터 센터 내 서버를 중단시킬 수 없는 현실 여건상 기업은 보안 사각지대에 놓여 있다 해도 과언이 아니다.

안정된 리눅스 서버 보호를 실현하는 첫걸음은 서버 보안을 한 번에 해결할 수 있는 만병통치약이 없다는 사실이다. 보안을 위해 계층화된 접근 방식이 필요하다. 안티 멀웨어나 침입방지시스템(IPS)을 넘어 강력한 리눅스 보안 전략 구축에 기여할 수 있는 제어 장치를 유효하게 활용할 수 있어야 한다.

리눅스 공격에 대한 보안 대책이 다소 미흡한 상황에서 조직의 서버와 자산을 보호하기 위한 방안으로는 무엇이 있을까. 먼저 시스템과 서버에 최신 패치와 커널이 설치되도록 강력한 패치 관리 정책을 시행한다. 서버 운영을 지속하면서 패치와 유사한 기능을 제공하는 ‘가상패치’를 적극 활용해야 한다.

제3자 또는 미확인 저장소 활용과 추가는 가능한 한 삼가야 한다. 공격자가 서버나 시스템 진입점으로 사용할 수 있는 취약점은 최대한 제한한다. 이 밖에도 무결성 모니터링, 앱 제어, 이벤트 로그 감사를 실시해야 한다.

이와 함께 서버를 체계화하고 포괄해서 보호할 수 있는 통합 리눅스 보안 솔루션 역시 적극 도입해야 한다. 보안 솔루션을 선택할 때는 해당 솔루션의 실시간 바이러스 스캔 지원, 글로벌 랜섬웨어 방어 역량, 호스트 서버별 별도의 보안 정책 적용 가능 여부, 가상패치 지원, 특정 프로그램 작동만을 허용하는 화이트리스트 기능 지원 여부 등을 면밀히 검토해야 한다.

점점 더 많은 서버가 엔터프라이즈 경계를 넘어 클라우드로 전환함에 따라 클라우드 워크로드 보호를 위한 호스트 레벨 네트워크 보안이 점점 더 중요해지고 있다. 보안 솔루션 선택 시 제공 업체 클라우드 보안 역량도 심도 있게 고려해야 한다.

리눅스 보안은 까다롭지만 그만큼 필수다. 국내 기업이 리눅스 보안에 대한 경각심을 발동해서 효과 높은 방어 체계를 구축, 각종 위협에 대하여 효과 높게 대응해 나가야 한다.

김진광 트렌드마이크로 지사장 [email protected]

보안 강화 리눅스

보안 강화 리눅스(Security-Enhanced Linux, 간단히 SELinux)는 미국 국방부 스타일의 강제 접근 제어(MAC)를 포함한 접근 제어 보안 정책을 지원하는 매커니즘을 제공하는 리눅스 커널 보안 모듈이다. 다양한 리눅스 배포판에 추가할 수 있는 커널 수정 및 사용자 공간 도구들의 모임이다. 보안 강화 리눅스는 보안 결정 진행을 보안 정책과는 별개로 함과 동시에 보안 정책의 영향을 받는 소프트웨어의 양을 간소화하는 것을 시도하는 구조를 이룬다.[2][3] 보안 강화 리눅스의 기반이 되는 주요 개념들은 미국 국가안보국의 일부 초기 프로젝트들로 거슬러 올라간다.

이 보안 모듈은 2003년 8월 8일 버전 2.6을 기점으로 주류 리눅스 커널에 통합되어 있다.

사용법 [ 편집 ]

SELinux는 매우 정밀한 상세 설정을 포함하여 어떠한 활동을 시스템이 개별 사용자, 프로세스, 데몬에 허용할 것인지를 잠재적으로 제어할 수 있다. 일반적으로 사용자 프로세스는 주로 SELinux에 제한되지 않는 영역에서 실행되지만 고전적인 리눅스 접근 권한에 제한을 받는다.

명령 줄 유틸리티는 다음을 포함한다: chcon ,[4] restorecon ,[5] restorecond ,[6] runcon ,[7] secon ,[8] fixfiles ,[9] setfiles ,[10] load policy ,[11] booleans ,[12] getsebool ,[13] setsebool ,[14] togglesebool [15] setenforce , load policy , setfiles ,[16] semodule , postfix-nochroot , check-selinux-installation , semodule package , checkmodule , selinux-config-enforcing ,[17] selinuxenabled ,[18] selinux-policy-upgrade ,[19] security set boolean .[20]

사용 예 [ 편집 ]

SELinux를 강제 모드로 설정하는 방법:

$ sudo setenforce 1

SELinux 상태를 확인하는 방법:

$ getenforce

기타 시스템 [ 편집 ]

여러 프로세스를 분리하는 일은 가상화와 같은 매커니즘을 통해 구현할 수 있는데, 예를 들어 OLPC의 경우 경량 V서버의 개별 응용 프로그램들을 샌드박스화한 최초의 구현 사례이다.[21]

보안 강화 안드로이드 [ 편집 ]

미국 국가 안보국은 보안 강화 안드로이드에 SELinux의 개념들 가운데 일부를 채택하였다.[22]

참조 [ 편집 ]

키워드에 대한 정보 리눅스 보안

다음은 Bing에서 리눅스 보안 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 해킹하려면 왜 리눅스를 배워야 할까?? (자막포함)

  • 해킹
  • 모의해킹
  • 리눅스
  • 보안
  • IT보안
  • 리눅스공부
  • hacking
  • security
  • 리눅스필요
  • 모바일
  • 안드로이드리눅스
  • 보안프로젝트

해킹하려면 #왜 #리눅스를 #배워야 #할까?? #(자막포함)


YouTube에서 리눅스 보안 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 해킹하려면 왜 리눅스를 배워야 할까?? (자막포함) | 리눅스 보안, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

Leave a Comment