読者です 読者をやめる 読者になる 読者になる

忘備録

日々の調べ物をまとめる。アウトプットする。基本自分用。

【Linux】セキュアなサーバを構築するための最低限の設定

Linux CentOS6

サーバ立て直すことにしたのでメモ

環境

CentOS 6.7

前提

OSのインストールは最小構成(minimal)で行っているものとする

参考

Linuxサーバーセキュリティ徹底入門 オープンソースによるサーバー防衛の基本

作業用ユーザの作成

rootユーザでの作業はしないようにするため、作業用のユーザを作成

# ユーザ作成
$ adduser hoge
# パスワード設定
$ passwd hoge
Changing password for user hoge.
New password:
Retype:
password: all authentication tokens updated successfully.

システムのアップデート

システムの状態を最新にする

$ yum -y update
読み込んだプラグイン:fastestmirror
更新処理の設定をしています
Loading mirror speeds from cached hostfile
 * base: ftp.riken.jp
 * extras: ftp.riken.jp
 * updates: ftp.riken.jp
依存性の解決をしています
#〜〜〜〜〜〜〜(中略)〜〜〜〜〜〜〜〜〜
  selinux-policy-targeted.noarch 0:3.7.19-279.el6_7.8             sqlite.x86_64 0:3.6.20-1.el6_7.2                          
  sudo.x86_64 0:1.8.6p3-20.el6_7                                  tzdata.noarch 0:2016a-2.el6                               
  udev.x86_64 0:147-2.63.el6_7.1                                 

完了しました!

不要なサービスの停止

動作しているサービスの確認

$ chkconfig --list | grep 3:on
auditd          0:off  1:off  2:on   3:on   4:on   5:on   6:off
blk-availability    0:off  1:on   2:on   3:on   4:on   5:on   6:off
crond           0:off  1:off  2:on   3:on   4:on   5:on   6:off
ip6tables       0:off  1:off  2:on   3:on   4:on   5:on   6:off
iptables        0:off  1:off  2:on   3:on   4:on   5:on   6:off
iscsi           0:off  1:off  2:off  3:on   4:on   5:on   6:off
iscsid          0:off  1:off  2:off  3:on   4:on   5:on   6:off
lvm2-monitor    0:off  1:on   2:on   3:on   4:on   5:on   6:off
mdmonitor       0:off  1:off  2:on   3:on   4:on   5:on   6:off
netfs           0:off  1:off  2:off  3:on   4:on   5:on   6:off
network         0:off  1:off  2:on   3:on   4:on   5:on   6:off
postfix         0:off  1:off  2:on   3:on   4:on   5:on   6:off
rsyslog         0:off  1:off  2:on   3:on   4:on   5:on   6:off
sshd            0:off  1:off  2:on   3:on   4:on   5:on   6:off
udev-post       0:off  1:on   2:on   3:on   4:on   5:on   6:off

不要なサービスの停止

$ service ip6tables stop
ip6tables: チェインをポリシー ACCEPT に設定中: filter      [  OK  ]
ip6tables: ファイアウォールルールを消去中:                 [  OK  ]
ip6tables: モジュールを取り外し中:                         [  OK  ]
$ service netfs stop
$ service postfix stop
postfix を停止中:                                          [  OK  ]

ログインの制限

sshから直接rootユーザにログインできなくする

以下のファイルを編集
/etc/ssh/sshd_config

#PermitRootLogin yes

PermitRootLogin no

に変更

sshのポートを変更

ウェルノウンポートのままだと攻撃を受けやすいため変更しておく

以下のファイルを編集
/etc/ssh/sshd_config

Port 22

Port 20022

に変更

併せてiptablesの設定も変更しておく

以下のファイルを変更
/etc/sysconfig/iptables

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 20022 -j ACCEPT

に変更

sshiptablesを再起動する

$ service sshd restart
$ service iptables restart

ネットワークの確認

余計なポートが開いていないか確認

$ netstat -atun
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 0.0.0.0:20022               0.0.0.0:*                   LISTEN      
tcp        0     48 192.168.100.251:20022       192.168.100.100:64595       ESTABLISHED 
tcp        0      0 :::20022                    :::*                        LISTEN      
udp        0      0 0.0.0.0:68                  0.0.0.0:*                        

ファイアウォールの設定を確認

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
ACCEPT     icmp --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:20022 
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

前回立てたサーバーはこれくらいのことしかしてなかった。

今回はもう少し突っ込んで、セキュリティ対策してみようと思う(するとは言っていない)