본문 바로가기

정리중인 카테고리/전공 기술

[리눅스] Ubuntu Server - 보안

출처 : http://www.andrewault.net/2010/05/17/securing-an-ubuntu-server/





1. 기본값 변경


참고: StricterDefaults

1.1. 공유 메모리(/dev/shm)에 접근하지 못하도록 변경

/dev/shm은 httpd 같은 실행중인 서비스를 공격하기 위해 사용될 수 있음.

$ sudo vi /etc/fstab
tmpfs     /dev/shm     tmpfs     defaults,noexec,nosuid     0     0

1.2. root 계정으로 SSH 로그인을 못하도록 변경

우분투는 기본적으로 root 로그인 자체가 제한되어 있지만 Slicehost나 Linode를 설치하면 그게 풀림.
(*) sudo passwd root 커맨드를 입력해서 제한을 풀 수도 있음.

$ sudo vi /etc/ssh/sshd_config
# ...
PermitRootLogin no
# ...

1.3. 관리자 그룹만 su를 사용하도록 변경

우분투는 관리자 그룹(admin)이 없으므로 일단 만들어야 함.
$ sudo groupadd admin

현재 사용자를 admin 그룹에 등록
$ sudo usermod -a -G admin [username]

admin 그룹만 사용할 수 있도록 /bin/su 접근 제한.
$ sudo dpkg-statoverride --update --add root admin 4750 /bin/su

변경된 내용 확인
$ ls -lh /bin/su
-rwsr-x--- 1 root admin 31K 2010-01-26 17:09 /bin/su

1.4. IP Spoofing(IP 주소 속이는 것)을 못하도록 인입 패킷의 소스 라우팅 제한

참고: TCP/IP Stack Hardening

$ sudo sysctl -w net.ipv4.conf.all.accept_source_route=0
$ sudo sysctl ­-w net.ipv4.conf.default.accept_source_route=0

1.5. 시스템 계정이 FTP 서버에 접근할 수 없도록 변경

이건 ftpd를 사용하는 경우에만 해당됨. SFTP가 좋음.
참고: ftpusers 매뉴얼

$ sudo vi /etc/ftpusers
# FTP 서버 접근 금지 계정 추가
backup
bin
daemon
games
gnats
irc
libuuid
list
lp
mail
man
mysql
news
ntp
postfix
proxy
sshd
sync
sys
syslog
uucp
www-data




2. UFW (Uncomplicated Firewall)


참고:
wikipedia
Ubuntu UFW Uncomplicated Firewall Examples
community documentation
server guide
ufw manual
project wiki
nice article

리눅스는 CLI 기반의 iptables라는 프로그램을 이용해 방화벽 설정을 할 수 있음.
이걸 좀 더 쉽게 사용할 수 있게 만든 것이 UFW임.
UFW도 CLI 기반이지만 GUI for Uncomplicated Firewall(gufw)이라는 프로그램도 있음.

설치
$ sudo aptitude install -y ufw
$ sudo ufw enable

명령어 보기
$ sudo ufw show

설정 보기
$ sudo ufw status

Apache 서버로 접근하는 SSH, HTTP 허용하기
$ sudo ufw allow ssh
$ sudo ufw allow http

설정할 수 있는 애플리케이션 목록
$ sudo ufw app list

서비스 목록
$ less /etc/services




3. DenyHosts로 SSH 공격 막기


참고: Denyhosts 홈페이지

$ sudo aptitude -y install denyhosts
/var/log/auth.log 파일을 주기적으로 스캔하여 지속적으로 로그인에 실패하는 IP를 발견하면 자동으로 /etc/hosts.deny 파일에 추가함.




4. Tiger(시스템 보안 스캐너)


Tiger: security system scanner
참고: Tiger – The Unix security audit and intrusion detection tool

시스템 설정과 파일을 분석하여 자동으로 보안 상태를 점검하고 보고서를 생성하는 프로그램.
/var/log/tiger 파일을 기반으로 잠재적인 보안 문제에 대한 보고서를 생성하며 tigexp 커맨드를 이용해 FAIL 코드의 상세한 내용을 확인할 수 있음.

설치
$ sudo aptitude -y install tiger

실행
$ sudo tiger

보고서 보기
$ sudo -i
less /var/log/tiger/`ls -t1 /var/log/tiger | head -1`
exit

FAIL 코드 상세 내용 보기
$ tigexp dev002f

이건 무시할 것.
--FAIL-- [dev002f] /dev/fuse has world permissions
--FAIL-- [logf005f] Log file /var/log/btmp permission should be 660
이 파일의 퍼미션을 변경하면 문제가 발생할 수 있음.




5. psad로 침입 탐지하기


참고: psad: Intrusion Detection and Log Analysis with iptables

psad는 iptables를 기반으로 침입 탐지 로그를 남기는 여러 개의 데몬으로 구성됨.

설치
$ sudo aptitude -y install psad

상태확인
$ sudo psad -S




6. Nmap


참고: Nmap

일종의 포트 스캐너라고 할 수 있음.

설치
$ sudo aptitude install -y nmap

포트 스캐닝
$ nmap -v -sT localhost

SYN 스캐닝
$ sudo nmap -v -sS localhost

스캔 옵션. 옵션이 되게 복잡한데 꼭 필요한 몇가지만 사용할 수 있으면 됨.
nmap GUI wrapper 프로그램도 존재함.

(*) 어떤 네트워크는 nmap으로 네트워크를 탐색하게 되면 연결이 끊어지는 문제가 발생할 수 있음.
네트워크 장비가 보안을 위해 일부러 연결을 끊는 경우도 있고 네트워크 장비가 노후되어 멈추는 경우도 있음.

(*) Network Topology(네트워크 토폴로지)라는 용어가 있음.
이건 네트워크 구성 현황을 그림으로 보여주는 건데 네트워크 관리 프로그램(혹은 시스템)은 이걸 자동으로 만들어주는 기능이 있음.
그림 뿐만 아니라 장비의 상태도 한 눈에 확인할 수 있으므로 매우 유용한데 이거 아무렇게나 실행하면 네트워크 전체가 마비되는 문제가 발생할 수도 있음.




7. 루트킷 검사


참고: chkrootkit

서버에 루트킷이 설치되어 있는지 검사함.
루트킷이라는 건 root 권한을 가진 상태로 실행되는 프로그램인데 ps 같은 일반적인 방법으로는 보이지 않는 악성 프로그램이라고 보면 됨.

설치
$ sudo aptitude install -y chkrootkit

실행
$ sudo chkrootkit




8. LogWatch


참고: LogWatch

기본 로그 파일을 분석하여 보기 좋은 포맷으로 만들어 주는 프로그램.

설치
$ sudo aptitude -y install logwatch

실행
$ sudo logwatch | less




9. 지속적인 시스템 점검


이제 일주일에 한 번 정도는 지금까지 설치한 프로그램을 활용하여 점검할 것.

보안 관련 웹사이트



관리자로서 반드시 지켜야 할 것이 하나 있다면, 아무리 지겨워도 절대로 대충 점검하지 말라는 것이다.

매일 서버와 네트워크(방화벽 포함)를 점검했는데 점검이라는 게 정말 지겨운 일이다.

로그, 프로세스, CPU, 메모리, 애플리케이션 등 매일 같은 결과가 나옴에도 불구하고 이걸 꼭 해야 한다.

이상하게 평소에는 정말 잘 작동했는데 점검을 느슨하게 하는 날은 꼭 문제가 하나씩 터지더라.

물론 꼼꼼히 점검해서 사전에 이상 징후를 발견한 적도 있다.

그리고 서버와 네트워크 장비를 직접 관리한다면 반드시 장비의 LED를 확인하는 것도 좋다.