サーバー再構築覚書(004)ーインフラ整備(01)

◎遠隔操作を可能にするため、SSH をインストール
サーバーワールドの設定

root@Voyager:~# apt -y install openssh-server

クライエント側では、Windows や Mac でも、Terminal 系統のアプリ(Wiindows では、Teraterm など、最近のWindows では、コマンドプロンプトから、ssh -l ユーザー名 サーバーのIP番号 でログイン可能)下図は、Teraterm のログイン画面。

◎同一LAN内での時刻設定
サーバーワールドに従い、

root@voyager:~# apt -y install ntp
root@voyager:~# jed /etc/ntp.conf

これで、LAN内のクライアントPCとの時刻同期が可能。

◎LAN とインターネットの接続(ファイアーウォール)
やや古典的な、iptables を使用

root@voyager:~# apt -y install iptables


# Generated by iptables-save v1.8.4 on Thu Sep 30 17:59:40 2021
*nat
#xxxxx - Variable

:PREROUTING ACCEPT [xxxxxx:xxxxxx]
:INPUT ACCEPT [xxxxxx:xxxxxx]
:OUTPUT ACCEPT [xxxxxx:xxxxxx]
:POSTROUTING ACCEPT [xxxxxx:xxxxxx]
#Very Important
#○○○1- LAN Card name
-A POSTROUTING -s 192.168.0.0/24 -o ○○○1 -j MASQUERADE
#End

COMMIT
# Completed on Thu Sep 30 17:59:40 2021
# Generated by iptables-save v1.8.4 on Thu Sep 30 17:59:40 2021
*filter
#xxxxx - Variable
:INPUT ACCEPT [xxxxxx:xxxxxx]
:FORWARD ACCEPT [xxxxxx:xxxxxx]
:OUTPUT ACCEPT [xxxxxx:xxxxxx]
# 悪質なパケットを排除ーおまじないのようなもの
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
# 以下のPort を許可
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 465 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 110 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 995 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 143 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 993 -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -j LOG --log-prefix "drop_packet:"
COMMIT
# Completed on Thu Sep 30 17:59:40 2021

これをスクリプトで書くと…

root@voyager:~# cat iptables.sh

#!/bin/sh

# 設定をクリア
iptables -F

# 基本方針[1]
# サーバーが受信するパケットを許可
iptables -P INPUT ACCEPT
# サーバーが経由させるパケットを許可
iptables -P FORWARD ACCEPT
#iptables -P FORWARD DROP
# サーバーが送信するパケットを許可
iptables -P OUTPUT ACCEPT

# サーバ攻撃対策関連
# データを持たないパケットの接続を破棄
iptables -A INPUT -p tcp –tcp-flags ALL NONE -j DROP
# SYNflood攻撃と追われる接続を破棄
iptables -A INPUT -p tcp ! –syn -m state –state NEW -j DROP
# ステルススキャンと思われる接続を破棄
iptables -A INPUT -p tcp –tcp-flags ALL ALL -j DROP
iptables -A INPUT -p tcp -m tcp –dport 80 -j ACCEPT
# HTTPS(SSL)を許可
iptables -A INPUT -p tcp -m tcp –dport 443 -j ACCEPT
# FTPD
iptables -A INPUT -p tcp -m tcp –dport 21 -j ACCEPT
#SMTP
iptables -A INPUT -p tcp -m tcp –dport 25 -j ACCEPT
#SMTP(SSL)
iptables -A INPUT -p tcp -m tcp –dport 465 -j ACCEPT
#POP3
iptables -A INPUT -p tcp -m tcp –dport 110 -j ACCEPT
#POP3(SSL)
iptables -A INPUT -p tcp -m tcp –dport 995 -j ACCEPT
#IMAP
iptables -A INPUT -p tcp -m tcp –dport 143 -j ACCEPT
#IMAP(SSL)
iptables -A INPUT -p tcp -m tcp –dport 993 -j ACCEPT
#SMTPS
iptables -A INPUT -p tcp -m tcp –dport 465 -j ACCEPT
#SMTP-Submission
iptables -A INPUT -p tcp -m tcp –dport 587 -j ACCEPT
# PINGを許可
iptables -A INPUT -p icmp -j ACCEPT
# MASQUARADE
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ○○○1 -j MASQUERADE

# 要するに、ローカル⇔インターネットのやり取りをするには
#「NATとは Network Address Translationの略。 「ネットワークアドレス変換」ともいう。 LANに接続された端末からインターネットに接続する際に、「プライベートIPアドレス」を自動的に外部ネットワークで使用できる「グローバルIPアドレス」に変換する機能。」が必要ということ
# その他
# ローカルループバックの接続を許可
iptables -A INPUT -i lo -j ACCEPT
# 確率済みの通信を許可
iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
# ログを出力
iptables -A INPUT -j LOG –log-prefix “drop_packet:”

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です