2015년 7월 29일 수요일

HP 마이크로 서버 N54L 우분투 서버 설치

HP 마이크로 서버 N54L

나온지 꽤 지난 모델이지만 저렴하고 집에서 쓰기에는 차고 넘치는 성능.
 이렇게 생긴 것이고...

앞 뚜껑 열면 아래 왼쪽으로 메인보드에 USB 포트가 있어서 여기에 사은품으로 같이온 USB 메모리를 꼽고 거기에 OS 를 설치 함.
RAID 를 지원 하지만 기본은 off 되어 있고, 나도 사용할 생각이 없으므로 그냥 설치.

OS 설치

- 우분투 서버 14.04 LTS 64bit
  공식지원 OS 는 아니지만 별로 상관 없음
  download : http://www.ubuntu.com/download/server
- USB 메모리는 쓰기속도가 심하게 느리므로 설치 후 자주 writing 이 일어나는 /tmp 와 /var 를 각각 ramdisk 와 hdd 로 사용하기 위해 아래와 같이 추가.
  (hdd 의 uuid 는 $ sudo blkid 로 확인)
  @ /etc/fstab
  tmpfs        /tmp     tmpfs   size=128m   0  0
  UUID=xxxxx   /var     auto    defaults    0  2
- samba 와 ftp 에서 root directory 로 쓸 위치로 각 hdd 들의 디렉토리 들을 mount 하기 위해 이런식으로 수정.
  @ /etc/fstab
  UUID=yyyyy        /media/root   auto  defaults    0  2
  UUID=zzzzz        /media/sub    auto  defaults    0  2
  /media/root/aa    /media/sub/aa  none    bind
  /media/root/bb    /media/sub/bb  none    bind

서비스 설치

1. ssh
설치 과정중에 선택해 주면 기본적으로 설치 됨.
- 보안상 외부에서 root 로 접속 하는 것을 막고 특정 사용자만 접속 허용하기 위해 아래 같은 식으로 수정.
  @ /etc/ssh/sshd_config
  PermitRootLogin no
  AllowUsers user1 user2
- 재시작
  $ sudo service ssh restart

2. samba
역시 설치 과정중에 선택해 주면 기본적으로 설치 됨.
- guest 는 읽기만, user1 는 읽기/쓰기/실행 허용 하게 공유 하려면 아래와 같이 수정.
  @ /etc/samba/smb.conf
  [guest]
      comment = guest
      path = /media/root
      guest ok = no
      browseable = no
  [user1]
      comment = user1
      path = /media/root
      guest ok = no
      browseable = no
      create mask = 0774
      directory mask = 0775
      force create mode = 0774
      force directory mode = 0771
      valid users = %S
      writable = yes
      map archive = yes
- 재시작
  $ sudo service smbd restart
- 윈도우에서 접속
  \\ip주소\guest\ ==> guest 로 접속
  \\ip주소\user1\ ==> user1 로 접속

3. ftp
- vsftpd 설치
  $ sudo apt-get install vsftpd
- 접속 시 보일 root directory 지정, 해당 directory 에 write 권한 주고, 포트번호도 변경 위해 아래 처럼 수정.
  @ /etc/vsftpd.conf
  local_root=/media/root
  allow_writeable_chroot=YES
  listen_port=3210
- 재시작
  $ sudo service vsftpd restart

4. torrent
- transmission 설치
  $ sudo apt-get install transmission-cli transmission-common transmission-daemon
- 설정
  settings.json 파일을 찾아서 고친다.  /etc 밑에 생기는 경우도 있어서 확인 한번 해봐야 함.
  @ /var/lib/transmission-daemon/info/settings.json
  "blocklist-enabled": true,
  "blocklist-url": "http://list.iblocklist.com/?list=bt_level1&fileformat=p2p&archiveformat=gz",
  "download-dir": "/media/root/tr/download", 
  "incomplete-dir": "/media/root/tr/incomplete",
  "incomplete-dir-enabled": true,
  "rpc-authentication-required": true,
  "rpc-username": "user",
  "rpc-whitelist-enabled": false,
  "rpc-password": "password",
  "trash-original-torrent-files": true,
  "umask": 2,
  "watch-dir": "/media/root/tr/watch",
  "watch-dir-enabled": true,
- 설정 시 주의 사항
  * $ sudo service transmission-daemon stop 으로 daemon 이 안죽을 수 있으므로 만약 안죽었으면 kill 로 죽이고 수정 해야 함. (daemon 이 내려갈 때 settings.json 이 덮어써지므로 꼭 먼저 내리고 수정 해야함.)
  * watch / incomplete / complete 디렉토리는 debian-transmission 이 rwx 권한을 가지게 해줘야 하므로, 위와 같은 설정 인 경우 아래처럼..
    $ sudo chown -R debian-transmission:root /media/root/tr
    $ sudo chmod -R 770 /media/root/tr
  * rpc-password 설정의 경우 settings.json 에 평문으로 암호를 적어 준 후 daemon 실행 하면 hash 로 바뀌어 저장 되므로 평문 암호 적은 후 꼭 한번은 실행 해 줘야 안전 하겠지....
- 재시작
  $ sudo service transmission-daemon stop
  $ sudo service transmission-daemon start

5. fail2ban
접속 실패가 일정 숫자 이상 되면 해당 ip 를 bantime 동안 block 한다.
중국쪽에서 꽤나 접속 시도가 많이 날아 오고 있음.
- 설치
  $ sudo apt-get install fail2ban
  $ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/fail.local
- 설정
  ssh 는 기본적으로 enable 되어 있으므로 vsftp 부분 추가로 enable 하고, ban time 도 늘림
  @ /etc/fail2ban/fail.local
  bantime = 36000
  ...
  [vsftpd]
  enabled = true
- 재시작
  $ sudo service fail2ban restart
- ban 당한 ip 목록 확인
  $ sudo cat /var/log/fail2ban.log* | grep "] Ban" | awk '{print $NF}' | sort | uniq -c | sort -n

기타 설정들...

- 주기적으로 뭔가를 실행해 줄 때 crontab 사용
  $ sudo crontab -e
  0 5  *   *   1,3,5     /usr/local/bin/do_something.sh
  라고 적으면  월/수/금 05:00 에 do_something.sh 를 실행.
- sudo 에 매번 암호 넣기 귀찮으면
  $ visudo
  user1 ALL=NOPASSWD: ALL
  라고 넣으면 user1 은 sudo 실행 시 암호 입력 skip