| Line 1... |
Line 1... |
| 1 |
#!/bin/bash
|
1 |
#!/bin/bash
|
| 2 |
# $Id: alcasar.sh 2867 2020-10-24 14:33:04Z rexy $
|
2 |
# $Id: alcasar.sh 2868 2020-10-26 21:22:24Z rexy $
|
| 3 |
|
3 |
|
| 4 |
# alcasar.sh
|
4 |
# alcasar.sh
|
| 5 |
# ALCASAR is a Free and open source NAC created by Franck BOUIJOUX (3abtux), Pascal LEVANT and Richard REY (Rexy)
|
5 |
# ALCASAR is a Free and open source NAC created by Franck BOUIJOUX (3abtux), Pascal LEVANT and Richard REY (Rexy)
|
| 6 |
# This script is distributed under the Gnu General Public License (GPL)
|
6 |
# This script is distributed under the Gnu General Public License (GPL)
|
| 7 |
# team@alcasar.net
|
7 |
# team@alcasar.net
|
| Line 655... |
Line 655... |
| 655 |
USERCTL=no
|
655 |
USERCTL=no
|
| 656 |
MTU=$MTU
|
656 |
MTU=$MTU
|
| 657 |
EOF
|
657 |
EOF
|
| 658 |
fi
|
658 |
fi
|
| 659 |
# write INTIF (consultation LAN) in normal mode
|
659 |
# write INTIF (consultation LAN) in normal mode
|
| - |
|
660 |
cp -f /etc/sysconfig/network-scripts/ifcfg-$INTIF /etc/sysconfig/network-scripts/default-ifcfg-$INTIF
|
| 660 |
cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$INTIF
|
661 |
cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$INTIF
|
| 661 |
DEVICE=$INTIF
|
662 |
DEVICE=$INTIF
|
| 662 |
BOOTPROTO=static
|
663 |
BOOTPROTO=static
|
| 663 |
ONBOOT=yes
|
664 |
ONBOOT=yes
|
| 664 |
NOZEROCONF=yes
|
665 |
NOZEROCONF=yes
|
| Line 666... |
Line 667... |
| 666 |
IPV6INIT=no
|
667 |
IPV6INIT=no
|
| 667 |
IPV6TO4INIT=no
|
668 |
IPV6TO4INIT=no
|
| 668 |
ACCOUNTING=no
|
669 |
ACCOUNTING=no
|
| 669 |
USERCTL=no
|
670 |
USERCTL=no
|
| 670 |
EOF
|
671 |
EOF
|
| 671 |
cp -f /etc/sysconfig/network-scripts/ifcfg-$INTIF /etc/sysconfig/network-scripts/default-ifcfg-$INTIF
|
- |
|
| 672 |
# write INTIF in bypass mode (see "alcasar-bypass.sh")
|
672 |
# write INTIF in bypass mode (see "alcasar-bypass.sh")
|
| 673 |
cat <<EOF > /etc/sysconfig/network-scripts/bypass-ifcfg-$INTIF
|
673 |
cat <<EOF > /etc/sysconfig/network-scripts/bypass-ifcfg-$INTIF
|
| 674 |
DEVICE=$INTIF
|
674 |
DEVICE=$INTIF
|
| 675 |
BOOTPROTO=static
|
675 |
BOOTPROTO=static
|
| 676 |
IPADDR=$PRIVATE_IP
|
676 |
IPADDR=$PRIVATE_IP
|
| Line 1365... |
Line 1365... |
| 1365 |
{
|
1365 |
{
|
| 1366 |
# Clamd adaptation to e2guardian
|
1366 |
# Clamd adaptation to e2guardian
|
| 1367 |
[ -e /lib/systemd/system/clamav-daemon.service.default ] || cp /lib/systemd/system/clamav-daemon.service /lib/systemd/system/clamav-daemon.service.default
|
1367 |
[ -e /lib/systemd/system/clamav-daemon.service.default ] || cp /lib/systemd/system/clamav-daemon.service /lib/systemd/system/clamav-daemon.service.default
|
| 1368 |
$SED "/^[Service]/a ExecStartPre=\/bin\/chown e2guardian:e2guardian \/run\/clamav" /lib/systemd/system/clamav-daemon.service
|
1368 |
$SED "/^[Service]/a ExecStartPre=\/bin\/chown e2guardian:e2guardian \/run\/clamav" /lib/systemd/system/clamav-daemon.service
|
| 1369 |
$SED "/^[Service]/a ExecStartPre=\/bin\/mkdir -p \/run\/clamav" /lib/systemd/system/clamav-daemon.service
|
1369 |
$SED "/^[Service]/a ExecStartPre=\/bin\/mkdir -p \/run\/clamav" /lib/systemd/system/clamav-daemon.service
|
| - |
|
1370 |
[ -e /lib/systemd/system/clamav-daemon.socket.default ] || cp /lib/systemd/system/clamav-daemon.socket /lib/systemd/system/clamav-daemon.socket.default
|
| - |
|
1371 |
$SED "s?^SocketUser=.*?SocketUser=e2guardian?g" /lib/systemd/system/clamav-daemon.socket
|
| - |
|
1372 |
$SED "s?^SocketGroup=.*?SocketGroup=e2guardian?g" /lib/systemd/system/clamav-daemon.socket
|
| - |
|
1373 |
|
| 1370 |
[ -e /etc/clamd.conf.default ] || cp /etc/clamd.conf /etc/clamd.conf.default
|
1374 |
[ -e /etc/clamd.conf.default ] || cp /etc/clamd.conf /etc/clamd.conf.default
|
| 1371 |
$SED "s?^MaxThreads.*?MaxThreads 32?g" /etc/clamd.conf
|
1375 |
$SED "s?^MaxThreads.*?MaxThreads 32?g" /etc/clamd.conf
|
| 1372 |
$SED "s?^#LogTime.*?LogTime yes?g" /etc/clamd.conf # enable logtime for each message
|
1376 |
$SED "s?^#LogTime.*?LogTime yes?g" /etc/clamd.conf # enable logtime for each message
|
| 1373 |
$SED "s?^LogVerbose.*?LogVerbose no?g" /etc/clamd.conf
|
1377 |
$SED "s?^LogVerbose.*?LogVerbose no?g" /etc/clamd.conf
|
| 1374 |
$SED "s?^#LogRotate.*?LogRotate yes?g" /etc/clamd.conf
|
1378 |
$SED "s?^#LogRotate.*?LogRotate yes?g" /etc/clamd.conf
|
| Line 1422... |
Line 1426... |
| 1422 |
## - configure NetFlow grapher (nfsen-ng) ##
|
1426 |
## - configure NetFlow grapher (nfsen-ng) ##
|
| 1423 |
##########################################################
|
1427 |
##########################################################
|
| 1424 |
nfsen()
|
1428 |
nfsen()
|
| 1425 |
{
|
1429 |
{
|
| 1426 |
groupadd -f nfcapd
|
1430 |
groupadd -f nfcapd
|
| 1427 |
useradd -r -g nfcapd -s /bin/false -c "system user for nfcapd" nfcapd
|
1431 |
id -u nfcapd >/dev/null 2>&1 || useradd -r -g nfcapd -s /bin/false -c "system user for nfcapd" nfcapd
|
| 1428 |
# nfcapd unit for systemd
|
1432 |
# nfcapd unit for systemd
|
| 1429 |
cat << EOF > /lib/systemd/system/nfcapd.service
|
1433 |
cat << EOF > /lib/systemd/system/nfcapd.service
|
| 1430 |
# This file is part of systemd.
|
1434 |
# This file is part of systemd.
|
| 1431 |
#
|
1435 |
#
|
| 1432 |
# systemd is free software; you can redistribute it and/or modify it
|
1436 |
# systemd is free software; you can redistribute it and/or modify it
|
| Line 1836... |
Line 1840... |
| 1836 |
##- Adapt conf file to ALCASAR ##
|
1840 |
##- Adapt conf file to ALCASAR ##
|
| 1837 |
##- Secure items : DDOS, SSH-Brute-Force, Intercept & ACC brute-Force ##
|
1841 |
##- Secure items : DDOS, SSH-Brute-Force, Intercept & ACC brute-Force ##
|
| 1838 |
########################################################################
|
1842 |
########################################################################
|
| 1839 |
fail2ban()
|
1843 |
fail2ban()
|
| 1840 |
{
|
1844 |
{
|
| 1841 |
# adapt fail2ban.conf to Mageia (fedora like) & ALCASAR behaviour
|
1845 |
# adapt fail2ban to Mageia (fedora like) & ALCASAR behaviour
|
| 1842 |
[ -e /etc/fail2ban/jail.conf.default ] || cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.default
|
1846 |
[ -e /etc/fail2ban/jail.conf.default ] || cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.default
|
| 1843 |
$SED "s?^before =.*?before = paths-fedora.conf?g" /etc/fail2ban/jail.conf
|
1847 |
$SED "s?^before =.*?before = paths-fedora.conf?g" /etc/fail2ban/jail.conf
|
| 1844 |
$SED "s?^bantime =.*?bantime = 3m?g" /etc/fail2ban/jail.conf
|
- |
|
| 1845 |
$SED "s?^findtime =.*?findtime = 5m?g" /etc/fail2ban/jail.conf
|
- |
|
| 1846 |
|
1848 |
|
| 1847 |
# add 5 jails and their filters
|
1849 |
# add 5 jails and their filters
|
| 1848 |
## sshd : Ban after 3 failed attempts (ie. brute-force). This "jail" uses the default "sshd" f2b filter.
|
1850 |
## sshd : Ban after 3 failed attempts (ie. brute-force). This "jail" uses the default "sshd" f2b filter.
|
| 1849 |
cat << EOF > /etc/fail2ban/jail.d/01alcasar_sshd.conf
|
1851 |
cat << EOF > /etc/fail2ban/jail.d/01-alcasar_sshd.conf
|
| 1850 |
[sshd]
|
1852 |
[sshd]
|
| 1851 |
enabled = true
|
1853 |
enabled = true
|
| 1852 |
#enabled = false
|
1854 |
#enabled = false
|
| 1853 |
maxretry = 3
|
1855 |
maxretry = 3
|
| - |
|
1856 |
bantime = 3m
|
| - |
|
1857 |
findtime = 5m
|
| 1854 |
EOF
|
1858 |
EOF
|
| 1855 |
|
1859 |
|
| 1856 |
## lighttpd-auth : Ban after 3 failed attempts on ACC. This "jail" uses the default "lighttpd-auth" f2b filter.
|
1860 |
## lighttpd-auth : Ban after 3 failed attempts on ACC. This "jail" uses the default "lighttpd-auth" f2b filter.
|
| 1857 |
cat << EOF > /etc/fail2ban/jail.d/02alcasar_lighttpd-auth.conf
|
1861 |
cat << EOF > /etc/fail2ban/jail.d/02-alcasar_lighttpd-auth.conf
|
| 1858 |
[lighttpd-auth]
|
1862 |
[lighttpd-auth]
|
| 1859 |
enabled = true
|
1863 |
enabled = true
|
| 1860 |
#enabled = false
|
1864 |
#enabled = false
|
| 1861 |
maxretry = 3
|
1865 |
maxretry = 3
|
| - |
|
1866 |
bantime = 3m
|
| - |
|
1867 |
findtime = 3m
|
| 1862 |
EOF
|
1868 |
EOF
|
| 1863 |
|
1869 |
|
| 1864 |
## mod-evasive : Ban after 3 failed retrieve page attempts (ie : unknown page)
|
1870 |
## mod-evasive : Ban after 3 failed retrieve page attempts (ie : unknown page)
|
| 1865 |
cat << EOF > /etc/fail2ban/jail.d/03alcasar_mod-evasive.conf
|
1871 |
cat << EOF > /etc/fail2ban/jail.d/03-alcasar_mod-evasive.conf
|
| 1866 |
[alcasar_mod-evasive]
|
1872 |
[alcasar_mod-evasive]
|
| 1867 |
#enabled = true
|
1873 |
#enabled = true
|
| 1868 |
enabled = false
|
1874 |
enabled = false
|
| 1869 |
backend = auto
|
1875 |
backend = auto
|
| 1870 |
filter = alcasar_mod-evasive
|
1876 |
filter = alcasar_mod-evasive
|
| 1871 |
action = iptables-allports[name=alcasar_mod-evasive]
|
1877 |
action = iptables-allports[name=alcasar_mod-evasive]
|
| 1872 |
logpath = /var/log/lighttpd/access.log
|
1878 |
logpath = /var/log/lighttpd/access.log
|
| 1873 |
maxretry = 3
|
1879 |
maxretry = 3
|
| - |
|
1880 |
bantime = 3m
|
| - |
|
1881 |
findtime = 3m
|
| 1874 |
EOF
|
1882 |
EOF
|
| 1875 |
cat << EOF > /etc/fail2ban/filter.d/alcasar_mod-evasive.conf
|
1883 |
cat << EOF > /etc/fail2ban/filter.d/alcasar_mod-evasive.conf
|
| 1876 |
[Definition]
|
1884 |
[Definition]
|
| 1877 |
failregex = <HOST> .+\] "[^"]+" 403
|
1885 |
failregex = <HOST> .+\] "[^"]+" 403
|
| 1878 |
ignoreregex =
|
1886 |
ignoreregex =
|
| 1879 |
EOF
|
1887 |
EOF
|
| 1880 |
|
1888 |
|
| 1881 |
### alcasar_intercept : ban after 5 failed user login attemps on intercept.php
|
1889 |
### alcasar_intercept : ban after 5 failed user login attemps on intercept.php
|
| 1882 |
cat << EOF > /etc/fail2ban/jail.d/04alcasar_intercept.conf
|
1890 |
cat << EOF > /etc/fail2ban/jail.d/04-alcasar_intercept.conf
|
| 1883 |
[alcasar_intercept]
|
1891 |
[alcasar_intercept]
|
| 1884 |
enabled = true
|
1892 |
enabled = true
|
| 1885 |
#enabled = false
|
1893 |
#enabled = false
|
| 1886 |
backend = auto
|
1894 |
backend = auto
|
| 1887 |
filter = alcasar_intercept
|
1895 |
filter = alcasar_intercept
|
| 1888 |
action = iptables-allports[name=alcasar_intercept]
|
1896 |
action = iptables-allports[name=alcasar_intercept]
|
| 1889 |
logpath = /var/log/lighttpd/access.log
|
1897 |
logpath = /var/log/lighttpd/access.log
|
| 1890 |
maxretry = 5
|
1898 |
maxretry = 5
|
| - |
|
1899 |
bantime = 3m
|
| - |
|
1900 |
findtime = 3m
|
| - |
|
1901 |
EOF
|
| 1891 |
cat << EOF > /etc/fail2ban/filter.d/alcasar_intercept.conf
|
1902 |
cat << EOF > /etc/fail2ban/filter.d/alcasar_intercept.conf
|
| 1892 |
[Definition]
|
1903 |
[Definition]
|
| 1893 |
failregex = <HOST> .* \"GET \/intercept\.php\?res=failed\&reason=reject
|
1904 |
failregex = <HOST> .* \"GET \/intercept\.php\?res=failed\&reason=reject
|
| 1894 |
ignoreregex =
|
1905 |
ignoreregex =
|
| 1895 |
EOF
|
1906 |
EOF
|
| 1896 |
|
1907 |
|
| 1897 |
## alcasar_change-pwd : ban after 5 failed user change password attempts
|
1908 |
## alcasar_change-pwd : ban after 5 failed user change password attempts
|
| 1898 |
cat << EOF > /etc/fail2ban/jail.d/05alcasar_change-pwd.conf
|
1909 |
cat << EOF > /etc/fail2ban/jail.d/05-alcasar_change-pwd.conf
|
| 1899 |
[alcasar_change-pwd]
|
1910 |
[alcasar_change-pwd]
|
| 1900 |
enabled = true
|
1911 |
enabled = true
|
| 1901 |
#enabled = false
|
1912 |
#enabled = false
|
| 1902 |
backend = auto
|
1913 |
backend = auto
|
| 1903 |
filter = alcasar_change-pwd
|
1914 |
filter = alcasar_change-pwd
|
| 1904 |
action = iptables-allports[name=alcasar_change-pwd]
|
1915 |
action = iptables-allports[name=alcasar_change-pwd]
|
| 1905 |
logpath = /var/log/lighttpd/access.log
|
1916 |
logpath = /var/log/lighttpd/access.log
|
| 1906 |
maxretry = 5
|
1917 |
maxretry = 5
|
| - |
|
1918 |
bantime = 3m
|
| - |
|
1919 |
findtime = 3m
|
| 1907 |
EOF
|
1920 |
EOF
|
| 1908 |
cat << EOF > /etc/fail2ban/filter.d/alcasar_change-pwd.conf
|
1921 |
cat << EOF > /etc/fail2ban/filter.d/alcasar_change-pwd.conf
|
| 1909 |
[Definition]
|
1922 |
[Definition]
|
| 1910 |
failregex = <HOST> .* \"POST \/password\.php
|
1923 |
failregex = <HOST> .* \"POST \/password\.php
|
| 1911 |
ignoreregex =
|
1924 |
ignoreregex =
|
| Line 1931... |
Line 1944... |
| 1931 |
#########################################################
|
1944 |
#########################################################
|
| 1932 |
gammu_smsd()
|
1945 |
gammu_smsd()
|
| 1933 |
{
|
1946 |
{
|
| 1934 |
# Create 'gammu' system user
|
1947 |
# Create 'gammu' system user
|
| 1935 |
groupadd -f gammu_smsd
|
1948 |
groupadd -f gammu_smsd
|
| 1936 |
useradd --system -g gammu_smsd -s /bin/false -c "system user for gammu_smsd" gammu_smsd
|
1949 |
useradd -r -g gammu_smsd -s /bin/false -c "system user for gammu_smsd" gammu_smsd
|
| 1937 |
usermod -a -G dialout gammu_smsd
|
1950 |
usermod -a -G dialout gammu_smsd
|
| 1938 |
|
1951 |
|
| 1939 |
# Create 'gammu' database
|
1952 |
# Create 'gammu' database
|
| 1940 |
MYSQL="/usr/bin/mysql -uroot -p$mysqlpwd --execute"
|
1953 |
MYSQL="/usr/bin/mysql -uroot -p$mysqlpwd --execute"
|
| 1941 |
$MYSQL "CREATE DATABASE IF NOT EXISTS $DB_GAMMU; GRANT ALL ON $DB_GAMMU.* TO $DB_USER@localhost IDENTIFIED BY '$radiuspwd'; FLUSH PRIVILEGES;"
|
1954 |
$MYSQL "CREATE DATABASE IF NOT EXISTS $DB_GAMMU; GRANT ALL ON $DB_GAMMU.* TO $DB_USER@localhost IDENTIFIED BY '$radiuspwd'; FLUSH PRIVILEGES;"
|