○ iptablesのインストール 4 Router

・サイトの入口でファイアウォールをつくり、パケットを制御します
・iptables-1.6.1を使用しています
・ADSLスクリプト(firewall-masq)で設定します
・既存を残して、オリジナルソースからインストールします
・コマンドが統合され、xtables-multiが大元になっています
・make はメンテナンスマシンで行っています

・ソースの取得、削除は省略します
・エディタ、ファイラーの操作は省略します
・ソースを展開したら説明文を読みましょう
・Enterキーを省略します

・ログイン端末で "#" はroot、"$" は一般ユーザのプロンプトの記号です
・設定ファイルで "#" で始まる行はコメントとして解釈されます

○関連サイト

:iptables-1.6.1.tar.bz2  (http://www.netfilter.org/)
:snapshot (ftp://ftp.netfilter.org/pub/iptables/)

○参照ファイル

パッケージの追加
最初の設定 (Router)

○インストール環境

:OS CentOS 6.9
:selinux permissive
:インストール先 
:作業 ~/src
:言語 LANG=en_US.UTF-8
:ユーザー rootで実行

・メンテナンスの場合は一般ユーザから行います



○iptables-1.6.1

○iptablesのインストール

・iptablesパッケージは依存性があるので、そのまま残します
・nftables supportにはlibnftnl,libmnlが必要です

# cd ~/src
[root@venus:~/src]
# tar jxvf iptables-1.6.1.tar.bz2
# chown -R root:root iptables-1.6.1
# cd iptables-1.6.1
[root@venus:~/src/iptables-1.6.1]
# make distclean

・CFLAGS="-O2 -march=i686 -mtune=atom" (CPU最適化オプション)
・CPPFLAGS="-O2 -march=i686 -mtune=atom" (CPU最適化オプション)
・該当しない場合は指定しない

# ./configure CFLAGS="-O2 -march=i686 -mtune=atom" \
CPPFLAGS="-O2 -march=i686 -mtune=atom" \
--enable-devel --enable-libipq --disable-nftables

Iptables Configuration:
  IPv4 support:				yes
  IPv6 support:				yes
  Devel support:			yes
  IPQ support:				yes
  Large file support:			yes
  BPF utils support:			no
  nfsynproxy util support:		no
  nftables support:			no
    
Build parameters:
  Put plugins into executable (static):	no
  Support plugins via dlopen (shared):	yes
  Installation prefix (--prefix):	/usr/local
  Xtables extension directory:		/usr/local/lib/xtables
  Pkg-config directory:			/usr/local/lib/pkgconfig
  Host:					i686-pc-linux-gnu
  GCC binary:				gcc

Iptables modules that will not be built:  connlabel

・コンパイル

# make

・インストール (アップデートは別項参照)

# make install

# cd ..
[root@venus:~/src]
# tar jcvf iptables-1.6.1-rt-170129.tar.bz2 iptables-1.6.1/

○iptablesのアップデート

・新規インストールの場合は、次項へ進みます
・ソースの展開・コンパイルの表記は略します

・アップデート

# cd ~/src/iptables-1.6.1
[root@venus:~/src/iptables-1.6.1]
# make install

・キャッシュ情報の更新と確認

# ldconfig
# ldconfig -p | grep -e libip -e libxtable

・iptablesルールの再設定

# service pppoe restart

○キャッシュ情報の更新と確認

・/usr/local/libの設定がされているなら、ldconfigのみ実行します
・動的ライブラリが libxtables.so.11 になっています

# cd ~
[root@venus:~]
# echo /usr/local/lib >> /etc/ld.so.conf.d/usrlocal.conf
# ldconfig
# ldconfig -p | grep -e libip -e libxtable

○/sbinのリンクファイルの調整

・iptables-1.6.1ではxtables-multiがコマンドの大元になります
・CentOS 6.9ではalternativeで制御する構成になっています

# cd /etc/alternatives
[root@venus:/etc/alternatives]
# mv sbin-ip6tables-multi.i386 sbin-ip6tables-multi.i386.ORIG
# mv sbin-iptables-multi.i386 sbin-iptables-multi.i386.ORIG
# ln -s /usr/local/sbin/xtables-multi sbin-ip6tables-multi.i386
# ln -s /usr/local/sbin/xtables-multi sbin-iptables-multi.i386

○selinuxヘの対応 (selinuxを有効にしている場合)

:新規インストールファイルのselinuxラベルを修正

[root@venus:~]
# restorecon -Rv /usr/local
# restorecon -Rv /sbin



○Firewallingの作業工程

rp-pppoeで制御 iptablesスクリプトで制御
rp-pppoeの設定

firewall-masqの作製

(iptablesの解除)

rp-pppoeの起動
firewall-masqの作製

firewall-masqの実行

iptablesスクリプトでsave

iptables-configの修正

iptablesスクリプトの実行

(rp-pppoeの設定)

○カーネルパラメータの設定

:/etc/sysctl.conf ファイルの修正

・フォワーディング設定 ON

net.ipv4.ip_forward = 1

・指定されたファイルから読み込んだ内容を sysctl 設定にロードします

[root@venus:~]
# sysctl -p



○iptablesの設定 (pppoeで制御する)

rp-pppoeのインストールを参照

○/etc/ppp/firewall-masqの保存

[root@venus:~]
# cp /etc/ppp/firewall-masq /etc/ppp/firewall-masq-ORG

○/etc/ppp/firewall-masqの修正

・ユーザ・グループ・パーミッション (root root 644)
・スクリプトですが、権限がなくてもpppoeスクリプトが読み込んで実行します

firewall-masq (詳細別記)

○iptablesの停止

・iptablesをrpmパッケージでインストールしている場合です

[root@venus:~]
# service iptables stop
# chkconfig --del iptables

○/etc/init.d/pppoeスクリプトを再起動します

[root@venus:~]
# service pppoe restart

○iptablesのチェックをします

・チェーンが組まれたかどうかのチェックです

[root@venus:~]
# iptables -L -n -v | less
# iptables -t nat -L -n -v | less

○selinuxのラベルを修正 (selinuxが有効の場合)

[root@venus:~]
# restorecon -Rv /etc
# restorecon -Rv /usr/local



○iptablesの設定 (rpmパッケージの起動スクリプトを使う)

・iptablesを新規インストールした場合は、保存したファイルをもどします

# cd /etc/init.d
[root@venus:/etc/init.d]
# mv iptables-ORG iptables
# chmod 755 iptables
# cd ../sysconfig
# mv iptables-config.rpmsave iptables-config

○firewall-masqの実行と確認

firewall-masq (詳細別記)

・適当なディレクトリでfirewall-masqスクリプトを実行します

# cd ~
[root@venus:~]
# source firewall-masq

・iptablesのチェック

# service iptables status

○設定の保存

・iptablesの設定を保存します

[root@venus:~]
# service iptables save

・/etc/sysconfig/iptablesファイルとして保存されます


○/etc/sysconfig/iptables-configの修正

・マシンの再起動後、自動でロードされないモデュールを既述します

IPTABLES_MODULES="ip_conntrack_ftp ip_nat_ftp"

○iptablesスクリプトの実行

[root@venus:~]
# service iptables start
# chkconfig --add iptables

○rp-pppoeの設定

・iptablesが先に起動するので設定を書き換えないようにFirewallingを解除します

[root@venus:~]
# pppoe-setup

・省略

FIREWALLING
>>> choose a type of firewall (0-2):0

** Summary of what you enterd **
Ethernet Interface:eth1
User name:xxxxxxxxxxxx@ka.il24.net
Active-on-demand:NO
DNS: Do not adjust
Firewalling:NONE

>>>Accept these settings and adjust configuration files(y/N)?y

○selinuxラベルを修正 (selinuxが有効の場合)

[root@venus:~]
# restorecon -Rv /etc



○不正アクセスの追加設定

・不正アクセスのリストを作成し、firewall-masqで読み込んで設定します

:/root/bin/lsvdrop.sh (root root 700)

#!/bin/bash

if [ $# = 0 ]; then
    echo "usage: lsvdrop.sh [ip address or segment]..."
else
    echo "lsv-drop adding..."
    while [ "$1" != "" ]
    do
        echo $1 >> /root/lsv-drop
        echo $1 "added"
        shift
    done
    echo "lsv-drop sorting..."
    /bin/sort -u /root/lsv-drop > /root/lsv-drop.tmp
    /bin/mv /root/lsv-drop.tmp /root/lsv-drop
    echo "iptables Updating..."
    /etc/ppp/firewall-masq
fi

:/etc/ppp/firewall-masq

・省略

if [ -s /root/lsv-drop ]; then
    for ip2 in `cat /root/lsv-drop`
    do
        $IPTABLES -I wan-lsv -s $ip2 -j DROP
    done
fi

・省略

・使い方

# lsvdrop.sh 50.40.61.126 82.95.90.131 91.121.220.43

○selinuxラベルを修正 (selinuxが有効の場合)

[root@venus:~]
# restorecon -Rv /etc
# restorecon -Rv /root



○開発版のインストール(参考)

・snapshotをダウンロードしてインストールします

○iptablesのインストール

# cd ~/src
[root@venus:~/src]
# tar jxf iptables-20170129.tar.bz2
# cd iptables-20170129
[root@venus:~/src/iptables-20160529]
# ./autogen.sh
# ./configure CFLAGS="-O2 -march=i686 -mtune=atom" \
CPPFLAGS="-O2 -march=i686 -mtune=atom" \
--enable-devel --enable-libipq --disable-nftables
# make
# make install

○ Copyright(c) 528p.com All Rights Reserved.