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