�������VPS��ݒ肵�����̃������c���Ă��̂œ\���Ă����B
�L�q���e�̓A�e�ɂȂ�Ȃ����ǁA�Q�l�����N�̓A�e�ɂȂ��Ȃ����Ǝv���B
�����������̕ӂ̃y�[�W���Q�l�ɂ��Ă�BUbuntu�Ȃ̂Ŏ�R�}���h�ɈႢ������C�͂���B
http://tanaka.sakura.ad.jp/archives/001065.html
http://www.yuyak.com/537
�f�t�H���g����CentOS�Ȃ̂ŁA������Ubuntu�ɂ��Ă݂�B
������j���[ �� �_���� �� �_��T�[�r�X�̊m�F �� �T�[�o�ݒ� �� VPS�z�[���ɓ���B
OS�ăC���X�g�[�� �� �J�X�^��OS�C���X�g�[�� �� Ubuntu 10.04 amd64��I���B
���Ƃ̓C���X�g�[���K�C�h�ɏ]���ăC���X�g�[���B
http://support.sakura.ad.jp/support/vps/menu_oscustom_ubuntu.shtml
����ŃC���X�g�[������ƁAroot�̃p�X���[�h�͖����ŁA�o�^�������[�U����sudo su�ŏ��i�ł���悤�ɂȂ��Ă�B
�����̓h���C����������Ŏ���Ă�̂ŁA�ݒ肵�Ă����B
������j���[ �� �_���� �� �h���C�����j���[ �� �]�[���ݒ� �� �ύX�B
A���R�[�h�ɓK���ȃT�u�h���C����lj����āAVPS�T�[�o��IP�A�h���X������U��B���̂������f�����B
�Ƃ肠����ssh�Ń��O�C���B
$ ssh user@your_domain
�܂���ssh�̐ݒ���}�V�ɂ��邱�Ƃ���n�߂�B
�|�[�g�ԍ���22���Ƌ@�B�I�ȍU������\���������Ȃ�̂ŁA�|�[�g��K���Ȕԍ��ɕύX�B���ł�root�ł̃��O�C�����֎~���Ă����B
$ sudo vi /etc/ssh/sshd_config
# �|�[�g�̕ύX
Port 22
��
Port 60022
# root�ł̃��O�C���֎~
PermitRootLogin yes
��
PermitRootLogin no
sshd���ċN������B�ݒ�����Ɛڑ��ł��Ȃ��Ȃ邯�ǁAVPS�R���g���[���p�l���̃����[�g�R���\�[������͌q������ۂ��̂ő����͈��S�B
$ sudo /etc/init.d/ssh restart
���[�J���̒[������A�������������Ă݂āA�G���[�ɂȂ邩�m�F�B
$ ssh user@your_domain
ssh: connect to host your_domain port 22: Connection refused
�|�[�g���w�肷��Γ���邱�Ƃ��m�F�B
$ ssh -p60022 user@your_domain
�z���g�͎w��IP����̂݃��O�C���ł���悤�ɂ������Ƃ��낾���ǁA�����IP�͕ς�鋰�ꂪ����̂Œ��߂�B
�p�X���[�h�F���Ƒ�����Ƃ��|���̂ŁA�������Ă�l�����F�ł���悤�ɂ���B�Ƃ肠����VPS�T�[�o����ssh localhost�ł�����.ssh�f�B���N�g��������Ă����B
$ ssh localhost
���Ƀ��[�J�����Ō������A�T�[�o�ɑ����Ă����BEnter file�͋�ŁB
$ cd ~/.ssh
$ ssh-keygen -t rsa
$ scp -P60022 id_rsa.pub user@your_domain:.ssh/authorized_keys
VPS�T�[�o���Ō�����ύX�B
$ chmod 600 ~/.ssh/authorized_keys
���[�J�����Ń��O�C���ł��邩�m�F�B
$ ssh -p60022 user@your_domain
���̃p�X�t���[�Y�͗v������邯�ǁA�T�[�o������p�X���[�h��v�����ꂸ�ɓ��ꂽ�琬���B
�Ō�ɁA�p�X���[�h�F�ł̃��O�C�����֎~����B
$ sudo vi /etc/ssh/sshd_config
#PasswordAuthentication yes
��
PasswordAuthentication no
$ sudo /etc/init.d/ssh restart
����������T�[�o�������邱�Ƃ��m�F�B
$ ssh -p60022 user@your_domain
���̏ꍇ�������[�g�R���\�[������̓��O�C���\�Ȃ̂ŁA���Ȃ����ĉƂɓ���Ȃ�I�Ȃ��Ƃ͂Ȃ��B
����Ń��O�C���ɑ��Ă͂����Ԉ��S�ɂȂ������ǁA�܂�iptables�̐ݒ�����ĂȂ��̂Ń|�[�g�������ԃm�[�K�[�h�B
���L�̃y�[�W���Q�l�ɁAiptables��80��60022�ȊO�͍ǂ��悤�ɂ���B
http://d.hatena.ne.jp/Ubuntu/20080128/1201462048
$ vi ~/iptables
#!/bin/bash
# �C���^�t�F�[�X����`
LAN=eth0
# �����l�b�g���[�N�Ƃ��ċ�����͈�
LOCALNET=192.168.1.1/16
# iptables�̃p�X
IPTABLES=/sbin/iptables
# ������
$IPTABLES -F
# �f�t�H���g���[��(�ȍ~�̃��[���Ƀ}�b�`���Ȃ������ꍇ�ɓK�p���郋�[��)�ݒ�
$IPTABLES -P INPUT DROP # ��M�͂��ׂĔj��
$IPTABLES -P OUTPUT ACCEPT # ���M�͂��ׂċ���
$IPTABLES -P FORWARD DROP # �ʉ߂͂��ׂĔj��
# ���z�X�g����̃A�N�Z�X�����ׂċ���
$IPTABLES -A INPUT -i lo -j ACCEPT
# ��������̃A�N�Z�X�����ׂċ���
#$IPTABLES -A INPUT -s $LOCALNET -j ACCEPT
# ��������s�����A�N�Z�X�ɑ���O������̕ԓ��A�N�Z�X������
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# SYN Cookies��L���ɂ���
# ��TCP SYN Flood�U����
sysctl -w net.ipv4.tcp_syncookies=1 > /dev/null
sed -i '/net.ipv4.tcp_syncookies/d' /etc/sysctl.conf
echo "net.ipv4.tcp_syncookies=1" >> /etc/sysctl.conf
# �u���[�h�L���X�g�A�h���X��ping�ɂ͉������Ȃ�
# ��Smurf�U����
sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1 > /dev/null
sed -i '/net.ipv4.icmp_echo_ignore_broadcasts/d' /etc/sysctl.conf
echo "net.ipv4.icmp_echo_ignore_broadcasts=1" >> /etc/sysctl.conf
# ICMP Redirect�p�P�b�g�͋���
sed -i '/net.ipv4.conf.*.accept_redirects/d' /etc/sysctl.conf
for dev in `ls /proc/sys/net/ipv4/conf/`
do
sysctl -w net.ipv4.conf.$dev.accept_redirects=0 > /dev/null
echo "net.ipv4.conf.$dev.accept_redirects=0" >> /etc/sysctl.conf
done
# Source Routed�p�P�b�g�͋���
sed -i '/net.ipv4.conf.*.accept_source_route/d' /etc/sysctl.conf
for dev in `ls /proc/sys/net/ipv4/conf/`
do
sysctl -w net.ipv4.conf.$dev.accept_source_route=0 > /dev/null
echo "net.ipv4.conf.$dev.accept_source_route=0" >> /etc/sysctl.conf
done
# �t���O�����g�����ꂽ�p�P�b�g�̓��O���L�^���Ĕj��
$IPTABLES -A INPUT -f -j LOG --log-prefix '[IPTABLES FRAGMENT] : '
$IPTABLES -A INPUT -f -j DROP
# �O���Ƃ�NetBIOS�֘A�̃A�N�Z�X�̓��O���L�^�����ɔj��
# ���s�v���O�L�^�h�~
$IPTABLES -A INPUT ! -s $LOCALNET -p tcp -m multiport --dports 135,136,137,138,139,445 -j DROP
$IPTABLES -A INPUT ! -s $LOCALNET -p udp -m multiport --dports 135,136,137,138,139,445 -j DROP
$IPTABLES -A OUTPUT ! -d $LOCALNET -p tcp -m multiport --sports 135,136,137,138,139,445 -j DROP
$IPTABLES -A OUTPUT ! -d $LOCALNET -p udp -m multiport --sports 135,136,137,138,139,445 -j DROP
# 1�b�Ԃ�4�����ping�̓��O���L�^���Ĕj��
# ��Ping of Death�U����
$IPTABLES -N LOG_PINGDEATH
$IPTABLES -A LOG_PINGDEATH -m limit --limit 1/s --limit-burst 4 -j ACCEPT
$IPTABLES -A LOG_PINGDEATH -j LOG --log-prefix '[IPTABLES PINGDEATH] : '
$IPTABLES -A LOG_PINGDEATH -j DROP
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -j LOG_PINGDEATH
# �S�z�X�g(�u���[�h�L���X�g�A�h���X�A�}���`�L���X�g�A�h���X)���p�P�b�g�̓��O���L�^�����ɔj��
# ���s�v���O�L�^�h�~
$IPTABLES -A INPUT -d 255.255.255.255 -j DROP
$IPTABLES -A INPUT -d 224.0.0.1 -j DROP
# 113�ԃ|�[�g(IDENT)�ւ̃A�N�Z�X�ɂ͋��ۉ���
# �����[���T�[�o���̃��X�|���X�ቺ�h�~
$IPTABLES -A INPUT -p tcp --dport 113 -j REJECT --reject-with tcp-reset
# (Ubuntu/Debian�n�̂�)
# 180�b�ȓ���10��ȏ��ssh�ڑ������݂�IP�A�h���X���V���b�g�A�E�g����
$IPTABLES -A INPUT -p tcp --dport 60022 -m state --state NEW -m recent --set --name ssh_attack
$IPTABLES -A INPUT -p tcp --dport 60022 -m state --state NEW -m recent --update --seconds 180 --hitcount 10 --rttl --name ssh_attack -j LOG --log-prefix 'SSH attack: '
$IPTABLES -A INPUT -p tcp --dport 60022 -m state --state NEW -m recent --update --seconds 180 --hitcount 10 --rttl --name ssh_attack -j DROP
# �O�������TCP22�ԃ|�[�g(SSH)�ւ̃A�N�Z�X������
$IPTABLES -A INPUT -p tcp --dport 60022 -j ACCEPT
# �O�������TCP80�ԃ|�[�g(HTTP)�ւ̃A�N�Z�X������
$IPTABLES -A INPUT -p tcp --dport 80 -j ACCEPT
# ����IP�A�h���X����̃A�N�Z�X�̓��O���L�^�����ɔj��
if [ -s /root/.deny_ip ]; then
iptables -N DENY_HOST
for ip in `cat /root/.deny_ip`
do
iptables -A DENY_HOST -s $ip -m limit --limit 1/s -j LOG --log-prefix '[IPTABLES DENY_HOST] : '
iptables -A DENY_HOST -s $ip -j DROP
iptables -I INPUT -j DENY_HOST
done
fi
# ��L�̃��[���Ƀ}�b�`���Ȃ������A�N�Z�X�͔j��
$IPTABLES -A INPUT -j DROP
$IPTABLES -A FORWARD -j DROP
�ݒ肵�Ă݂�B
$ sudo cp iptables /etc/network/if-pre-up.d/
$ sudo chmod 700 /etc/network/if-pre-up.d/iptables
$ sudo /etc/network/if-pre-up.d/iptables
���f���ꂽ�����Ă݂�B���������ۂ����e���o�Ă���͂��B
$ sudo /sbin/iptables-save > foo.txt
$ cat foo.txt
���ł�netstat�ŊJ�����Ă�|�[�g�����Ă����B
$ netstat -l
���ƁAdenyhosts�Ƃ����\�t�g�����Ă����ƁA��莞�ԓ��ɘA���A�N�Z�X���Ă���IP��hosts.deny�ɕ��荞�߂�炵���B
$ sudo apt-get install denyhosts
�ڂ����ݒ�͂��̃t�@�C���ɏ����B
$ vi /etc/denyhosts.conf
�ݒ荀�ڂ̓��e�́A���̃T�C�g���Q�l�ɂ����B
http://d.hatena.ne.jp/con_mame/20080126
�����ssh�ƃ|�[�g�̐ݒ�͂��������ǂ����낤���B
���Ƃ͕K�v�Ȃ��̂�K���ɓ����B
gcc���������B
$ apt-get install gcc
vim���������
$ sudo apt-get install vim
HTTP�T�[�o����������B
$ sudo apt-get install apache2
���ꂾ���Łuhttp://your_domain/�v�ɃA�N�Z�X�\�ɂȂ�B���J�f�B���N�g���́u/var/www�v�B
Perl��Python�͂�������Ruby�����Ȃ������̂œ����B
$ sudo apt-get install ruby1.9
JDK�������BOpenJDK���Ɖ����ƃA���Ȃ̂ŁAOracle����Ƃ��납��ujdk-xxx-linux-x64.bin�v�𗎂Ƃ��B
http://www.oracle.com/technetwork/java/javase/downloads/index.html
$ sudo sh jdk-xxx-linux-x64.bin
$ sudo mv jdk1.6.0_* /usr/local/jdk1.6
Scala����������B
http://www.scala-lang.org/downloads
$ tar xzvf scala-2.9.*.tgz
$ sudo mv scala-2.9.0.1 /usr/local/scala2.9
���ϐ��Ƃ��ɓ���Ă����B
$ vi ~/.bashrc
PATH=/usr/local/jdk1.6/bin:/usr/local/scala2.9/bin:$PATH
$ source ~/.bashrc
git����������B
$ sudo apt-get install git-core
�Ƃ肠���������͂��̕ӂŁB