본문 바로가기
컴퓨터

[Linux] Ubuntu 보안 가이드

by Luyin 2013. 8. 26.

1.  우분투  방화벽  설치와  설정법(ufw)

ufw는  우분투에  기본적으로  설치되어  있는  방화벽입니다.  설치  관련한  내용은  구  버전의  우분투의

경우  재설치를  해야  하며,  사용자  정의  설치로  인하여 ufw 설치  대신 iptables를  이용한  경우 ufw

를 사용하지  않으셔도  됩니다.

1)  ufw  설치  및  실행

 #sudo apt-get install ufw

 #sudo ufw enable

2)  방화벽  상태  확인.

 #sudo ufw status verbose 

3)  리눅스  원격  시스템  사용의  경우  사용  포트만  개방

ex) SSH 사용의 경우

 #sudo ufw allow ssh

ex) http 사용의 경우

 #sudo ufw allow http 


2.  공유  메모리  보안

공유메모리는  실제로  활성화된  서비스에서  사용될  경우  공격에  사용  될  수  있습니다.

1)  공유  메모리에  setuid  권한  및  메모리  실행  권한  제거

 #sudo vi /etc/fastab

 tmpfs /dev/shm^tmpfs^defaults,noexec,nosuid^0^0           //^는 탭으로 입력

3.  SSH 보안

ssh 의  경우 brute-forcing 류의  무차별  대입  공격을  당할  수  있으므로 root 로  직접  접근하는  것을  막

고,  패스워드  실패  시 time  delay 기능을  넣어야  하고, default  PORT 인  22번  포트  대신  다른  포트를  대체하여  사용  하는  것을  권장합니다.

1)  SSH root 접속 거부 및 default PORT 임의 PORT로 변경

 #sudo vi /etc/ssh/sshd_config

------아래 부분을 찾아 편집-------

PORT <ENTER YOUR PORT>                                 //22번 대신 대체할 포트 입력

Protocal 2

PermitRootLogin no 

2)  SSH 반복 접속 시 delay 주기

 #sudo apt-get install sshguard

 #sudo service sshguard start 


4.  sysctl  설정으로  인한  네트워크  보안

실제로  최근엔  서버  사양이  좋아져서  각종 DoS 공격은  기본적으로  무리없이  동작  됩니다.

하지만 DDoS로  이뤄질  경우를  대비하여  기본적인  네트워크  설정은  해  두는  것을  권장합니다.

1)  IPSpoofing  공격  대비

#sudo  vi/etc/sysctl.conf

...................아래  라인을  추가...

#IP  Spoofing  protection

net.ipv4.conf.all.rp_filter = 1

net.ipv4.conf.default.rp_filter = 1


#Ignore  ICMP  broadcast  requests

net.ipv4.icmp_echo_ignore_broadcasts = 1

#Disable  source  packet  routing

net.ipv4.conf.all.accept_source_route = 0

net.ipv6.conf.all.accept_source_route = 0

net.ipv4.conf.default.accept_source_route = 0

net.ipv6.conf.default.accept_source_route = 0


#Ignore  send  redirects

net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.default.send_redirects = 0


#Block  SYN  attacks

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_max_syn_backlog = 2048

net.ipv4.tcp_synack_retries = 2

net.ipv4.tcp_syn_retries = 5


#Log  Martians

net.ipv4.conf.all.log_martians = 1

net.ipv4.icmp_ignore_bogus_error_responses = 1


#Ignore ICMP redirects

net.ipv4.conf.all.accept_redirects = 0

net.ipv6.conf.all.accept_redirects = 0

net.ipv4.conf.default.accept_redirects = 0

net.ipv6.conf.default.accept_redirects = 0


#Ignore  Directed  pings 

net.ipv4.icmp_echo_ignore_all = 1

:wq!

.............................................


#sudo sysctl -p  //재로드


5.  WEB  보안

1)  php.ini  설정으로  인한  외부  참조  및  인젝션  방지

php를  개발하는  사용자라면  필수로  해야  할  부분입니다. PHP는  5.2  버전으로  업그레이드  되면서

보안적인  부분의  상당수를  개발자와  서버  관리자의  몫으로  넘겨 default 보안  설정의  상당  수를 off

로  설정해  놓았습니다.

하지만  보안상 PHP 보안  설정은  반드시  올려  놓고  진행  할  것을  권장합니다.

 #sudo /vi /etc/php5/apache2/php.ini

.......아래 설정을 찾아 변경.......

disable_functions = exec,system,shell_exec,passthru

register_globals = Off

expose_php = Off

magic_quotes_gpc = On

.............................................

2)  apache2  mod_security  설치법

#sudo  apt-get  install  libxml2  libxml2-dev  libxml2-utils

#sudo  apt-get  install  libaprutil1  libaprutil1-dev

#ln -s /usr/lib/x86_64-linux-gnu/libxml2.so.2 /usr/lib/libxml2.so.2 //64비트  사용자만

#sudo  apt-get  install  libapache-mod-security //mod  security설치

#sudo  mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf

#sudo  vi /etc/modsecurity/modsecurity.conf //모드시큐리티  설정  변경

..........................................................

SecRuleEngine On

SecRequestBodyLimit 16384000

SecRequestBodyInMemoryLimit 16384000

..............


6.  불필요한  포트  확인  및  차단

1)  NMAP으로  PORT  SCANNING

#sudo  apt-get  install  nmap

#sudo  nmap -v  -sT  localhost

#sudo  ufw  deny <불필요한  포트>


7.  시스템  보안  인정

1)  Tiger  를  이용한  시스템  보안  인증

#sudo  apt-get  install  tiger

#sudo  tiger

#sudo  less /var/log/tiger/security.report.*

2)  해커가  숨겨  놓은  루트킷  탐지

#sudo  apt-get  install  rkhunter  chkrootkit

#sudo  chkrootkit

#sudo  rkhunter --update

#sudo  rkhunter --propupd

#sudo  rkhunter --check

3)  SELinux  -  Apparmor

selinux의  경우  강력한  보안  설정으로  인하여 ORACLE설치  등에서  어려움이  있을  수  있습니다.

필수  권장  사항은  아니나,  설치하여  사용함을  권장합니다.

#sudo  apt-get  install  apparmor  apparmor-profiles

#sudo  apparmor_status

[참조  : https://help.ubuntu.com/12.04/serverguide/apparmor.html]