実践Linux
CentOS5/6.5        CentOS5/6.5 目次へ  TOP(HOME)へ

ネットワークの設定とファイアウォール(iptables)  CentOS 6.5   2014年9月






●ネットワークの設定
以下はNetworkManagerを利用しているが、手動設定にする場合はNetworkManagerサービスを停止しておく。
手動設定にする場合は、ネットワークの設定を旧来の書式に戻す必要があるので注意。

システム → 設定 → ネットワーク接続(NetworkManager)
eth0のIPv4
 「自動接続する」  チェックを入れる
 「全てのユーザーに利用可能」  チェック(ママ)
 アドレス    333.333.333.210
 ネットマスク  29
 ゲートウェイ  333.333.333.209
 DNSサーバー  127.0.0.1, ***.***.***.*** (後者=プロバイダ***.***.***.***を入れておかないと当面のインターネット作業ができないので注意。BINDのインストール等。)
 ドメインを検索 my-dom.xxx
eth1のIPv4
 「自動接続する」  チェックを入れる
 「全てのユーザーに利用可能」  チェック(ママ)
 アドレス    192.168.7.1
 ネットマスク  24
 ゲートウェイ  192.168.7.1
再起動しておく。

/etc/host.conf
 #multi on
 order hosts,bind

/etc/hosts
 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
 333.333.333.210 ns1 ns1.my-dom.xxx
 #::1 ………………  コメントアウト

/etc/hosts.allow  ALL:の部分と最後(TCP Wrapperを使うのはsshd,xinetd,sendmail,vsftpd)
 ALL: 127.0.0.1 192.168.7.
 sshd: All
 #vsftpd: All  (随時利用)

/etc/resolv.conf  上の「ネットワークの設定(NetworkManager)」で自動的に作成された。
 serch my-dom.xxx
 nameserver 127.0.0.1     以下の2項はLAN接続しておくと自動作成された
 nameserver ***.***.***.*** (***.***.***.***はプロバイダ)

/etc/sysctl.conf
 net.ipv4.ip_forward=1

/etc//sysconfig/networkの内容確認。
 NETWORKING=yes
 HOSTNAME=ns1.my-dom.xxx
 NETWORKING_IPV6=no
 #GATEWAY=333.333.333.209  (ifcfg-eth0で設定しないとき)

/sysconfig/network-scripts/ifcfg-eth*の内容確認。

TCP Wrapper について補足
Red Hat Enterprise Linux 内の殆どのネットワークサービスはlibwrap.a ライブラリに対してリンクされています。このようなアプリケーションには、sshd、sendmail、xinetd などがあります。
ネットワークサービスバイナリが libwrap.aに対してリンクされているかどうか判定するには、rootユーザーとして以下のコマンドを入力します。
# strings -f /usr/sbin/sshd | grep hosts_access
# ldd /usr/sbin/sshd | grep libwrap

●IPv6の停止
@CentOS 5ではIPv6モジュールを単純に無効化して停止していましたが、CentOS 6では、この方法では、SELinuxでエラーが出たり依存モジュールが使えなくなってしまうとのことです。
 etc/sysctl.confに
  net.ipv6.conf.all.disable_ipv6 = 1
  net.ipv6.conf.default.disable_ipv6 = 1
 の2行を追加して、sysctl -p でシステムに反映させます。
 ifconfig -a を実行すると、IPv6の表示が出てこなくなるのが確認できます。

 ※ 他に/etc/modprobe.d/disable-ipv6.confファイルなどを用意して以下を記述しておく方法もあるのですが(CentOS 5.4以降でも有効)、場合によって動かない場合もあるとのことです。
    options ipv6 disable=1
    ここでは※の方法で大丈夫だった。

A/etc/sysconfig/networkに以下を追加。
 NETWORKING_IPV6=no

Bip6tablesサービスを停止。


●ファイアウォール(iptables)の設定
・いったんiptabresサービスをOFFにする。
・下のiptables_setを実行、この状態を/etc/sysconfig/iptablesに反映・保存する。
  # ./iptables_set  (-t *** を省略した部分は -t filter として実行される。)
  # service iptables save
・/etc/sysconfig/iptablesの修正
 パケットカウンタ:バイトカウンタ([**:***]の部分)をすべて[0:0]にして初期化するようにしておく。
・/etc/sysconfig/iptablesのselinuxタイプを確認。
 system_conf_tならOK。そうでなければ、ファイルのプロパティで変更しておく。
・iptabresサービスを再開する。また、PC起動時にスタートするようにしておく(有効にする)。
・ヘルパーモジュール(FTP関係)
 iptablesの起動スクリプトを使用してフィルタリングする場合、追加モジュールは/etc/sysconfig/iptables-config に記述する。
 /etc/sysconfig/iptables-config
   IPTABLES_MODULES = "nf_conntrack_ftp nf_nat_ftp"
 ヘルパーモジュールは、
 /lib/modules/2.6.32-358.el6.x86_64/kernel/net/ipv4/netfilter/
 /lib/modules/2.6.32-358.el6.x86_64/kernel/net/netfilter/
 にある。
 ※ 「ファイアーウォールの設定」でFTPをon/offした場合(iptablesの手動設定が元に戻ってしまうのでここではやらないが)、自動的にIPTABLES_MODULESに"nf_conntrack_ftp"が追加されたり、削除されたりすることがわかる。


iptables_set  これは実行用ファイルとして自分で作成しておく
#! /bin/bash

MYHOST='333.333.333.210'
LOCALNET='192.168.7.0/24'
NS2='333.333.333.211'
NS3='***.***.***.***'  プロバイダのDNSを指定
MYIP='333.333.333.208/29'

######initialize######
/sbin/iptables -F
/sbin/iptables -t nat -F
/sbin/iptables -t mangle -F
/sbin/iptables -X
/sbin/iptables -Z

######policy######
/sbin/iptables -P FORWARD DROP
/sbin/iptables -P INPUT DROP
/sbin/iptables -P OUTPUT DROP

######syn-flood:DROP######
/sbin/iptables -N syn-flood
/sbin/iptables -A INPUT -i eth0 -p tcp --syn -j syn-flood
/sbin/iptables -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN
/sbin/iptables -A syn-flood -j LOG --log-prefix "IPTABLES SYN-FLOOD:"
/sbin/iptables -A syn-flood -j DROP

######Make sure NEW tcp connections are SYN packets:DROP######
/sbin/iptables -A INPUT -i eth0 -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "IPTABLES SYN-FLOOD:"
/sbin/iptables -A INPUT -i eth0 -p tcp ! --syn -m state --state NEW -j DROP

######ping of death:DROP######
/sbin/iptables -N ping-death
/sbin/iptables -A INPUT -i eth0 -p icmp --icmp-type echo-request -j ping-death
/sbin/iptables -A ping-death -m limit --limit 1/s --limit-burst 4 -j RETURN
/sbin/iptables -A ping-death -j LOG --log-prefix "IPTABLES PING-DEATH:"
/sbin/iptables -A ping-death -j DROP

######port-scan:DROP######
/sbin/iptables -N port-scan
/sbin/iptables -A INPUT -i eth0 -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j port-scan
/sbin/iptables -A port-scan -m limit --limit 1/s --limit-burst 4 -j RETURN
/sbin/iptables -A port-scan -j LOG --log-prefix "IPTABLES PORT-SCAN:"
/sbin/iptables -A port-scan -j DROP

######spoofing:DROP######
/sbin/iptables -N spoofing
/sbin/iptables -A INPUT -i eth0 -s 127.0.0.0/8 -j spoofing
/sbin/iptables -A INPUT -i eth0 -d 127.0.0.0/8 -j spoofing
/sbin/iptables -A INPUT -i eth0 -s 10.0.0.0/8 -j spoofing
/sbin/iptables -A INPUT -i eth0 -s 172.16.0.0/12 -j spoofing
/sbin/iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j spoofing
/sbin/iptables -A INPUT -i eth0 -s 192.0.2.0/24 -j spoofing
/sbin/iptables -A INPUT -i eth0 -s 169.254.0.0/16 -j spoofing
/sbin/iptables -A INPUT -i eth0 -s 224.0.0.0/4 -j spoofing
/sbin/iptables -A INPUT -i eth0 -s 240.0.0.0/5 -j spoofing
/sbin/iptables -A INPUT -i eth0 -s 0.0.0.0/8 -j spoofing
/sbin/iptables -A INPUT -i eth0 -s 255.255.255.255 -j spoofing
/sbin/iptables -A INPUT -i eth0 -s $MYHOST -j spoofing
/sbin/iptables -A spoofing -j LOG --log-prefix "IPTABLES SPOOFING:"
/sbin/iptables -A spoofing -j DROP

######win FORWARDING:DROP######
/sbin/iptables -N win
/sbin/iptables -A FORWARD -p tcp -m multiport --sport 135,137,138,139,445 -j win
/sbin/iptables -A FORWARD -p udp -m multiport --sport 135,137,138,139,445 -j win
/sbin/iptables -A FORWARD -p tcp -m multiport --dport 135,137,138,139,445 -j win
/sbin/iptables -A FORWARD -p udp -m multiport --dport 135,137,138,139,445 -j win
/sbin/iptables -A win -j LOG --log-prefix "USING WIN PORT:"
/sbin/iptables -A win -j DROP

######IP FORWARDING & NAT######
/sbin/iptables -A FORWARD -i eth1 -o eth0 -s $LOCALNET -j ACCEPT
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to $MYHOST

######local 127.0.0.1######
/sbin/iptables -A INPUT -i lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
/sbin/iptables -A OUTPUT -o lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

######ESTABLISHED######
/sbin/iptables -A FORWARD -m state --state ESTABLISH,RELATED -j ACCEPT
/sbin/iptables -A INPUT -m state --state ESTABLISH,RELATED -j ACCEPT
/sbin/iptables -A OUTPUT -m state --state ESTABLISH,RELATED -j ACCEPT

######local 192.168.7.######
/sbin/iptables -A INPUT -i eth1 -s $LOCALNET -j ACCEPT
/sbin/iptables -A OUTPUT -o eth1 -d $LOCALNET -j ACCEPT

######DNS######
/sbin/iptables -A INPUT -p udp --dport 53 -d $MYHOST -j ACCEPT
/sbin/iptables -A OUTPUT -p udp --dport 53 -s $MYHOST -j ACCEPT
##DNS for slave
/sbin/iptables -A INPUT -p tcp --dport 53 -s $NS2 -d $MYHOST -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --dport 53 -s $MYHOST -d $NS2 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 53 -s $NS3 -d $MYHOST -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --dport 53 -s $MYHOST -d $NS3 -j ACCEPT

######WWW######
/sbin/iptables -A INPUT -p tcp --dport 80 -d $MYHOST -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --dport 80 -s $MYHOST -j ACCEPT
#/sbin/iptables -A INPUT -p tcp --dport 443 -d $MYHOST -j ACCEPT
#/sbin/iptables -A OUTPUT -p tcp --dport 443 -s $MYHOST -j ACCEPT

######Mail######
/sbin/iptables -A INPUT -p tcp --dport 25 -d $MYHOST -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --dport 25 -s $MYHOST -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 113 -d $MYHOST -j REJECT --reject-with tcp-reset
/sbin/iptables -A OUTPUT -p tcp --dport 113 -s $MYHOST -j ACCEPT

######ntp######
#/sbin/iptables -A OUTPUT -p tcp --dport 123 -s $MYHOST -j ACCEPT
#/sbin/iptables -A OUTPUT -p udp --dport 123 -s $MYHOST -j ACCEPT

######pop3######
#/sbin/iptables -A INPUT -p tcp --dport 110 -s *** -d $MYHOST -j ACCEPT

######ftp######
#/sbin/iptables -A INPUT -p tcp --dport 20:21 -s $MYIP -d $MYHOST -j ACCEPT 必要に応じて許可
/sbin/iptables -A OUTPUT -p tcp --dport 20:21 -s $MYHOST -j ACCEPT

######icmp######
/sbin/iptables -A INPUT -p icmp -d $MYHOST -j ACCEPT
/sbin/iptables -A OUTPUT -p icmp -s $MYHOST -j ACCEPT

######openVPN######
#/sbin/iptables -A INPUT -p udp --dport 1194 -d $MYHOST -j ACCEPT このPCをVPNサーバーとするとき

######openVPN through###### 配下のPC(192.168.7.100)をVPNサーバーとするとき
/sbin/iptables -t nat -A PREROUTING -i eth0 -p udp --dport 1194 -j DNAT --to 192.168.7.100
/sbin/iptables -A FORWARD -i eth0 -o eth1 -p udp --dport 1194 -j ACCEPT



TOP(HOME)へ

目 次

特別企画
Raspberry Piで遊ぶ

HOME(全体のシステム構成&目次)

CentOS7
CentOS7のインストール〜ネットワークの設定ほか
CentOS7の新機能(systemdとfirewalld)
ダイレクトルールを使ったfirewallの強化
DNS(BIND)サーバー
Webサーバー
  Webでファイルの受け渡し
  アクセス解析ツールAwstats
  Wordpressでブログ構築
FTPサーバー
FTPS(FTP over SSL/TLS)
Mail(Dovecot&Postfix)サーバー
Sambaサーバー
MariaDB(MySQL)サーバー
DHCPサーバー
SSHサーバー
VNCサーバー
ドメインの追加

CentOS5〜6
ネットワーク&ファイアウォール(iptables)
DNS(BIND)サーバー
DHCPサーバー
メールサーバー(基本)
メールサーバー/実際の運用
Webサーバー
  WebDAVによるファイル共有
  Webでファイルのやり取り
  アクセス解析ツールawstats
  namazuで全文検索
  WordPressブログサイト構築
  EC-CUBEショッピングサイト構築
FTPサーバー
ファイルサーバー・Samba
データベースpostgreSQL
  ExcelからpostgreSQLを操作
データベースMySQL
SSHサーバー
VNC
SSL/TLSを利用した暗号化通信
openVPN
ストリーミングサーバー
    C++ RTMP Server
    Helix server Basic
ドメインの追加
Xen・仮想化
特定ディレクトリに容量制限

SELinux
SELinux基本設定
新しいタイプとポリシー・モジュールを作成してみる
マクロを利用したteファイルの記述
新しいドメインを導入してみる

coLinux
Fedora11で試す

Cプログラミング目次
X11プログラム
サイエンス・プログラム

計測・プログラム
秋月電子のデーターロガーpico ADC-16
「今すぐ使えるパソコン計測USBマイコン基板」に付属のTRZ1102
センサーの使用例

Glade2/GTK+を使ってみる
テキスト・ビューで簡易エディター
ドローイングエリアで自動描画
放物線運動(pango、cairoも試してみる)
これらを、GTK+のみで書き出す

フォントについて
ネットワーク・プログラミング
postgreSQL接続
CGI
ファイル操作

●その他
印刷機関連開発 刷版絵柄面積率測定
数独をExcelで解く