Fail2Ban Fail2Ban: Setup Setup
Fail2Ban Fail2Ban: Setup Setup
Setup
apt-get update -y
<html>
<body>
<form method="post" action="validate.php">
Username: <input type="text"
name="username"><br>
Password: <input type="password"
name="password"><br>
OTP:<input type="text" name="c"><br>
<input type="submit" name="submit">
</form>
</body>
</html>
<?php
$code = $_POST['c'];
$username = $_POST['username'];
$password = $_POST['password'];
require_once('rfc6238.php');
$secretkey = 'GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ';
$currentcode = $code;
$tanggal = date('M j H:i:s');
$remote_ip = $_SERVER['REMOTE_ADDR'];
if (TokenAuth6238::verify($secretkey, $currentcode)) {
if($username == 'student' && $password == 'password') {
echo "Code is valid\n";
} else {
error_log("$tanggal - $remote_ip - GAGAL LOGIN");
echo "username and password is invalid";
}
} else {
if($username == 'student' && $password == 'password') {
error_log("$tanggal - $remote_ip - GAGAL LOGIN");
echo "Invalid code\n";
} else {
error_log("$tanggal - $remote_ip - GAGAL LOGIN");
echo "Credentials is invalid";
}
}
print sprintf('<img src="%s"/>',TokenAuth6238::getBarCodeUrl('riza', 'riza.my.id', $secretkey, 'Riza%20TFA'));
?>
7. Configure Fail2Ban
nano /etc/fail2ban/jail.local
/etc/fail2ban/jail.local
nano /etc/fail2ban/filter.d/php-login.conf
/etc/fail2ban/filter.d/php-login.conf
[Definition]
failregex = .* - <HOST> - GAGAL LOGIN
nano /etc/fail2ban/action.d/iptables-redirect.conf
/etc/fail2ban/action.d/iptables-redirect.conf
[INCLUDES]
before = iptables-common.conf
[Definition]
actionban = iptables -t nat -A PREROUTING -p <protocol> -s <ip> --dport <port> -j REDIRECT --to-port 8080
actionunban = iptables -t nat -D PREROUTING -p <protocol> -s <ip> --dport <port> -j REDIRECT --to-port 8080
[Init]
port = http
protocol = tcp
nano /etc/apache2/sites-enabled/000-default.conf
/etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:8080>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/banned
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule . /index.php [L]
</IfModule>
</VirtualHost>
...
nano /etc/apache2/ports.conf
/etc/apache2/ports.conf
...
Listen 8080
...
Restart Apache2
mkdir -p /var/www/banned
nano /var/www/banned/index.php
/var/www/banned/index.php
<html>
<body>
<h1>Maaf, akses kami blokir, silahkan coba lagi 5 menit lagi</h1>
</body>
</html>
ClamAV
Setup
nano /var/www/html/validate.php
/var/www/html/validate.php
<?php
$code = $_POST['c'];
$username = $_POST['username'];
$password = $_POST['password'];
require_once('rfc6238.php');
$secretkey = 'GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ';
$currentcode = $code;
$tanggal = date('M j H:i:s');
$remote_ip = $_SERVER['REMOTE_ADDR'];
if (TokenAuth6238::verify($secretkey, $currentcode)) {
if($username == 'student' && $password == 'password') {
header('Location: /upload.php');
} else {
error_log("$tanggal - $remote_ip - GAGAL LOGIN");
echo "username and password is invalid";
}
} else {
if($username == 'student' && $password == 'password') {
error_log("$tanggal - $remote_ip - GAGAL LOGIN");
echo "Invalid code\n";
} else {
error_log("$tanggal - $remote_ip - GAGAL LOGIN");
echo "Credentials is invalid";
}
}
print sprintf('<img src="%s"/>',TokenAuth6238::getBarCodeUrl('riza', 'riza.my.id', $secretkey, 'Riza%20TFA'));
?>
nano /var/www/html/upload.php
/var/www/html/upload.php
<html>
<head>
<title>Upload File</title>
</head>
<body>
<?php
require "Clamav.php";
$clamav = new Clamav();
if(isset($_POST['upload'])) {
$fileName = $_FILES['userfile']['name'];
$tmpName = $_FILES['userfile']['tmp_name'];
$fileSize = $_FILES['userfile']['size'];
$fileType = $_FILES['userfile']['type'];
$filePath = "/var/www/html/files/";
$result = move_uploaded_file($tmpName, $filePath.$fileName);
if (!$result)
die("Error uploading file $tmpName to $fileName");
if(!get_magic_quotes_gpc()) {
$fileName = addslashes($fileName);
$filePath = addslashes($filePath);
}
if(!$clamav->scan($filePath.$fileName)) {
unlink($filePath.$fileName);
die("File bervirus");
}
echo "<br>File $fileName uploaded<br>";
}
?>
<form method="post" enctype="multipart/form-data" name="uploadform">
<table width="350" border="0" cellpadding="1" cellspacing="1" class="box">
<tr>
<td width="246">
<input type="hidden" name="MAX_FILE_SIZE" value="2000880">
<input name="userfile" type="file" class="box" id="userfile">
</td>
<td width="80"><input name="upload" type="submit" class="box" id="upload" value=" Upload "></td>
</tr>
</table>
</form>
</body>
</html>
mkdir -p /var/www/html/files
chown www-data:www-data /var/www/html/files
nano /var/www/html/files/.htaccess
/var/www/html/files/.htaccess
6. Configure Freshclam
freshclam
nano /etc/clamav/clamd.conf
/etc/clamav/clamd.conf
TCPSocket 3310
TCPAddr 127.0.0.1
LocalSocket /var/run/clamav/clamd.ctl
User root
clamd -c /etc/clamav/clamd.conf