ユーザ作成

OSインストール後はrootユーザしかないはずなので、通常ユーザを作成しておきます。
#newuserというユーザを作成する場合。

# useradd newuser
# passwd newuser
Changing password for user newuser.
New password:         ←設定するパスワードを入力
Retype new password:  ←もう一度入力
passwd: all authentication tokens updated successfully.

SSHの設定

SSH接続のポート番号変更と、root接続を制限する。
これはSSHポート22もrootユーザもデフォルトだとアタックに使われてしまうからです。
一番簡単なセキュリティ対策ですね。なので、対応は必須ではありません。
他にも鍵認証を使用するなどの対策もあります。

#ポートを10022に変更し、root接続を拒否する場合。

# vim /etc/ssh/sshd_config
Port 10022
PermitRootLogin no
# service sshd restart

ファイアーウォール設定

iptablesを使用してファイアーウォールの設定をします。

# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

このように最初はルールが何も設定されていないので、ルールを設定してあげます。

下記は攻撃対策のルール

  • データを持たないパケットの接続を破棄する
  • SYNflood攻撃と思われる接続を破棄する
  • ステルススキャンと思われる接続を破棄する
# iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
# iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
# iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP

localhostからの通信とpingを許可するルール

# iptables -A INPUT -i lo -j ACCEPT
# iptables -A INPUT -p icmp -j ACCEPT

外部からの通信を許可するルール
SSHのポートは忘れずに登録してください。でないと接続できなくなります。(笑)
#下記はhttp(80)、https(443)、SSH(10022)を許可する場合

# iptables -A INPUT -p tcp -m tcp --dport 10022 -j ACCEPT
# iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
# iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT

確立済みの通信を許可するルール

# iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

許可した通信以外のサーバに受信するパケットを拒否し、サーバから送信するパケットを許可するルール

# iptables -P INPUT DROP
# iptables -P OUTPUT ACCEPT

最後に忘れずに設定を保存します。

# service iptables save

そうすると、

# iptables -L
Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
DROP       tcp  --  anywhere             anywhere            tcp flags:FIN,SYN,RST,PSH,ACK,URG/NONE
DROP       tcp  --  anywhere             anywhere            tcp flags:!FIN,SYN,RST,ACK/SYN state NEW
DROP       tcp  --  anywhere             anywhere            tcp flags:FIN,SYN,RST,PSH,ACK,URG/FIN,SYN,RST,PSH,ACK,URG
ACCEPT     all  --  anywhere             anywhere
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:****
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:****
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:****

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

こんな感じです。